From e1ad69e41721ef100ae2dfb9679eb419299e7875 Mon Sep 17 00:00:00 2001 From: excessum Date: Sat, 7 Mar 2015 03:54:12 +0000 Subject: [PATCH] - Implemented AI for Temur Sabertooth --- .../main/java/forge/ai/ComputerUtilCard.java | 4 +++- .../java/forge/ai/ability/ChangeZoneAi.java | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 4f72e44c4e0..e00bb9b0c3a 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -1051,7 +1051,9 @@ public class ComputerUtilCard { } //1. save combatant - if (ComputerUtilCombat.combatantWouldBeDestroyed(ai, c, combat) && !pumpedWillDie) { + if (ComputerUtilCombat.combatantWouldBeDestroyed(ai, c, combat) && !pumpedWillDie + && !c.hasKeyword("Indestructible")) { // hack because attackerWouldBeDestroyed() does not + // check for Indestructible when computing lethal damage return true; } diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index 17b3e9c09dd..db08467edda 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -31,6 +31,7 @@ import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class ChangeZoneAi extends SpellAbilityAi { @@ -294,6 +295,20 @@ public class ChangeZoneAi extends SpellAbilityAi { source.setSVar("PayX", Integer.toString(xPay)); } } + + if (source.getName().equals("Temur Sabertooth")) { + // activated bounce + pump + if (ComputerUtilCard.shouldPumpCard(ai, sa.getSubAbility(), source, 0, 0, Arrays.asList("Indestructible")) || + ComputerUtilCard.canPumpAgainstRemoval(ai, sa.getSubAbility())) { + for (Card c : list) { + if (ComputerUtilCard.evaluateCreature(c) < ComputerUtilCard.evaluateCreature(source)) { + return true; + } + } + } + return false; + } + } if (ComputerUtil.playImmediately(ai, sa)) { @@ -315,7 +330,7 @@ public class ChangeZoneAi extends SpellAbilityAi { if (ComputerUtil.waitForBlocking(sa)) { return false; } - + final AbilitySub subAb = sa.getSubAbility(); return subAb == null || SpellApiToAi.Converter.get(subAb.getApi()).chkDrawbackWithSubs(ai, subAb); }