diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 08791bf1750..f114b32f0dc 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1197,16 +1197,17 @@ public class AiController { } public boolean confirmAction(SpellAbility sa, PlayerActionConfirmMode mode, String message, Map params) { - if (mode == PlayerActionConfirmMode.AlternativeDamageAssignment) { + if (mode == PlayerActionConfirmMode.AlternativeDamageAssignment || mode == PlayerActionConfirmMode.ChangeZoneToAltDestination) { + System.err.printf("Overriding AI confirmAction decision for %s, defaulting to true.\n", mode); return true; } - ApiType api = sa.getApi(); + ApiType api = sa == null ? null : sa.getApi(); // Abilities without api may also use this routine, However they should provide a unique mode value ?? How could this work? - if (api == null) { - String exMsg = String.format("AI confirmAction does not know what to decide about %s mode (api is null).", - mode); + if (sa == null || api == null) { + String exMsg = String.format("AI confirmAction does not know what to decide about %s mode (%s is null).", + mode, sa == null ? "SA" : "API"); throw new IllegalArgumentException(exMsg); } return SpellApiToAi.Converter.get(api).confirmAction(player, sa, mode, message, params);