diff --git a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java index 6fb94d1a52c..b9139eca9f1 100644 --- a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java @@ -170,7 +170,7 @@ public abstract class SpellAbilityAi { // try to target opponent, then ally, then itself for (final Player p : players) { - if (p.canBeTargetedBy(sa)) { + if (p.canBeTargetedBy(sa) && sa.canTarget(p)) { sa.resetTargets(); sa.getTargets().add(p); return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java index da199d81003..2bf1f288c98 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java @@ -62,6 +62,10 @@ public class ChangeTargetsAi extends SpellAbilityAi { // don't try targeting it if we can't legally target the host card with it in the first place return false; } + if (!sa.canTarget(topSa)) { + // don't try retargeting a spell that the current card can't legally retarget (e.g. Muck Drubb + Lightning Bolt to the face) + return false; + } if (sa.getPayCosts().getCostMana() != null && sa.getPayCosts().getCostMana().getMana().hasPhyrexian()) { ManaCost manaCost = sa.getPayCosts().getCostMana().getMana();