User:AVS/Bonus system
From VCMI Project Wiki
-> Bonus system is core part of mechanics and it`s interface should be independent of particular components.
- -> extract common interface
- Bonus (w/o BonusType, new bonus types can be added in future by mods, all hardcoded types should be used only internally by gamehandler)
- (*) abstract interface for Bonus.
- BonusList
- IBonusBearer
- ILimiter
- IPropagator
- Bonus (w/o BonusType, new bonus types can be added in future by mods, all hardcoded types should be used only internally by gamehandler)
- -> get rid of dependency from CCreature, CSpell
- (?) what to do with concrete selectors, limiters, propagators?
Bonus type handler
- [Done] convert bonusnames.json to new config
- [Done] implement macro substitution for name|description (will be reusable)
- format ${XXX}
- [Done] implement Bonus type handler itself
- [Done] integrate to codebase
- (*) [Todo] implement "id-like class" for bonus type
- [Todo] refactor for new bonus type identifacation.
- (**) [Todo] initial bonus configuration for mods.
Leveled bonuses
- Generalization of handling growing arts, creature exp, hero speciality.
- Each bearer has Level attribute (impl: virtual getter)
- Bonus may have configuration for levels.
- (!) control leveling of propagated and inherited bonuses
- avoid it for the first time
- (*) make it configurable