* Add (failing) unit test on Pyrrhic Revival
* fix PyrrhicRevival
reworked ReturnFromGraveyardToBattlefieldWithCounterTargetEffect to support having multiple cards in its targetPointer.
added test for Persist (the card from mh2).
* refactor & cleanup
* add myself as author, the effect was remade.
* 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
* New common class for "Whenever a source deals damage to {this}, " which resolves#9340
* Merge `PutLibraryIntoGraveTargetEffect` with functionally identical `MillCardsTargetEffect`
* Text fix on `RevealDragonFromHandCost` noticed in #10593
* Text fix following up on #10594
* [LTR] Implement Shelob, Child of Ungoliant
This is almost working.
I could not figure out why, but tokens made with the trigger still have subtypes, even though it has only artifact as its type.
* fix subtype of the token copy not being cleaned.
fixed Myrkul, Lord of Bones that had the same issue.
removed game argument from CreateTokenCopyTargetEffect's PermanentModifier. It was only used by Myrkul, and with no effect.
* Refactor OnLeaveReturnExiledAbility
to accommodate hand zone as well as battlefield
* Cleanup Brain Maggot and Kitesail Freebooter
* Refactor to include delayed trigger with main effect
* minor cleanup
* merge fix
* further adjustments
* Cleanup Valki, God of Lies
* fix test choices
Did not test the final code for Stone of Erech, when a filter was added to the ReplacementEffect :(
Added an unit test, just to be safer this time around.
* Slightly revamped basic card icons
All icon classes which were just static text have been removed, and instead replaced with a static instance.
A new icon for reach has been added
Some icons have been reused for new abilities (hexproof for shroud and ward, infect for toxic)
When a card would have two icons of the same type, the icons are instead combines into one with a combined hover tooltip.
* Fixed missing capitalization on ward, hexproof
* Added minor documentation and TODO questions
* Fixed typo
* Address one set of comments
* merge fix
* remove commented code
---------
Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
* [LTR] Implement Stone of Erech
Grouped together two other recent cards for that exact same replacement effect.
* refactor some more
This does extend the ReplacementEffect "If ... would die, exile it instead", using a `PermanentFilter`. [[Void Maw]] and [[Lorcan, Warlock Collector]] have thus be refactored to use that instead of a custom replacement effect.
Added a static filter `StaticFilters.FILTER_ANOTHER_CREATURE` for Void Maw that is filtering "another creature".
Found and refactored cards that were declaring that exact filter locally
* [[Flame-Kin War Scout]]
* [[Herd Gnarr]]
* [[Mogg Bombers]]
* [[Timid Drake]]
* fix void maw
* reverse changes on VoidMaw
Void Maw was a linked ability, so not exactly the same replacement effect that was refactored.
- Fix superfluous null check in Lithoform Engine
- Remove hardcoding of controlled abilities in TargetTriggeredAbility (used only in Strionic Resonator)
- EnchantmentSourcePredicate analogous to ArtifactSourcePredicate
* Hide reminder text on Zhulodok
* Use logic from GainAbilitySpellsEffect, fix so that CastFromZonePredicate works
* Text adjustments
* Show cascade ability in hand for Abaddon the Despoiler
* Remove redundant class
* Simplify Cast Through Time
* Don't add additional instances of redundant abilities
* Remove redundant check
* Add option to ignore mana validation when checking playable objects
* Fix null errors
* Fix GainAbilityControlledSpellsEffect to apply ability to playable cards rather than owned cards
* Add unit test
* Revert bad workaround code
This reverts commit 17f5be6a79.
This reverts commit 7ebd2f1815.
This reverts commit 00969d1fe7.
* Remove ownership check on exiled cards
* Another test (currently failing)
* ignore test
* fix test: strict choose mode
* Fix Blightbeetle
* Another adjustment to Laezel
* Fix Vizier of Remedies
* Make extra counters overflow safe
* Inline variable instead of field (Doubling Season)
* Added Saruman of Many Colors
Borrowed functionality in CastSecondSpellTriggeredAbility from magefree/mage#10433
Added new helper class ExileTargetCardCopyAndCastEffect for common effect
* Updated FlawlessForgery to use new ExileTargetCardCopyAndCastEffect
* Fixed overriden Effect copy functions
* Expanded ExileTargetCardCopyAndCastEffect
Added ability for non-free spells
* Removed filter lock
* De-duplicated exile and cast effects
* Fixed demilich
* Added Storm of Saruman card
Some classes have been added/adjusted for code reusability:
- CastSecondSpellTriggeredAbility has been modified to set a target pointer to either the caster or the spell (used here to set a target pointer to the spell for the copy effect)
- CopyTargetSpellEffect has been modified to allow specifying a copy applier (used here to apply the legenedary-stripping effect)
- RemoveTypeCopyApplier has been added as a generic copy applier for any cards which read "except it isn't <type>"
* Fixed verify failure - Remove ward hint on Storm of Saruman
* Fixed a typo - ammount -> amount
* Modified Double Major to use new CopyTargetSpellEffect
* Re-added ability text for Double Major