From 271063934aa3133067b412cc619718dfb282632d Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Thu, 14 Nov 2019 11:12:31 +0000 Subject: [PATCH] Combat: initConstraints before Declare Attackers --- .../src/main/java/forge/game/combat/Combat.java | 13 ++++++++----- .../main/java/forge/game/phase/PhaseHandler.java | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index 0b7b6dfb8f7..36f1a58fc9f 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -50,7 +50,7 @@ import java.util.Map.Entry; */ public class Combat { private final Player playerWhoAttacks; - private final AttackConstraints attackConstraints; + private AttackConstraints attackConstraints; // Defenders, as they are attacked by hostile forces private final FCollection attackableEntries = new FCollection<>(); @@ -71,10 +71,6 @@ public class Combat { public Combat(final Player attacker) { playerWhoAttacks = attacker; - // Create keys for all possible attack targets - attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks)); - - attackConstraints = new AttackConstraints(this); } public Combat(Combat combat, GameObjectMap map) { @@ -119,6 +115,13 @@ public class Combat { attackConstraints = new AttackConstraints(this); } + public void initConstraints() { + // Create keys for all possible attack targets + attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks)); + + attackConstraints = new AttackConstraints(this); + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); 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 48e86dbfa72..85e7a784d90 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -283,6 +283,7 @@ public class PhaseHandler implements java.io.Serializable { case COMBAT_DECLARE_ATTACKERS: if (!playerTurn.hasLost()) { + combat.initConstraints(); game.getStack().freezeStack(); declareAttackersTurnBasedAction(); game.getStack().unfreezeStack();