[STX] various text fixes

This commit is contained in:
Evan Kranzler 2021-04-17 18:22:43 -04:00
parent a61d5543fa
commit 326c17fe4d
33 changed files with 65 additions and 47 deletions

View file

@ -40,7 +40,7 @@ public final class CallousBloodmage extends CardImpl {
ability.addMode(mode);
// Exile target player's graveyard.
mode = new Mode(new ExileGraveyardAllTargetPlayerEffect());
mode = new Mode(new ExileGraveyardAllTargetPlayerEffect().setText("exile target player's graveyard"));
mode.addTarget(new TargetPlayer());
ability.addMode(mode);
this.addAbility(ability);

View file

@ -26,7 +26,7 @@ public final class CampusGuide extends CardImpl {
// When Campus Guide enters the battlefield, you may search your library for a basic land card, reveal it, then shuffle and put that card on top.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutOnLibraryEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true, true
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true
), true));
}

View file

@ -1,5 +1,6 @@
package mage.cards.c;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.TrampleAbility;
@ -24,7 +25,7 @@ public final class ChargeThrough extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardTargetEffect(1));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
}
private ChargeThrough(final ChargeThrough card) {

View file

@ -35,7 +35,9 @@ public final class CombatProfessor extends CardImpl {
// At the beginning of combat on your turn, target creature you control gets +1/+0 and gains vigilance until end of turn.
Ability ability = new BeginningOfCombatTriggeredAbility(
new BoostTargetEffect(1, 0), TargetController.YOU, false
new BoostTargetEffect(1, 0)
.setText("target creature you control gets +1/+0"),
TargetController.YOU, false
);
ability.addEffect(new GainAbilityTargetEffect(
VigilanceAbility.getInstance(), Duration.EndOfTurn

View file

@ -31,7 +31,8 @@ public final class CreativeOutburst extends CardImpl {
this.getSpellAbility().addEffect(new LookLibraryAndPickControllerEffect(
StaticValue.get(5), false, StaticValue.get(1),
StaticFilters.FILTER_CARD, Zone.LIBRARY, false, false
));
).setBackInRandomOrder(true).setText("Look at the top five cards of your library. " +
"Put one of them into your hand and the rest on the bottom of your library in a random order"));
this.getSpellAbility().addTarget(new TargetAnyTarget());
// {U/R}{U/R}, Discard Creative Outburst: Create a Treasure token.

View file

@ -25,7 +25,7 @@ import java.util.UUID;
*/
public final class DragonsApproach extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("a Dragon creature card");
private static final FilterCard filter = new FilterCreatureCard("Dragon creature card");
private static final FilterCard filter2 = new FilterCard("cards named Dragon's Approach");
static {
@ -39,7 +39,7 @@ public final class DragonsApproach extends CardImpl {
// Dragon's Approach deals 3 damage to each opponent. You may exile Dragon's Approach and four cards named Dragon's Approach from your graveyard. If you do, search your library for a Dragon creature card, put it onto the battlefield, then shuffle.
this.getSpellAbility().addEffect(new DamagePlayersEffect(3, TargetController.OPPONENT));
this.getSpellAbility().addEffect(new DoIfCostPaid(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary()),
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)),
new CompositeCost(
new ExileSourceCost(), new ExileFromGraveCost(new TargetCardInYourGraveyard(filter2)),
"exile {this} and four cards named Dragon's Approach from your graveyard"

View file

@ -21,7 +21,9 @@ public final class EnthusiasticStudy extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Target creature gets +3/+1 and gains trample until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 1));
this.getSpellAbility().addEffect(new BoostTargetEffect(
3, 1
).setText("target creature gets +3/+1"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
TrampleAbility.getInstance(), Duration.EndOfTurn
).setText("and gains trample until end of turn"));

View file

@ -64,11 +64,12 @@ public final class ExtusOriqOverlord extends ModalDoubleFacesCard {
// Sorcery
// As an additional cost to cast this spell, you may sacrifice any number of creatures. This spell costs {2} less to cast for each creature sacrificed this way.
Cost cost = new SacrificeXTargetCost(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT);
cost.setText("As an additional cost to cast this spell, you may sacrifice any number of creatures");
cost.setText("As an additional cost to cast this spell, you may sacrifice any number of creatures. " +
"This spell costs {2} less to cast for each creature sacrificed this way");
this.getRightHalfCard().getSpellAbility().addCost(cost);
this.getRightHalfCard().addAbility(new SimpleStaticAbility(
Zone.ALL, new AwakenTheBloodAvatarCostReductionEffect()
));
ability = new SimpleStaticAbility(Zone.ALL, new AwakenTheBloodAvatarCostReductionEffect());
ability.setRuleVisible(false);
this.getRightHalfCard().addAbility(ability);
// Each opponent sacrifices a creature. Create a 3/6 black and red Avatar creature token with haste and "Whenever this creature attacks, it deals 3 damage to each opponent."
this.getRightHalfCard().getSpellAbility().addEffect(new SacrificeOpponentsEffect(
@ -91,7 +92,6 @@ class AwakenTheBloodAvatarCostReductionEffect extends CostModificationEffectImpl
AwakenTheBloodAvatarCostReductionEffect() {
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
staticText = "This spell costs {2} less to cast for each creature sacrificed this way";
}
private AwakenTheBloodAvatarCostReductionEffect(final AwakenTheBloodAvatarCostReductionEffect effect) {

View file

@ -18,6 +18,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
@ -29,6 +30,8 @@ public final class KelpieGuide extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledLandPermanent("you control eight or more lands");
private static final FilterPermanent filter2
= new FilterControlledPermanent("another target permanent you control");
private static final Condition condition
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 7);
@ -41,7 +44,7 @@ public final class KelpieGuide extends CardImpl {
// {T}: Untap another target permanent you control.
Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetPermanent(filter));
ability.addTarget(new TargetPermanent(filter2));
this.addAbility(ability);
// {T}: Tap target permanent. Activate only if you control eight or more lands.

View file

@ -39,7 +39,7 @@ public final class LoreholdExcavation extends CardImpl {
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(
new LoreholdToken(), 1, true, false
), new GenericManaCost(5));
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE)));
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_A)));
this.addAbility(ability);
}

View file

@ -47,10 +47,10 @@ public final class MascotInterception extends CardImpl {
this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap that creature"));
this.getSpellAbility().addEffect(new BoostTargetEffect(
2, 0, Duration.EndOfTurn
).setText("Until end of turn, it gets +2/+0"));
).setText("It gets +2/+0"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
HasteAbility.getInstance(), Duration.EndOfTurn
).setText("and gains haste"));
).setText("and gains haste until end of turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}

View file

@ -21,7 +21,7 @@ import java.util.UUID;
public final class MasterSymmetrist extends CardImpl {
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("a creature you control with power equal to its toughness");
= new FilterCreaturePermanent("creature you control with power equal to its toughness");
static {
filter.add(TargetController.YOU.getControllerPredicate());

View file

@ -6,7 +6,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreatureOrPlaneswalker;
import java.util.UUID;
@ -22,7 +24,7 @@ public final class NecroticFumes extends CardImpl {
this.subtype.add(SubType.LESSON);
// As an additional cost to cast this spell, exile a creature you control.
this.getSpellAbility().addCost(new ExileTargetCost(new TargetControlledCreaturePermanent()));
this.getSpellAbility().addCost(new ExileTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_A_CREATURE)));
// Exile target creature or planeswalker.
this.getSpellAbility().addEffect(new ExileTargetEffect());

View file

@ -72,7 +72,7 @@ public final class PestilentCauldron extends ModalDoubleFacesCard {
ability = new SimpleActivatedAbility(new ExileTargetEffect(), new GenericManaCost(4));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCardInASingleGraveyard(
0, 4, StaticFilters.FILTER_CARD_CARDS
4, 4, StaticFilters.FILTER_CARD_CARDS
));
ability.addEffect(new DrawCardSourceControllerEffect(1));
this.getLeftHalfCard().addAbility(ability);

View file

@ -25,7 +25,7 @@ public final class PracticalResearch extends CardImpl {
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(4));
this.getSpellAbility().addEffect(new DoIfCostPaid(
null, new DiscardControllerEffect(2), cost
).setText("Then discard two cards unless you discard an enchantment card"));
).setText("Then discard two cards unless you discard an instant or sorcery card"));
}
private PracticalResearch(final PracticalResearch card) {

View file

@ -45,7 +45,7 @@ class ReduceToMemoryEffect extends OneShotEffect {
ReduceToMemoryEffect() {
super(Outcome.Benefit);
staticText = "exile target nonland permanent. Its controller creates a 3/2 red and white spirit creature token";
staticText = "exile target nonland permanent. Its controller creates a 3/2 red and white Spirit creature token";
}
private ReduceToMemoryEffect(final ReduceToMemoryEffect effect) {

View file

@ -42,7 +42,7 @@ public final class RetrieverPhoenix extends CardImpl {
// When Retriever Phoenix enters the battlefield, if you cast it, learn.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new LearnEffect()), CastFromEverywhereSourceCondition.instance,
"When {thi} enters the battlefield, if you cast it, " + LearnEffect.getDefaultText()
"When {this} enters the battlefield, if you cast it, " + LearnEffect.getDefaultText()
));
// As long as Retriever Phoenix is in your graveyard, if you would learn, you may instead return Retriever Phoenix to the battlefield.

View file

@ -41,7 +41,7 @@ import java.util.stream.Collectors;
*/
public final class RowanScholarOfSparks extends ModalDoubleFacesCard {
private static final FilterCard filter = new FilterInstantOrSorceryCard("");
private static final FilterCard filter = new FilterInstantOrSorceryCard("instant and sorcery spells");
public RowanScholarOfSparks(UUID ownerId, CardSetInfo setInfo) {
super(

View file

@ -14,7 +14,7 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
@ -46,7 +46,7 @@ public final class ShadewingLaureate extends CardImpl {
Ability ability = new DiesCreatureTriggeredAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance()), false, filter
);
ability.addTarget(new TargetCreaturePermanent());
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);
}

View file

@ -53,7 +53,7 @@ public final class SilverquillCommand extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// Return target creature card with mana value 2 or less from your graveyard to the battlefield.
Mode mode = new Mode(new ReturnFromGraveyardToBattlefieldTargetEffect());
Mode mode = new Mode(new ReturnFromGraveyardToBattlefieldTargetEffect(false, false));
mode.addTarget(new TargetCardInYourGraveyard(filter));
this.getSpellAbility().addMode(mode);

View file

@ -1,6 +1,7 @@
package mage.cards.s;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.effects.common.DrawDiscardTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
@ -24,7 +25,7 @@ public final class SnowDay extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
// Draw two cards, then discard a card.
this.getSpellAbility().addEffect(new DrawDiscardTargetEffect(2, 1).concatBy("<br>"));
this.getSpellAbility().addEffect(new DrawDiscardControllerEffect(2, 1).concatBy("<br>"));
}
private SnowDay(final SnowDay card) {

View file

@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class SpectacleMage extends CardImpl {
private static final FilterCard filter = new FilterInstantOrSorceryCard("instant and sorcery spells");
private static final FilterCard filter = new FilterInstantOrSorceryCard();
static {
filter.add(new ManaValuePredicate(ComparisonType.MORE_THAN, 4));
@ -38,7 +38,8 @@ public final class SpectacleMage extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Instant and sorcery spells you cast with mana value 5 or greater cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1)));
this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1)
.setText("instant and sorcery spells you cast with mana value 5 or greater cost {1} less to cast")));
}
private SpectacleMage(final SpectacleMage card) {

View file

@ -26,7 +26,10 @@ public final class TendThePests extends CardImpl {
));
// Create X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life," where X is the sacrificed creature's power.
this.getSpellAbility().addEffect(new CreateTokenEffect(new WitherbloomToken(), SacrificeCostCreaturesPower.instance));
this.getSpellAbility().addEffect(new CreateTokenEffect(
new WitherbloomToken(), SacrificeCostCreaturesPower.instance
).setText("create X 1/1 black and green Pest creature tokens with " +
"\"When this creature dies, you gain 1 life,\" where X is the sacrificed creature's power"));
}
private TendThePests(final TendThePests card) {

View file

@ -24,7 +24,7 @@ import java.util.UUID;
public final class TomeShredder extends CardImpl {
private static final FilterCard filter
= new FilterInstantOrSorceryCard("instant or sorcery card from your graveyard");
= new FilterInstantOrSorceryCard("an instant or sorcery card from your graveyard");
public TomeShredder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");

View file

@ -31,7 +31,8 @@ public final class ZephyrBoots extends CardImpl {
// Whenever equipped creature deals combat damage to a player, draw a card, then discard a card.
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(
new DrawDiscardControllerEffect(1, 1), "equipped", false
new DrawDiscardControllerEffect(1, 1),
"equipped creature", false
));
// Equip {2}

View file

@ -41,7 +41,9 @@ public final class ZimoneQuandrixProdigy extends CardImpl {
// {1}, {T}: You may put a land card from your hand onto the battlefield tapped.
Ability ability = new SimpleActivatedAbility(
new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), new GenericManaCost(1)
new PutCardFromHandOntoBattlefieldEffect(
StaticFilters.FILTER_CARD_LAND_A, false, true
), new GenericManaCost(1)
);
ability.addCost(new TapSourceCost());
this.addAbility(ability);

View file

@ -56,7 +56,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "STA"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "STX"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
private static final HashMap<String, Set<String>> skipCheckLists = new HashMap<>();

View file

@ -42,12 +42,12 @@ public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl {
@Override
public String getRule() {
StringBuilder sb = new StringBuilder(super.getRule()).append(" Activate this ability ");
StringBuilder sb = new StringBuilder(super.getRule()).append(" Activate ");
if (condition != null) {
sb.append("only ").append(condition.toString()).append(" and ");
}
if (getTiming() == TimingRule.SORCERY) {
sb.append("only any time you could cast a sorcery and ");
sb.append("only as a sorcery and ");
}
switch (maxActivationsPerTurn) {
case 1:

View file

@ -121,7 +121,7 @@ public class CounterUnlessPaysEffect extends OneShotEffect {
sb.append(genericMana.getMessage());
}
if (exile) {
sb.append(". If that spell is countered this way, exile it instead of putting into its owner's graveyard.");
sb.append(". If that spell is countered this way, exile it instead of putting it into its owner's graveyard.");
}
return sb.toString();
}

View file

@ -12,6 +12,7 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard;
import mage.util.CardUtil;
import java.util.ArrayList;
@ -138,7 +139,7 @@ public class PutOnLibraryTargetEffect extends OneShotEffect {
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(' ');
}
sb.append("target ").append(mode.getTargets().get(0).getTargetName()).append(" on ");
sb.append(onTop ? "top" : "the bottom").append(" of its owner's library");
sb.append(onTop ? "top" : "the bottom").append(" of ").append(mode.getTargets().get(0) instanceof TargetCardInYourGraveyard ? "your" : "its owner's").append(" library");
return sb.toString();

View file

@ -98,7 +98,9 @@ public class SacrificeEffect extends OneShotEffect {
sb.append(" sacrifice ");
}
}
if (!filter.getMessage().startsWith("another")) {
if (!filter.getMessage().startsWith("another")
&& !filter.getMessage().startsWith("a ")
&& !filter.getMessage().startsWith("an ")) {
sb.append(CardUtil.numberToText(count.toString(), "a")).append(' ');
}
sb.append(filter.getMessage());

View file

@ -12,7 +12,6 @@ import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class SearchLibraryPutOnLibraryEffect extends SearchEffect {
@ -72,12 +71,9 @@ public class SearchLibraryPutOnLibraryEffect extends SearchEffect {
StringBuilder sb = new StringBuilder();
sb.append("search your library for a ").append(target.getTargetName());
if (reveal) {
sb.append(" and reveal that card. Shuffle");
} else {
sb.append(", then shuffle");
sb.append(", reveal it");
}
sb.append(" your library and put that card on top of it");
sb.append(", then shuffle and put that card on top of it");
staticText = sb.toString();
}
}

View file

@ -30,6 +30,6 @@ public class ActivateAsSorceryManaAbility extends SimpleManaAbility {
@Override
public String getRule() {
return super.getRule() + " Activate this ability only any time you could cast a sorcery.";
return super.getRule() + " Activate only as a sorcery.";
}
}