From e5b3d28428be30a0d0e78ba68f231f4cbb1feb4c Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Fri, 3 Feb 2023 17:56:09 +0100 Subject: [PATCH] Trigger tweak --- .../main/java/forge/game/replacement/ReplacementHandler.java | 4 ++++ .../src/main/java/forge/game/trigger/TriggerHandler.java | 2 +- .../src/main/java/forge/game/trigger/TriggerImmediate.java | 4 ++++ forge-gui/res/cardsfolder/upcoming/melira_the_living_cure.txt | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java index 84ae152acf6..77805cfc038 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java @@ -1010,4 +1010,8 @@ public class ReplacementHandler { }); return !list.isEmpty(); } + + public boolean isReplacing() { + return !hasRun.isEmpty(); + } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index be0b3aa8c1e..4bb752fca3d 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -367,8 +367,8 @@ public class TriggerHandler { for (final Trigger deltrig : delayedTriggersWorkingCopy) { if (deltrig.getHostCard().getController().equals(player)) { if (isTriggerActive(deltrig) && canRunTrigger(deltrig, mode, runParams)) { - runSingleTrigger(deltrig, runParams); delayedTriggers.remove(deltrig); + runSingleTrigger(deltrig, runParams); } } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java b/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java index 02b1543a8c2..1c889fb16ac 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java @@ -34,6 +34,10 @@ public class TriggerImmediate extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { + if (hasParam("AfterReplacement") && hostCard.getGame().getReplacementHandler().isReplacing()) { + return false; + } + return true; } diff --git a/forge-gui/res/cardsfolder/upcoming/melira_the_living_cure.txt b/forge-gui/res/cardsfolder/upcoming/melira_the_living_cure.txt index 92d7115144b..ca25cddb388 100644 --- a/forge-gui/res/cardsfolder/upcoming/melira_the_living_cure.txt +++ b/forge-gui/res/cardsfolder/upcoming/melira_the_living_cure.txt @@ -3,8 +3,8 @@ ManaCost:G W Types:Legendary Creature Human Scout PT:3/3 R:Event$ AddCounter | ActiveZones$ Battlefield | ValidPlayer$ You | ValidCounterType$ POISON | ReplaceWith$ OnlyOnePoison | Description$ If you would get one or more poison counters, instead you get one poison counter and you can't get additional poison counters this turn. -SVar:OnlyOnePoison:DB$ ReplaceCounter | ValidCounterType$ POISON | Amount$ 1 | SubAbility$ DBDelayedTrigger -SVar:DBDelayedTrigger:DB$ DelayedTrigger | Mode$ CounterAddedOnce | ValidPlayer$ You | CounterType$ POISON | TriggerZones$ Battlefield | Static$ True | Execute$ TrigEffect +SVar:OnlyOnePoison:DB$ ReplaceCounter | ValidCounterType$ POISON | Amount$ 1 | SubAbility$ DBImmediateTrigger +SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Static$ True | Execute$ TrigEffect | AfterReplacement$ True SVar:TrigEffect:DB$ Effect | StaticAbilities$ NoMorePoison SVar:NoMorePoison:Mode$ CantPutCounter | ValidPlayer$ You | CounterType$ POISON | Description$ You can't get additional poison counters this turn. A:AB$ DelayedTrigger | Cost$ Exile<1/CARDNAME> | ValidTgts$ Creature.Other,Artifact.Other | TgtPrompt$ Select another target creature or artifact | Mode$ ChangesZone | RememberObjects$ Targeted | ValidCard$ Card.IsTriggerRemembered | Origin$ Battlefield | Destination$ Graveyard | ThisTurn$ True | Execute$ TrigReturn | StackDescription$ When {c:Targeted} is put into a graveyard this turn, return it to the battlefield under its owner's control. | SpellDescription$ Choose another target creature or artifact. When it's put into a graveyard this turn, return that card to the battlefield under its owner's control.