From a0ea1f1d3fad107cedcb968e33cd7884b737181e Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sat, 11 Apr 2020 20:08:18 +0200 Subject: [PATCH] ChooseGenericEffect: when using AtRandom with IsPresent Requirement add check when no choices left --- .../forge/game/ability/effects/ChooseGenericEffect.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index c5a46346887..a1d21c94c0f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -67,8 +67,9 @@ public class ChooseGenericEffect extends SpellAbilityEffect { SpellAbility chosenSA = null; if (sa.hasParam("AtRandom")) { - int idxChosen = MyRandom.getRandom().nextInt(abilities.size()); - chosenSA = abilities.get(idxChosen); + if (!abilities.isEmpty()) { + chosenSA = abilities.get(MyRandom.getRandom().nextInt(abilities.size())); + } } else { chosenSA = p.getController().chooseSingleSpellForEffect(abilities, sa, Localizer.getInstance().getMessage("lblChooseOne"), ImmutableMap.of()); @@ -90,7 +91,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { if (fallback != null) { p.getGame().fireEvent(new GameEventCardModeChosen(p, host.getName(), fallback.getDescription(), sa.hasParam("ShowChoice"))); AbilityUtils.resolve(fallback); - } else { + } else if (!sa.hasParam("AtRandom")) { System.err.println("Warning: all Unless costs were unpayable for " + host.getName() +", but it had no FallbackAbility defined. Doing nothing (this is most likely incorrect behavior)."); } }