diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index b9768cf13d7..cb23dc8d122 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -2201,10 +2201,13 @@ public class ComputerUtil { return getCardsToDiscardFromOpponent(aiChooser, p, sa, validCards, min, max); } - public static String chooseSomeType(Player ai, String kindOfType, String logic, List invalidTypes) { + public static String chooseSomeType(Player ai, String kindOfType, String logic, Collection validTypes, List invalidTypes) { if (invalidTypes == null) { invalidTypes = ImmutableList.of(); } + if (validTypes == null) { + validTypes = ImmutableList.of(); + } final Game game = ai.getGame(); String chosen = ""; @@ -2228,7 +2231,7 @@ public class ComputerUtil { } } if (StringUtils.isEmpty(chosen)) { - chosen = "Creature"; + chosen = validTypes.isEmpty() ? "Creature" : Aggregates.random(validTypes); } } else if (kindOfType.equals("Creature")) { if (logic != null) { diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index ea91175825f..acf3f1d17b0 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -503,7 +503,7 @@ public class PlayerControllerAi extends PlayerController { @Override public String chooseSomeType(String kindOfType, SpellAbility sa, Collection validTypes, List invalidTypes, boolean isOptional) { - String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), invalidTypes); + String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), validTypes, invalidTypes); if (StringUtils.isBlank(chosen) && !validTypes.isEmpty()) { chosen = validTypes.iterator().next(); System.err.println("AI has no idea how to choose " + kindOfType +", defaulting to arbitrary element: chosen");