From 4acfa8f0fb9c66a5163d7019fa251f82a47566f8 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 4 Apr 2012 15:55:50 +0000 Subject: [PATCH] - The AI will now trade block with creatures with the SacMe SVar more willingly. --- src/main/java/forge/ComputerUtilBlock.java | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/forge/ComputerUtilBlock.java b/src/main/java/forge/ComputerUtilBlock.java index 6cb879c9027..063f5e7332d 100644 --- a/src/main/java/forge/ComputerUtilBlock.java +++ b/src/main/java/forge/ComputerUtilBlock.java @@ -325,7 +325,7 @@ public class ComputerUtilBlock { continue; } - Card blocker = new Card(); + Card blocker = null; final CardList blockers = ComputerUtilBlock.getPossibleBlockers(attacker, ComputerUtilBlock.getBlockersLeft(), combat); @@ -345,20 +345,26 @@ public class ComputerUtilBlock { } } // no safe blockers else { + // 3.Blockers that can destroy the attacker and have an upside when dying killingBlockers = ComputerUtilBlock.getKillingBlockers(attacker, blockers, combat); - if (killingBlockers.size() > 0) { - // 3.Blockers that can destroy the attacker and are worth - // less + for (Card b : killingBlockers) { + if ((b.hasKeyword("Undying") && b.getCounters(Counters.P1P1) == 0) + || !b.getSVar("SacMe").equals("")) { + blocker = b; + break; + } + } + // 4.Blockers that can destroy the attacker and are worth less + if (blocker == null && killingBlockers.size() > 0) { final Card worst = CardFactoryUtil.getWorstCreatureAI(killingBlockers); if ((CardFactoryUtil.evaluateCreature(worst) + ComputerUtilBlock.getDiff()) < CardFactoryUtil - .evaluateCreature(attacker) - || (worst.hasKeyword("Undying") && worst.getCounters(Counters.P1P1) == 0)) { + .evaluateCreature(attacker)) { blocker = worst; } } } - if (blocker.getName() != "") { + if (blocker != null) { currentAttackers.remove(attacker); ComputerUtilBlock.getBlockersLeft().remove(blocker); combat.addBlocker(attacker, blocker);