From 070fd7695a07004bfd0832f2a8c9621d86e028a8 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 31 Jan 2014 23:59:54 +0000 Subject: [PATCH] phase won't end if players are allowed to have priority and there are sim-stack entries to be added --- .../java/forge/game/phase/PhaseHandler.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 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 fbc72b78cd2..fb5f331a4fe 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -1006,7 +1006,18 @@ public class PhaseHandler implements java.io.Serializable { if( DEBUG_PHASES ) System.out.println(String.format("%s %s: %s passes priority to %s", playerTurn, phase, pPlayerPriority, nextPlayer)); if (getFirstPriority() == nextPlayer) { - if (game.getStack().isEmpty()) { + + if (game.getStack().hasSimultaneousStackEntries() && givePriorityToPlayer) + { + Player ap = nextPlayer; + Player nap = game.getNextPlayerAfter(ap); + game.getStack().chooseOrderOfSimultaneousStackEntry(ap); + do { + game.getStack().chooseOrderOfSimultaneousStackEntry(nap); + nap = game.getNextPlayerAfter(nap); + } while( nap != ap); + // All have passed, but there's something waiting to be added to stack. After that and give them priority again + } else if (game.getStack().isEmpty()) { this.setPriority(this.getPlayerTurn()); // this needs to be set early as we exit the phase // end phase @@ -1014,10 +1025,8 @@ public class PhaseHandler implements java.io.Serializable { onPhaseEnd(); advanceToNextPhase(); onPhaseBegin(); - } - else if (!game.getStack().hasSimultaneousStackEntries()) { + } else if (!game.getStack().hasSimultaneousStackEntries()) game.getStack().resolveStack(); - } } else { // pass the priority to other player