From 44119109305394802ecb434897c9fa59d0f19c6a Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 28 May 2021 17:30:12 -0400 Subject: [PATCH 1/4] junk_winder.txt fix and add to keyword --- forge-gui/res/cardsfolder/upcoming/junk_winder.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/junk_winder.txt b/forge-gui/res/cardsfolder/upcoming/junk_winder.txt index df1adbab75e..bb2250d7694 100644 --- a/forge-gui/res/cardsfolder/upcoming/junk_winder.txt +++ b/forge-gui/res/cardsfolder/upcoming/junk_winder.txt @@ -2,9 +2,9 @@ Name:Junk Winder ManaCost:5 U U Types:Creature Serpent PT:5/6 -K:Affinity:Permanent.token +K:Affinity:Permanent.token:token T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Permanent.token+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Whenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step. SVar:TrigTap:DB$ Tap | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Choose target nonland permanent an opponent controls | SubAbility$ DBPump -SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent DeckNeeds:Ability$Token Oracle:Affinity for tokens (This spell costs {1} less to cast for each token you control.)\nWhenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step. From 1f120a7faf7f93718361a579ad8f621a43436f97 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 28 May 2021 17:31:10 -0400 Subject: [PATCH 2/4] Affinity reminder text remove extra "you" --- forge-game/src/main/java/forge/game/keyword/Keyword.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/keyword/Keyword.java b/forge-game/src/main/java/forge/game/keyword/Keyword.java index 3f5bed4a1b9..bc393018cc3 100644 --- a/forge-game/src/main/java/forge/game/keyword/Keyword.java +++ b/forge-game/src/main/java/forge/game/keyword/Keyword.java @@ -18,7 +18,7 @@ public enum Keyword { UNDEFINED("", SimpleKeyword.class, false, ""), ABSORB("Absorb", KeywordWithAmount.class, false, "If a source would deal damage to this creature, prevent %d of that damage."), ADAPT("Adapt", KeywordWithCostAndAmount.class, false, "If this creature has no +1/+1 counters on it, put {%2$d:+1/+1 counter} on it."), - AFFINITY("Affinity", KeywordWithType.class, false, "This spell costs you {1} less to cast for each %s you control."), + AFFINITY("Affinity", KeywordWithType.class, false, "This spell costs {1} less to cast for each %s you control."), AFFLICT("Afflict", KeywordWithAmount.class, false, "Whenever this creature becomes blocked, defending player loses %d life."), AFTERLIFE("Afterlife", KeywordWithAmount.class, false, "When this creature dies, create {%1$d:1/1 white and black Spirit creature token} with flying."), AFTERMATH("Aftermath", SimpleKeyword.class, false, "Cast this spell only from your graveyard. Then exile it."), From 4995cc88761920ef528613c414fda7e24a45aa0a Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 28 May 2021 17:32:04 -0400 Subject: [PATCH 3/4] CardFactoryUtil.java implement optional additional param for complex Affinities --- .../src/main/java/forge/game/card/CardFactoryUtil.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 0bf1f24627b..968b0b9d1de 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -3232,8 +3232,17 @@ public class CardFactoryUtil { if (keyword.startsWith("Affinity")) { final String[] k = keyword.split(":"); final String t = k[1]; + String d = ""; + if (k.length > 2) { + final StringBuilder s = new StringBuilder(); + s.append(k[2]).append("s"); + d = s.toString(); + } String desc = "Artifact".equals(t) ? "artifacts" : CardType.getPluralType(t); + if (!d.isEmpty()) { + desc = d; + } StringBuilder sb = new StringBuilder(); sb.append("Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ AffinityX | EffectZone$ All"); sb.append("| Description$ Affinity for ").append(desc); From 254ddf8dfbcdf771ae7fc229c1ccd852515cf8a0 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sat, 29 May 2021 10:49:58 -0400 Subject: [PATCH 4/4] KeywordWithType.java special parsing for Affinity --- .../src/main/java/forge/game/keyword/KeywordWithType.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/forge-game/src/main/java/forge/game/keyword/KeywordWithType.java b/forge-game/src/main/java/forge/game/keyword/KeywordWithType.java index 3d30c625d9a..8960a920e6a 100644 --- a/forge-game/src/main/java/forge/game/keyword/KeywordWithType.java +++ b/forge-game/src/main/java/forge/game/keyword/KeywordWithType.java @@ -11,6 +11,9 @@ public class KeywordWithType extends KeywordInstance { type = details.toLowerCase(); } else if (details.contains(":")) { type = details.split(":")[0]; + if (this.toString().startsWith("Affinity")) { + type = details.split(":")[1]; + } } else { type = details; }