diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index dc02ad2c80d..18f3126baee 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -1395,11 +1395,17 @@ public class GameAction { return false; } - final boolean persist = (c.hasKeyword("Persist") && (c.getCounters(CounterType.M1M1) == 0)) && !c.isToken(); - final boolean undying = (c.hasKeyword("Undying") && (c.getCounters(CounterType.P1P1) == 0)) && !c.isToken(); - final Card newCard = this.moveToGraveyard(c); + boolean persist = (c.hasKeyword("Persist") && c.getCounters(CounterType.M1M1) == 0) && !c.isToken(); + boolean undying = (c.hasKeyword("Undying") && c.getCounters(CounterType.P1P1) == 0) && !c.isToken(); + + // don't trigger persist/undying if the dying has been replaced + if (newCard == null || !newCard.isInZone(ZoneType.Graveyard)) { + persist = false; + undying = false; + } + // Destroy needs to be called with Last Known Information c.executeTrigger(ZCTrigger.DESTROY);