From 0d517b37ab641e7152021b5cfb4dff124a3d95cb Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Wed, 1 Feb 2023 12:26:02 +0100 Subject: [PATCH] Slight tweak so it only uses old zone when LKI applies --- .../java/forge/game/replacement/ReplacementHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 838e32b83b0..84ae152acf6 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java @@ -174,10 +174,11 @@ public class ReplacementHandler { @Override public boolean visit(Card crd) { Card c = preList.get(crd); - Zone cardZone = game.getChangeZoneLKIInfo(c).getLastKnownZone(); + Zone cardZone = game.getZoneOf(c); + Zone lkiZone = game.getChangeZoneLKIInfo(c).getLastKnownZone(); // only when not prelist - if (c == crd && cardZone.is(ZoneType.Battlefield) && event == ReplacementType.Moved && + if (c == crd && lkiZone.is(ZoneType.Battlefield) && event == ReplacementType.Moved && runParams.containsKey(AbilityKey.LastStateBattlefield) && runParams.get(AbilityKey.LastStateBattlefield) != null) { Card lastState = ((CardCollectionView) runParams.get(AbilityKey.LastStateBattlefield)).get(crd); // no LKI found for this card so it shouldn't apply, this can happen during simultaneous zone changes @@ -186,6 +187,7 @@ public class ReplacementHandler { } // use the LKI because it has the right RE from the state before the effect started c = lastState; + cardZone = lkiZone; } for (final ReplacementEffect replacementEffect : c.getReplacementEffects()) {