* simplify BeginningOfEndStepTriggeredAbility
* more simplifications
* move to common class
* find and replace to common class
* simplify again
* align parameter order
* package reorg
* simplify BeginningOfCombatTriggeredAbility constructors
* simplify BeginningOfFirstMainTriggeredAbility constructors
* text fixes
* update docs
* add new common framework for at step triggered abilities
* move postcombat main and second main triggers to it
* update draw step triggers
* refactor BeginningOfCombatTriggeredAbility
* refactor BeginningOfFirstMainTriggeredAbility
* move Pronoun to constants package
* cleanup some cards to use simpler constructors
* package reorganization
* refactor PlayFromGraveyardControllerEffect for broader usage
* AbandonedSarcophagus to common class
* refactor Player::canPlayCardsFromGraveyard to AsThough common class
* a few more refactors
- added more options for priority control (play single priority, play multiple priorities until stack resolved);
- added more options for step control (play single step, play multiple steps);
- improved compatibility with AI and real time commands (now check commands can be called inside AI controlled steps);
- added tests for assign non-blocked damage;
* Fix HideawayPlayEffect to allow you to attempt to play everything, in cases of multiple Hideaway triggers.
* Allow users to choose order of cards to be potentially played.
* Update HideawayPlay and Arcane Bombardment to not ask if you want to play the cards you chose.
Update tests, add tests for
- Select the order in which to play cards
- Attempt to play two lands with only one land drop available, only the first land enters play
- Play two lands with extra land drops available.
* Fix no-parameter constructor.
* Fix Marchesa, Resolute Monarch's upkeep trigger
Before fix it was triggering wrongly when player had been dealt damage
since last turn.
* Improve Marchesa test by explicitly checking +1/+1 counters
* replace all instances of "postcombat main phase" with "second main phase" minus exceptions
* second main trigger now works correctly
* add survival test
* additional text fixes
* Fix Tergrid's Lantern and add test
* Remove custom effect, fix SacrificeTargetCost to avoid checking for activated abilities and sidestepping the controllerID
* Add test to verify change to SacrificeTargetCost
* Add special action test
* Fix canPay check for SacrificeTargetCost
* Remove activated ability check in SacrificeAllCost
* Remove cost-specific activator checks for special actions, as they are redundant
* add null check for game.getPlayer
* 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.