From ad035f1e4768292a9c845133d416e39ca5025580 Mon Sep 17 00:00:00 2001 From: jeffwadsworth <> Date: Wed, 7 Nov 2012 14:58:26 -0600 Subject: [PATCH] - Blocking by the AI should no longer freeze. Please post any errors. Small attack AI adjustments. --- .../src/mage/player/ai/ComputerPlayer6.java | 10 +++++++--- .../src/mage/player/ai/util/CombatUtil.java | 11 ++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index 1210c8400ff..7d10dc4afa2 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -1094,14 +1094,18 @@ public class ComputerPlayer6 extends ComputerPlayer implements if (attacker.getToughness().getValue() == blocker.getPower().getValue() && attacker.getPower().getValue() == blocker.getToughness().getValue()) { - if (attackerValue < blockerValue + if (attackerValue > blockerValue || blocker.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) - || blocker.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId())) { + || blocker.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) + || blocker.getAbilities().contains(new ExaltedAbility()) + || blocker.getAbilities().containsKey(DeathtouchAbility.getInstance().getId()) + || blocker.getAbilities().contains(new IndestructibleAbility())) { safeToAttack = false; } } } - if (attacker.getAbilities().containsKey(DeathtouchAbility.getInstance().getId())) { + if (attacker.getAbilities().containsKey(DeathtouchAbility.getInstance().getId()) + || attacker.getAbilities().contains(new IndestructibleAbility())) { safeToAttack = true; } if (safeToAttack) { diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/util/CombatUtil.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/util/CombatUtil.java index 67150c3ccfb..a4929a12c5a 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/util/CombatUtil.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/util/CombatUtil.java @@ -222,8 +222,8 @@ public class CombatUtil { simulateStep(sim, new FirstCombatDamageStep()); simulateStep(sim, new CombatDamageStep()); simulateStep(sim, new EndOfCombatStep()); - - sim.checkStateAndTriggered(); + // The following commented out call produces random freezes. + //sim.checkStateAndTriggered(); while (!sim.getStack().isEmpty()) { sim.getStack().resolve(sim); sim.applyEffects(); @@ -255,8 +255,8 @@ public class CombatUtil { simulateStep(sim, new FirstCombatDamageStep()); simulateStep(sim, new CombatDamageStep()); simulateStep(sim, new EndOfCombatStep()); - - sim.checkStateAndTriggered(); + // The following commented out call produces random freezes. + //sim.checkStateAndTriggered(); while (!sim.getStack().isEmpty()) { triggered = true; sim.getStack().resolve(sim); @@ -270,7 +270,8 @@ public class CombatUtil { game.getPhase().setStep(step); if (!step.skipStep(game, game.getActivePlayerId())) { step.beginStep(game, game.getActivePlayerId()); - game.checkStateAndTriggered(); + // The following commented out call produces random freezes. + //game.checkStateAndTriggered(); while (!game.getStack().isEmpty()) { game.getStack().resolve(game); game.applyEffects();