Commit Graph
239 Commits
Author SHA1 Message Date
Ivan Savenko 5caf43a63c Merge pull request #5900 from IvanSavenko/bonus_limiters
Bonus limiters refactoring
2025-07-09 11:12:11 +03:00
Ivan Savenko 09ac0f1806 Merge pull request #5851 from Laserlicht/max_range_spell
max range for spell cast
2025-07-09 11:05:37 +03:00
Laserlicht 3b63b837cc fix 2025-07-08 21:47:03 +02:00
Ivan Savenko 4af7949571 Bonus limiters refactoring
- Split massive `parseLimiter` method in smaller chunks
- Added alternative format for limiters with named parameters instead of
unclear `parameters` entry that often leads to bugs in mods. Old format
is still available.
- Added detailed validation for limiter format
- Converted vcmi json's to use new format
- Removed parameter-less `CREATURE_FACTION` and `SAME_FACTION` limiter.
They are unused in mods and have unclear use-case that can be replaced
by other limiters
- Expanded documentation on limiter types

All mods that were supported before should still be supported
2025-07-08 13:01:08 +03:00
Laserlicht cf32f00472 hide bonus 2025-07-08 11:59:16 +02:00
Laserlicht ca8cfaf0ad Merge branch 'develop' into max_range_spell 2025-07-08 11:36:23 +02:00
Ivan Savenko 46072a1d60 Merge pull request #5896 from IvanSavenko/code_reorganize
Split large source files into smaller files per 1 class
2025-07-08 10:47:13 +03:00
Ivan Savenko 8721bdd728 Split CCreatureSet file on .h/.cpp per class basis 2025-07-07 19:12:31 +03:00
Ivan Savenko 200850f56f Add COMBAT_MANA_BONUS for Skyship 2025-07-06 15:36:51 +03:00
Laserlicht 13a2b8781e Merge branch 'vcmi:develop' into max_range_spell 2025-07-03 23:25:06 +02:00
SoundSSGood 76debab846 HasChargesLimiter now works in "bonuses" json section 2025-06-30 18:41:22 +02:00
SoundSSGood 7f9936cf10 getSourcesForSpell 2025-06-30 18:41:20 +02:00
SoundSSGood 6752ab3a75 HAS_CHARGES_LIMITER 2025-06-30 18:39:57 +02:00
Ivan Savenko d1f9c497a3 Fix handling of bonuses with negative values 2025-06-27 12:09:28 +03:00
Ivan Savenko 135768e763 Added TIMES_ARMY_SIZE updater 2025-06-26 15:10:55 +03:00
Ivan Savenko 6ac57a7cfc Improvements to bonus system node types / propagators
- Node type is now set on construction and never changes
- Added army propagator that also checks for TOWN and HERO
- Renamed existing propagators to be in sync with enumeration
2025-06-25 17:34:20 +03:00
Laserlicht 9bfe3a8195 max range for spellcaster 2025-06-25 15:50:31 +02:00
Ivan Savenko 9c2e49f95f Fix propagation of Legion artifact pieces when hero moves out of town 2025-06-25 11:49:34 +03:00
Ivan Savenko 1e3e2f665c Remove strange & unused double-selector logic 2025-06-24 12:06:23 +03:00
Ivan Savenko 2d24c28996 Fix potential edge cases in TIMES_STACK_SIZE updater 2025-06-24 11:31:38 +03:00
Ivan Savenko 0ebe9bd414 Fix invalidation of bonus propagation updaters 2025-06-24 11:27:34 +03:00
Ivan Savenko 022b0f731c Fix configs, update docs, resolve discovered regressions 2025-06-15 14:36:29 +03:00
Ivan Savenko bbe6c415c2 Add TIMES_STACK_SIZE updater 2025-06-15 14:36:29 +03:00
Ivan Savenko 9762e8493a Add TRANSMUTATION_IMMUNITY bonus 2025-06-15 14:36:29 +03:00
Ivan Savenko 0e2463f9c4 Improvements to skeleton transformer logic 2025-06-15 14:36:29 +03:00
Ivan Savenko 0979f409c7 Fix build 2025-06-15 14:36:29 +03:00
Ivan Savenko ab0f6ed8cd Simplified hero creature specialties logic 2025-06-15 14:36:29 +03:00
Ivan Savenko 4e47894e7a Somewhat configurable spell schools 2025-06-15 14:36:29 +03:00
Ivan Savenko e0de65d56c Reworked & fixed DARKNESS bonuses and lookout tower / skyship logic 2025-06-15 14:36:29 +03:00
Ivan Savenko a305ed28bb Support for loading custom bonuses, slightly less hardcoded Skeleton
Transformer
2025-06-15 14:36:29 +03:00
Ivan Savenko 51832c4fb9 Preparation for user-defined bonus types 2025-06-15 14:36:29 +03:00
Ivan Savenko 527885de21 Added VULNERABLE_FROM_BACK bonus 2025-06-15 14:36:29 +03:00
Ivan Savenko ae22de3ccf Implemented configurable FEAR ability 2025-06-15 14:36:29 +03:00
Ivan Savenko 342705921d remove old bonus conversion logic 2025-06-15 14:36:29 +03:00
Ivan Savenko 43844e2371 Merge pull request #5770 from IvanSavenko/const_bonus
Make bonus limiters/updaters/propagators const
2025-06-04 21:12:06 +03:00
Ivan Savenko ce5ee6e1df Merge pull request #5769 from IvanSavenko/mysticism
Percentage-based mana regeneration
2025-06-04 21:11:45 +03:00
Ivan Savenko 20f0b51912 Make bonus limiters/updaters/propagators const
All pointers held by bonus itself are now const.

To support OppositeSideLimiter (the only stateful limiter) bonuses now
hold their player owner instead.

No changes in functionality or mods
2025-06-03 19:39:28 +03:00
Ivan Savenko 07dcdc1f85 Percentage-based mana regeneration
Hota-like mysticism.

Bonus FULL_MANA_REGENERATION (Wizard well) has been replaced with
MANA_PERCENTAGE_REGENERATION bonus. Wizard well now has new bonus with
100% value.
2025-06-03 19:38:54 +03:00
Ivan Savenko 139f41c9b2 Implement STACK_EXPERIENCE_GAIN_PERCENT bonus
Suggested on Discord

- implements STACK_EXPERIENCE_GAIN_PERCENT that modifies stack
experience received by units after combat
- removed "EXPERIENCE" primary skill. Changes to experience are now
applied through separate netpack
2025-06-02 21:21:20 +03:00
Ivan Savenko 3f4ff58a5e Merged bonus names with bonus descriptions, since they are never used
separately
2025-05-25 11:56:54 +03:00
Ivan Savenko 25e57542be Merge pull request #5725 from IvanSavenko/bonus_description
Custom descriptions and icons for creature abilities
2025-05-23 14:02:34 +03:00
Ivan Savenko 3f83ad1b40 Merge pull request #5726 from IvanSavenko/breath
Configurable multi-hex attacks
2025-05-21 17:10:59 +03:00
Ivan Savenko 25655184d3 Add support for custom icons & descriptions for bonuses 2025-05-21 14:57:10 +03:00
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
SoundSSGood a750adf705 Bonus type ARTIFACT_CHARGE 2025-05-16 23:20:09 +02:00
SoundSSGood 9bbebd62e9 GrowUpArtifact pack 2025-05-16 23:20:09 +02: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 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 35644da2b7 Reogranize callback-related classes on 1 file = 1 class basis 2025-05-12 22:07:09 +03:00
kdmcser c464e953e2 Merge branch 'develop' into limit_fix 2025-05-13 00:59:25 +08:00