diff --git a/src/main/java/forge/card/abilityfactory/ai/DestroyAi.java b/src/main/java/forge/card/abilityfactory/ai/DestroyAi.java index 115071973b2..6f66d95d09f 100644 --- a/src/main/java/forge/card/abilityfactory/ai/DestroyAi.java +++ b/src/main/java/forge/card/abilityfactory/ai/DestroyAi.java @@ -14,6 +14,8 @@ import forge.card.abilityfactory.AbilityFactory; import forge.card.abilityfactory.SpellAiLogic; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; +import forge.card.cost.CostPart; +import forge.card.cost.CostSacrifice; import forge.card.cost.CostUtil; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; @@ -75,6 +77,22 @@ public class DestroyAi extends SpellAiLogic { list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { + //Check for cards that can be sacrificed in response + for (final SpellAbility ability : c.getAllSpellAbilities()) { + if (ability.isAbility()) { + final Cost cost = ability.getPayCosts(); + for (final CostPart part : cost.getCostParts()) { + if (!(part instanceof CostSacrifice)) { + continue; + } + CostSacrifice sacCost = (CostSacrifice) part; + if (sacCost.getThis() && ComputerUtil.canPayCost(ability, c.getController())) { + return false; + } + } + } + } + //Check for undying return (!c.hasKeyword("Undying") || c.getCounters(CounterType.P1P1) > 0); } }); @@ -92,7 +110,6 @@ public class DestroyAi extends SpellAiLogic { }); } - if (list.size() == 0) { return false; }