From a7d359fa1008619c32d0eec2d4d2e479707c7ad6 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sat, 8 Feb 2014 20:52:02 +0000 Subject: [PATCH] loop until nothing added to stack, AP is turn owner --- .../java/forge/game/phase/PhaseHandler.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 714a2b4645a..a0e38b45c18 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -964,16 +964,21 @@ public class PhaseHandler implements java.io.Serializable { SpellAbility chosenSa = null; do { - // Rule 704.3 Whenever a player would get priority, the game checks ... for state-based actions, - game.getAction().checkStateEffects(); - if (game.isGameOver()) - return; // state-based effects check could lead to game over - - Player whoAddsToStack = pPlayerPriority; - do { - game.getStack().chooseOrderOfSimultaneousStackEntry(whoAddsToStack); - whoAddsToStack = game.getNextPlayerAfter(whoAddsToStack); - } while( whoAddsToStack != null && whoAddsToStack != pPlayerPriority); + + boolean addedAnythingToStack; + do { + addedAnythingToStack = false; + // Rule 704.3 Whenever a player would get priority, the game checks ... for state-based actions, + game.getAction().checkStateEffects(); + if (game.isGameOver()) + return; // state-based effects check could lead to game over + + Player whoAddsToStack = playerTurn; + do { + addedAnythingToStack |= game.getStack().chooseOrderOfSimultaneousStackEntry(whoAddsToStack); + whoAddsToStack = game.getNextPlayerAfter(whoAddsToStack); + } while( whoAddsToStack != null && whoAddsToStack != pPlayerPriority); + } while(!addedAnythingToStack); chosenSa = pPlayerPriority.getController().chooseSpellAbilityToPlay(); if( null == chosenSa )