From 1233fe89e51cb0a432b67459798ea1716c405e90 Mon Sep 17 00:00:00 2001 From: Alex Vasile <48962821+Alex-Vasile@users.noreply.github.com> Date: Sun, 9 Oct 2022 22:55:23 -0300 Subject: [PATCH] Added missing comments and missed checkes to NthTargetPointer --- .../mage/target/targetpointer/NthTargetPointer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Mage/src/main/java/mage/target/targetpointer/NthTargetPointer.java b/Mage/src/main/java/mage/target/targetpointer/NthTargetPointer.java index d0f755be48c..b1f0e4691c4 100644 --- a/Mage/src/main/java/mage/target/targetpointer/NthTargetPointer.java +++ b/Mage/src/main/java/mage/target/targetpointer/NthTargetPointer.java @@ -19,7 +19,7 @@ public abstract class NthTargetPointer extends TargetPointerImpl { private static final List emptyTargets = Collections.unmodifiableList(new ArrayList<>(0)); private Map zoneChangeCounter; - private int targetNumber; + private final int targetNumber; public NthTargetPointer(int targetNumber) { super(); @@ -66,6 +66,7 @@ public abstract class NthTargetPointer extends TargetPointerImpl { if (card != null && getZoneChangeCounter().containsKey(targetId) && card.getZoneChangeCounter(game) != getZoneChangeCounter().get(targetId)) { + // But no longer if new permanent is already on the battlefield Permanent permanent = game.getPermanentOrLKIBattlefield(targetId); if (permanent == null || permanent.getZoneChangeCounter(game) != getZoneChangeCounter().get(targetId)) { continue; @@ -88,7 +89,13 @@ public abstract class NthTargetPointer extends TargetPointerImpl { Card card = game.getCard(targetId); if (card != null && getZoneChangeCounter().containsKey(targetId) && card.getZoneChangeCounter(game) != getZoneChangeCounter().get(targetId)) { - return null; + + // Because if dies trigger has to trigger as permanent has already moved zone, we have to check if target was on the battlefield immed. before + // but no longer if new permanent is already on the battlefield + Permanent permanent = game.getPermanentOrLKIBattlefield(targetId); + if (permanent == null || permanent.getZoneChangeCounter(game) != zoneChangeCounter.get(targetId)) { + return null; + } } } return targetId;