* added function for casting spells with specific attributes from a selection of cards
* updated cascade to use new method
* refactored various cards to use new methods
* added TestPlayer method
* fixed a small error
* text fix
* broke out some repeated code
* added missing notTarget setting
* add additional retain zone check
* some more cards refactored
* more refactoring
* added interface for split/modal cards
* reworked spell casting methods
* reworked multiple cast to prevent unnecessary dialogs
* fixed test failures due to change in functionality
* add AI code
* small nonfunctional change
* reworked Kaya, the Inexorable
* added currently failing test
* added more tests
* updated Geode Golem implementation
* fixed adventure/cascade interaction, added/updated tests
* some nonfunctional refactoring
* added interface for subcards
* [AFC] Implemented Fevered Suspicion
* [AFC] Implemented Extract Brain
* [AFC] updated Arcane Endeavor implementation
* [C17] reworked implementation of Izzet Chemister
* [ZEN] reworked implemented of Chandra Ablaze
* additional merge fix
* [SLD] updated Eleven, the Mage
* [NEO] Implemented Discover the Impossible
* [NEO] Implemented The Dragon-Kami Reborn / Dragon-Kami's Egg
* [NEO] Implemented Invoke Calamity
* [AFR] Implemented Rod of Absorption
* [VOC] Implemented Spectral Arcanist
* [VOC] added additional printings
* [NEO] added all variants
* [SLD] updated implementation of Ken, Burning Brawler
* 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
* Implemented Mirage Phalanx
* Changed based on first set of comments
* Reordered variables in alphabetical order
* Added support for removing abilities from a token before creating it.
* Fixed typo in CreateTokenCopyTargetEffect, should have been getAddedPermanents not getAddedPermanent (with the s).
* Updated how soulbond is removed from MiragePhalanx tokens
* Fixed missing fields in the copy constructor
* - Refactoring the exileTokensCreated function to exile all tokens as a single trigger.
- Changed Mirage Phalanx to use the new exileTokensCreated function
- changed ’ to '
* Implemented Donal, Herald of Wings
* Made the spell work only once per turn
* Made the spell work only once per turn
* - Changed based on Nykthos Paragon
- Fixed properly adjusting power and toughness
- Fixed card text
* Implemented Timothar, Baron of Bats
* Implemented Donal, Herald of Wings
* Cleaned up the adding of the ability to the bat
* Flip the order on adding the effects to the bats to match text order.
* Simplified logic for adding effects to the bat tokens
* - NOT DONE: Adding CostAdjuster to add ExileTargetCost to
- Cleaned up card text
- Add hint to each bat saying which card is associated with it
* Add exile card cost, but not working properly
* - Implemented exile card to activate ability
- Reworked giving the tokens their ability to
- Combined payment and bat effect into one effect
* Minor cleaning up
* Implemented Strefan, Maurer Progenitor
* - Renamed names to make it clear that they're only for this class
- Removed the custom watcher and re-did how I was calculating the number of players who lost life this turn
* Removed custom effect
* Cleaned up card text.
* fixed blood token creation card text
* Replaced getPlayers with getPlayersInRange in to respect range of influence
* Removed unnecessary addition of LifeLostWatcher
Co-authored-by: Daniel Bomar <dbdaniel42@gmail.com>