From f064fd5602f010dcc114aefbfeb1e3744a24b15a Mon Sep 17 00:00:00 2001 From: excessum Date: Mon, 2 Mar 2015 13:33:03 +0000 Subject: [PATCH] - Implemented AI for Feat of Resistance --- forge-ai/src/main/java/forge/ai/PlayerControllerAi.java | 2 +- .../src/main/java/forge/ai/ability/CountersPutAi.java | 8 ++++++++ forge-ai/src/main/java/forge/ai/ability/ProtectAi.java | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 0bdc7e28290..cf4b7f5e878 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -606,7 +606,7 @@ public class PlayerControllerAi extends PlayerController { if (game.stack.size() > 1) { for (SpellAbilityStackInstance si : game.getStack()) { SpellAbility spell = si.getSpellAbility(true); - if (sa != spell) { + if (sa != spell && sa.getHostCard() != spell.getHostCard()) { String s = ProtectAi.toProtectFrom(spell.getHostCard(), sa); if (s != null) { return s; diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index cb6decb74e1..6a256d9ae3f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -86,6 +86,14 @@ public class CountersPutAi extends SpellAbilityAi { } } } + + if (source.getName().equals("Feat of Resistance")) { // sub-ability should take precedence + CardCollection prot = ProtectAi.getProtectCreatures(ai, sa.getSubAbility()); + if (!prot.isEmpty()) { + sa.getTargets().add(prot.get(0)); + return true; + } + } if (sa.hasParam("Bolster")) { CardCollection creatsYouCtrl = CardLists.filter(ai.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES); diff --git a/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java b/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java index b5b51986f7b..9a9208ceb70 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java @@ -98,7 +98,7 @@ public class ProtectAi extends SpellAbilityAi { * a {@link forge.game.ability.AbilityFactory} object. * @return a {@link forge.CardList} object. */ - private static CardCollection getProtectCreatures(final Player ai, final SpellAbility sa) { + public static CardCollection getProtectCreatures(final Player ai, final SpellAbility sa) { final List gains = ProtectEffect.getProtectionList(sa); final Game game = ai.getGame(); final Combat combat = game.getCombat();