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 e25699fb28c..b5eaa5248bf 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -146,13 +146,17 @@ public abstract class Trigger extends TriggerReplacementBase { */ @Override public final String toString() { + return toString(false); + } + + public final String toString(boolean active) { if (this.mapParams.containsKey("TriggerDescription") && !this.isSuppressed()) { StringBuilder sb = new StringBuilder(); String desc = this.mapParams.get("TriggerDescription"); - desc = desc.replace("CARDNAME", getHostCard().getName()); + desc = desc.replace("CARDNAME", active ? getHostCard().toString() : getHostCard().getName()); if (getHostCard().getEffectSource() != null) { - desc = desc.replace("EFFECTSOURCE", getHostCard().getEffectSource().getName()); + desc = desc.replace("EFFECTSOURCE", active ? getHostCard().getEffectSource().toString() : getHostCard().getEffectSource().getName()); } sb.append(desc); if (!this.triggerRemembered.isEmpty()) { 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 b5cc9e57b68..b9ee766204e 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -191,12 +191,20 @@ public class WrappedAbility extends Ability { @Override public String toUnsuppressedString() { - return regtrig.toString(); + String strg = this.getStackDescription(); + /* use augmented stack description as string for wrapped things */ + String card = regtrig.getHostCard().toString(); + if (!strg.contains(card) && strg.contains(" this ")) { + /* a hack for Evolve and similar that don't have CARDNAME */ + return card + ": " + strg; + } else { + return strg; + } } @Override public String getStackDescription() { - final StringBuilder sb = new StringBuilder(regtrig.replaceAbilityText(toUnsuppressedString(), this)); + final StringBuilder sb = new StringBuilder(regtrig.replaceAbilityText(regtrig.toString(true), this)); if (usesTargeting()) { sb.append(" (Targeting "); for (final GameObject o : this.getTargets().getTargets()) { diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 133b1313dd7..f4fd53ee233 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1202,11 +1202,7 @@ public class PlayerControllerHuman String saLookupKey = firstStr; char delim = (char)5; for (int i = 1; i < orderedSAs.size(); i++) { - SpellAbility currentSa = orderedSAs.get(i); - String saStr = currentSa.toString(); - if (currentSa.getHostCard() != null) { - saStr += " - " + currentSa.getHostCard().getId(); - } + final String saStr = orderedSAs.get(i).toString(); if (!needPrompt && !saStr.equals(firstStr)) { needPrompt = true; //prompt by default unless all abilities are the same }