diff --git a/forge-game/src/main/java/forge/game/GameSnapshot.java b/forge-game/src/main/java/forge/game/GameSnapshot.java index 2e9b5667e2d..4d4f5479157 100644 --- a/forge-game/src/main/java/forge/game/GameSnapshot.java +++ b/forge-game/src/main/java/forge/game/GameSnapshot.java @@ -1,11 +1,9 @@ package forge.game; -import java.util.*; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - -import forge.game.card.*; +import forge.game.card.Card; +import forge.game.card.CardCopyService; import forge.game.combat.Combat; import forge.game.mana.Mana; import forge.game.phase.PhaseHandler; @@ -17,6 +15,10 @@ import forge.game.trigger.TriggerType; import forge.game.zone.PlayerZoneBattlefield; import forge.game.zone.ZoneType; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class GameSnapshot { private final Game origGame; private Game newGame = null; @@ -80,19 +82,23 @@ public class GameSnapshot { Player toPlayer = findBy(toGame, p); List commanders = Lists.newArrayList(); + + // Commander cast times are stored in the player, not the card + toPlayer.resetCommanderStats(); for (final Card c : p.getCommanders()) { Card newCommander = findBy(toGame, c); commanders.add(newCommander); int castTimes = p.getCommanderCast(c); for (int i = 0; i < castTimes; i++) { - toPlayer.incCommanderCast(c); + toPlayer.incCommanderCast(newCommander); } } - toPlayer.setCommanders(commanders); - for (Map.Entry entry : p.getCommanderDamage()) { - toPlayer.addCommanderDamage(findBy(toGame, entry.getKey()), entry.getValue()); + Card commander = findBy(toGame, entry.getKey()); + int damage = entry.getValue(); + toPlayer.addCommanderDamage(commander, damage); } + toPlayer.setCommanders(commanders); ((PlayerZoneBattlefield) toPlayer.getZone(ZoneType.Battlefield)).setTriggers(true); } toGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);