* add new framework for batch triggers
apply for tapped, untapped, sacrificed, milled
simplify Ob Nixilis, Captive Kingpin
* add a verify check
* fix mistakes
* add simple tests
* another test
* zone change - enters battlefield
* zone change: not battlefield
* zone change - leaves battlefield
* fix Kaya Spirit's Justice
* rename OneOrMoreCombatDamagePlayerTriggeredAbility
* refactor OneOrMoreDamagePlayerTriggeredAbility
* new YoureDealtDamageTriggeredAbility
* new OpponentDealtNoncombatDamageTriggeredAbility
* rework Risona, Asari Commander
* simplify War Elemental
* Add damage batch by source
rework some delayed triggered abilities
* fix Mindblade Render
* rework Initiative and a few others
* [temp] initiative test
* refactor: common style for DealsDamageSourceTriggeredAbility
* refactor cards to use common DealsDamageSourceTriggeredAbility
* update damage players batch triggers
* fix mistake in initiative
* new DealtDamageAnyTriggeredAbility
* new DealtCombatDamageToSourceTriggeredAbility
* update dealt damage to permanent batch triggered abilities
* refactor Hot Soup and param in DealtDamageAttachedTriggeredAbility
* a few more permanent batch triggered abilities
* fix mistake
* update some more damage batch triggers
* add test for Phyrexian Negator
* update Felix Five-Boots and enable test
update Wayta, Trainer Prodigy to align
* update damage batch by source triggers
* undo mistaken change
* fix verify
* cleanup unused methods
* Revert "[temp] initiative test"
This reverts commit 11ed19295fb4f54f5e0870acd4d3d515b54761f1.
* Revert "add a verify check"
This reverts commit e7de47a6562f13c127fdc4c29a7735a08f8da9ea.
* fixes from checking text discrepancies
* fix Shriekwood Devourer
* merge fix
---------
Co-authored-by: Susucre <34709007+Susucre@users.noreply.github.com>
* [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.
* 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.
xenodron mentionned that one of the use of setSourceId is to more easily find the Event that use non-standard
sourceId.
So reverting the change made in a previous commit.
It was a non-functional change meant to ease new
BatchEvent sharing sourceId, but I'll use setSourceId
instead there.
I did check the BEGINNING_PHASE_PRE usage, and found none that wanted to watch the extra beginning phases.
Of note, we may want to have separate 'beginning of turn'/'beginning of game' events, if there is ever a way to skip beginning phases.
* create new abstract class for batch event framework
* adjust CardUtil.getEventTargets to support new framework
* update TappedBatchEvent to new framework
* update UntappedBatchEvent to new framework
* slight cleanup
* update LifeLostBatchEvent to new framework
* update ZoneChangeBatchEvent to new framework
* complete refactor by moving damage events to new framework
* remove old code no longer used
* clean up some nonsense code in star wars card
* fix watcher checking id before event type
* fix wrong id usage
* fix missed wrong id usage
* implement [WHO] Donna Noble
* Changed trigger to DAMAGED_BATCH_FOR_PERMANENTS, check for need of separate targets
* fix short circuit operator
* simplify control path in paired damage trigger
* Initial commit, missing tests
* use CardUtil.getEventTargets
* Implement Donna Noble using DamagedBatchForOnePermanentEvent
* fix double-effect bug
* remove unnecessary custom effect
* Fix addSimultaneousDamage to avoid adding damage events to existing DamagedBatchForOnePlayerEvent instances when they shouldnt
* Add clarifying comment
* Incorporate batching of DAMAGED_BATCH_FOR_ONE_PERMANENT into if-else if tree to match new logic
* Add tests
* make ability inline
* Move DamageBatchTests
* Change batch events to take first event in constructor
* refactor: improved target pointer init code and logic, added docs and runtime checks;
* game: fixed miss or wrong init calls in some continuous effects;
* game: fixed wrong usage of target pointers (miss copy code, miss npe checks);
* Implementing "case" mechanic
* [MKM] Implement Case of the Burning Masks
* [MKM] Implement Case of the Filched Falcon
* [MKM] Implement Case of the Crimson Pulse
* [MKM] Implement Case of the Locked Hothouse
* Address PR comments
* some minor adjustments
* adjustments to hints
---------
Co-authored-by: Matthew Wilson <matthew_w@vaadin.com>
Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
* Switch Convoke to using costs tag system
* Add Convoke copy/clone tests
* update author name on sufficiently changed files
* Remove now-unused CONVOKED event
* Rework AsThoughEffect
* some cleanup of MageIdentifer
* refactor ActivationStatus
* fix bolas's citadel
* fix a couple of the Alternative Cost being applied too broadly.
* fix Risen Executioneer
* allow cancellation of AsThough choice.
* fix One with the Multiverse
* cleanup cards needing their own MageIdentifier
* last couple of fixes
* apply reviews for cleaner code.
* some more cleanup
* [WOE] Implement Sharae of Numbing Depths
* change EventType.TAPPED's playerId to be the source's controller
There seems to have been no usage of the previous playerId, and it can be retrieve from the target anyway.
* apply review -- cleaner and check for creatures.
* adjust clash effect
* Make clash not a singleton
* Add unit test for Clash effect
* fix test (skip init shuffling)
* Fix CLASHED event flag logic and add to unit test
* Additional test and comments
* comments in GameEvent
* param name typo
* remove skip
* initial implementation of the ring mechanic
* some changes
* rework ring-bearer choosing
* [LTR] Implement Call of the Ring
* update ring-bearer condition