diff --git a/Mage/src/main/java/mage/MageObjectReference.java b/Mage/src/main/java/mage/MageObjectReference.java index 0c4cde8808f..9fd237f7c87 100644 --- a/Mage/src/main/java/mage/MageObjectReference.java +++ b/Mage/src/main/java/mage/MageObjectReference.java @@ -47,7 +47,7 @@ public class MageObjectReference implements Comparable, Ser private static final Logger logger = Logger.getLogger(MageObjectReference.class); private final UUID sourceId; - private int zoneChangeCounter; + private final int zoneChangeCounter; public MageObjectReference(MageObject mageObject, Game game) { this.sourceId = mageObject.getId(); @@ -167,8 +167,4 @@ public class MageObjectReference implements Comparable, Ser } return null; } - - public void setZoneChangeCounter(int zoneChangeCounter) { - this.zoneChangeCounter = zoneChangeCounter; - } } diff --git a/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java b/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java index d5c099526b2..e220491074e 100644 --- a/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java +++ b/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java @@ -21,10 +21,12 @@ import mage.game.permanent.Permanent; public class FixedTargets implements TargetPointer { final ArrayList targets = new ArrayList<>(); + final ArrayList targetsNotInitialized = new ArrayList<>(); + private boolean initialized; public FixedTargets(UUID targetId) { - targets.add(new MageObjectReference(targetId)); + targetsNotInitialized.add(targetId); this.initialized = false; } @@ -46,6 +48,7 @@ public class FixedTargets implements TargetPointer { private FixedTargets(final FixedTargets fixedTargets) { this.targets.addAll(fixedTargets.targets); + this.targetsNotInitialized.addAll(fixedTargets.targetsNotInitialized); this.initialized = fixedTargets.initialized; } @@ -53,8 +56,8 @@ public class FixedTargets implements TargetPointer { public void init(Game game, Ability source) { if (!initialized) { initialized = true; - for (MageObjectReference mor : targets) { - mor.setZoneChangeCounter(game.getState().getZoneChangeCounter(mor.getSourceId())); + for (UUID targetId : targetsNotInitialized) { + targets.add(new MageObjectReference(targetId, game.getState().getZoneChangeCounter(targetId), game)); } } } @@ -87,6 +90,13 @@ public class FixedTargets implements TargetPointer { return new FixedTargets(this); } + /** + * Returns a fixed target for (and only) the first taget + * + * @param game + * @param source + * @return + */ @Override public FixedTarget getFixedTarget(Game game, Ability source) { this.init(game, source);