* refactor: standard enum style for SourcePermanentToughnessValue
* refactor SourcePermanentPowerCount to enum SourcePermanentPowerValue
add comments on usage of NOT_NEGATIVE vs ALLOW_NEGATIVE
* Replace "([a-zA-Z]+).getManaCostsToPay().getX()" with CardUtil.getSourceCostsTag(game, $1, "X", 0)
Fix Disrupting Shoal
* Change final card .getX() calls
* Condense all ManacostVariableValue enum values into "instance"
* Further removal of getX, Display X symbol for non-mana X cards
* Fix test
* Fully remove ManaCosts.getX
* Replace all different X dynamic values with GetXValue
* Remove individual cards checking getAmount for X values (leaving cost reduction that does not use X)
* Add null check for game object inside getSourceCostsTagsMap
* fix build errors
* fix Vicious Betrayal
* text fix
* Last Night Together
* Nanogene Conversion
* Return the Past
* Rose, Cutthroat Raider
* Diamond City
* Fix Apostrophe
* Various fixes
* Replace Diamond City and Celebration Watchers
* LastNightTogether improvements, add hint to ReturnThePast
* Add AttackedThisTurnOpponentsCount hint, ignore new failing Celebration test
* Review fixes, also create ValueConditionHint for value hints with a conditional threshold
* Comments improvements
* Requested changes to make ValueConditionHint extend ConditionHint
* single super call in ValueConditionHint constructor
* 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
* [LCI] Implement Spring-Loaded Sawblades / Bladewheel Chariot
* [LCI] Implement Sunbird Standard / Sunbird Effigy
* card filter needs to have an owner predicate
* [LCI] Implement Throne of the Grim Captain / The Grim Captain
* make default constructor for craft with artifact
* dedupe some code
* refactor constructors for simplicity
* add currently failing test
* 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