From d5149293dadaec09548f7c29ae0fdcc12bbf4bbe Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Sat, 10 Jul 2021 15:22:55 +0900 Subject: [PATCH 1/2] Update the implementation of trigger replacing ABILITY text. --- .../main/java/forge/game/ability/effects/RollDiceEffect.java | 2 +- forge-game/src/main/java/forge/game/trigger/Trigger.java | 4 ++-- .../src/main/java/forge/game/trigger/WrappedAbility.java | 1 - forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java index 0952a509c33..82bce83d20b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java @@ -28,7 +28,7 @@ public class RollDiceEffect extends SpellAbilityEffect { String [] kv = ab.split(":"); String desc = sa.getAdditionalAbility(kv[0]).getDescription(); if (!desc.isEmpty()) { - sb.append("\n\n").append(desc); + sb.append("\n").append(desc); } } } 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 186e8357ff5..685fc21b54e 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -193,13 +193,13 @@ public abstract class Trigger extends TriggerReplacementBase { if (ApiType.Charm.equals(sa.getApi())) { saDesc = sa.getStackDescription(); } else { - saDesc = sa.getDescription(); + saDesc = sa.toString(); } } else if (ApiType.Charm.equals(sa.getApi())) { // use special formating, can be used in Card Description saDesc = CharmEffect.makeFormatedDescription(sa); } else { - saDesc = sa.getDescription(); + saDesc = sa.toString(); } // string might have leading whitespace saDesc = saDesc.trim(); diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 189ea22af57..d7ebbcc550d 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -67,7 +67,6 @@ public class WrappedAbility extends Ability { sa = sa0; sa.setTrigger(regtrig0); decider = decider0; - sa.setDescription(this.getStackDescription()); } public SpellAbility getWrappedAbility() { diff --git a/forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt b/forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt index cbbbeed05ec..ab8132c99bd 100644 --- a/forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt +++ b/forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt @@ -2,9 +2,9 @@ Name:Aberrant Mind Sorcerer ManaCost:4 U Types:Creature Human Elf Shaman PT:3/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigPump | TriggerDescription$ Psionic Spells – When CARDNAME enters the battlefield, choose target instant or sorcery card in your graveyard, then roll a d20. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigPump | TriggerDescription$ Psionic Spells – When CARDNAME enters the battlefield, choose target instant or sorcery card in your graveyard, then ABILITY SVar:TrigPump:DB$ Pump | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtZone$ Graveyard | TgtPrompt$ Choose target instant or sorcery card in your graveyard | SubAbility$ DBRollDice -SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:DBLibrary,10-20:DBHand +SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:DBLibrary,10-20:DBHand | SpellDescription$ roll a d20. SVar:DBLibrary:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | Optional$ True | SpellDescription$ 1-9 VERT You may put that card on top of your library. SVar:DBHand:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | SpellDescription$ 10-20 VERT Return that card to your hand. Oracle:Psionic Spells — When Aberrant Mind Sorcerer enters the battlefield, choose target instant or sorcery card in your graveyard, then roll a d20.\n1-9 | You may put that card on top of your library.\n10-20 | Return that card to your hand. From 33f5080ca65a61808ca2a63d6bc65c22161713cf Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Sat, 10 Jul 2021 18:43:27 +0900 Subject: [PATCH 2/2] Fix WrappedAbility again so simultaneous trigger text is shown --- .../java/forge/game/trigger/WrappedAbility.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index d7ebbcc550d..f46bd78e19f 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -25,7 +25,6 @@ import forge.game.spellability.AbilitySub; import forge.game.spellability.AlternativeCost; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityRestriction; -import forge.game.spellability.SpellAbilityView; import forge.game.spellability.TargetChoices; import forge.game.spellability.TargetRestrictions; @@ -62,7 +61,7 @@ public class WrappedAbility extends Ability { boolean mandatory = false; public WrappedAbility(final Trigger regtrig0, final SpellAbility sa0, final Player decider0) { - super(sa0.getHostCard(), ManaCost.ZERO, sa0.getView()); + super(sa0.getHostCard(), ManaCost.ZERO); setTrigger(regtrig0); sa = sa0; sa.setTrigger(regtrig0); @@ -201,16 +200,6 @@ public class WrappedAbility extends Ability { return sa.getSATargetingCard(); } - @Override - public Card getHostCard() { - return sa.getHostCard(); - } - - @Override - public SpellAbilityView getView() { - return sa.getView(); - } - // key for autoyield - if there is a trigger use its description as the wrapper now has triggering information in its description @Override public String yieldKey() { @@ -240,6 +229,7 @@ public class WrappedAbility extends Ability { @Override public String getStackDescription() { final Trigger regtrig = getTrigger(); + if (regtrig == null) return ""; final StringBuilder sb = new StringBuilder(regtrig.replaceAbilityText(regtrig.toString(true), this)); List allTargets = sa.getAllTargetChoices(); if (!allTargets.isEmpty()) {