* [BLB] Implement Camellia, the Seedmiser.
Also implemented SacrificedPermanentBatchEvent, SacrificeOneOrMorePermanentsTriggeredAbility, and refactored existing Whenever you sacrifice one or more [filter] abilities to use the new SacrificeOneOrMorePermanentsTriggeredAbility (even though as they all only trigger once per turn and technically function correctly with the old SacrificePermanentTriggeredAbility.
* Fix accidental newline.
* 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 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
- download: fixed unmount zip errors on cancel download in some use cases (closes#12536);
- download: significant download speed improvements (now it depends on user's network speed, not api limitations);
- download: added additional error dialogs on bad use cases;
- scryfall: added cards and bulk data api support;
- scryfall: added bulk data download (updates once per week, contains all scryfall cards and store in images\downloading folder, 2 GB size);
- scryfall: added optimized images download without api usage (use direct images links from bulk data, closes#11576);
- scryfall: improved image source searching for some use cases (miss or wrong images problems, closes#12511);
- scryfall: tokens don't use bulk data;
- scryfall: 75k small images downloads 40 minutes and takes 1 GB and 2100 api calls (most of it from tokens);
- scryfall: how-to disable bulk data, e.g. for api testing: -Dxmage.scryfallEnableBulkData=false
* 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;
* Rampaging Yao Guai
* Wild Wasteland
* Synth Infiltrator
* Paladin Elizabeth Taggerdy
* Fix not including target count if name contains X value
* Fix missing {this}