* game.processAction() instead of game.getState().processAction(game)
* add simpler method name and docs
* find/replace to new method
* remove old method
* deprecate applyEffects
1a. Make `costs`, `manaCosts`, and `manaCostsToPay` private in `AbilityImpl` with access through getters/setters
1b. fix cost adjuster for imprinted cards affected by the above
2a. Lazy instantiation for rarely used `data` field in `TargetPointerImpl`
3a. Pre-allocate certain array sizes in `Modes` and `CostsImpl`
4a. Make `manaTemplate` private in `BasicManaEffect`, copy when passing outside the class
4b. Don't copy `manaTemplate` in copy constructor since it doesn't change
4c. Add comments explaining copy usage for `manaTemplate`
4d. Remove redundant variable assignment and make fields final
---------
Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
* Implemented Shadowgrange Archfiend
* Changed MadnessAbility to work with cards which also require life to be paid as part of the madness cost (so far only Shadowgrange Archfiend).
* Updated Shadowgrange Archfiend to work with new Madness implementation (and actually cost life to cast using madness)
* Removed unnecessary variable
* refactor all instances of getRule in triggered abilities using new getTriggerPrefix method
* updated triggered ability rules generation
* renamed method
* fixed a test failure
* some more refactoring
* simplified some instances of ability word usage
Replaced all instances of "her or she", "him or her", and "his or her", with "they", "them", and "their", or sometimes "that player". Updated verbs where appropriate.