From 73e4e838bcc5649a2ce29ba062db0c15f2cd2e96 Mon Sep 17 00:00:00 2001 From: Tim Mocny Date: Wed, 2 Feb 2022 05:54:11 +0000 Subject: [PATCH] NEO: Kappa Tech-Wrecker and some etbCounter parsing upgrades --- forge-core/src/main/java/forge/util/Lang.java | 15 +++++++++++++++ .../src/main/java/forge/game/card/Card.java | 6 +++--- .../java/forge/game/card/CardFactoryUtil.java | 2 +- .../cardsfolder/upcoming/kappa_tech_wrecker.txt | 10 ++++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/kappa_tech_wrecker.txt diff --git a/forge-core/src/main/java/forge/util/Lang.java b/forge-core/src/main/java/forge/util/Lang.java index e0e4cd900d5..9d39f8079bc 100644 --- a/forge-core/src/main/java/forge/util/Lang.java +++ b/forge-core/src/main/java/forge/util/Lang.java @@ -154,6 +154,21 @@ public abstract class Lang { } } + public static String nounWithNumeralExceptOne(final int cnt, final String noun) { + final String countedForm = cnt == 1 ? noun : getPlural(noun); + final String desc = cnt == 1 ? (Lang.startsWithVowel(countedForm) ? "an" : "a") : getNumeral(cnt); + return desc + " " + countedForm; + } + + public static String nounWithNumeralExceptOne(final String cnt, final String noun) { + if (StringUtils.isNumeric(cnt)) { + return nounWithNumeralExceptOne(Integer.parseInt(cnt), noun); + } else { + // for X + return cnt + " " + getPlural(noun); + } + } + public abstract String getPossesive(final String name); public abstract String getPossessedObject(final String owner, final String object); diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index f057781f1c2..a0ef066a22f 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1923,9 +1923,9 @@ public class Card extends GameEntity implements Comparable, IHasSVars { s.append(p[4]); } } else { - s.append(getName()); - s.append(" enters the battlefield with "); - s.append(Lang.nounWithNumeral(p[2], CounterType.getType(p[1]).getName() + " counter")); + s.append(getName()).append(" enters the battlefield with "); + s.append(Lang.nounWithNumeralExceptOne(p[2], + CounterType.getType(p[1]).getName().toLowerCase() + " counter")); s.append(" on it."); } sbLong.append(s).append("\r\n"); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 1030d54ab28..d4898ee930e 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -730,7 +730,7 @@ public class CardFactoryUtil { String[] splitkw = parse.split(":"); String desc = "CARDNAME enters the battlefield with "; - desc += Lang.nounWithNumeral(splitkw[2], CounterType.getType(splitkw[1]).getName() + " counter"); + desc += Lang.nounWithNumeralExceptOne(splitkw[2], CounterType.getType(splitkw[1]).getName().toLowerCase() + " counter"); desc += " on it."; String extraparams = ""; diff --git a/forge-gui/res/cardsfolder/upcoming/kappa_tech_wrecker.txt b/forge-gui/res/cardsfolder/upcoming/kappa_tech_wrecker.txt new file mode 100644 index 00000000000..2e0f702cf99 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kappa_tech_wrecker.txt @@ -0,0 +1,10 @@ +Name:Kappa Tech-Wrecker +ManaCost:1 G +Types:Creature Turtle Ninja +PT:1/3 +K:Ninjutsu:1 G +K:etbCounter:Deathtouch:1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigImmediateTrig | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may remove a deathtouch counter from it. When you do, exile target artifact or enchantment that player controls. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ SubCounter<1/Deathtouch> | Execute$ TrigExile | CopyTriggeringObjects$ True | TriggerDescription$ When you do, exile target artifact or enchantment that player controls. +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer,Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact or enchantment creature that player controls | Origin$ Battlefield | Destination$ Exile +Oracle:Ninjutsu {1}{G}\nKappa Tech-Wrecker enters the battlefield with a deathtouch counter on it.\nWhenever Kappa Tech-Wrecker deals combat damage to a player, you may remove a deathtouch counter from it. When you do, exile target artifact or enchantment that player controls.