* move "or battle" to its own class
* move "or planeswalker" to its own class
* remove strange way of setting custom text
* finally remove getTriggerPhrase
* copy constructor visibility
* fix Vraska
* 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
* Fix Ring-bearer choosing & add some GUI + logs
* use a ring svg in a separate gold panel
* use a fontawesome svg
* add a couple null checks, group icon with commander
* rework rinbearer logic according to review
* fix typo in game log
* small fixes
* 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
* Fix#9419 bug with EntersBattlefieldThisOrAnotherTriggeredAbility
* Add test for Radagast as well as Risen Reef and Caldaia Guardian
* Minor associated cleanup for EntersBattlefieldAllTriggeredAbility
* New PermanentEnteringBattlefieldManaValue
* [CSP] Fix the RevealTargetFromHandCost not allowing payment when no valid card to reveal
* cleanup text of cost
* fix martyr of bones text
* fix test using a Martyr of Sands
* [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.
* Fixed issue with UntapTargetCost
The target was allowed to actually target, so things like Halo Fountain wouldn't work on creatures with shroud.
UntapTargetCost also keeps track of the permanents which were untapped, in case those are needed.
Changed Benthic Explorers to use new UntapTargetCost
* Fixed potential bug with Benthic Explorers
* 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
* [LTR] Implement Barrow-Blade
* Took ideas from Wooden Stake, Humble and Shadowspear
* Play tested effects
* Simpler constructor for equip
* Revamped BlocksOrBlockedAttachedTriggeredAbility
* New logic in `BlocksOrBlockedAttachedTriggeredAbility`
* Changed `Ferocity` and `Gift Of The Woods`
* Removed custom class from `Barrow Blade`
* New class, revert changes in cards
* Added the new class `BlocksOrBlockedByCreatureAttachedTriggeredAbility()`
* Reverted changes to `BlocksOrBlockedAttachedTriggeredAbility()` but including `AttachmentType` in constructor
* Reverted changes to `Ferocity` and `GiftOfTheWoods`
* Changed `Barrow-Blade` to use `BlocksOrBlockedByCreatureAttachedTriggeredAbility()`
* Added a few comments
* Tried optimizing the IF statements in the new class but whenever I tried some condition would stop working, accepting suggestions
* Null check added
* Added a null check for game.getPermanent(sourceId)
* Changed checks to the top to avoid unnecessary processing when encountering any null variable
* Removed unnecessary import
The "except the first one they draw in each of their draw steps" part of the trigger was not properly checked, and cards drawn on your end step was never triggering an opposing Orcish Bowmasters.
`OpponentDrawCardExceptFirstCardDrawStepTriggeredAbility` is a triggered ability that initializes a watcher `CardsDrawnDuringDrawStepWatcher`.
However `OrTriggeredAbility` was not exposing its sub triggers' watchers to the game engine.
I am not sure the global fix to `OrTriggeredAbility` is better than a `triggeredAbility.addWatcher(...)` in OrcishBowmaster.java.
Also, the trigger text was not set at the proper level.