Merge branch 'master' into 'master'

Improve ProtectAi for cards that sacrifice themselves as a part of cost payment.

See merge request core-developers/forge!2453
This commit is contained in:
Michael Kamensky
2020-01-19 07:26:13 +00:00

View File

@@ -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);
}