From 61b06410ea2641e4e10cdbb8cff70e1e0d674ea8 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sun, 22 Jan 2017 11:14:45 +0000 Subject: [PATCH] - The AI should not try to illegally target a player in case it can't find any other legal target to provide (e.g. Muck Drebb + Lightning Bolt to the face). --- forge-ai/src/main/java/forge/ai/SpellAbilityAi.java | 2 +- forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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();