From 55da7435f8860ba13b83c736ce384f75af1cf37a Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sat, 5 Jan 2019 12:01:30 +0000 Subject: [PATCH] CharmEffect: now allows zero choices --- .../forge/game/ability/effects/CharmEffect.java | 6 +++++- .../src/main/java/forge/game/trigger/Trigger.java | 13 +++++++++---- forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt | 10 ++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt 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 3652fa9ee08..88098689550 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 @@ -67,6 +67,8 @@ public class CharmEffect extends SpellAbilityEffect { if (num == min) { sb.append(Lang.getNumeral(num)); + } else if (min == 0) { + sb.append("up to ").append(Lang.getNumeral(num)); } else { sb.append(Lang.getNumeral(min)).append(" or ").append(list.size() == 2 ? "both" : "more"); } @@ -101,6 +103,8 @@ public class CharmEffect extends SpellAbilityEffect { if (num == min) { sb.append(Lang.getNumeral(num)); + } else if (min == 0) { + sb.append("up to ").append(Lang.getNumeral(num)); } else { sb.append(Lang.getNumeral(min)).append(" or ").append(list.size() == 2 ? "both" : "more"); } @@ -158,7 +162,7 @@ public class CharmEffect extends SpellAbilityEffect { final int num = sa.hasParam("CharmNumOnResolve") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CharmNumOnResolve"), sa) - : Integer.parseInt(sa.hasParam("CharmNum") ? sa.getParam("CharmNum") : "1"); + : Integer.parseInt(sa.getParamOrDefault("CharmNum", "1")); final int min = sa.hasParam("MinCharmNum") ? Integer.parseInt(sa.getParam("MinCharmNum")) : num; Card source = sa.getHostCard(); diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index fd97b6d6f9f..e901efcb665 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -206,15 +206,20 @@ public abstract class Trigger extends TriggerReplacementBase { } else { saDesc = sa.getDescription(); } + // string might have leading whitespace + saDesc = saDesc.trim(); if (!saDesc.isEmpty()) { - // string might have leading whitespace - saDesc = saDesc.trim(); - saDesc = saDesc.substring(0, 1).toLowerCase() + saDesc.substring(1); + // in case sa starts with CARDNAME, dont lowercase it + if (!saDesc.startsWith(sa.getHostCard().getName())) { + saDesc = saDesc.substring(0, 1).toLowerCase() + saDesc.substring(1); + } if (saDesc.contains("ORIGINALHOST") && sa.getOriginalHost() != null) { saDesc = TextUtil.fastReplace(saDesc, "ORIGINALHOST", sa.getOriginalHost().getName()); } - result = TextUtil.fastReplace(result, "ABILITY", saDesc); + } else { + saDesc = ""; // printed in case nothing is chosen for the ability (e.g. Charm with Up to X) } + result = TextUtil.fastReplace(result, "ABILITY", saDesc); } return result; diff --git a/forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt b/forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt new file mode 100644 index 00000000000..ab0c81cd716 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt @@ -0,0 +1,10 @@ +Name:Ravager Wurm +ManaCost:3 R G G +Types:Creature Wurm +PT:4/5 +K:Riot +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY +SVar:TrigCharm:DB$ Charm | MinCharmNum$ 0 | CharmNum$ 1 | Choices$ DBFight,DBDestroy +SVar:DBFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | SpellDescription$ CARDNAME fights target creature you don't control. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Land.hasNonManaActivatedAbility | TgtPrompt$ Select target land with an activated ability that isn't a mana ability | SpellDescription$ Destroy target land with an activated ability that iasn't a mana ability. +Oracle:Riot (This creature enters the battlefield with your choice of a +1/+1 counter or haste.)\nWhen Ravager Wurm enters the battlefield, choose up to one -\n- Ravager Wurm fights target creature you don't control.\n- Destroy target land with an activated ability that isn't a mana ability.