From a11eff4d9a9355e75d40e3fdbbfcf868a477bb59 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 26 Mar 2021 12:44:11 -0400 Subject: [PATCH] add Optional param and prompt to CharmEffect.java --- .../forge/game/ability/effects/CharmEffect.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 76d5c2020e0..7b4a35f8c3a 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 @@ -13,7 +13,9 @@ import forge.game.player.Player; import forge.game.spellability.AbilitySub; import forge.game.spellability.SpellAbility; import forge.util.Aggregates; +import forge.util.CardTranslation; import forge.util.Lang; +import forge.util.Localizer; import forge.util.collect.FCollection; public class CharmEffect extends SpellAbilityEffect { @@ -65,6 +67,7 @@ public class CharmEffect extends SpellAbilityEffect { } final int min = sa.hasParam("MinCharmNum") ? AbilityUtils.calculateAmount(source, sa.getParamOrDefault("MinCharmNum", "1"), sa) : num; + boolean optional = sa.hasParam("Optional"); boolean repeat = sa.hasParam("CanRepeatModes"); boolean random = sa.hasParam("Random"); boolean limit = sa.hasParam("ActivationLimit"); @@ -107,7 +110,11 @@ public class CharmEffect extends SpellAbilityEffect { } if (additionalDesc) { - sb.append(" ").append(sa.getParam("AdditionalDescription").trim()); + if (optional) { + sb.append(". ").append(sa.getParam("AdditionalDescription").trim()); + } else { + sb.append(" ").append(sa.getParam("AdditionalDescription").trim()); + } } if (!list.isEmpty()) { @@ -158,6 +165,11 @@ public class CharmEffect extends SpellAbilityEffect { return false; } + boolean isOptional = sa.hasParam("Optional"); + if (isOptional && !activator.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblWouldYouLikeCharm", CardTranslation.getTranslatedName(source.getName())))) { + return false; + } + if (sa.hasParam("Random")) { chainAbilities(sa, Aggregates.random(choices, num)); return true;