Fix 'S' cards with card name instead of {this}

This commit is contained in:
Steven Knipe 2025-07-08 02:10:39 -07:00
parent b8f3a462f9
commit 996dc796a4
18 changed files with 45 additions and 56 deletions

View file

@ -56,7 +56,7 @@ class SailIntoTheWestEffect extends OneShotEffect {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "starting with you, each player votes for return or embark. " + staticText = "starting with you, each player votes for return or embark. " +
"If return gets more votes, each player returns up to two cards from their graveyard " + "If return gets more votes, each player returns up to two cards from their graveyard " +
"to their hand, then you exile Sail into the West. " + "to their hand, then you exile {this}. " +
"If embark gets more votes or the vote is tied, each player may discard their hand and draw seven cards."; "If embark gets more votes or the vote is tied, each player may discard their hand and draw seven cards.";
} }

View file

@ -12,7 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
@ -45,7 +44,7 @@ public final class SanctumOfShatteredHeights extends CardImpl {
// {1}, Discard a land card or Shrine card: Sanctum of Shattered Heights deals X damage to target creature or planeswalker, where X is the number of Shrines you control. // {1}, Discard a land card or Shrine card: Sanctum of Shattered Heights deals X damage to target creature or planeswalker, where X is the number of Shrines you control.
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(xValue) Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(xValue)
.setText("Sanctum of Shattered Heights deals X damage to target creature or planeswalker, where X is the number of Shrines you control"), .setText("{this} deals X damage to target creature or planeswalker, where X is the number of Shrines you control"),
new ManaCostsImpl<>("{1}")) new ManaCostsImpl<>("{1}"))
.addHint(new ValueHint("Shrines you control", xValue)); .addHint(new ValueHint("Shrines you control", xValue));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(filter))); ability.addCost(new DiscardTargetCost(new TargetCardInHand(filter)));

View file

@ -1,21 +1,21 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DamageAllEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.constants.SubType;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -37,10 +37,7 @@ public final class ScaldingSalamander extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls. // Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls.
this.addAbility(new AttacksTriggeredAbility( this.addAbility(new AttacksTriggeredAbility(new DamageAllEffect(1, filter), true));
new DamageAllEffect(1, filter), true,
"Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls."
));
} }
private ScaldingSalamander(final ScaldingSalamander card) { private ScaldingSalamander(final ScaldingSalamander card) {

View file

@ -1,7 +1,6 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
@ -10,11 +9,12 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.common.TargetPlayerOrPlaneswalker; import mage.target.common.TargetPlayerOrPlaneswalker;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
*/ */
@ -43,7 +43,7 @@ class ScepterOfEmpiresEffect extends OneShotEffect {
ScepterOfEmpiresEffect() { ScepterOfEmpiresEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
staticText = "Scepter of Empires deals 1 damage to target player or planeswalker. It deals 3 damage instead if you control artifacts named Crown of Empires and Throne of Empires"; staticText = "{this} deals 1 damage to target player or planeswalker. It deals 3 damage instead if you control artifacts named Crown of Empires and Throne of Empires";
} }
private ScepterOfEmpiresEffect(final ScepterOfEmpiresEffect effect) { private ScepterOfEmpiresEffect(final ScepterOfEmpiresEffect effect) {

View file

@ -7,12 +7,10 @@ import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DoWhenCostPaid; import mage.abilities.effects.common.DoWhenCostPaid;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -50,7 +48,7 @@ public class SerumCoreChimera extends CardImpl {
reflexiveTriggeredAbility.addTarget(new TargetCreatureOrPlaneswalker()); reflexiveTriggeredAbility.addTarget(new TargetCreatureOrPlaneswalker());
activateAsSorceryActivatedAbility.addEffect(new DoWhenCostPaid(reflexiveTriggeredAbility, activateAsSorceryActivatedAbility.addEffect(new DoWhenCostPaid(reflexiveTriggeredAbility,
new DiscardCardCost(StaticFilters.FILTER_CARD_A_NON_LAND), "Discard nonland card?") new DiscardCardCost(StaticFilters.FILTER_CARD_A_NON_LAND), "Discard nonland card?")
.setText("Then you may discard a nonland card. When you discard a card this way, Serum-Core Chimera " + .setText("Then you may discard a nonland card. When you discard a card this way, {this} " +
"deals 3 damage to target creature or planeswalker.")); "deals 3 damage to target creature or planeswalker."));
this.addAbility(activateAsSorceryActivatedAbility); this.addAbility(activateAsSorceryActivatedAbility);
} }

View file

@ -89,7 +89,7 @@ class SimianSlingTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public String getRule() { public String getRule() {
return "Whenever Simian Sling or equipped creature becomes blocked, it deals 1 damage to defending player."; return "Whenever {this} or equipped creature becomes blocked, it deals 1 damage to defending player.";
} }
} }

View file

@ -19,7 +19,6 @@ import mage.filter.predicate.Predicates;
import mage.game.ExileZone; import mage.game.ExileZone;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetCard;
import mage.target.common.TargetCardInExile; import mage.target.common.TargetCardInExile;
import mage.util.CardUtil; import mage.util.CardUtil;
@ -73,7 +72,7 @@ class SkywayRobberCastForFreeEffect extends OneShotEffect {
public SkywayRobberCastForFreeEffect() { public SkywayRobberCastForFreeEffect() {
super(Outcome.PlayForFree); super(Outcome.PlayForFree);
this.staticText = "you may cast an artifact, instant, or sorcery spell from among cards exiled with Skyway Robber without paying its mana cost"; this.staticText = "you may cast an artifact, instant, or sorcery spell from among cards exiled with {this} without paying its mana cost";
} }
private SkywayRobberCastForFreeEffect(final SkywayRobberCastForFreeEffect effect) { private SkywayRobberCastForFreeEffect(final SkywayRobberCastForFreeEffect effect) {

View file

@ -1,6 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -13,6 +12,8 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID;
/** /**
* *
* @author jonubuu * @author jonubuu
@ -42,7 +43,7 @@ class SmashToSmithereensEffect extends OneShotEffect {
SmashToSmithereensEffect() { SmashToSmithereensEffect() {
super(Outcome.Detriment); super(Outcome.Detriment);
staticText = "Destroy target artifact. Smash to Smithereens deals 3 damage to that artifact's controller"; staticText = "Destroy target artifact. {this} deals 3 damage to that artifact's controller";
} }
private SmashToSmithereensEffect(final SmashToSmithereensEffect effect) { private SmashToSmithereensEffect(final SmashToSmithereensEffect effect) {

View file

@ -48,7 +48,7 @@ class SmokestackEffect extends OneShotEffect {
SmokestackEffect() { SmokestackEffect() {
super(Outcome.Sacrifice); super(Outcome.Sacrifice);
this.staticText = "that player sacrifices a permanent for each soot counter on Smokestack"; this.staticText = "that player sacrifices a permanent for each soot counter on {this}";
} }
private SmokestackEffect(final SmokestackEffect effect) { private SmokestackEffect(final SmokestackEffect effect) {

View file

@ -46,7 +46,7 @@ class SoulblastEffect extends OneShotEffect {
SoulblastEffect() { SoulblastEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "Soulblast deals damage to any target equal to the total power of the sacrificed creatures"; this.staticText = "{this} deals damage to any target equal to the total power of the sacrificed creatures";
} }
private SoulblastEffect(final SoulblastEffect effect) { private SoulblastEffect(final SoulblastEffect effect) {

View file

@ -50,7 +50,7 @@ class SparkFiendEffect extends OneShotEffect {
SparkFiendEffect() { SparkFiendEffect() {
super(Outcome.Sacrifice); super(Outcome.Sacrifice);
this.staticText = "roll two six-sided dice. If you rolled 2, 3, or 12, sacrifice Spark Fiend. If you rolled 7 or 11, don't roll dice for Spark Fiend during any of your following upkeeps. If you rolled any other total, note that total"; this.staticText = "roll two six-sided dice. If you rolled 2, 3, or 12, sacrifice {this}. If you rolled 7 or 11, don't roll dice for {this} during any of your following upkeeps. If you rolled any other total, note that total";
} }
private SparkFiendEffect(final SparkFiendEffect effect) { private SparkFiendEffect(final SparkFiendEffect effect) {
@ -93,7 +93,7 @@ class SparkFiendUpkeepEffect extends OneShotEffect {
SparkFiendUpkeepEffect() { SparkFiendUpkeepEffect() {
super(Outcome.Sacrifice); super(Outcome.Sacrifice);
this.staticText = "roll two six-sided dice. If you rolled 7, sacrifice Spark Fiend. If you roll the noted total, don't roll dice for Spark Fiend during any of your following upkeeps. Otherwise, do nothing"; this.staticText = "roll two six-sided dice. If you rolled 7, sacrifice {this}. If you roll the noted total, don't roll dice for {this} during any of your following upkeeps. Otherwise, do nothing";
} }
private SparkFiendUpkeepEffect(final SparkFiendUpkeepEffect effect) { private SparkFiendUpkeepEffect(final SparkFiendUpkeepEffect effect) {

View file

@ -1,7 +1,6 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
@ -12,14 +11,16 @@ import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetDiscard; import mage.target.common.TargetDiscard;
import java.util.UUID;
/** /**
* *
* @author jeffwadsworth * @author jeffwadsworth
@ -54,7 +55,7 @@ class SpellboundDragonEffect extends OneShotEffect {
SpellboundDragonEffect() { SpellboundDragonEffect() {
super(Outcome.BoostCreature); super(Outcome.BoostCreature);
staticText = "draw a card, then discard a card. Spellbound Dragon gets +X/+0 until end of turn, where X is the discarded card's mana value"; staticText = "draw a card, then discard a card. {this} gets +X/+0 until end of turn, where X is the discarded card's mana value";
} }
private SpellboundDragonEffect(final SpellboundDragonEffect effect) { private SpellboundDragonEffect(final SpellboundDragonEffect effect) {

View file

@ -53,7 +53,7 @@ class SphinxBoneWandEffect extends OneShotEffect {
SphinxBoneWandEffect() { SphinxBoneWandEffect() {
super(Outcome.Damage); super(Outcome.Damage);
this.staticText = "put a charge counter on Sphinx-Bone Wand. If you do, Sphinx-Bone Wand deals damage equal to the number of charge counters on it to any target"; this.staticText = "put a charge counter on Sphinx-Bone Wand. If you do, {this} deals damage equal to the number of charge counters on it to any target";
} }
private SphinxBoneWandEffect(final SphinxBoneWandEffect effect) { private SphinxBoneWandEffect(final SphinxBoneWandEffect effect) {

View file

@ -1,7 +1,6 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.RestrictionUntapNotMoreThanEffect; import mage.abilities.effects.RestrictionUntapNotMoreThanEffect;
@ -9,12 +8,13 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -45,7 +45,7 @@ class StaticOrbEffect extends RestrictionUntapNotMoreThanEffect {
public StaticOrbEffect() { public StaticOrbEffect() {
super(Duration.WhileOnBattlefield, 2, filter); super(Duration.WhileOnBattlefield, 2, filter);
staticText = "As long as Static Orb is untapped, players can't untap more than two permanents during their untap steps"; staticText = "As long as {this} is untapped, players can't untap more than two permanents during their untap steps";
} }
private StaticOrbEffect(final StaticOrbEffect effect) { private StaticOrbEffect(final StaticOrbEffect effect) {

View file

@ -1,7 +1,6 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -10,20 +9,17 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.Card; import mage.cards.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone; import mage.constants.SubType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -59,7 +55,7 @@ class StormchaserChimeraEffect extends OneShotEffect {
StormchaserChimeraEffect() { StormchaserChimeraEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = ", then reveal the top card of your library. Stormchaser Chimera gets +X/+0 until end of turn, where X is that card's mana value"; this.staticText = ", then reveal the top card of your library. {this} gets +X/+0 until end of turn, where X is that card's mana value";
} }
private StormchaserChimeraEffect(final StormchaserChimeraEffect effect) { private StormchaserChimeraEffect(final StormchaserChimeraEffect effect) {

View file

@ -1,6 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
@ -17,6 +16,8 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -29,7 +30,7 @@ public final class StruggleSurvive extends SplitCard {
// Struggle // Struggle
// Struggle deals damage to target creature equal to the number of lands you control. // Struggle deals damage to target creature equal to the number of lands you control.
Effect effect = new DamageTargetEffect(new PermanentsOnBattlefieldCount(new FilterControlledLandPermanent("the number of lands you control"))); Effect effect = new DamageTargetEffect(new PermanentsOnBattlefieldCount(new FilterControlledLandPermanent("the number of lands you control")));
effect.setText("Struggle deals damage to target creature equal to the number of lands you control"); effect.setText("{this} deals damage to target creature equal to the number of lands you control");
getLeftHalfCard().getSpellAbility().addEffect(effect); getLeftHalfCard().getSpellAbility().addEffect(effect);
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent()); getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());

View file

@ -1,7 +1,6 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.condition.common.AddendumCondition; import mage.abilities.condition.common.AddendumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DamageEverythingEffect; import mage.abilities.effects.common.DamageEverythingEffect;
@ -9,6 +8,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import java.util.UUID;
/** /**
* *
* @author fireshoes * @author fireshoes
@ -23,7 +24,7 @@ public final class SulfurousBlast extends CardImpl {
new DamageEverythingEffect(3), new DamageEverythingEffect(3),
new DamageEverythingEffect(2), new DamageEverythingEffect(2),
AddendumCondition.instance, AddendumCondition.instance,
"Sulfurous Blast deals 2 damage to each creature and each player. If you cast this spell during your main phase, Sulfurous Blast deals 3 damage to each creature and each player instead")); "{this} deals 2 damage to each creature and each player. If you cast this spell during your main phase, {this} deals 3 damage to each creature and each player instead"));
} }
private SulfurousBlast(final SulfurousBlast card) { private SulfurousBlast(final SulfurousBlast card) {

View file

@ -1,6 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.ApprovingObject; import mage.ApprovingObject;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -17,12 +16,7 @@ import mage.abilities.keyword.EquipAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.ComparisonType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicate;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
@ -33,6 +27,8 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
/** /**
* *
* @author jeffwadsworth * @author jeffwadsworth
@ -52,7 +48,7 @@ public final class Sunforger extends CardImpl {
// without paying its mana cost. Then shuffle your library. // without paying its mana cost. Then shuffle your library.
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
new SunforgerEffect(), new ManaCostsImpl<>("{R}{W}")); new SunforgerEffect(), new ManaCostsImpl<>("{R}{W}"));
ability.addCost(new SunforgerUnattachCost(this.getName())); ability.addCost(new SunforgerUnattachCost());
this.addAbility(ability); this.addAbility(ability);
// Equip {3} // Equip {3}
@ -127,8 +123,8 @@ class SunforgerEffect extends OneShotEffect {
class SunforgerUnattachCost extends CostImpl { class SunforgerUnattachCost extends CostImpl {
public SunforgerUnattachCost(String name) { public SunforgerUnattachCost() {
this.text = "Unattach " + name; this.text = "Unattach {this}";
} }
private SunforgerUnattachCost(final SunforgerUnattachCost cost) { private SunforgerUnattachCost(final SunforgerUnattachCost cost) {