[TLE] various text fixes

This commit is contained in:
theelk801 2025-11-18 11:30:24 -05:00
parent 790361f59f
commit 761818c90f
20 changed files with 54 additions and 40 deletions

View file

@ -41,7 +41,7 @@ public final class AvatarKyoshiEarthbender extends CardImpl {
))); )));
// At the beginning of combat on your turn, earthbend 8, then untap that land. // At the beginning of combat on your turn, earthbend 8, then untap that land.
Ability ability = new BeginningOfCombatTriggeredAbility(new EarthbendTargetEffect(8)); Ability ability = new BeginningOfCombatTriggeredAbility(new EarthbendTargetEffect(8, false));
ability.addEffect(new UntapTargetEffect().setText(", then untap that land")); ability.addEffect(new UntapTargetEffect().setText(", then untap that land"));
ability.addTarget(new TargetControlledLandPermanent()); ability.addTarget(new TargetControlledLandPermanent());
this.addAbility(ability); this.addAbility(ability);

View file

@ -47,7 +47,7 @@ public final class BaboonSpirit extends CardImpl {
// {3}{U}: Exile another target creature you control. Return it to the battlefield under its owner's control at the beginning of the next end step. // {3}{U}: Exile another target creature you control. Return it to the battlefield under its owner's control at the beginning of the next end step.
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
new ExileReturnBattlefieldNextEndStepTargetEffect(), new ManaCostsImpl<>("{3}{U}") new ExileReturnBattlefieldNextEndStepTargetEffect().withTextThatCard(false), new ManaCostsImpl<>("{3}{U}")
); );
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));
this.addAbility(ability); this.addAbility(ability);

View file

@ -42,7 +42,7 @@ public final class BeifongsBountyHunters extends CardImpl {
// Whenever a nonland creature you control dies, earthbend X, where X is that creature's power. // Whenever a nonland creature you control dies, earthbend X, where X is that creature's power.
Ability ability = new DiesCreatureTriggeredAbility( Ability ability = new DiesCreatureTriggeredAbility(
new EarthbendTargetEffect(BeifongsBountyHuntersValue.instance), false, filter new EarthbendTargetEffect(BeifongsBountyHuntersValue.instance, true), false, filter
); );
ability.addTarget(new TargetControlledLandPermanent()); ability.addTarget(new TargetControlledLandPermanent());
this.addAbility(ability); this.addAbility(ability);

View file

@ -47,7 +47,7 @@ public final class BoscoJustABear extends CardImpl {
// {2}{G}, Sacrifice a Food: Put two +1/+1 counters on Bosco. He gains trample until end of turn. // {2}{G}, Sacrifice a Food: Put two +1/+1 counters on Bosco. He gains trample until end of turn.
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new ManaCostsImpl<>("{2}{G}") new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new ManaCostsImpl<>("{2}{G}")
); );
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_FOOD)); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_FOOD));
ability.addEffect(new GainAbilitySourceEffect( ability.addEffect(new GainAbilitySourceEffect(

View file

@ -35,7 +35,7 @@ public final class BumisFeastLecture extends CardImpl {
// Create a Food token. Then earthbend X, where X is twice the number of Foods you control. // Create a Food token. Then earthbend X, where X is twice the number of Foods you control.
this.getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken()));
this.getSpellAbility().addEffect(new EarthbendTargetEffect(xValue).concatBy("Then")); this.getSpellAbility().addEffect(new EarthbendTargetEffect(xValue, true).concatBy("Then"));
this.getSpellAbility().addTarget(new TargetControlledLandPermanent()); this.getSpellAbility().addTarget(new TargetControlledLandPermanent());
this.getSpellAbility().addHint(hint); this.getSpellAbility().addHint(hint);
} }

View file

@ -46,12 +46,12 @@ public final class ChongAndLilyNomads extends CardImpl {
// * Put a lore counter on each of any number of target Sagas you control. // * Put a lore counter on each of any number of target Sagas you control.
Ability ability = new AttacksWithCreaturesTriggeredAbility( Ability ability = new AttacksWithCreaturesTriggeredAbility(
new AddCountersTargetEffect(CounterType.LORE.createInstance()), 1, filter new AddCountersTargetEffect(CounterType.LORE.createInstance()), 1, filter
); ).setTriggerPhrase("Whenever one or more Bards you control attack, ");
ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, ChongAndLilyNomadsValue.getFilter())); ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, ChongAndLilyNomadsValue.getFilter()));
// * Creatures you control get +1/+0 until end of turn for each lore counter among Sagas you control. // * Creatures you control get +1/+0 until end of turn for each lore counter among Sagas you control.
ability.addMode(new Mode(new BoostControlledEffect( ability.addMode(new Mode(new BoostControlledEffect(
ChongAndLilyNomadsValue.instance, StaticValue.get(0), Duration.WhileOnBattlefield ChongAndLilyNomadsValue.instance, StaticValue.get(0), Duration.EndOfTurn
))); )));
this.addAbility(ability.addHint(ChongAndLilyNomadsValue.getHint())); this.addAbility(ability.addHint(ChongAndLilyNomadsValue.getHint()));
} }

View file

@ -22,10 +22,11 @@ public final class CrackedEarthTechnique extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Earthbend 3, then earthbend 3. You gain 3 life. // Earthbend 3, then earthbend 3. You gain 3 life.
this.getSpellAbility().addEffect(new EarthbendTargetEffect(3)); this.getSpellAbility().addEffect(new EarthbendTargetEffect(3, false));
this.getSpellAbility().addEffect(new EarthbendTargetEffect(3) this.getSpellAbility().addEffect(new EarthbendTargetEffect(3, false)
.concatBy(", then")
.setTargetPointer(new SecondTargetPointer()) .setTargetPointer(new SecondTargetPointer())
.concatBy(", then")); );
this.getSpellAbility().addTarget(new TargetControlledLandPermanent().withChooseHint("first target")); this.getSpellAbility().addTarget(new TargetControlledLandPermanent().withChooseHint("first target"));
this.getSpellAbility().addTarget(new TargetControlledLandPermanent().withChooseHint("second target")); this.getSpellAbility().addTarget(new TargetControlledLandPermanent().withChooseHint("second target"));
this.getSpellAbility().addEffect(new GainLifeEffect(3)); this.getSpellAbility().addEffect(new GainLifeEffect(3));

View file

@ -44,6 +44,7 @@ public final class FireNationTurret extends CardImpl {
ability = new SimpleActivatedAbility( ability = new SimpleActivatedAbility(
new DamageTargetEffect(50, "it"), new DamageTargetEffect(50, "it"),
new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(50)) new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(50))
.setText("remove fifty charge counters from {this}")
); );
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,7 +1,6 @@
package mage.cards.g; package mage.cards.g;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.costs.OrCost; import mage.abilities.costs.OrCost;
@ -14,9 +13,13 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.Counter; import mage.counters.Counter;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.Game; import mage.game.Game;
@ -57,7 +60,7 @@ public final class GavelOfTheRighteous extends CardImpl {
Outcome.BoostCreature, Outcome.BoostCreature,
new OrCost( new OrCost(
"Pay {3} or remove a counter from {this}", "Pay {3} or remove a counter from {this}",
new GenericManaCost(3), new RemoveCountersSourceCost() new GenericManaCost(3), new RemoveCountersSourceCost(1)
), ),
false false
)); ));

View file

@ -1,23 +1,23 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.FirebendingAbility; import mage.abilities.keyword.FirebendingAbility;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.MentorAbility; import mage.abilities.keyword.MentorAbility;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
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.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.CounterAnyPredicate; import mage.filter.predicate.permanent.CounterAnyPredicate;
import java.util.UUID;
/** /**
*
* @author anonymous * @author anonymous
*/ */
public final class IrohDragonOfTheWest extends CardImpl { public final class IrohDragonOfTheWest extends CardImpl {
@ -30,7 +30,7 @@ public final class IrohDragonOfTheWest extends CardImpl {
public IrohDragonOfTheWest(UUID ownerId, CardSetInfo setInfo) { public IrohDragonOfTheWest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.NOBLE); this.subtype.add(SubType.NOBLE);
@ -45,7 +45,9 @@ public final class IrohDragonOfTheWest extends CardImpl {
this.addAbility(new MentorAbility()); this.addAbility(new MentorAbility());
// At the beginning of combat on your turn, each creature you control with a counter on it gains firebending 2 until end of turn. // At the beginning of combat on your turn, each creature you control with a counter on it gains firebending 2 until end of turn.
this.addAbility(new BeginningOfCombatTriggeredAbility(new GainAbilityControlledEffect(new FirebendingAbility(2), Duration.EndOfTurn, filter))); this.addAbility(new BeginningOfCombatTriggeredAbility(new GainAbilityControlledEffect(
new FirebendingAbility(2), Duration.EndOfTurn, filter
).setText("each creature you control with a counter on it gains firebending 2 until end of turn")));
} }
private IrohDragonOfTheWest(final IrohDragonOfTheWest card) { private IrohDragonOfTheWest(final IrohDragonOfTheWest card) {

View file

@ -32,7 +32,7 @@ public final class Rockalanche extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Earthbend X, where X is the number of Forests you control. // Earthbend X, where X is the number of Forests you control.
this.getSpellAbility().addEffect(new EarthbendTargetEffect(xValue)); this.getSpellAbility().addEffect(new EarthbendTargetEffect(xValue, true));
this.getSpellAbility().addTarget(new TargetControlledLandPermanent()); this.getSpellAbility().addTarget(new TargetControlledLandPermanent());
this.getSpellAbility().addHint(hint); this.getSpellAbility().addHint(hint);

View file

@ -41,7 +41,7 @@ public final class ScarringMemories extends CardImpl {
// You may cast this spell as though it had flash if you control an attacking legendary creature. // You may cast this spell as though it had flash if you control an attacking legendary creature.
this.addAbility(new CastAsThoughItHadFlashIfConditionAbility( this.addAbility(new CastAsThoughItHadFlashIfConditionAbility(
condition, "you may cast this spell as though it had flash if you control an attacking legendary creature" condition, "you may cast this spell as though it had flash if you control an attacking legendary creature."
)); ));
// Target opponent sacrifices a creature of their choice, discards a card, and loses 3 life. // Target opponent sacrifices a creature of their choice, discards a card, and loses 3 life.

View file

@ -46,7 +46,7 @@ public final class TheBoulderReadyToRumble extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Whenever The Boulder attacks, earthbend X, where X is the number of creatures you control with power 4 or greater. // Whenever The Boulder attacks, earthbend X, where X is the number of creatures you control with power 4 or greater.
Ability ability = new AttacksTriggeredAbility(new EarthbendTargetEffect(xValue)); Ability ability = new AttacksTriggeredAbility(new EarthbendTargetEffect(xValue, true));
ability.addTarget(new TargetControlledLandPermanent()); ability.addTarget(new TargetControlledLandPermanent());
this.addAbility(ability.addHint(hint)); this.addAbility(ability.addHint(hint));
} }

View file

@ -44,7 +44,7 @@ public final class TheLegendOfKyoshi extends CardImpl {
sagaAbility.addChapterEffect( sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_II, this, SagaChapter.CHAPTER_II,
new Effects( new Effects(
new EarthbendTargetEffect(CardsInControllerHandCount.ANY) new EarthbendTargetEffect(CardsInControllerHandCount.ANY, true)
.setText("earthbend X, where X is the number of cards in your hand"), .setText("earthbend X, where X is the number of cards in your hand"),
new AddCardSubTypeTargetEffect(SubType.ISLAND, Duration.Custom) new AddCardSubTypeTargetEffect(SubType.ISLAND, Duration.Custom)
.setText("That land becomes an Island in addition to its other types") .setText("That land becomes an Island in addition to its other types")

View file

@ -42,7 +42,7 @@ public final class TophEarthbendingMaster extends CardImpl {
))); )));
// Whenever you attack, earthbend X, where X is the number of experience counters you have. // Whenever you attack, earthbend X, where X is the number of experience counters you have.
Ability ability = new AttacksWithCreaturesTriggeredAbility(new EarthbendTargetEffect(xValue), 1); Ability ability = new AttacksWithCreaturesTriggeredAbility(new EarthbendTargetEffect(xValue, true), 1);
ability.addTarget(new TargetControlledLandPermanent()); ability.addTarget(new TargetControlledLandPermanent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -42,7 +42,7 @@ public final class TophGreatestEarthbender extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// When Toph enters, earthbend X, where X is the amount of mana spent to cast her. // When Toph enters, earthbend X, where X is the amount of mana spent to cast her.
Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(ManaSpentToCastCount.instance)); Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(ManaSpentToCastCount.instance, true));
ability.addTarget(new TargetControlledLandPermanent()); ability.addTarget(new TargetControlledLandPermanent());
this.addAbility(ability); this.addAbility(ability);

View file

@ -11,7 +11,9 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.*; import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -21,16 +23,11 @@ public class RemoveCountersSourceCost extends CostImpl {
private final int amount; private final int amount;
private final String name; private final String name;
public RemoveCountersSourceCost() {
this.amount = 1;
this.name = "";
this.text = "remove a counter from {this}";
}
public RemoveCountersSourceCost(int amount) { public RemoveCountersSourceCost(int amount) {
this.amount = amount; this.amount = amount;
this.name = ""; this.name = "";
this.text = "remove " + CardUtil.numberToText(amount) + " counters from {this}"; this.text = "remove " + CardUtil.numberToText(amount, "a") +
" counter" + (amount > 1 ? "s" : "") + " from {this}";
} }
public RemoveCountersSourceCost(Counter counter) { public RemoveCountersSourceCost(Counter counter) {
@ -87,7 +84,7 @@ public class RemoveCountersSourceCost extends CostImpl {
} }
paid = true; paid = true;
} }
} else if (permanent.getCounters(game).getCount(name) >= amount){ } else if (permanent.getCounters(game).getCount(name) >= amount) {
permanent.removeCounters(name, amount, source, game); permanent.removeCounters(name, amount, source, game);
this.paid = true; this.paid = true;
} }

View file

@ -28,19 +28,26 @@ import mage.util.CardUtil;
public class EarthbendTargetEffect extends OneShotEffect { public class EarthbendTargetEffect extends OneShotEffect {
private final DynamicValue amount; private final DynamicValue amount;
private final boolean withReminderText;
public EarthbendTargetEffect(int amount) { public EarthbendTargetEffect(int amount) {
this(StaticValue.get(amount)); this(amount, true);
} }
public EarthbendTargetEffect(DynamicValue amount) { public EarthbendTargetEffect(int amount, boolean withReminderText) {
this(StaticValue.get(amount), withReminderText);
}
public EarthbendTargetEffect(DynamicValue amount, boolean withReminderText) {
super(Outcome.Benefit); super(Outcome.Benefit);
this.amount = amount; this.amount = amount;
this.withReminderText = withReminderText;
} }
private EarthbendTargetEffect(final EarthbendTargetEffect effect) { private EarthbendTargetEffect(final EarthbendTargetEffect effect) {
super(effect); super(effect);
this.amount = effect.amount; this.amount = effect.amount;
this.withReminderText = effect.withReminderText;
} }
@Override @Override
@ -85,6 +92,9 @@ public class EarthbendTargetEffect extends OneShotEffect {
sb.append("X, where X is "); sb.append("X, where X is ");
sb.append(amount.getMessage()); sb.append(amount.getMessage());
} }
if (!withReminderText) {
return sb.toString();
}
sb.append(". <i>(Target land you control becomes a 0/0 creature with haste that's still a land. Put "); sb.append(". <i>(Target land you control becomes a 0/0 creature with haste that's still a land. Put ");
String value = amount instanceof StaticValue String value = amount instanceof StaticValue
? CardUtil.numberToText(((StaticValue) amount).getValue(), "a") ? CardUtil.numberToText(((StaticValue) amount).getValue(), "a")

View file

@ -21,7 +21,7 @@ public class TargetAttackingCreature extends TargetPermanent {
} }
public TargetAttackingCreature(int minNumTargets, int maxNumTargets, boolean notTarget) { public TargetAttackingCreature(int minNumTargets, int maxNumTargets, boolean notTarget) {
super(minNumTargets, maxNumTargets, StaticFilters.FILTER_ATTACKING_CREATURE, notTarget); super(minNumTargets, maxNumTargets, maxNumTargets > 1 ? StaticFilters.FILTER_ATTACKING_CREATURES : StaticFilters.FILTER_ATTACKING_CREATURE, notTarget);
} }
protected TargetAttackingCreature(final TargetAttackingCreature target) { protected TargetAttackingCreature(final TargetAttackingCreature target) {

View file

@ -979,7 +979,7 @@ public final class CardUtil {
} }
if (!targetPlayerGets) { if (!targetPlayerGets) {
sb.append(add ? " on " : " from "); sb.append(add ? " on " : " from ");
if (description.contains("up to") && !description.contains("up to one")) { if (description.contains("any number") || description.contains("up to") && !description.contains("up to one")) {
sb.append("each of "); sb.append("each of ");
} }
sb.append(description); sb.append(description);