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