From b329786659f77b4e1a74b18cd66954d0f9a67a5c Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 11 Jan 2020 16:43:20 +0300 Subject: [PATCH 1/2] - Improve CopyPermanentAi for Bramble Sovereign. --- .../src/main/java/forge/ai/ability/CopyPermanentAi.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java index 032ea2fce87..9e81b4219be 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java @@ -5,6 +5,7 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.ai.*; import forge.game.Game; +import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.card.*; import forge.game.card.CardPredicates.Presets; @@ -180,6 +181,13 @@ public class CopyPermanentAi extends SpellAbilityAi { // if no targeting, it should always be ok } + if ("TriggeredCardController".equals(sa.getParam("Controller"))) { + Card trigCard = (Card)sa.getTriggeringObject(AbilityKey.Card); + if (!mandatory && trigCard.getController().isOpponentOf(aiPlayer)) { + return false; + } + } + return true; } From 45f2193e2a06bdbb55f04d10350d1b338addacc2 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 11 Jan 2020 16:44:44 +0300 Subject: [PATCH 2/2] - NPE guard. --- forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java index 9e81b4219be..7ce9dfbc473 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java @@ -183,7 +183,7 @@ public class CopyPermanentAi extends SpellAbilityAi { if ("TriggeredCardController".equals(sa.getParam("Controller"))) { Card trigCard = (Card)sa.getTriggeringObject(AbilityKey.Card); - if (!mandatory && trigCard.getController().isOpponentOf(aiPlayer)) { + if (!mandatory && trigCard != null && trigCard.getController().isOpponentOf(aiPlayer)) { return false; } }