[DFT] various text fixes

This commit is contained in:
theelk801 2025-02-08 16:42:10 -05:00
parent 06f24515cc
commit bc120a34c7
29 changed files with 39 additions and 32 deletions

View file

@ -29,7 +29,7 @@ public final class BrightfieldMustang extends CardImpl {
// Whenever this creature attacks while saddled, untap it and put a +1/+1 counter on it. // Whenever this creature attacks while saddled, untap it and put a +1/+1 counter on it.
Ability ability = new AttacksWhileSaddledTriggeredAbility(new UntapSourceEffect().setText("untap it")); Ability ability = new AttacksWhileSaddledTriggeredAbility(new UntapSourceEffect().setText("untap it"));
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).setText("and put a +1/+1 counter on it"));
this.addAbility(ability); this.addAbility(ability);
// Saddle 1 // Saddle 1

View file

@ -50,7 +50,7 @@ public final class BrightglassGearhulk extends CardImpl {
// When this creature enters, you may search your library for up to two artifact, creature, and/or enchantment cards with mana value 1 or less, reveal them, put them into your hand, then shuffle. // When this creature enters, you may search your library for up to two artifact, creature, and/or enchantment cards with mana value 1 or less, reveal them, put them into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(0, 2, filter), true new TargetCardInLibrary(0, 2, filter), true
))); ), true));
} }
private BrightglassGearhulk(final BrightglassGearhulk card) { private BrightglassGearhulk(final BrightglassGearhulk card) {

View file

@ -38,7 +38,7 @@ public final class BurnoutBashtronaut extends CardImpl {
// {2}: This creature gets +1/+0 until end of turn. // {2}: This creature gets +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility( this.addAbility(new SimpleActivatedAbility(
new BoostSourceEffect(2, 0, Duration.EndOfTurn), new GenericManaCost(2) new BoostSourceEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2)
)); ));
// Max speed -- This creature has double strike. // Max speed -- This creature has double strike.

View file

@ -43,7 +43,7 @@ public final class CaradoraHeartOfAlacria extends CardImpl {
// When Caradora enters, you may search your library for a Mount or Vehicle card, reveal it, put it into your hand, then shuffle. // When Caradora enters, you may search your library for a Mount or Vehicle card, reveal it, put it into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true
)); ));
// If one or more +1/+1 counters would be put on a creature or Vehicle you control, that many plus one +1/+1 counters are put on it instead. // If one or more +1/+1 counters would be put on a creature or Vehicle you control, that many plus one +1/+1 counters are put on it instead.

View file

@ -35,7 +35,7 @@ public final class CarrionCruiser extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When this Vehicle enters, mill two cards. Then return a creature or Vehicle card from your graveyard to your hand. // When this Vehicle enters, mill two cards. Then return a creature or Vehicle card from your graveyard to your hand.
Ability ability = new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(3)); Ability ability = new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2));
ability.addEffect(new CarrionCruiserEffect()); ability.addEffect(new CarrionCruiserEffect());
this.addAbility(ability); this.addAbility(ability);
@ -66,7 +66,7 @@ class CarrionCruiserEffect extends OneShotEffect {
CarrionCruiserEffect() { CarrionCruiserEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "then return a creature or Vehicle card from your graveyard to your hand"; staticText = "Then return a creature or Vehicle card from your graveyard to your hand";
} }
private CarrionCruiserEffect(final CarrionCruiserEffect effect) { private CarrionCruiserEffect(final CarrionCruiserEffect effect) {

View file

@ -64,7 +64,7 @@ public final class ChandraSparkHunter extends CardImpl {
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new VehicleToken()), 0)); this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new VehicleToken()), 0));
// -7: You get an emblem with "Whenever an artifact you control enters, this emblem deals 3 damage to any target." // -7: You get an emblem with "Whenever an artifact you control enters, this emblem deals 3 damage to any target."
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new ChandraSparkHunterEmblem()))); this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new ChandraSparkHunterEmblem()), -7));
} }
private ChandraSparkHunter(final ChandraSparkHunter card) { private ChandraSparkHunter(final ChandraSparkHunter card) {

View file

@ -32,7 +32,7 @@ public final class EndriderCatalyzer extends CardImpl {
// Max speed -- {T}: Add {R}{R}. // Max speed -- {T}: Add {R}{R}.
this.addAbility(new MaxSpeedAbility(new SimpleManaAbility( this.addAbility(new MaxSpeedAbility(new SimpleManaAbility(
Zone.BATTLEFIELD, Mana.GreenMana(2), new TapSourceCost() Zone.BATTLEFIELD, Mana.RedMana(2), new TapSourceCost()
))); )));
} }

View file

@ -39,7 +39,7 @@ public final class GreenbeltGuardian extends CardImpl {
// Exhaust -- {3}{G}: Put three +1/+1 counters on this creature. // Exhaust -- {3}{G}: Put three +1/+1 counters on this creature.
this.addAbility(new ExhaustAbility( this.addAbility(new ExhaustAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new ManaCostsImpl<>("{3}{G}") new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), new ManaCostsImpl<>("{3}{G}")
)); ));
} }

View file

@ -37,7 +37,7 @@ public final class GuidelightPathmaker extends CardImpl {
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
// When this Vehicle enters, you may search your library for an artifact card and reveal it. Put it onto the battlefield if its mana value is 2 or less. Otherwise, put it into your hand. Then shuffle. // When this Vehicle enters, you may search your library for an artifact card and reveal it. Put it onto the battlefield if its mana value is 2 or less. Otherwise, put it into your hand. Then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GuidelightPathmakerEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new GuidelightPathmakerEffect(), true));
// Crew 2 // Crew 2
this.addAbility(new CrewAbility(2)); this.addAbility(new CrewAbility(2));

View file

@ -26,7 +26,7 @@ public final class HauntTheNetwork extends CardImpl {
this.getSpellAbility().addEffect(new InfoEffect("choose target opponent")); this.getSpellAbility().addEffect(new InfoEffect("choose target opponent"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ThopterColorlessToken(), 2)); this.getSpellAbility().addEffect(new CreateTokenEffect(new ThopterColorlessToken(), 2));
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(ArtifactYouControlCount.instance) this.getSpellAbility().addEffect(new LoseLifeTargetEffect(ArtifactYouControlCount.instance)
.setText("then the chosen player loses X life")); .setText("Then the chosen player loses X life"));
this.getSpellAbility().addEffect(new GainLifeEffect( this.getSpellAbility().addEffect(new GainLifeEffect(
ArtifactYouControlCount.instance, "and you gain X life, " + ArtifactYouControlCount.instance, "and you gain X life, " +
"where X is the number of artifacts you control" "where X is the number of artifacts you control"

View file

@ -42,7 +42,7 @@ public final class KickoffCelebrations extends CardImpl {
// When this enchantment enters, you may discard a card. If you do, draw two cards. // When this enchantment enters, you may discard a card. If you do, draw two cards.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()) new DoIfCostPaid(new DrawCardSourceControllerEffect(2), new DiscardCardCost())
)); ));
// Max speed -- Sacrifice this enchantment: Creatures and Vehicles you control gain haste until end of turn. // Max speed -- Sacrifice this enchantment: Creatures and Vehicles you control gain haste until end of turn.

View file

@ -34,7 +34,7 @@ import java.util.UUID;
public final class OviyaAutomechArtisan extends CardImpl { public final class OviyaAutomechArtisan extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("creature that's attacking one of your opponents"); = new FilterCreaturePermanent("each creature that's attacking one of your opponents");
static { static {
filter.add(OviyaAutomechArtisanPredicate.instance); filter.add(OviyaAutomechArtisanPredicate.instance);

View file

@ -29,7 +29,7 @@ public final class PactdollTerror extends CardImpl {
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility( Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
new LoseLifeOpponentsEffect(1), new LoseLifeOpponentsEffect(1),
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT,
true, false false, false
); );
ability.addEffect(new GainLifeEffect(1).concatBy("and")); ability.addEffect(new GainLifeEffect(1).concatBy("and"));
this.addAbility(ability); this.addAbility(ability);

View file

@ -95,6 +95,6 @@ class PitAutomatonTriggeredAbility extends DelayedTriggeredAbility {
@Override @Override
public String getRule() { public String getRule() {
return "When you next activate an exhaust ability this turn, copy it. You may choose new targets for the copy."; return "When you next activate an exhaust ability that isn't a mana ability this turn, copy it. You may choose new targets for the copy.";
} }
} }

View file

@ -32,7 +32,7 @@ public final class RoverBlades extends CardImpl {
// Equipped creature has double strike. // Equipped creature has double strike.
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect( this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(
DoubleStrikeAbility.getInstance(), AttachmentType.AURA DoubleStrikeAbility.getInstance(), AttachmentType.EQUIPMENT
))); )));
// Equip {4} // Equip {4}

View file

@ -54,7 +54,7 @@ public final class SabSunenLuxaEmbodied extends CardImpl {
); );
ability.addEffect(new ConditionalOneShotEffect( ability.addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(2), SabSunenLuxaEmbodiedCondition.ODD, new DrawCardSourceControllerEffect(2), SabSunenLuxaEmbodiedCondition.ODD,
"then if it has an odd number of counters on it, draw two cards" "Then if it has an odd number of counters on it, draw two cards"
)); ));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -62,7 +62,7 @@ public final class SabotageStrategist extends CardImpl {
class SabotageStrategistTriggeredAbility extends TriggeredAbilityImpl { class SabotageStrategistTriggeredAbility extends TriggeredAbilityImpl {
SabotageStrategistTriggeredAbility() { SabotageStrategistTriggeredAbility() {
super(Zone.BATTLEFIELD, new BoostTargetEffect(-1, 0)); super(Zone.BATTLEFIELD, new BoostTargetEffect(-1, 0).setText("those creatures get -1/-0 until end of turn"));
this.setTriggerPhrase("Whenever one or more creatures attack you, "); this.setTriggerPhrase("Whenever one or more creatures attack you, ");
} }

View file

@ -60,6 +60,7 @@ public final class SamutTheDrivingForce extends CardImpl {
// Noncreature spells you cast cost {X} less to cast, where X is your speed. // Noncreature spells you cast cost {X} less to cast, where X is your speed.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
new SpellsCostReductionControllerEffect(filter, ControllerSpeedCount.instance) new SpellsCostReductionControllerEffect(filter, ControllerSpeedCount.instance)
.setText("noncreature spells you cast cost {X} less to cast, where X is your speed")
)); ));
} }

View file

@ -68,7 +68,7 @@ public final class TheAetherspark extends CardImpl {
this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(2), -5)); this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(2), -5));
// -10: Add ten mana of any one color. // -10: Add ten mana of any one color.
this.addAbility(new LoyaltyAbility(new AddManaOfAnyColorEffect(3), -10)); this.addAbility(new LoyaltyAbility(new AddManaOfAnyColorEffect(10), -10));
} }
private TheAetherspark(final TheAetherspark card) { private TheAetherspark(final TheAetherspark card) {

View file

@ -33,7 +33,8 @@ public final class TicketTortoise extends CardImpl {
this.addAbility(DefenderAbility.getInstance()); this.addAbility(DefenderAbility.getInstance());
// When this creature enters, if an opponent controls more lands than you, you create a Treasure token. // When this creature enters, if an opponent controls more lands than you, you create a Treasure token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new TreasureToken())).withInterveningIf(condition)); this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new TreasureToken())
.setText("you create a Treasure token")).withInterveningIf(condition));
} }
private TicketTortoise(final TicketTortoise card) { private TicketTortoise(final TicketTortoise card) {

View file

@ -36,7 +36,7 @@ public final class VeteranBeastrider extends CardImpl {
// {2}{G}{W}: Creatures you control get +1/+1 until end of turn. // {2}{G}{W}: Creatures you control get +1/+1 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostControlledEffect( this.addAbility(new SimpleActivatedAbility(new BoostControlledEffect(
1, 1, Duration.EndOfTurn, true 1, 1, Duration.EndOfTurn, false
), new ManaCostsImpl<>("{2}{G}{W}"))); ), new ManaCostsImpl<>("{2}{G}{W}")));
} }

View file

@ -70,7 +70,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODES = "MH3;M3C"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all private static final String FULL_ABILITIES_CHECK_SET_CODES = "DFT"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
private static final boolean CHECK_COPYABLE_FIELDS = true; // disable for better verify test performance private static final boolean CHECK_COPYABLE_FIELDS = true; // disable for better verify test performance

View file

@ -10,6 +10,7 @@ import mage.cards.Card;
import mage.constants.*; import mage.constants.*;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.util.CardUtil;
/** /**
* @author TheElk801 * @author TheElk801
@ -85,6 +86,6 @@ class MaxSpeedAbilityEffect extends ContinuousEffectImpl {
@Override @Override
public String getText(Mode mode) { public String getText(Mode mode) {
return "Max speed &mdash; " + ability.getRule(); return "Max speed &mdash; " + CardUtil.getTextWithFirstCharUpperCase(ability.getRule());
} }
} }

View file

@ -35,7 +35,7 @@ class MayCastFromGraveyardEffect extends AsThoughEffectImpl {
MayCastFromGraveyardEffect() { MayCastFromGraveyardEffect() {
super(AsThoughEffectType.CAST_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.PutCreatureInPlay); super(AsThoughEffectType.CAST_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.PutCreatureInPlay);
staticText = "you may cast {this} from your graveyard"; staticText = "you may cast this card from your graveyard";
} }
private MayCastFromGraveyardEffect(final MayCastFromGraveyardEffect effect) { private MayCastFromGraveyardEffect(final MayCastFromGraveyardEffect effect) {

View file

@ -16,7 +16,7 @@ import java.util.UUID;
public class ExileSourceFromGraveCost extends CostImpl { public class ExileSourceFromGraveCost extends CostImpl {
public ExileSourceFromGraveCost() { public ExileSourceFromGraveCost() {
this.text = "exile {this} from your graveyard"; this.text = "exile this card from your graveyard";
} }
private ExileSourceFromGraveCost(final ExileSourceFromGraveCost cost) { private ExileSourceFromGraveCost(final ExileSourceFromGraveCost cost) {

View file

@ -36,8 +36,9 @@ public class GainAbilitySourceEffect extends ContinuousEffectImpl {
super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
this.ability = ability; this.ability = ability;
this.onCard = onCard; this.onCard = onCard;
this.staticText = "{this} gains " + CardUtil.stripReminderText(ability.getRule()) this.staticText = "{this} " + (duration == Duration.WhileOnBattlefield ? "has" : "gains") +
+ (duration.toString().isEmpty() ? "" : ' ' + duration.toString()); ' ' + CardUtil.stripReminderText(ability.getRule()) +
(duration.toString().isEmpty() ? "" : ' ' + duration.toString());
this.generateGainAbilityDependencies(ability, null); this.generateGainAbilityDependencies(ability, null);
} }

View file

@ -20,8 +20,8 @@ public final class ChandraSparkHunterEmblem extends Emblem {
public ChandraSparkHunterEmblem() { public ChandraSparkHunterEmblem() {
super("Emblem Chandra"); super("Emblem Chandra");
Ability ability = new EntersBattlefieldAllTriggeredAbility( Ability ability = new EntersBattlefieldAllTriggeredAbility(
Zone.COMMAND, new DamageTargetEffect(3), Zone.COMMAND, new DamageTargetEffect(3, "this emblem"),
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN, false StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, false
); );
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.getAbilities().add(ability); this.getAbilities().add(ability);

View file

@ -11,7 +11,7 @@ import mage.constants.SubType;
public final class PilotSaddleCrewToken extends TokenImpl { public final class PilotSaddleCrewToken extends TokenImpl {
public PilotSaddleCrewToken() { public PilotSaddleCrewToken() {
super("Pilot Token", "1/1 colorless Pilot creature token with \"This creature saddles Mounts and crews Vehicles as though its power were 2 greater.\""); super("Pilot Token", "1/1 colorless Pilot creature token with \"This token saddles Mounts and crews Vehicles as though its power were 2 greater.\"");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.PILOT); subtype.add(SubType.PILOT);
power = new MageInt(1); power = new MageInt(1);

View file

@ -10,6 +10,7 @@ import mage.abilities.costs.VariableCost;
import mage.abilities.costs.mana.*; import mage.abilities.costs.mana.*;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.SavedDamageValue; import mage.abilities.dynamicvalue.common.SavedDamageValue;
import mage.abilities.dynamicvalue.common.SavedDiscardValue;
import mage.abilities.dynamicvalue.common.SavedGainedLifeValue; import mage.abilities.dynamicvalue.common.SavedGainedLifeValue;
import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffect;
@ -967,7 +968,9 @@ public final class CardUtil {
boolean xValue = amount.toString().equals("X"); boolean xValue = amount.toString().equals("X");
if (xValue) { if (xValue) {
sb.append("X ").append(counter.getName()).append(" counters"); sb.append("X ").append(counter.getName()).append(" counters");
} else if (amount == SavedDamageValue.MANY || amount == SavedGainedLifeValue.MANY) { } else if (amount == SavedDamageValue.MANY
|| amount == SavedGainedLifeValue.MANY
|| amount == SavedDiscardValue.MANY) {
sb.append("that many ").append(counter.getName()).append(" counters"); sb.append("that many ").append(counter.getName()).append(" counters");
} else { } else {
sb.append(counter.getDescription()); sb.append(counter.getDescription());