From 21043e50d5813233f0a30a3cb0e2ddf14a5ec2d9 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Tue, 5 Apr 2022 13:41:17 +0200 Subject: [PATCH 1/2] Fix Charm NPE --- forge-ai/src/main/java/forge/ai/ability/CharmAi.java | 2 +- .../main/java/forge/game/ability/effects/CharmEffect.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java index 5772ba2dfb4..a78406df498 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java @@ -34,7 +34,7 @@ public class CharmAi extends SpellAbilityAi { num = min = choices.size(); } else { num = AbilityUtils.calculateAmount(source, sa.getParamOrDefault("CharmNum", "1"), sa); - min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParamOrDefault("MinCharmNum", "1"), sa) : num; + min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParam("MinCharmNum"), sa) : num; } boolean timingRight = sa.isTrigger(); //is there a reason to play the charm now? diff --git a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java index 31addb73b60..76a06d60df2 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java @@ -170,13 +170,14 @@ public class CharmEffect extends SpellAbilityEffect { Card source = sa.getHostCard(); Player activator = sa.getActivatingPlayer(); - final int num = Math.min(AbilityUtils.calculateAmount(source, sa.getParamOrDefault("CharmNum", "1"), sa), choices.size()); - final int min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParamOrDefault("MinCharmNum", "1"), sa) : num; + int num = AbilityUtils.calculateAmount(source, sa.getParamOrDefault("CharmNum", "1"), sa); + final int min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParam("MinCharmNum"), sa) : num; // if the amount of choices is smaller than min then they can't be chosen if (min > choices.size()) { return false; } + num = Math.min(num, choices.size()); boolean isOptional = sa.hasParam("Optional"); if (isOptional && !activator.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblWouldYouLikeCharm", CardTranslation.getTranslatedName(source.getName())))) { From 500789e42c6dbc3705035ecf5baae10015dc5120 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Tue, 5 Apr 2022 14:35:28 +0200 Subject: [PATCH 2/2] Update check --- .../src/main/java/forge/game/ability/effects/CharmEffect.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java index 76a06d60df2..0cea936f918 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java @@ -167,8 +167,8 @@ public class CharmEffect extends SpellAbilityEffect { return true; } - Card source = sa.getHostCard(); - Player activator = sa.getActivatingPlayer(); + final Card source = sa.getHostCard(); + final Player activator = sa.getActivatingPlayer(); int num = AbilityUtils.calculateAmount(source, sa.getParamOrDefault("CharmNum", "1"), sa); final int min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParam("MinCharmNum"), sa) : num;