From fd7ba6520337e05af098611de317a9c4f70b0f5d Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 16 Sep 2017 15:29:42 +0000 Subject: [PATCH] - Improved the AI detecting whether the attacking creature would be destroyed by blockers when it has first strike or double strike (fixes e.g. a useless power pump vs. a first striker). --- forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index b12fbd86cd9..a9d556246ea 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -689,12 +689,21 @@ public class ComputerUtilCombat { */ public static boolean attackerWouldBeDestroyed(Player ai, final Card attacker, Combat combat) { final List blockers = combat.getBlockers(attacker); + int firstStrikeBlockerDmg = 0; for (final Card defender : blockers) { if (ComputerUtilCombat.canDestroyAttacker(ai, attacker, defender, combat, true) && !(defender.hasKeyword("Wither") || defender.hasKeyword("Infect"))) { return true; } + if (defender.hasKeyword("First Strike") || defender.hasKeyword("Double Strike")) { + firstStrikeBlockerDmg += defender.getNetCombatDamage(); + } + } + + // Consider first strike and double strike + if (attacker.hasKeyword("First Strike") || attacker.hasKeyword("Double Strike")) { + return firstStrikeBlockerDmg >= ComputerUtilCombat.getDamageToKill(attacker); } return ComputerUtilCombat.totalDamageOfBlockers(attacker, blockers) >= ComputerUtilCombat.getDamageToKill(attacker);