From 03f1f0ab92f4bd1a79e2cc93d34df66799e4d9a6 Mon Sep 17 00:00:00 2001 From: Sol Date: Fri, 6 Jul 2012 02:14:49 +0000 Subject: [PATCH] - Quest Tokens that start the game in play now don't flush summoning sickness until their controller's second turn --- src/main/java/forge/Card.java | 15 +++++++++++++++ src/main/java/forge/game/GameNew.java | 2 ++ src/main/java/forge/game/phase/PhaseUtil.java | 14 +++++++------- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 975c1963337..1036da2736e 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -122,6 +122,7 @@ public class Card extends GameEntity implements Comparable { private CardList blockedThisTurn = new CardList(); private CardList blockedByThisTurn = new CardList(); + private boolean startsGameInPlay = false; private boolean drawnThisTurn = false; private boolean tapped = false; private boolean sickness = true; // summoning sickness @@ -8965,4 +8966,18 @@ public class Card extends GameEntity implements Comparable { this.effectSource = src; } + /** + * @return the startsGameInPlay + */ + public boolean isStartsGameInPlay() { + return startsGameInPlay; + } + + /** + * @param startsGameInPlay0 the startsGameInPlay to set + */ + public void setStartsGameInPlay(boolean startsGameInPlay) { + this.startsGameInPlay = startsGameInPlay; + } + } // end Card class diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index 39d46f64629..a6857140cfb 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -73,11 +73,13 @@ public class GameNew { for (final Card c : human) { AllZone.getHumanPlayer().getZone(ZoneType.Battlefield).add(c); c.setSickness(true); + c.setStartsGameInPlay(true); } for (final Card c : computer) { AllZone.getComputerPlayer().getZone(ZoneType.Battlefield).add(c); c.setSickness(true); + c.setStartsGameInPlay(true); } GameNew.actuateGame(humanDeck, computerDeck); diff --git a/src/main/java/forge/game/phase/PhaseUtil.java b/src/main/java/forge/game/phase/PhaseUtil.java index 17514535967..fd6a2f40ac1 100644 --- a/src/main/java/forge/game/phase/PhaseUtil.java +++ b/src/main/java/forge/game/phase/PhaseUtil.java @@ -79,9 +79,10 @@ public class PhaseUtil { *

*/ public static void handleUntap() { - final Player turn = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); + final PhaseHandler ph = Singletons.getModel().getGameState().getPhaseHandler(); + final Player turn = ph.getPlayerTurn(); - Singletons.getModel().getGameState().getPhaseHandler().turnReset(); + ph.turnReset(); Singletons.getModel().getGameSummary().notifyNextTurn(); CMessage.SINGLETON_INSTANCE.updateGameInfo(); @@ -89,11 +90,10 @@ public class PhaseUtil { AllZone.getCombat().setAttackingPlayer(turn); AllZone.getCombat().setDefendingPlayer(turn.getOpponent()); - // For tokens a player starts the game with they don't recover from Sum. - // Sickness on first turn - if (Singletons.getModel().getGameState().getPhaseHandler().getTurn() > 0) { - final CardList list = turn.getCardsIncludePhasingIn(ZoneType.Battlefield); - for (final Card c : list) { + // Tokens starting game in play now actually suffer from Sum. Sickness again + final CardList list = turn.getCardsIncludePhasingIn(ZoneType.Battlefield); + for (final Card c : list) { + if (turn.getTurn() > 0 || !c.isStartsGameInPlay()) { c.setSickness(false); } }