From 94d826d2a46b5f0ff20e6b49c0cef428124a588f Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Mon, 19 Apr 2021 09:14:13 +0200 Subject: [PATCH] CountersPutAi: fix NPE in Polukranos --- .../java/forge/ai/ability/CountersPutAi.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 6cee4388a36..75c5344095d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -47,6 +47,8 @@ import forge.game.player.PlayerCollection; import forge.game.player.PlayerPredicates; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; +import forge.game.trigger.Trigger; +import forge.game.trigger.TriggerType; import forge.game.zone.ZoneType; import forge.util.Aggregates; import forge.util.MyRandom; @@ -406,19 +408,37 @@ public class CountersPutAi extends SpellAbilityAi { } if ("Polukranos".equals(logic)) { + boolean found = false; + for (Trigger tr : source.getTriggers()) { + if (!tr.getMode().equals(TriggerType.BecomeMonstrous)) { + continue; + } + SpellAbility oa = tr.ensureAbility(); + if (oa == null) { + continue; + } - CardCollection targets = CardLists.getTargetableCards(ai.getOpponents().getCreaturesInPlay(), sa); + // need to set Activating player + oa.setActivatingPlayer(ai); + CardCollection targets = CardLists.getTargetableCards(ai.getOpponents().getCreaturesInPlay(), oa); - if (!targets.isEmpty()){ - boolean canSurvive = false; - for (Card humanCreature : targets) { - if (!FightAi.canKill(humanCreature, source, 0)){ - canSurvive = true; + if (!targets.isEmpty()){ + boolean canSurvive = false; + for (Card humanCreature : targets) { + if (!FightAi.canKill(humanCreature, source, 0)){ + canSurvive = true; + break; + } } - } - if (!canSurvive){ - return false; - } + if (!canSurvive){ + return false; + } + }; + found = true; + break; + } + if (!found) { + return false; } }