* Refactor CreateTokenEffect to allow multiple tokens at once.
Partial solution to #10811 - Token copy effects still need to be redone so that mass token copy effects (Ocelot Pride, Mirror Match, other similar effects) can be created in a single batch.
* Add player-based "must attack" requirement check
* Implement Seeker of Slaanesh and add (ignored) test
* Fix check for ability of any controlled creatures to attack
* rename misleading variable
* Add starting point: have exile top w/ any color cast, right duration
* Use random opponent
* Add delayed triggered ability
* rename MageIdentifier to AlternateCast
* Fix FiresOfMountDoomDelayedTriggeredAbility
* Add test for Fires of Mount Doom
* Add test for The Ruinous Powers
* Null checks
* remove unused scoring system code
* add test for Alms Collector replacement effect
* flatten draw cards into single method in PlayerImpl
* remove outdated MageAction framework
* clarify game event for drawing two or more cards
* clarify methods for getting cards from library
* implement [WHO] River Song
* fix error
* adjust library methods
* add lots of test cases for draw replacement effects
* fix#12616
* track cards drawn this way through multi draw replacement as well
* add test for River Song
* remove redundant comment
Complete rework of Unbound Flourishing, removing the multiplier code for casting X spells.
Adds ActivateAbilityTriggeredAbility, NotManaAbilityPredicate, AbilitySourceAttachedPredicate
CopyStackObjectEffect now uses a MOR.
OrTriggeredAbility now works with target pointer setting abilities.
* Add skeleton
* Implement Pawprints modal functionality
* Implement Seasons of Gathering
* remove unused imports
* Add Pawprints test
* use withPawPRintValue() instead of setter
* use 0 for non-pawprint mode and modes classes and move mode validation to addMode
* Use GreatestPowerAmongControlledCreaturesValue
* Fix pawprints check
* calcualte sleected pawprint count based on selected modes
* move max pawprints check to getAvailableModes
* fix max pawprints checks
* Implement Splash Portal
* Add test
* Add an afterEffect to ExileThenReturnTargetEffect for use in Splash Portal
* Modify Essence Flux to use new ExileThenReturnTargetEffect and write test
* use withAfterEffect for ExileThenReturnTargetEffect
* use ConditionalOneShotEffect
* Restrict effects to one shot
* enters the battlefield, -> enters,
* {this} enters the battlefield -> {this} enters
* EntersBattlefieldAbility
* , it enters
* enters the battlefield under your control -> you control enters
* rework some trigger phrase logic
* fix tests
- added shareable code with default proxy, headers and other settings for download tasks like images, symbols, mtgjson, etc;
- use XmageURLConnection.downloadText for text resources
- use XmageURLConnection.downloadBinary for any file resources
- added user agent with app version for all requests;
- added http logs and improved error messages;
* Apply fix for ZONE_CHANGE_GROUP events making tokens controlled by different players
* Add test
* Remove unused import
* Fix implementation
* Rewrite to use ZONE_CHANGE_BATCH
* Fix OPPONENT case
* Add default case
* refactor to avoid using stream as local variable and use ZoneChangeEvents in filters
* Fix typo
* refactor: added helper emblems instead rad counter's inherent emblems (use initGameDefaultHelperEmblems to define new card hints or other fake objects);
* refactor: added card hints support for emblems, planes and other command objects;
* GUI: added storm counter as default card hint (use hints tool to see it, closes#12360);
* 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
- fixed broken database in some use cases (example: AI and choose name dialog, related to #11285);
- added docs and debug tools for sql queries, caches and memory analyse (see DebugUtil);
- refactor code to use shared settings;
- deleted outdated and un-used code (db logs, stats, etc);