diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index cad509f4e3b..a45ea73d7fc 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1131,11 +1131,6 @@ public class AiController { sb.append("Computer just assigned ").append(element.getName()).append(" as an attacker."); Log.debug(sb.toString()); } - - // ai is about to attack, cancel all phase skipping - for (Player p : game.getPlayers()) { - p.getController().autoPassCancel(); - } return combat; } diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index 12dadc3b15e..0151a5928bb 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -92,8 +92,8 @@ public abstract class PlayerController { autoPassUntilPhase = null; } - public boolean mayAutoPass(PhaseType phase) { - return phase.isBefore(autoPassUntilPhase); + public boolean mayAutoPass() { + return autoPassUntilPhase != null && game.getPhaseHandler().getPhase().isBefore(autoPassUntilPhase); } public boolean isAI() { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index fc45a4f7dce..99e0e8de232 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -344,11 +344,6 @@ public class TriggerHandler implements IGameStateObject { private void runSingleTrigger(final Trigger regtrig, final Map runParams) { final Map triggerParams = regtrig.getMapParams(); - // Any trigger should cause the phase not to skip - for (Player p : game.getPlayers()) { - p.getController().autoPassCancel(); - } - regtrig.setRunParams(runParams); // All tests passed, execute ability. diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 04999511e62..60cce7b7f05 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -617,6 +617,10 @@ public class PlayerControllerHuman extends PlayerController { @Override public void declareAttackers(Player attacker, Combat combat) { + if (mayAutoPass()) { + return; //don't prompt to declare attackers if user chose to end the turn + } + // This input should not modify combat object itself, but should return user choice InputAttack inpAttack = new InputAttack(attacker, combat); inpAttack.showAndWait(); @@ -631,14 +635,12 @@ public class PlayerControllerHuman extends PlayerController { @Override public SpellAbility chooseSpellAbilityToPlay() { - PhaseType phase = game.getPhaseHandler().getPhase(); - - boolean maySkipPriority = mayAutoPass(phase) || isUiSetToSkipPhase(game.getPhaseHandler().getPlayerTurn(), phase); - if (game.getStack().isEmpty() && maySkipPriority) { - return null; + if (mayAutoPass()) { + return null; //avoid prompting for input if current phase is set to be auto-passed } - else { - autoPassCancel(); // probably cancel, since something has happened + + if (game.getStack().isEmpty() && isUiSetToSkipPhase(game.getPhaseHandler().getPlayerTurn(), game.getPhaseHandler().getPhase())) { + return null; //avoid prompt for input if stack is empty and player is set to skip the current phase } InputPassPriority defaultInput = new InputPassPriority(player);