some more text fixes

This commit is contained in:
theelk801 2025-06-14 11:38:00 -04:00
parent 96cc1e40ee
commit d43e96eaf2
18 changed files with 37 additions and 29 deletions

View file

@ -41,12 +41,10 @@ public final class AcererakTheArchlich extends CardImpl {
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
// When Acererak the Archlich enters the battlefield, if you have not completed Tomb of Annihilation, return Acererak the Archlich to its owner's hand and venture into the dungeon. // When Acererak the Archlich enters the battlefield, if you have not completed Tomb of Annihilation, return Acererak the Archlich to its owner's hand and venture into the dungeon.
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandSourceEffect(true).setText("return it to its owner's hand")) Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandSourceEffect(true))
.withInterveningIf(AcererakTheArchlichCondition.instance); .withInterveningIf(AcererakTheArchlichCondition.instance);
ability.addEffect(new VentureIntoTheDungeonEffect().concatBy("and")); ability.addEffect(new VentureIntoTheDungeonEffect().concatBy("and"));
ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability.addHint(CurrentDungeonHint.instance).addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher());
ability.addHint(CompletedDungeonCondition.getHint());
this.addAbility(ability, new CompletedDungeonWatcher());
// Whenever Acererak the Archlich attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature. // Whenever Acererak the Archlich attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature.
this.addAbility(new AttacksTriggeredAbility(new AcererakTheArchlichEffect())); this.addAbility(new AttacksTriggeredAbility(new AcererakTheArchlichEffect()));

View file

@ -31,7 +31,7 @@ public final class AdaptiveTrainingPost extends CardImpl {
this.addAbility(new SpellCastControllerTriggeredAbility( this.addAbility(new SpellCastControllerTriggeredAbility(
new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), new AddCountersSourceEffect(CounterType.CHARGE.createInstance()),
StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false
).withInterveningIf(condition)); ).withInterveningIf(condition).withRuleTextReplacement(true));
// Remove three charge counters from this artifact: When you next cast an instant or sorcery spell this turn, copy it and you may choose new targets for the copy. // Remove three charge counters from this artifact: When you next cast an instant or sorcery spell this turn, copy it and you may choose new targets for the copy.
this.addAbility(new SimpleActivatedAbility( this.addAbility(new SimpleActivatedAbility(

View file

@ -1,12 +1,12 @@
package mage.cards.a; package mage.cards.a;
import mage.MageInt; import mage.MageInt;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.MoreCardsInHandThanOpponentsCondition; import mage.abilities.condition.common.MoreCardsInHandThanOpponentsCondition;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -15,18 +15,14 @@ import mage.filter.common.FilterControlledPermanent;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class AkutaBornOfAsh extends CardImpl { public final class AkutaBornOfAsh extends CardImpl {
private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp"); private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent(SubType.SWAMP, "a Swamp");
static {
filterSwamp.add(SubType.SWAMP.getPredicate());
}
public AkutaBornOfAsh(UUID ownerId, CardSetInfo setInfo) { public AkutaBornOfAsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.SPIRIT); this.subtype.add(SubType.SPIRIT);
@ -37,9 +33,14 @@ public final class AkutaBornOfAsh extends CardImpl {
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return Akuta, Born of Ash from your graveyard to the battlefield. // At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return Akuta, Born of Ash from your graveyard to the battlefield.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, this.addAbility(new BeginningOfUpkeepTriggeredAbility(
TargetController.YOU, new DoIfCostPaid(new ReturnSourceFromGraveyardToBattlefieldEffect(), new SacrificeTargetCost(filterSwamp)), Zone.GRAVEYARD, TargetController.YOU,
false).withInterveningIf(MoreCardsInHandThanOpponentsCondition.instance)); new DoIfCostPaid(
new ReturnSourceFromGraveyardToBattlefieldEffect()
.setText("return {this} from your graveyard to the battlefield"),
new SacrificeTargetCost(filterSwamp)
), false
).withInterveningIf(MoreCardsInHandThanOpponentsCondition.instance));
} }
private AkutaBornOfAsh(final AkutaBornOfAsh card) { private AkutaBornOfAsh(final AkutaBornOfAsh card) {

View file

@ -61,7 +61,7 @@ enum BorealOutriderCondition implements Condition {
@Override @Override
public String toString() { public String toString() {
return "{S} of any of that spell's color was spent to cast it"; return "{S} of any of that spell's colors was spent to cast it";
} }
} }

View file

@ -104,7 +104,7 @@ class CurseOfTheCabalTriggeredAbilityConditionalDelay extends AddCountersSourceE
public CurseOfTheCabalTriggeredAbilityConditionalDelay() { public CurseOfTheCabalTriggeredAbilityConditionalDelay() {
super(CounterType.TIME.createInstance(), StaticValue.get(2), false, true); super(CounterType.TIME.createInstance(), StaticValue.get(2), false, true);
staticText = "that player may sacrifice a permanent. If the player does, put two time counters on {this}"; staticText = "that player may sacrifice a permanent of their choice. If the player does, put two time counters on this card";
} }
@Override @Override

View file

@ -113,7 +113,7 @@ class DarigaazReincarnatedReturnEffect extends OneShotEffect {
DarigaazReincarnatedReturnEffect() { DarigaazReincarnatedReturnEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "remove an egg counter from it. Then if {this} has no egg counters on it, return it to the battlefield"; this.staticText = "remove an egg counter from it. Then if this card has no egg counters on it, return it to the battlefield";
} }
private DarigaazReincarnatedReturnEffect(final DarigaazReincarnatedReturnEffect effect) { private DarigaazReincarnatedReturnEffect(final DarigaazReincarnatedReturnEffect effect) {

View file

@ -79,6 +79,11 @@ enum EowynShieldmaidenCondition implements Condition {
source.getSourcePermanentOrLKI(game), source.getSourcePermanentOrLKI(game),
source.getControllerId()); source.getControllerId());
} }
@Override
public String toString() {
return "another Human entered the battlefield under your control this turn";
}
} }
class EowynShieldmaidenWatcher extends Watcher { class EowynShieldmaidenWatcher extends Watcher {

View file

@ -33,7 +33,7 @@ public final class NetherSpirit extends CardImpl {
// At the beginning of your upkeep, if Nether Spirit is the only creature card in your graveyard, you may return Nether Spirit to the battlefield. // At the beginning of your upkeep, if Nether Spirit is the only creature card in your graveyard, you may return Nether Spirit to the battlefield.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
TargetController.YOU, new ReturnSourceFromGraveyardToBattlefieldEffect().setText("return {this} to the battlefield"), TargetController.YOU, new ReturnSourceFromGraveyardToBattlefieldEffect().setText("return this card to the battlefield"),
true).withInterveningIf(NetherSpiritCondition.instance)); true).withInterveningIf(NetherSpiritCondition.instance));
} }

View file

@ -45,7 +45,7 @@ public final class OchreJelly extends CardImpl {
this.addAbility(new DiesSourceTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( this.addAbility(new DiesSourceTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new OchreJellyEffect()) new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new OchreJellyEffect())
).setText("create a token that's a copy of it at the beginning of the next end step. " + ).setText("create a token that's a copy of it at the beginning of the next end step. " +
"That token enters the battlefield with half that many +1/+1 counters on it, rounded down")) "The token enters with half that many +1/+1 counters on it, rounded down"))
.withInterveningIf(OchreJellyCondition.instance).withFlavorWord("Split")); .withInterveningIf(OchreJellyCondition.instance).withFlavorWord("Split"));
} }

View file

@ -43,7 +43,9 @@ public final class RoseCutthroatRaider extends CardImpl {
// Raid -- At end of combat on your turn, if you attacked this turn, create a Junk token for each opponent you attacked. // Raid -- At end of combat on your turn, if you attacked this turn, create a Junk token for each opponent you attacked.
this.addAbility(new EndOfCombatTriggeredAbility( this.addAbility(new EndOfCombatTriggeredAbility(
new CreateTokenEffect(new JunkToken(), AttackedThisTurnOpponentsCount.instance), TargetController.YOU, false new CreateTokenEffect(new JunkToken(), AttackedThisTurnOpponentsCount.instance)
.setText("create a Junk token for each opponent you attacked"),
TargetController.YOU, false
).withInterveningIf(RaidCondition.instance).setAbilityWord(AbilityWord.RAID).addHint(AttackedThisTurnOpponentsCount.getHint()), new PlayersAttackedThisTurnWatcher()); ).withInterveningIf(RaidCondition.instance).setAbilityWord(AbilityWord.RAID).addHint(AttackedThisTurnOpponentsCount.getHint()), new PlayersAttackedThisTurnWatcher());
// Whenever you sacrifice a Junk, add {R}. // Whenever you sacrifice a Junk, add {R}.

View file

@ -50,7 +50,7 @@ public final class StarseerMentor extends CardImpl {
new DiscardCardCost() new DiscardCardCost()
), ),
"Sacrifice a nonland permanent or discard a card to prevent losing 3 life?" "Sacrifice a nonland permanent or discard a card to prevent losing 3 life?"
) ).setText("target opponent loses 3 life unless they sacrifice a nonland permanent of their choice or discard a card")
).withInterveningIf(YouGainedOrLostLifeCondition.instance); ).withInterveningIf(YouGainedOrLostLifeCondition.instance);
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
this.addAbility(ability.addHint(YouGainedOrLostLifeCondition.getHint()), new PlayerGainedLifeWatcher()); this.addAbility(ability.addHint(YouGainedOrLostLifeCondition.getHint()), new PlayerGainedLifeWatcher());

View file

@ -51,7 +51,7 @@ public final class TwistsAndTurns extends CardImpl {
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
new TransformSourceEffect(), StaticFilters.FILTER_LAND new TransformSourceEffect(), StaticFilters.FILTER_LAND
).withInterveningIf(condition)); ).withInterveningIf(condition).setTriggerPhrase("When a land you control enters, "));
} }
private TwistsAndTurns(final TwistsAndTurns card) { private TwistsAndTurns(final TwistsAndTurns card) {

View file

@ -50,7 +50,7 @@ public final class VesselOfTheAllConsuming extends CardImpl {
// Whenever Vessel of the All-Consuming deals damage to a player, if it has dealt 10 or more damage to that player this turn, they lose the game. // Whenever Vessel of the All-Consuming deals damage to a player, if it has dealt 10 or more damage to that player this turn, they lose the game.
this.addAbility(new DealsDamageToAPlayerTriggeredAbility( this.addAbility(new DealsDamageToAPlayerTriggeredAbility(
new LoseGameTargetPlayerEffect(), false, true new LoseGameTargetPlayerEffect().setText("they lose the game"), false, true
).withInterveningIf(VesselOfTheAllConsumingCondition.instance)); ).withInterveningIf(VesselOfTheAllConsumingCondition.instance));
} }

View file

@ -40,7 +40,7 @@ public final class WallOfResistance extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility( this.addAbility(new BeginningOfEndStepTriggeredAbility(
TargetController.ANY, new AddCountersSourceEffect(CounterType.P0P1.createInstance()), TargetController.ANY, new AddCountersSourceEffect(CounterType.P0P1.createInstance()),
false, WallOfResistanceCondition.instance false, WallOfResistanceCondition.instance
)); ).withRuleTextReplacement(true));
} }
private WallOfResistance(final WallOfResistance card) { private WallOfResistance(final WallOfResistance card) {

View file

@ -12,6 +12,7 @@ import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent; import mage.game.events.ZoneChangeEvent;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil;
/** /**
* @author North * @author North
@ -52,12 +53,13 @@ public class DiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
public DiesCreatureTriggeredAbility(Zone zone, Effect effect, boolean optional, FilterPermanent filter, boolean setTargetPointer) { public DiesCreatureTriggeredAbility(Zone zone, Effect effect, boolean optional, FilterPermanent filter, boolean setTargetPointer) {
this(zone, effect, optional, filter, (setTargetPointer ? SetTargetPointer.PERMANENT : SetTargetPointer.NONE)); this(zone, effect, optional, filter, (setTargetPointer ? SetTargetPointer.PERMANENT : SetTargetPointer.NONE));
} }
public DiesCreatureTriggeredAbility(Zone zone, Effect effect, boolean optional, FilterPermanent filter, SetTargetPointer setTargetPointer) { public DiesCreatureTriggeredAbility(Zone zone, Effect effect, boolean optional, FilterPermanent filter, SetTargetPointer setTargetPointer) {
super(zone, effect, optional); super(zone, effect, optional);
this.filter = filter; this.filter = filter;
this.setTargetPointer = setTargetPointer; this.setTargetPointer = setTargetPointer;
setLeavesTheBattlefieldTrigger(true); setLeavesTheBattlefieldTrigger(true);
setTriggerPhrase("Whenever " + filter.getMessage() + (filter.getMessage().startsWith("one or more") ? " die, " : " dies, ")); setTriggerPhrase("Whenever " + CardUtil.addArticle(filter.getMessage()) + (filter.getMessage().startsWith("one or more") ? " die, " : " dies, "));
} }
protected DiesCreatureTriggeredAbility(final DiesCreatureTriggeredAbility ability) { protected DiesCreatureTriggeredAbility(final DiesCreatureTriggeredAbility ability) {

View file

@ -16,7 +16,7 @@ public class EntersBattlefieldAttachToTarget extends EntersBattlefieldTriggeredA
} }
public EntersBattlefieldAttachToTarget(FilterPermanent filter) { public EntersBattlefieldAttachToTarget(FilterPermanent filter) {
super(new AttachEffect(Outcome.BoostCreature, "attach it to target " + filter.getMessage())); super(new AttachEffect(Outcome.BoostCreature, "attach {this} to target " + filter.getMessage()));
this.addTarget(new TargetPermanent(filter)); this.addTarget(new TargetPermanent(filter));
} }

View file

@ -29,7 +29,7 @@ public class CreateTokenCopySourceEffect extends OneShotEffect {
this.number = copies; this.number = copies;
this.tapped = tapped; this.tapped = tapped;
staticText = "create " + CardUtil.numberToText(copies, "a") + " " + (tapped ? "tapped " : "") staticText = "create " + CardUtil.numberToText(copies, "a") + " " + (tapped ? "tapped " : "")
+ (copies > 1 ? "tokens that are" : "token that's") + " a copy of {this}"; + (copies > 1 ? "tokens that are copies of " : "token that's a copy of ") + "{this}";
} }
protected CreateTokenCopySourceEffect(final CreateTokenCopySourceEffect effect) { protected CreateTokenCopySourceEffect(final CreateTokenCopySourceEffect effect) {

View file

@ -34,7 +34,7 @@ public class GainAbilityControllerEffect extends ContinuousEffectImpl {
public GainAbilityControllerEffect(Ability ability, Duration duration) { public GainAbilityControllerEffect(Ability ability, Duration duration) {
super(duration, Layer.PlayerEffects, SubLayer.NA, Outcome.AddAbility); super(duration, Layer.PlayerEffects, SubLayer.NA, Outcome.AddAbility);
this.ability = ability; this.ability = ability;
staticText = "you " + (duration == Duration.WhileOnBattlefield ? "have" : "gain") + ability.getRule(); staticText = "you " + (duration == Duration.WhileOnBattlefield ? "have" : "gain") + ' ' + ability.getRule();
if (!duration.toString().isEmpty()) { if (!duration.toString().isEmpty()) {
staticText += ' ' + duration.toString(); staticText += ' ' + duration.toString();
} }