diff --git a/forge-game/src/main/java/forge/game/zone/Zone.java b/forge-game/src/main/java/forge/game/zone/Zone.java index c6fa0cad66c..2a04c25c0d1 100644 --- a/forge-game/src/main/java/forge/game/zone/Zone.java +++ b/forge-game/src/main/java/forge/game/zone/Zone.java @@ -214,7 +214,26 @@ public class Zone implements java.io.Serializable, Iterable { if (!cardsAddedThisTurn.containsKey(origin)) { return false; } - return cardsAddedThisTurn.get(origin).contains(card); + if (cardsAddedThisTurn.get(origin).contains(card)) { + long ts = getCardsAddedThisTurn(origin).get(getCardsAddedThisTurn(origin).lastIndexOf(card)).getTimestamp(); + // need to check other zones if card didn't change again + for (ZoneType z : cardsAddedThisTurn.keySet()) { + if (z == origin) { + continue; + } + + if (cardsAddedThisTurn.get(z).contains(card)) { + long tsAlt = getCardsAddedThisTurn(z).get(getCardsAddedThisTurn(z).lastIndexOf(card)).getTimestamp(); + // the most recent version of this card did not come from the requested zone + if (tsAlt > ts) { + return false; + } + } + } + + return true; + } + return false; } private static List getCardsAdded(final MapOfLists cardsAdded, final ZoneType origin) {