From ee65cb64e605dc1aa1ee3f65c45a9135bb9a0fe3 Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 4 Jul 2023 22:35:05 +0300 Subject: [PATCH] - Implemented suggested optimizations. --- forge-ai/src/main/java/forge/ai/AiAttackController.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index ad4b6419591..1503adfd5bd 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -524,7 +524,7 @@ public class AiAttackController { bandingCreatures = CardLists.filter(bandingCreatures, card -> card.hasKeyword(Keyword.BANDING) || card.hasAnyKeyword(bandsWithString)); // filter out anything that can't legally attack or is already declared as an attacker - bandingCreatures = CardLists.filter(bandingCreatures, card -> CombatUtil.canAttack(card) && !combat.isAttacking(card)); + bandingCreatures = CardLists.filter(bandingCreatures, card -> !combat.isAttacking(card) && CombatUtil.canAttack(card)); } else { // Test a specific creature for Banding if (test.hasKeyword(Keyword.BANDING) || test.hasAnyKeyword(bandsWithString)) { @@ -535,6 +535,9 @@ public class AiAttackController { // respect global attack constraints GlobalAttackRestrictions restrict = GlobalAttackRestrictions.getGlobalRestrictions(ai, combat.getDefenders()); int attackMax = restrict.getMax(); + if (attackMax >= combat.getAttackers().size()) { + return; + } if (!bandingCreatures.isEmpty()) { List evasionKeywords = Arrays.asList("Flying", "Horsemanship", "Shadow", "Plainswalk", "Islandwalk",