mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
Fix exploding commander costs (and damage)
This commit is contained in:
@@ -1,11 +1,9 @@
|
|||||||
package forge.game;
|
package forge.game;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import forge.game.card.Card;
|
||||||
import forge.game.card.*;
|
import forge.game.card.CardCopyService;
|
||||||
import forge.game.combat.Combat;
|
import forge.game.combat.Combat;
|
||||||
import forge.game.mana.Mana;
|
import forge.game.mana.Mana;
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
@@ -17,6 +15,10 @@ import forge.game.trigger.TriggerType;
|
|||||||
import forge.game.zone.PlayerZoneBattlefield;
|
import forge.game.zone.PlayerZoneBattlefield;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class GameSnapshot {
|
public class GameSnapshot {
|
||||||
private final Game origGame;
|
private final Game origGame;
|
||||||
private Game newGame = null;
|
private Game newGame = null;
|
||||||
@@ -80,19 +82,23 @@ public class GameSnapshot {
|
|||||||
Player toPlayer = findBy(toGame, p);
|
Player toPlayer = findBy(toGame, p);
|
||||||
|
|
||||||
List<Card> commanders = Lists.newArrayList();
|
List<Card> commanders = Lists.newArrayList();
|
||||||
|
|
||||||
|
// Commander cast times are stored in the player, not the card
|
||||||
|
toPlayer.resetCommanderStats();
|
||||||
for (final Card c : p.getCommanders()) {
|
for (final Card c : p.getCommanders()) {
|
||||||
Card newCommander = findBy(toGame, c);
|
Card newCommander = findBy(toGame, c);
|
||||||
commanders.add(newCommander);
|
commanders.add(newCommander);
|
||||||
int castTimes = p.getCommanderCast(c);
|
int castTimes = p.getCommanderCast(c);
|
||||||
for (int i = 0; i < castTimes; i++) {
|
for (int i = 0; i < castTimes; i++) {
|
||||||
toPlayer.incCommanderCast(c);
|
toPlayer.incCommanderCast(newCommander);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
toPlayer.setCommanders(commanders);
|
|
||||||
|
|
||||||
for (Map.Entry<Card, Integer> entry : p.getCommanderDamage()) {
|
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);
|
((PlayerZoneBattlefield) toPlayer.getZone(ZoneType.Battlefield)).setTriggers(true);
|
||||||
}
|
}
|
||||||
toGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
toGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||||
|
|||||||
Reference in New Issue
Block a user