From ebce6349cea2ea1bc6389323a702912569c4ee2b Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 15 Apr 2022 22:45:34 -0400 Subject: [PATCH] SpellAbilityEffect > tokenizeString add {n: SVar parser --- .../game/ability/SpellAbilityEffect.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index 0803c3572a7..6c63607676b 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -165,18 +165,23 @@ public abstract class SpellAbilityEffect { if ("}".equals(t)) { isPlainText = true; continue; } if (!isPlainText) { - final List objs; - if (t.startsWith("p:")) { - objs = AbilityUtils.getDefinedPlayers(sa.getHostCard(), t.substring(2), sa); - } else if (t.startsWith("s:")) { - objs = AbilityUtils.getDefinedSpellAbilities(sa.getHostCard(), t.substring(2), sa); - } else if (t.startsWith("c:")) { - objs = AbilityUtils.getDefinedCards(sa.getHostCard(), t.substring(2), sa); + if (t.startsWith("n:")) { // {n: } + String parts[] = t.substring(2).split(" ", 2); + int n = AbilityUtils.calculateAmount(sa.getHostCard(), parts[0], sa); + sb.append(parts.length == 1 ? Lang.getNumeral(n) : Lang.nounWithNumeral(n, parts[1])); } else { - objs = AbilityUtils.getDefinedObjects(sa.getHostCard(), t, sa); + final List objs; + if (t.startsWith("p:")) { + objs = AbilityUtils.getDefinedPlayers(sa.getHostCard(), t.substring(2), sa); + } else if (t.startsWith("s:")) { + objs = AbilityUtils.getDefinedSpellAbilities(sa.getHostCard(), t.substring(2), sa); + } else if (t.startsWith("c:")) { + objs = AbilityUtils.getDefinedCards(sa.getHostCard(), t.substring(2), sa); + } else { + objs = AbilityUtils.getDefinedObjects(sa.getHostCard(), t, sa); + } + sb.append(StringUtils.join(objs, ", ")); } - - sb.append(StringUtils.join(objs, ", ")); } else { sb.append(t); }