From ac041a79f6735093b0b821308f4b3b48ea54fb5d Mon Sep 17 00:00:00 2001 From: Agetian Date: Sun, 19 Jan 2020 10:18:01 +0300 Subject: [PATCH] - Improve ProtectAi for cards that sacrifice themselves as a part of cost payment. --- .../src/main/java/forge/ai/ability/ProtectAi.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 51db49de678..310fa6e32af 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java @@ -5,11 +5,7 @@ import java.util.List; import com.google.common.base.Predicate; -import forge.ai.AiAttackController; -import forge.ai.ComputerUtil; -import forge.ai.ComputerUtilCard; -import forge.ai.ComputerUtilCombat; -import forge.ai.SpellAbilityAi; +import forge.ai.*; import forge.card.MagicColor; import forge.game.Game; import forge.game.GameObject; @@ -221,6 +217,11 @@ public class ProtectAi extends SpellAbilityAi { // Don't target cards that will die. list = ComputerUtil.getSafeTargets(ai, sa, list); + // Don't target self if the cost includes sacrificing itself + if (ComputerUtilCost.isSacrificeSelfCost(sa.getPayCosts())) { + list.remove(source); + } + if (list.isEmpty()) { return mandatory && protectMandatoryTarget(ai, sa, mandatory); }