mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
Fix exploding commander costs (and damage)
This commit is contained in:
@@ -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<Card> 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<Card, Integer> 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);
|
||||
|
||||
Reference in New Issue
Block a user