From 8e4c40ba2a048581b90e83eb81e66c02c21a10f7 Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Wed, 28 Apr 2021 21:13:19 +0000 Subject: [PATCH] getTargetableCards: Fix AI NPE --- .../main/java/forge/ai/ability/PermanentNoncreatureAi.java | 6 ++---- forge-game/src/main/java/forge/game/card/CardLists.java | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java b/forge-ai/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java index bd7db42f43f..d96a6da9951 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java @@ -40,10 +40,8 @@ public class PermanentNoncreatureAi extends PermanentAi { if (host.hasSVar("OblivionRing")) { SpellAbility effectExile = AbilityFactory.getAbility(host.getSVar("TrigExile"), host); final ZoneType origin = ZoneType.listValueOf(effectExile.getParam("Origin")).get(0); - final TargetRestrictions tgt = effectExile.getTargetRestrictions(); - final CardCollection list = CardLists.getValidCards(game.getCardsIn(origin), tgt.getValidTgts(), ai, host, - effectExile); - CardCollection targets = CardLists.getTargetableCards(list, sa); + effectExile.setActivatingPlayer(ai); + CardCollection targets = CardLists.getTargetableCards(game.getCardsIn(origin), effectExile); if (sourceName.equals("Suspension Field") || sourceName.equals("Detention Sphere")) { // existing "exile until leaves" enchantments only target diff --git a/forge-game/src/main/java/forge/game/card/CardLists.java b/forge-game/src/main/java/forge/game/card/CardLists.java index 4d1dc53fbe6..ca04608085e 100644 --- a/forge-game/src/main/java/forge/game/card/CardLists.java +++ b/forge-game/src/main/java/forge/game/card/CardLists.java @@ -232,8 +232,8 @@ public class CardLists { public static CardCollection getTargetableCards(Iterable cardList, SpellAbility source) { CardCollection result = CardLists.filter(cardList, CardPredicates.isTargetableBy(source)); - // Filter more cards that can only be detected along with other candiates - if (source.getTargets().isEmpty() && source.getMinTargets() >= 2) { + // Filter more cards that can only be detected along with other candidates + if (source.getTargets().isEmpty() && source.usesTargeting() && source.getMinTargets() >= 2) { CardCollection removeList = new CardCollection(); TargetRestrictions tr = source.getTargetRestrictions(); for (final Card card : cardList) {