Merge pull request #2064 from asvitkine/more_copy

GameCopier: Handle copying of more game and player properties.
This commit is contained in:
Paul Hammerton
2022-12-13 09:19:37 +00:00
committed by GitHub
2 changed files with 39 additions and 2 deletions

View File

@@ -91,6 +91,15 @@ public class GameCopier {
newPlayer.setLifeLostLastTurn(origPlayer.getLifeLostLastTurn());
newPlayer.setLifeLostThisTurn(origPlayer.getLifeLostThisTurn());
newPlayer.setLifeGainedThisTurn(origPlayer.getLifeGainedThisTurn());
newPlayer.setBlessing(origPlayer.hasBlessing());
newPlayer.setRevolt(origPlayer.hasRevolt());
newPlayer.setLibrarySearched(origPlayer.getLibrarySearched());
newPlayer.setSpellsCastLastTurn(origPlayer.getSpellsCastLastTurn());
for (int j = 0; j < origPlayer.getSpellsCastThisTurn(); j++) {
newPlayer.addSpellCastThisTurn();
}
newPlayer.setMaxHandSize(origPlayer.getMaxHandSize());
newPlayer.setUnlimitedHandSize(origPlayer.isUnlimitedHandSize());
// TODO creatureAttackedThisTurn
for (Mana m : origPlayer.getManaPool()) {
newPlayer.getManaPool().addMana(m, false);
@@ -117,6 +126,20 @@ public class GameCopier {
p.setCommanders(commanders);
((PlayerZoneBattlefield) p.getZone(ZoneType.Battlefield)).setTriggers(true);
}
for (Player origPlayer : playerMap.keySet()) {
Player newPlayer = playerMap.get(origPlayer);
for (final Card c : origPlayer.getCommanders()) {
Card newCommander = gameObjectMap.map(c);
int castTimes = origPlayer.getCommanderCast(c);
for (int i = 0; i < castTimes; i++) {
newPlayer.incCommanderCast(newCommander);
}
}
for (Map.Entry<Card, Integer> entry : origPlayer.getCommanderDamage()) {
Card newCommander = gameObjectMap.map(entry.getKey());
newPlayer.addCommanderDamage(newCommander, entry.getValue());
}
}
newGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
for (Card c : newGame.getCardsInGame()) {
@@ -216,9 +239,21 @@ public class GameCopier {
// TODO countersAddedThisTurn
if (origGame.getStartingPlayer() != null) {
newGame.setStartingPlayer(playerMap.get(origGame.getStartingPlayer()));
}
if (origGame.getMonarch() != null) {
newGame.setMonarch(playerMap.get(origGame.getMonarch()));
}
if (origGame.getMonarchBeginTurn() != null) {
newGame.setMonarchBeginTurn(playerMap.get(origGame.getMonarchBeginTurn()));
}
if (origGame.getHasInitiative() != null) {
newGame.setHasInitiative(playerMap.get(origGame.getHasInitiative()));
}
if (origGame.getDayTime() != null) {
newGame.setDayTime(origGame.getDayTime());
}
for (ZoneType zone : ZONES) {
for (Card card : origGame.getCardsIn(zone)) {