Commit Graph
100 Commits
Author SHA1 Message Date
Ivan Savenko e90d8c318d Configurable multi-hex attacks
- Added bonus type MULTIHEX_UNIT_ATTACK - configurable version of Dragon
Breath.
- Added bonus type MULTIHEX_ENEMY_ATTACK - configurable version of
Cerberi multi-headed attack that only hits enemies
- Added bonus type MULTIHEX_ANIMATION - optional bonus that does not
affects gameplay, but allows to define in which cases game should use
alternative attack animation.
- All existing multi-hex attack bonuses other than ATTACKS_ALL_ADJACENT
are presumable deprecated, but will be supported for now.
- It is now possible to precisely configure which hexes are targeted by
MULTIHEX_XXX bonuses. See docs for details.
- Unified logic of all multi-hex attacks, all existing bonuses are now
implemented as specific case of MULTIHEX_XXX bonus
- Added tests to cover Cerberi attack logic, and fixed incorrect edge
case of Dragon Breath
2025-05-20 15:08:59 +03:00
Ivan Savenko 95ac124dc9 Bonus-aware addInfo loading 2025-05-20 14:56:22 +03:00
Ivan Savenko 2cd61af276 rename field to match actual key in json 2025-05-20 14:56:22 +03:00
Ivan Savenko 184e841b16 Merge pull request #5718 from IvanSavenko/gamestate_access_remove
Reduce direct access to gamestate class
2025-05-19 18:49:08 +03:00
Ivan Savenko 9dfef773e2 Remove unnecessary includes 2025-05-19 17:56:46 +03:00
Ivan Savenko c0850f41b3 Pathfinder now uses IGameInfoCallback instead of CGameState 2025-05-19 17:53:15 +03:00
Ivan Savenko fe2f5f9217 Pathfinder now uses CGameState directly instead of inheriting callback 2025-05-19 17:53:15 +03:00
Ivan Savenko e79c8b9fe1 Remove unnecessary access to gamestate 2025-05-19 17:53:15 +03:00
Ivan Savenko ed8ba52ed8 Merge pull request #5722 from IvanSavenko/wandering_month_fix
Fix crash on spawning wandering monsters on new month
2025-05-19 14:44:58 +03:00
Ivan Savenko 9ae4a72f4c Merge pull request #5721 from IvanSavenko/stackexp_fix
Fix game not awarding stack experience after combat
2025-05-19 14:44:20 +03:00
Ivan Savenko 3b217e3100 Merge pull request #5717 from IvanSavenko/secondary_reward_fix
Allow removal of expert-level skill using configurable map object
2025-05-19 14:43:58 +03:00
Ivan Savenko 57f0c5f50c Fix crash on spawning wandering monsters on new month 2025-05-18 11:05:13 +03:00
Ivan Savenko 45a587bc5b Fix game not awarding stack experience after combat
- Added missing `visitTyped` overloads.
- Throw runtime error if `visitTyped` is called on raw CPack, to avoid
such silent errors in future
2025-05-17 18:03:44 +03:00
Ivan Savenko 89692a57f0 Try to fix Windows build 2025-05-16 18:12:14 +03:00
Ivan Savenko c7228b7e50 Fix incorrect icon on removal of skill 2025-05-16 17:43:27 +03:00
Ivan Savenko cb82c6a4f6 Fix calculation of new secondary skill level. Fixes bug with removal 2025-05-16 17:21:39 +03:00
Ivan Savenko 456525109e Replaced undescriptive bool true/false with more clear enum for
absolute/relative change via netpacks
2025-05-16 17:21:39 +03:00
Ivan Savenko 630f911cc9 Merge pull request #5713 from IvanSavenko/gamecallback_remove
Game callback rework (part 1?)
2025-05-16 17:19:37 +03:00
Ivan Savenko 6dd25d6a67 Merge pull request #5716 from kdmcser/zip_maps
fix crash when map is packaged in a zip mod
2025-05-16 17:19:24 +03:00
Ivan Savenko e87bbf210e Merge pull request #5714 from IvanSavenko/spellbook_fix
Fix crash on playing spellbook pageflip video
2025-05-16 17:18:29 +03:00
Ivan Savenko 3aa2771e92 Fix crash on playing spellbook pageflip video
Was reported on Discord.
- Fixes corrupted name of spellbook page flip video
- Fixes possible crash on deleting invalid video instance
2025-05-15 17:55:17 +03:00
Ivan Savenko a13806a0df Fix build 2025-05-15 16:58:16 +03:00
Ivan Savenko ce77914b7e Merge pull request #5711 from IvanSavenko/commander_leveling
Fix commander levelups
2025-05-15 13:35:13 +03:00
Ivan Savenko 1909975e03 Merge pull request #5712 from vcmi/dependabot/github_actions/DavidAnson/markdownlint-cli2-action-20
Bump DavidAnson/markdownlint-cli2-action from 19 to 20
2025-05-15 13:34:50 +03:00
Ivan Savenko 6aadcf43d3 Fix tests 2025-05-15 13:04:47 +03:00
Ivan Savenko cedb577b5c Update example.markdownlint-cli2.jsonc 2025-05-15 12:10:29 +03:00
Ivan Savenko b09152d62a Fix commander levelups
- Fixes commander not receiving experience if stack experience is off
- Fixes commander not leveling up when hero fill his secondary skills
2025-05-14 21:51:32 +03:00
Ivan Savenko 4d4da0454f map objects hierarchy now uses IGameInfoCallback 2025-05-14 18:33:20 +03:00
Ivan Savenko 6f20235d07 Merge CPrivilegedInfoCallback into CGameInfoCallback 2025-05-14 13:42:20 +03:00
Ivan Savenko b37a3dc63c Lighthouse / flaggable objects now has dedicated bonus system node
this alows to remove multiple hacks from lighthouse logic
2025-05-14 13:42:19 +03:00
Ivan Savenko 716da918f8 Completely remove IGameCallback class
- CClient now inherits directly from CPrivilegedInfoCallback, like
IGameCallback did before. However CClient no longer needs dummy
implementation of IGameEventCallback
- CGObjectInstance hierarchy now uses CPrivilegedInfoCallback for
callback. Actual events can only be emitted in calls that receive
IGameEventCallback pointer, e.g. heroVisit
- CGameHandler now inherits directly from both CPrivilegedInfoCallback
and IGameEventCallback as it did before via IGameCallback
2025-05-14 13:39:41 +03:00
Ivan Savenko f7d08a7288 Merge pull request #5700 from IvanSavenko/gamestate_pack_visitor
Remove CPack::applyGs method in favor of GameStatePackVisitor class
2025-05-14 11:53:15 +03:00
Ivan Savenko 1165dadfd4 Merge pull request #5701 from IvanSavenko/bonus_docs
Update documentation for bonuses and fix creature type limiter
2025-05-14 11:53:05 +03:00
Ivan Savenko c62e1d289e Merge pull request #5706 from IvanSavenko/antagarich
Fix missing messages on events without guards on .vmap's (e.g. Antagarich Burning)
2025-05-14 11:52:52 +03:00
Ivan Savenko a13ab8f013 Merge pull request #5707 from IvanSavenko/dwelling_fix
Fixes for handling of oversized map dwellings
2025-05-14 11:52:40 +03:00
Ivan Savenko d25db82bf8 Merge pull request #5710 from IvanSavenko/docs_fix
Fix documentation on configurable map objects
2025-05-14 11:52:30 +03:00
Ivan Savenko f26dca2026 Merge pull request #5708 from kdmcser/limit_fix
OppositeLimiter fix and boat creation fix when loading map
2025-05-14 11:52:15 +03:00
Ivan Savenko ed2b9e77e4 Fix documentation on configurable map objects 2025-05-13 18:12:43 +03:00
Ivan Savenko 9a30ce27af Merge pull request #5705 from IvanSavenko/callback_split
Reorganize callback-related code
2025-05-13 15:21:39 +03:00
Ivan Savenko 1f15a7faa4 Fix build 2025-05-12 22:07:10 +03:00
Ivan Savenko 2c17c2d5b7 Rework CCallback <-> CClient interaction
- callback is now part of lib instead of weird class that is shared by
client and AI while being part of client
- callback interacts with client class via minimal interface class
- removed no longer used unlockGsWhileWaiting field
2025-05-12 22:07:10 +03:00
Ivan Savenko 35644da2b7 Reogranize callback-related classes on 1 file = 1 class basis 2025-05-12 22:07:09 +03:00
Ivan Savenko cb70cc48d6 Fixes for handling of oversized map dwellings
- Marked large version of H3 Unicorn's Glade as not usable for random
dwelling replacement
- Shifted oversized dwellings - that have at most 2x2 as blocked tile,
but have non-blocked tile column will now be placed correctly
- This fixes incorrect random dwelling replacement of the only oversized
H3 dwelling - Portal of Glory
- Game will now detect & report invalid dwelling templates from mods
- Updated docs to clarify dwellings format
2025-05-12 18:01:46 +03:00
Ivan Savenko 79591ac587 Fix missing messages on events without guards on .vmap's 2025-05-12 15:42:59 +03:00
Ivan Savenko 29207c0b0f Merge pull request #5702 from IvanSavenko/sonar
Fix issues detected by Sonar
2025-05-12 14:54:39 +03:00
Ivan Savenko 0a74992268 Fix formatting 2025-05-11 19:58:49 +03:00
Ivan Savenko 4b30336d03 Fix issues detected by Sonar 2025-05-11 19:50:57 +03:00
Ivan Savenko 990f766254 Update & expand docs on bonus limiters & updaters 2025-05-10 19:16:51 +03:00
Ivan Savenko 519fbae43c Add example of typical bonus system graph to docs 2025-05-10 19:13:47 +03:00
Ivan Savenko a188934e12 Add basic description of battlefield layout 2025-05-10 19:12:59 +03:00
Ivan Savenko 9bf5cf42f3 Move guides to separate directory to make them easier to find 2025-05-10 19:11:30 +03:00
Ivan Savenko 3d170bb1f4 Fix creature type limiter not considering upgrades of upgrades 2025-05-10 19:09:08 +03:00
Ivan Savenko 86b832be67 Remove CPack::applyGs method in favor of GameStatePackVisitor class 2025-05-10 17:51:35 +03:00
Ivan Savenko cb5295b9ec Merge pull request #5690 from IvanSavenko/rewardable_improve
Extend functionality of rewardable objects
2025-05-09 18:47:56 +03:00
Ivan Savenko 754bc16e82 Fix .md formatting 2025-05-09 18:45:28 +03:00
Ivan Savenko ed6725db0f Update schemas 2025-05-09 17:31:25 +03:00
Ivan Savenko cf69440e9a Update docs 2025-05-09 17:26:35 +03:00
Ivan Savenko 6859ab7c36 Fix discovered issues, remove not implemented ideas 2025-05-09 17:26:23 +03:00
Ivan Savenko de134326e0 Merge pull request #5693 from kdmcser/crash_fix
fix crash when loading game in battle
2025-05-08 15:44:06 +03:00
Ivan Savenko e6c75dd66d Merge pull request #5692 from shamazmazum/fix-assert
Fix incorrect assertion in CArtPlace::setArtifact
2025-05-08 15:43:25 +03:00
Ivan Savenko 700eeb6bd4 Implemented HERO_SPELL_CASTS_PER_COMBAT_TURN bonus 2025-05-08 00:25:07 +03:00
Ivan Savenko 6b6199d3a4 Implemented giving bonuses to commanders 2025-05-07 22:49:22 +03:00
Ivan Savenko 434da3ffe1 Added forceCombat field for ambush-like objects 2025-05-07 19:49:26 +03:00
Ivan Savenko 0e2ea99283 Implemented option to emulate H3 seer hut full-army quest bug 2025-05-07 19:16:58 +03:00
Ivan Savenko 69de14a42f Fix crash on loading map with heroes that have combined art equipped 2025-05-07 18:05:30 +03:00
Ivan Savenko 92c4bcbf68 Unify checks for creature limiter 2025-05-07 16:35:15 +03:00
Ivan Savenko 4b77140f4a Implemented playerGlobal visit mode for objects like cartographer 2025-05-06 18:53:43 +03:00
Ivan Savenko 1b5d00cc99 Fix running game without wog active 2025-05-06 18:53:21 +03:00
Ivan Savenko f1d9d8479f Extend rewards & limiters functionality 2025-05-06 17:28:12 +03:00
Ivan Savenko 0212b6e37d Remove artifact from slot as reward 2025-05-06 17:28:12 +03:00
Ivan Savenko 6688d28198 Taking artifacts as a reward 2025-05-06 17:28:12 +03:00
Ivan Savenko 5dec3efa2f Spell scrolls as a reward 2025-05-06 17:28:12 +03:00
Ivan Savenko 62e774c91e Add new rewards for configurable objects 2025-05-06 17:28:11 +03:00
Ivan Savenko 9022566c2b Force town building to use modal reward window, and not inactive infobox 2025-05-06 17:27:42 +03:00
Ivan Savenko 7fc1990282 Clear rewardable garrison after player is done picking units 2025-05-06 17:27:42 +03:00
Ivan Savenko 544adfd545 Merge pull request #5685 from kdmcser/crash_fix4
Fix crash caused by conflicting instanceName after loading game
2025-05-06 16:20:58 +03:00
Ivan Savenko fe276374ef Merge pull request #5687 from kdmcser/fix_commander_artifacts
fix commander artifacts inactive when loading game
2025-05-06 16:20:27 +03:00
Ivan Savenko fb0cdb2475 Merge pull request #5669 from IvanSavenko/haven_fix
Fix crash on evaluating creature terrain limiter during initialization (Haven mod fix)
2025-05-05 16:18:54 +03:00
Ivan Savenko 34dce8dfc1 Merge pull request #5678 from kdmcser/crash_fix2
fix crash when opening available artifacts popup for a slot
2025-05-05 16:10:41 +03:00
Ivan Savenko 1cd7117b71 Merge pull request #5672 from kdmcser/puzzle_map_fix
fix puzzle map never be revealed
2025-05-05 16:10:09 +03:00
Ivan Savenko 1690913ba4 Stack instance now stores non-serialized pointer to army 2025-05-05 16:09:21 +03:00
Ivan Savenko 90e765b2be Merge pull request #5677 from kdmcser/hang_fix
fix hangs after a siege battle
2025-05-05 16:06:25 +03:00
Ivan Savenko 313a1119ea Merge pull request #5684 from altiereslima/develop
Portuguese translation update
2025-05-05 16:04:57 +03:00
Ivan Savenko 2e90e54aeb Merge pull request #5680 from kdmcser/crash_fix3
fix load game crash
2025-05-05 16:03:27 +03:00
Ivan Savenko 10deffbc55 Merge pull request #5676 from kdmcser/chinese
Update Chinese Translation
2025-05-05 16:02:43 +03:00
Ivan Savenko 4fc29f8b20 Merge pull request #5668 from IvanSavenko/stackexp_fix
Unit stack rebalancing rework
2025-05-05 16:02:10 +03:00
Ivan Savenko 283adc37d7 Unit stack rebalancing rework
- CStackInstance::count is now private with accessor methods
- CStackInstance::experience renamed to totalExperience and now stores
total stack experience (multiplied by stack size) to reduce rounding
errors
- CStackInstance::totalExperience is now private with accessors methods
- stack experience is now automatically reallocated on stack management
- Removed buggy BulkSmartRebalanceStacks pack, that mostly duplicates
BulkRebalanceStacks
- Renamed BulkSmartSplitStack to BulkSplitAndRebalanceStack to drop
unclear "smart" in name
- Reworked split-and-rebalance logic to correctly reallocate stack
experience
2025-05-01 18:18:30 +03:00
Ivan Savenko ac26b3ed9b Merge pull request #5658 from IvanSavenko/memleak_fix
Fix discovered memory leaks & reduce usage of raw pointers
2025-04-30 13:38:37 +03:00
Ivan Savenko 668bc57210 Merge pull request #5661 from kdmcser/crash_fix2
fix crash when creature level is 0
2025-04-30 13:38:25 +03:00
Ivan Savenko 279d89f971 Merge pull request #5659 from IvanSavenko/artifact_split
Reorganized artifact-related classes
2025-04-30 13:23:41 +03:00
Ivan Savenko e2b7443f67 Merge pull request #5660 from GeorgeK1ng/czech_update
Czech translation typo fixes
2025-04-30 13:02:23 +03:00
Ivan Savenko 342a4e3839 Merge pull request #5656 from IvanSavenko/bugfixing
Fixes for multiple reported issues
2025-04-30 13:01:41 +03:00
Ivan Savenko f70ad2c15b Reorganized artifact-related classes
- files now generally contain only 1 class (except for tightly coupled
classes)
- files are now located in lib/entities/artifact directory
- removed excessive includes

No changes to functionality
2025-04-29 13:29:08 +03:00
Ivan Savenko 6f587a243b Fix build 2025-04-29 13:28:30 +03:00
Ivan Savenko 04ba017198 Deallocate sound chunk immediately on end of playback 2025-04-29 13:17:21 +03:00
Ivan Savenko be2ebc8e56 Fix build 2025-04-29 13:03:08 +03:00
Ivan Savenko 9fbfbc7506 Fix build 2025-04-29 12:37:29 +03:00
Ivan Savenko dca5a099d5 Remove compat code for old banks, fixes crash on loading old mods 2025-04-29 12:15:04 +03:00
Ivan Savenko eaae6270b2 Fix crash on AI evaluating hero pool after retreating from combat 2025-04-29 12:15:03 +03:00
Ivan Savenko 71d742ab19 Fix handling of campaign bonus where player can select color to play 2025-04-29 12:14:14 +03:00