diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 1651cad4127..8230b841ad2 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1138,6 +1138,9 @@ public class AiController { for (final Map.Entry mandatoryAttacker : legal.entrySet()) { combat.addAttacker(mandatoryAttacker.getKey(), mandatoryAttacker.getValue()); } + if (!CombatUtil.validateAttackers(combat)) { + aiAtk.declareAttackers(combat); + } } for (final Card element : combat.getAttackers()) { diff --git a/forge-game/src/main/java/forge/game/combat/AttackConstraints.java b/forge-game/src/main/java/forge/game/combat/AttackConstraints.java index c1285264a35..c3b037f1aa0 100644 --- a/forge-game/src/main/java/forge/game/combat/AttackConstraints.java +++ b/forge-game/src/main/java/forge/game/combat/AttackConstraints.java @@ -298,6 +298,8 @@ public class AttackConstraints { final int previousNeeded = attackersNeeded; attackersNeeded = Ints.max(3 - (myAttackers.size() + reserved.size()), 0); localMaximum -= Ints.max(attackersNeeded - previousNeeded, 0); + } else if (restrictions.get(req.attacker).getTypes().contains(AttackRestrictionType.NOT_ALONE)) { + attackersNeeded = Ints.max(2 - (myAttackers.size() + reserved.size()), 0); } }