[VOC] various text fixes

This commit is contained in:
Evan Kranzler 2021-11-13 18:58:28 -05:00
parent 652dd49940
commit 53f6bc372a
24 changed files with 88 additions and 85 deletions

View file

@ -1,10 +1,9 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -15,7 +14,10 @@ import mage.filter.FilterCard;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
public final class AngelOfFlightAlabaster extends CardImpl {
private static final FilterCard filter = new FilterCard("Spirit card from your graveyard");
static {
@ -23,19 +25,18 @@ public final class AngelOfFlightAlabaster extends CardImpl {
}
public AngelOfFlightAlabaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
Ability ability = new BeginningOfUpkeepTriggeredAbility(new ReturnToHandTargetEffect(), TargetController.YOU, false);
Target target = new TargetCardInYourGraveyard(filter);
ability.addTarget(target);
Ability ability = new BeginningOfUpkeepTriggeredAbility(
new ReturnFromGraveyardToHandTargetEffect(), TargetController.YOU, false
);
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
}
private AngelOfFlightAlabaster(final AngelOfFlightAlabaster card) {

View file

@ -1,6 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
@ -19,8 +18,9 @@ import mage.players.Player;
import mage.target.TargetSpell;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class ArcaneDenial extends CardImpl {
@ -35,7 +35,10 @@ public final class ArcaneDenial extends CardImpl {
// You draw a card at the beginning of the next turn's upkeep.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(
new DrawCardSourceControllerEffect(1)), false));
new DrawCardSourceControllerEffect(1)
.setText("you draw a card")
), false).concatBy("<br>")
);
}
private ArcaneDenial(final ArcaneDenial card) {

View file

@ -31,6 +31,7 @@ public final class ArterialAlchemy extends CardImpl {
// When Arterial Alchemy enters the battlefield, create a Blood token for each opponent you have.
this.addAbility(new EntersBattlefieldTriggeredAbility(
new CreateTokenEffect(new BloodToken(), OpponentsCount.instance)
.setText("create a Blood token for each opponent you have")
));
// Blood tokens you control are Equipment in addition to their other types and have "Equipped creature gets +2/+0" and equip {2}.

View file

@ -32,7 +32,7 @@ public final class AvacynsJudgment extends CardImpl {
// Avacyn's Judgment deals 2 damage divided as you choose among any number of target creatures and/or players. If Avacyn's Judgment's madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead.
DynamicValue xValue = new AvacynsJudgmentManacostVariableValue();
Effect effect = new DamageMultiEffect(xValue);
effect.setText("{this} deals 2 damage divided as you choose among any number of target creatures and/or players. If {this}'s madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead.");
effect.setText("{this} deals 2 damage divided as you choose among any number of targets. If this spell's madness cost was paid, it deals X damage divided as you choose among those permanents and/or players instead.");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(xValue));
}

View file

@ -83,7 +83,7 @@ class BenevolentOfferingEffect2 extends OneShotEffect {
BenevolentOfferingEffect2() {
super(Outcome.Sacrifice);
this.staticText = "Choose an opponent. You gain 2 life for each creature you control and that player gains 2 life for each creature they control";
this.staticText = "<br>Choose an opponent. You gain 2 life for each creature you control and that player gains 2 life for each creature they control";
}
BenevolentOfferingEffect2(final BenevolentOfferingEffect2 effect) {

View file

@ -1,4 +1,3 @@
package mage.cards.c;
import mage.MageInt;
@ -8,6 +7,8 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -17,7 +18,6 @@ import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
/**
*
* @author L_J
*/
public final class ChampionOfDusk extends CardImpl {
@ -28,6 +28,9 @@ public final class ChampionOfDusk extends CardImpl {
filter.add(SubType.VAMPIRE.getPredicate());
}
private static final DynamicValue xCount = new PermanentsOnBattlefieldCount(filter);
private static final Hint hint = new ValueHint("Vampires you control", xCount);
public ChampionOfDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
this.subtype.add(SubType.VAMPIRE);
@ -36,10 +39,12 @@ public final class ChampionOfDusk extends CardImpl {
this.toughness = new MageInt(4);
// When Champion of Dusk enters the battlefield, you draw X cards and you lose X life, where X is the number of Vampires you control.
DynamicValue xCount = new PermanentsOnBattlefieldCount(filter);
Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(xCount));
ability.addEffect(new LoseLifeSourceControllerEffect(xCount));
this.addAbility(ability);
Ability ability = new EntersBattlefieldTriggeredAbility(
new DrawCardSourceControllerEffect(xCount).setText("you draw X cards")
);
ability.addEffect(new LoseLifeSourceControllerEffect(xCount)
.setText("and you lose X life, where X is the number of Vampires you control"));
this.addAbility(ability.addHint(hint));
}
private ChampionOfDusk(final ChampionOfDusk card) {

View file

@ -4,7 +4,6 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@ -37,7 +36,7 @@ public final class CrimsonHonorGuard extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// At the beginning of each player's end step, Crimson Honor Guard deals 4 damage to that player unless they control a commander.
this.addAbility(new BeginningOfEndStepTriggeredAbility(new CrimsonHonorGuardEffect(), TargetController.ANY, false));
this.addAbility(new BeginningOfEndStepTriggeredAbility(new CrimsonHonorGuardEffect(), TargetController.EACH_PLAYER, false));
}
private CrimsonHonorGuard(final CrimsonHonorGuard card) {

View file

@ -22,7 +22,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class DrogskolCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SPIRIT, "Spirits");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SPIRIT, "Spirit creatures");
public DrogskolCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");

View file

@ -11,7 +11,6 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
@ -38,12 +37,12 @@ public final class DrogskolReinforcements extends CardImpl {
// Other Spirits you control have melee.
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
new MeleeAbility(), Duration.WhileOnBattlefield, filter, true
)));
).setText("other Spirits you control have melee")));
// Prevent all noncombat damage that would be dealt to Spirits you control.
this.addAbility(new SimpleStaticAbility(new PreventAllNonCombatDamageToAllEffect(
Duration.WhileOnBattlefield, StaticFilters.FILTER_CONTROLLED_CREATURES
)));
this.addAbility(new SimpleStaticAbility(
new PreventAllNonCombatDamageToAllEffect(Duration.WhileOnBattlefield, filter)
));
}
private DrogskolReinforcements(final DrogskolReinforcements card) {

View file

@ -69,7 +69,7 @@ class FalkenrathGorgerEffect extends ContinuousEffectImpl {
public FalkenrathGorgerEffect() {
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
this.staticText = "Each Vampire creature card you own that isn't on the battlefield has madness. Its madness cost is equal to its mana cost";
this.staticText = "Each Vampire creature card you own that isn't on the battlefield has madness. The madness cost is equal to its mana cost";
}
public FalkenrathGorgerEffect(final FalkenrathGorgerEffect effect) {

View file

@ -52,7 +52,7 @@ class GeistOfSaintTraftEffect extends OneShotEffect {
GeistOfSaintTraftEffect() {
super(Outcome.PutCreatureInPlay);
staticText = "create a 4/4 white Angel creature token with flying tapped and attacking. Exile that token at end of combat";
staticText = "create a 4/4 white Angel creature token with flying that's tapped and attacking. Exile that token at end of combat";
}
GeistOfSaintTraftEffect(final GeistOfSaintTraftEffect effect) {

View file

@ -41,7 +41,7 @@ public final class KamberThePlunderer extends CardImpl {
Ability ability = new DiesCreatureTriggeredAbility(
new GainLifeEffect(1), false, StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE
);
ability.addEffect(new CreateTokenEffect(new BloodToken()));
ability.addEffect(new CreateTokenEffect(new BloodToken()).concatBy("and"));
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BeginningOfDrawTriggeredAbility;
import mage.abilities.effects.common.DrawCardTargetEffect;
@ -12,14 +10,15 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class KamiOfTheCrescentMoon extends CardImpl {
public KamiOfTheCrescentMoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.SPIRIT);
@ -27,7 +26,7 @@ public final class KamiOfTheCrescentMoon extends CardImpl {
this.toughness = new MageInt(3);
// At the beginning of each player's draw step, that player draws an additional card.
this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardTargetEffect(1), TargetController.ANY, false));
this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardTargetEffect(1).setText("that player draws an additional card"), TargetController.ANY, false));
}
private KamiOfTheCrescentMoon(final KamiOfTheCrescentMoon card) {

View file

@ -19,8 +19,8 @@ public final class NightsWhisper extends CardImpl {
// You draw two cards and you lose 2 life.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).setText("you draw two cards"));
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and"));
}
private NightsWhisper(final NightsWhisper card) {

View file

@ -112,7 +112,7 @@ class PatronOfTheVeinCreatureDiesTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever a creature an opponent controls dies, exile it and put a +1/+1 counter on each Vampire you control";
return "Whenever a creature an opponent controls dies, exile it and put a +1/+1 counter on each Vampire you control.";
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.p;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@ -17,23 +15,26 @@ import mage.game.permanent.Permanent;
import mage.game.permanent.token.SpiritToken;
import mage.players.Player;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class PromiseOfBunrei extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
}
public PromiseOfBunrei(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// When a creature you control dies, sacrifice Promise of Bunrei. If you do, create four 1/1 colorless Spirit creature tokens.
this.addAbility(new DiesCreatureTriggeredAbility(new PromiseOfBunreiEffect(), false, filter));
this.addAbility(new DiesCreatureTriggeredAbility(
new PromiseOfBunreiEffect(), false, filter
).setTriggerPhrase("When a creature you control dies, "));
}
private PromiseOfBunrei(final PromiseOfBunrei card) {
@ -47,21 +48,21 @@ public final class PromiseOfBunrei extends CardImpl {
}
class PromiseOfBunreiEffect extends OneShotEffect {
public PromiseOfBunreiEffect() {
super(Outcome.Benefit);
this.staticText = "sacrifice {this}. If you do, create four 1/1 colorless Spirit creature tokens";
}
public PromiseOfBunreiEffect(final PromiseOfBunreiEffect effect) {
super(effect);
}
@Override
public PromiseOfBunreiEffect copy() {
return new PromiseOfBunreiEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());

View file

@ -23,7 +23,7 @@ public final class ReconnaissanceMission extends CardImpl {
// Whenever a creature you control deals combat damage to a player, you may draw a card.
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
new DrawCardSourceControllerEffect(1),
StaticFilters.FILTER_CONTROLLED_CREATURE,
StaticFilters.FILTER_CONTROLLED_A_CREATURE,
true, SetTargetPointer.NONE, true
));

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.TreasureToken;
@ -28,6 +28,8 @@ public final class ScionOfOpulence extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledPermanent(SubType.VAMPIRE, "nontoken Vampire you control");
private static final FilterControlledPermanent filter2
= new FilterControlledArtifactPermanent("artifacts");
static {
filter.add(TokenPredicate.FALSE);
@ -50,9 +52,7 @@ public final class ScionOfOpulence extends CardImpl {
Ability ability = new SimpleActivatedAbility(
new ExileTopXMayPlayUntilEndOfTurnEffect(1), new ManaCostsImpl<>("{R}")
);
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(
2, StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN
)));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(2, filter2)));
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -12,35 +10,29 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class SpectralShepherd extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirit");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(SubType.SPIRIT.getPredicate());
}
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SPIRIT);
public SpectralShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.subtype.add(SubType.SPIRIT);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
// {1}{U}: Return target Spirit you control to its owner's hand.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new ManaCostsImpl("{1}{U}"));
Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{U}"));
ability.addTarget(new TargetControlledPermanent(filter));
this.addAbility(ability);
}

View file

@ -1,8 +1,7 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@ -12,22 +11,20 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class StromkirkCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire creatures");
static {
filter.add(SubType.VAMPIRE.getPredicate());
}
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent(SubType.VAMPIRE, "Vampire creatures");
public StromkirkCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{R}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.SOLDIER);
@ -36,8 +33,13 @@ public final class StromkirkCaptain extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance());
// Other Vampire creatures you control get +1/+1 and have first strike.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filter, true
));
ability.addEffect(new GainAbilityControlledEffect(
FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter, true
).setText("and have first strike"));
this.addAbility(ability);
}
private StromkirkCaptain(final StromkirkCaptain card) {

View file

@ -62,7 +62,7 @@ class StromkirkOccultistExileEffect extends OneShotEffect {
public StromkirkOccultistExileEffect() {
super(Outcome.Detriment);
this.staticText = "Exile the top card of your library. Until end of turn, you may play that card";
this.staticText = "exile the top card of your library. Until end of turn, you may play that card";
}
public StromkirkOccultistExileEffect(final StromkirkOccultistExileEffect effect) {

View file

@ -37,7 +37,8 @@ public final class TiminYouthfulGeist extends CardImpl {
// At the beginning of each combat, tap up to one target creature.
Ability ability = new BeginningOfCombatTriggeredAbility(
new TapTargetEffect(), TargetController.ANY, false
new TapTargetEffect().setText("tap up to one target creature"),
TargetController.ANY, false
);
ability.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability);

View file

@ -58,7 +58,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "VOW"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "VOC"; // 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 boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages

View file

@ -67,13 +67,13 @@ public class InvestigateEffect extends OneShotEffect {
message = ". <i>(C";
break;
case 2:
message = "twice. <i>(To investigate, c";
message = " twice. <i>(To investigate, c";
break;
default:
message = CardUtil.numberToText(value) + " times. <i>(To investigate, c";
message = ' ' + CardUtil.numberToText(value) + " times. <i>(To investigate, c";
}
} else {
message = "X times, where X is the " + amount.getMessage() + ". <i>(To investigate, c";
message = " X times, where X is the " + amount.getMessage() + ". <i>(To investigate, c";
}
return "investigate" + message + "reate a colorless Clue artifact token " +
"with \"{2}, Sacrifice this artifact: Draw a card.\")</i>";