diff --git a/forge-ai/src/main/java/forge/ai/ability/TapAiBase.java b/forge-ai/src/main/java/forge/ai/ability/TapAiBase.java index a8f46f2a180..95efebb90c8 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TapAiBase.java +++ b/forge-ai/src/main/java/forge/ai/ability/TapAiBase.java @@ -11,6 +11,7 @@ import forge.ai.ComputerUtilAbility; import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; import forge.game.Game; +import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -309,9 +310,8 @@ public abstract class TapAiBase extends SpellAbilityAi { return true; } - // TODO: use Defined to determine, if this is an unfavorable result - - return true; + final List pDefined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); + return pDefined.isEmpty() || (pDefined.get(0).isUntapped() && pDefined.get(0).getController() != ai); } else { sa.resetTargets(); if (tapPrefTargeting(ai, source, sa, mandatory)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/UntapAi.java b/forge-ai/src/main/java/forge/ai/ability/UntapAi.java index 47c443f59b8..8816b0a5506 100644 --- a/forge-ai/src/main/java/forge/ai/ability/UntapAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/UntapAi.java @@ -66,7 +66,7 @@ public class UntapAi extends SpellAbilityAi { if (!sa.usesTargeting()) { final List pDefined = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa); - return pDefined == null || !pDefined.get(0).isUntapped() || pDefined.get(0).getController() != ai; + return pDefined.isEmpty() || (pDefined.get(0).isTapped() && pDefined.get(0).getController() == ai); } else { return untapPrefTargeting(ai, sa, false); } @@ -82,9 +82,8 @@ public class UntapAi extends SpellAbilityAi { return false; } - // TODO: use Defined to determine, if this is an unfavorable result final List pDefined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); - return pDefined == null || !pDefined.get(0).isUntapped() || pDefined.get(0).getController() != ai; + return pDefined.isEmpty() || (pDefined.get(0).isTapped() && pDefined.get(0).getController() == ai); } else { if (untapPrefTargeting(ai, sa, mandatory)) { return true;