From 3c4309d74b8fc65694c47e79a77576a9c78e4a24 Mon Sep 17 00:00:00 2001 From: Agetian Date: Fri, 14 Jul 2017 14:44:28 +0000 Subject: [PATCH] - LifeGainAi: Do not use the "don't sac possible blockers" code path if the cost is "sac self" and the card is not a creature (e.g. Woodweaver's Puzzleknot). --- .../main/java/forge/ai/ability/LifeGainAi.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java b/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java index 076857df03d..48f6baaa2ae 100644 --- a/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java @@ -83,9 +83,16 @@ public class LifeGainAi extends SpellAbilityAi { } else { // don't sac possible blockers if (!ph.getPhase().equals(PhaseType.COMBAT_DECLARE_BLOCKERS) || !game.getCombat().getDefenders().contains(ai)) { - if (!ComputerUtilCost.checkSacrificeCost(ai, abCost, source, false)) { - return false; - } + boolean skipCheck = false; + // if it's a sac self cost and the effect source is not a creature, skip this check + // (e.g. Woodweaver's Puzzleknot) + skipCheck |= ComputerUtilCost.isSacrificeSelfCost(abCost) && !source.isCreature(); + + if (!skipCheck) { + if (!ComputerUtilCost.checkSacrificeCost(ai, abCost, source, false)) { + return false; + } + } } } } @@ -153,8 +160,6 @@ public class LifeGainAi extends SpellAbilityAi { * a {@link forge.game.spellability.SpellAbility} object. * @param mandatory * a boolean. - * @param af - * a {@link forge.game.ability.AbilityFactory} object. * * @return a boolean. */