From 0413e5ded81335c213778c2b15c3be03ce955278 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Thu, 25 Mar 2021 14:50:25 +0100 Subject: [PATCH] Fix ExiledWith being cleared when successfully added to MagicStack --- forge-game/src/main/java/forge/game/GameAction.java | 9 ++------- forge-game/src/main/java/forge/game/card/Card.java | 11 +++++++++++ .../src/main/java/forge/game/zone/MagicStack.java | 1 + 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index f489d0aa7bb..8a175188322 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -251,6 +251,7 @@ public class GameAction { copied.copyChangedTextFrom(c); // copy exiled properties when adding to stack + // will be cleanup later in MagicStack copied.setExiledWith(c.getExiledWith()); copied.setExiledBy(c.getExiledBy()); @@ -416,13 +417,7 @@ public class GameAction { } if (!zoneTo.is(ZoneType.Exile) && !zoneTo.is(ZoneType.Stack)) { - Card with = c.getExiledWith(); - if (with != null) { - with.removeUntilLeavesBattlefield(c); - } - - c.setExiledWith(null); - c.setExiledBy(null); + c.cleanupExiledWith(); } } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 63bffe453a2..8a35eee03e2 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1681,6 +1681,17 @@ public class Card extends GameEntity implements Comparable, IHasSVars { exiledWith = e; } + public final void cleanupExiledWith() { + if (exiledWith == null) { + return; + } + + exiledWith.removeUntilLeavesBattlefield(this); + + exiledWith = null; + exiledBy = null; + } + public final Player getExiledBy() { return exiledBy; } public final void setExiledBy(final Player ep) { exiledBy = ep; diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index c1e6e36b939..91cf2d2fbe8 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -150,6 +150,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable