mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- 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).
This commit is contained in:
@@ -689,12 +689,21 @@ public class ComputerUtilCombat {
|
|||||||
*/
|
*/
|
||||||
public static boolean attackerWouldBeDestroyed(Player ai, final Card attacker, Combat combat) {
|
public static boolean attackerWouldBeDestroyed(Player ai, final Card attacker, Combat combat) {
|
||||||
final List<Card> blockers = combat.getBlockers(attacker);
|
final List<Card> blockers = combat.getBlockers(attacker);
|
||||||
|
int firstStrikeBlockerDmg = 0;
|
||||||
|
|
||||||
for (final Card defender : blockers) {
|
for (final Card defender : blockers) {
|
||||||
if (ComputerUtilCombat.canDestroyAttacker(ai, attacker, defender, combat, true)
|
if (ComputerUtilCombat.canDestroyAttacker(ai, attacker, defender, combat, true)
|
||||||
&& !(defender.hasKeyword("Wither") || defender.hasKeyword("Infect"))) {
|
&& !(defender.hasKeyword("Wither") || defender.hasKeyword("Infect"))) {
|
||||||
return true;
|
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);
|
return ComputerUtilCombat.totalDamageOfBlockers(attacker, blockers) >= ComputerUtilCombat.getDamageToKill(attacker);
|
||||||
|
|||||||
Reference in New Issue
Block a user