From 87296cd6a4e06b57e882485924f64f53dc4d5d03 Mon Sep 17 00:00:00 2001 From: pfps Date: Sat, 7 Jan 2017 19:08:39 +0000 Subject: [PATCH] Description for wrapped abilities includes stack information; Fixes problem with autoordering --- .../src/main/java/forge/game/trigger/Trigger.java | 8 ++++++-- .../main/java/forge/game/trigger/WrappedAbility.java | 11 +++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) 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..ddf2a0b02e2 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 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 c2c41e276be..a8f6cdedfeb 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -199,14 +199,21 @@ public class WrappedAbility extends Ability { } } + // include triggering information so that different effects look different + // this information is in the stack description so just use that + // a real solution would include only the triggering information that actually is used, but that's a major change @Override public String toUnsuppressedString() { - return regtrig.toString(); + String desc = this.getStackDescription(); /* use augmented stack description as string for wrapped things */ + String card = getTrigger().getHostCard().toString(); + if ( !desc.contains(card) && desc.contains(" this ")) { /* a hack for Evolve and similar that don't have CARDNAME */ + return card + ": " + desc; + } else return desc; } @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()) {