diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index deeac74bcdc..3bab4612704 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -2762,11 +2762,21 @@ public class Card extends MyObservable implements Comparable { updateObservers(); } } - + public void clearControllers() { controllerObjects.clear(); } + + public ArrayList getControllerObjects() + { + return controllerObjects; + } + + public void setControllerObjects(ArrayList in) + { + controllerObjects = in; + } /** *

Setter for the field name.

diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 52910b20290..7f06e7c8972 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -77,6 +77,7 @@ public class GameAction { copied = c; else { copied = AllZone.getCardFactory().copyCard(c); + copied.setControllerObjects(c.getControllerObjects()); // todo: improve choices here // Certain attributes need to be copied from Hand->Stack and Stack->Battlefield @@ -120,6 +121,10 @@ public class GameAction { prev.remove(c); } + + if (!(c.isToken() || suppress || zone.is(Constant.Zone.Battlefield))) + copied = AllZone.getCardFactory().copyCard(copied); + //remove all counters from the card if destination is not the battlefield if (!zone.is(Constant.Zone.Battlefield)) copied.clearCounters();