* Create generic X MV adjuster
* Update XTargetsAdjuster
* Create DynamicValueTargetsAdjuster to replace VerseCounterAdjuster
* Convert XTargetsAdjuster to use DynamicValueTargetsAdjuster
* Genericize MV target adjuster
* Converting custom classes for A and B cards, fix Back in Town to only target creature cards
* Add Power and Toughness target adjusters, C cards
* Set up and use Monstrosity X DynamicValue
* Move Scry amount dynamic value to common, add D and E cards
* Convert F to I cards
* Cards K-M
* N, O cards
* Cards O-R
* S cards (check Scrap Welder)
* Cards T - Z
* Rename target adjusters
* Add filter messages, don't add 0 count targets
* Clear blueprint targets (just in case), fix target names, Temporal Firestorm is not target
* Requested renames
* Aether Burst is "up to"
* Review fixes
* Add new cards, add source to dynamic value calculation
* Switch Convoke to using costs tag system
* Add Convoke copy/clone tests
* update author name on sufficiently changed files
* Remove now-unused CONVOKED event
* Implement Costs Tag Map system
* Use Costs Tag Map system to store X value for spells, abilities, and resolving permanents
* Store Bestow without target's tags
Change functions for getting tags and storing the tags of a new permanent
* Create and use deep copy function in CardUtil, add Copyable<T> to many classes
* Fix Hall Of the Bandit Lord infinite loop
* Add additional comments
* Don't store null/empty costs tags maps (saves memory)
* Fix two more Watchers with Ability variable
* Add check for exact collection types during deep copy
* Use generics instead of pure type erasure during deep copy
* convert more code to using deep copy helper, everything use Object copier, add EnumMap
* fix documentation
* Don't need the separate null checks anymore (handled in deepCopyObject)
* Minor cleanup
* refactor SacrificeCostManaValue to be an enum.
* [CMM] Implement Demon of Fates Design
* Add Unit Tests, including one bug on alternative cost.
* fix alternativeCosts made from dynamicCost returning that they were not activated when paid.
* fix small issues, add hint
* cleanup tests and add a couple
* Capitalize enum instances
* Minor fixes
* simplify the ContinuousEffect
* use the ConditionPermanentHint made for the Demon
* fix text
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
* [CMM] Implement Nyxborn Behemoth
Regroup the different dynamic values for "total mana value of [FILTER]" under a shared class.
* refactor hints inside TotalPermanentsManaValue
* apply review on TotalPermanentsManaValue->copy
* [LTR] Implement The Balrog, Durin's Bane
I could use someone more experienced for this card:
Should the watcher `PermanentsSacrificedWatcher` be initialized locally in the card's class, or is a global initializing in GameImpl.java alright? I went for the latter for now, as my base for implementing the static cost reduction was Blood for the Blood God!
* apply review
* no longer instantiate watcher on every game.