[MIC] various text fixes

This commit is contained in:
Evan Kranzler 2021-10-04 21:16:14 -04:00
parent 53540b9b36
commit 4fe2904f3f
28 changed files with 88 additions and 84 deletions

View file

@ -32,8 +32,7 @@ public final class AccomplishedAlchemist extends CardImpl {
// {T}: Add X mana of any one color, where X is the amount of life you gained this turn. // {T}: Add X mana of any one color, where X is the amount of life you gained this turn.
this.addAbility(new DynamicManaAbility( this.addAbility(new DynamicManaAbility(
new Mana(0, 0, 0, 0, 0, 0, 1, 0), Mana.AnyMana(1), ControllerGotLifeCount.instance, new TapSourceCost(), "Add X mana " +
ControllerGotLifeCount.instance, new TapSourceCost(), "Add X mana " +
"of any one color, where X is the amount of life you gained this turn", true "of any one color, where X is the amount of life you gained this turn", true
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher()); ).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
} }

View file

@ -55,7 +55,7 @@ class AngelOfGlorysRiseEffect extends OneShotEffect {
public AngelOfGlorysRiseEffect() { public AngelOfGlorysRiseEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
staticText = "Exile all Zombies, then return all Human creature cards from your graveyard to the battlefield"; staticText = "exile all Zombies, then return all Human creature cards from your graveyard to the battlefield";
} }
public AngelOfGlorysRiseEffect(final AngelOfGlorysRiseEffect effect) { public AngelOfGlorysRiseEffect(final AngelOfGlorysRiseEffect effect) {

View file

@ -1,8 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -11,18 +8,19 @@ import mage.game.permanent.token.ElephantToken;
import mage.game.permanent.token.SnakeToken; import mage.game.permanent.token.SnakeToken;
import mage.game.permanent.token.WolfToken; import mage.game.permanent.token.WolfToken;
import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public final class BestialMenace extends CardImpl { public final class BestialMenace extends CardImpl {
public BestialMenace(UUID ownerId, CardSetInfo setInfo) { public BestialMenace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{G}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
this.getSpellAbility().addEffect(new CreateTokenEffect(new SnakeToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new SnakeToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new WolfToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new WolfToken()).setText(", a 2/2 green Wolf creature token"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElephantToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new ElephantToken()).setText(", and a 3/3 green Elephant creature token"));
} }
private BestialMenace(final BestialMenace card) { private BestialMenace(final BestialMenace card) {
@ -33,5 +31,4 @@ public final class BestialMenace extends CardImpl {
public BestialMenace copy() { public BestialMenace copy() {
return new BestialMenace(this); return new BestialMenace(this);
} }
} }

View file

@ -1,42 +1,42 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInTargetPlayersGraveyardCount; import mage.abilities.dynamicvalue.common.CardsInTargetPlayersGraveyardCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
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.SubType; import mage.constants.SubType;
import mage.filter.common.FilterCreatureCard; import mage.filter.StaticFilters;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class CorpseAugur extends CardImpl { public final class CorpseAugur extends CardImpl {
private static final DynamicValue dynamicValue
= new CardsInTargetPlayersGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
public CorpseAugur(UUID ownerId, CardSetInfo setInfo) { public CorpseAugur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
this.subtype.add(SubType.ZOMBIE); this.subtype.add(SubType.ZOMBIE);
this.subtype.add(SubType.WIZARD); this.subtype.add(SubType.WIZARD);
this.power = new MageInt(4); this.power = new MageInt(4);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Corpse Augur dies, you draw X cards and you lose X life, where X is the number of creature cards in target player's graveyard. // When Corpse Augur dies, you draw X cards and you lose X life, where X is the number of creature cards in target player's graveyard.
CardsInTargetPlayersGraveyardCount dynamicValue = new CardsInTargetPlayersGraveyardCount(new FilterCreatureCard("the number of creature cards")); Ability ability = new DiesSourceTriggeredAbility(
Effect effect = new DrawCardSourceControllerEffect(dynamicValue); new DrawCardSourceControllerEffect(dynamicValue).setText("you draw X cards"), false
effect.setText("You draw X cards"); );
Ability ability = new DiesSourceTriggeredAbility(effect, false); ability.addEffect(new LoseLifeSourceControllerEffect(dynamicValue)
effect = new LoseLifeSourceControllerEffect(dynamicValue); .setText("and you lose X life, where X is the number of creature cards in target player's graveyard"));
effect.setText("and you lose X life, where X is the number of creature cards in target player's graveyard");
ability.addEffect(effect);
ability.addTarget(new TargetPlayer()); ability.addTarget(new TargetPlayer());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -33,7 +33,7 @@ public final class CurseOfUnbinding extends CardImpl {
// At the beginning of enchanted player's upkeep, that player reveals cards from the top of their library until they reveal a creature card. Put that card onto the battlefield under your control. That player puts the rest of the revealed cards into their graveyard. // At the beginning of enchanted player's upkeep, that player reveals cards from the top of their library until they reveal a creature card. Put that card onto the battlefield under your control. That player puts the rest of the revealed cards into their graveyard.
this.addAbility(new BeginningOfUpkeepTriggeredAbility( this.addAbility(new BeginningOfUpkeepTriggeredAbility(
new CurseOfConformityEffect(), TargetController.ENCHANTED, false new CurseOfUnbindingEffect(), TargetController.ENCHANTED, false
)); ));
} }

View file

@ -1,6 +1,7 @@
package mage.cards.d; package mage.cards.d;
import mage.MageInt; import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
@ -12,7 +13,9 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.ObjectSourcePlayer;
import mage.filter.predicate.ObjectSourcePlayerPredicate;
import mage.game.Game;
import java.util.UUID; import java.util.UUID;
@ -21,13 +24,11 @@ import java.util.UUID;
*/ */
public final class DeathBaron extends CardImpl { public final class DeathBaron extends CardImpl {
private static final FilterCreaturePermanent filterSkeletons = new FilterCreaturePermanent(); private static final FilterCreaturePermanent filter
private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent(); = new FilterCreaturePermanent("Skeletons you control and other Zombies");
static { static {
filterSkeletons.add(SubType.SKELETON.getPredicate()); filter.add(DeathBaronPredicate.instance);
filterZombie.add(SubType.ZOMBIE.getPredicate());
filterZombie.add(Predicates.not(SubType.SKELETON.getPredicate()));
} }
public DeathBaron(UUID ownerId, CardSetInfo setInfo) { public DeathBaron(UUID ownerId, CardSetInfo setInfo) {
@ -40,16 +41,10 @@ public final class DeathBaron extends CardImpl {
// Skeletons you control and other Zombies you control get +1/+1 and have deathtouch. // Skeletons you control and other Zombies you control get +1/+1 and have deathtouch.
Ability ability = new SimpleStaticAbility(new BoostControlledEffect( Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filterSkeletons, false 1, 1, Duration.WhileOnBattlefield, filter, false
).setText("Skeletons you control")); ));
ability.addEffect(new GainAbilityControlledEffect( ability.addEffect(new GainAbilityControlledEffect(
DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filterSkeletons, false DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter, true
).setText("and other Zombies you control"));
ability.addEffect(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filterZombie, true
).setText("get +1/+1"));
ability.addEffect(new GainAbilityControlledEffect(
DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filterZombie, true
).setText("and have deathtouch")); ).setText("and have deathtouch"));
this.addAbility(ability); this.addAbility(ability);
} }
@ -63,3 +58,16 @@ public final class DeathBaron extends CardImpl {
return new DeathBaron(this); return new DeathBaron(this);
} }
} }
enum DeathBaronPredicate implements ObjectSourcePlayerPredicate<MageObject> {
instance;
@Override
public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) {
if (input.getObject().hasSubtype(SubType.SKELETON, game)) {
return true;
}
return !input.getObject().getId().equals(input.getSourceId())
&& input.getObject().hasSubtype(SubType.ZOMBIE, game);
}
}

View file

@ -15,7 +15,6 @@ import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.events.ZoneChangeEvent; import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
@ -27,11 +26,8 @@ import java.util.UUID;
*/ */
public final class DiregrafCaptain extends CardImpl { public final class DiregrafCaptain extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie"); private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie creatures");
static {
filter.add(SubType.ZOMBIE.getPredicate());
}
public DiregrafCaptain(UUID ownerId, CardSetInfo setInfo) { public DiregrafCaptain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}");

View file

@ -27,7 +27,7 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public final class EaterOfHope extends CardImpl { public final class EaterOfHope extends CardImpl {
private static final FilterControlledCreaturePermanent destroyFilter = new FilterControlledCreaturePermanent("two other creatures"); private static final FilterControlledCreaturePermanent destroyFilter = new FilterControlledCreaturePermanent("other creatures");
static { static {
destroyFilter.add(AnotherPredicate.instance); destroyFilter.add(AnotherPredicate.instance);

View file

@ -58,7 +58,7 @@ class GisaAndGeralfCastFromGraveyardEffect extends AsThoughEffectImpl {
GisaAndGeralfCastFromGraveyardEffect() { GisaAndGeralfCastFromGraveyardEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true); super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
staticText = "During each of your turns, you may cast a Zombie creature card from your graveyard"; staticText = "During each of your turns, you may cast a Zombie creature spell from your graveyard";
} }
GisaAndGeralfCastFromGraveyardEffect(final GisaAndGeralfCastFromGraveyardEffect effect) { GisaAndGeralfCastFromGraveyardEffect(final GisaAndGeralfCastFromGraveyardEffect effect) {

View file

@ -48,7 +48,7 @@ public final class HavengulRunebinder extends CardImpl {
new ManaCostsImpl("{2}{U}")); new ManaCostsImpl("{2}{U}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(filter))); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(filter)));
ability.addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filterPermanent)); ability.addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filterPermanent).concatBy(", then"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -33,7 +33,7 @@ public final class HeraldOfWar extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever Herald of War attacks, put a +1/+1 counter on it. // Whenever Herald of War attacks, put a +1/+1 counter on it.
this.addAbility(new AttacksTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); this.addAbility(new AttacksTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).setText("put a +1/+1 counter on it"), false));
// Angel spells and Human spells you cast cost {1} less to cast for each +1/+1 counter on Herald of War. // Angel spells and Human spells you cast cost {1} less to cast for each +1/+1 counter on Herald of War.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new HeraldOfWarCostReductionEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new HeraldOfWarCostReductionEffect()));

View file

@ -1,13 +1,14 @@
package mage.cards.h; package mage.cards.h;
import mage.MageInt; import mage.MageInt;
import mage.Mana;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.abilities.mana.AnyColorManaAbility; import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -43,7 +44,10 @@ public final class HeronbladeElite extends CardImpl {
)); ));
// {T}: Add X mana of any one color, where X is Heronblade Elite's power. // {T}: Add X mana of any one color, where X is Heronblade Elite's power.
this.addAbility(new AnyColorManaAbility(new TapSourceCost(), xValue, false)); this.addAbility(new DynamicManaAbility(
Mana.AnyMana(1), xValue, new TapSourceCost(), "Add X mana " +
"of any one color, where X is {this}'s power", true
));
} }
private HeronbladeElite(final HeronbladeElite card) { private HeronbladeElite(final HeronbladeElite card) {

View file

@ -44,7 +44,7 @@ public final class HeronsGraceChampion extends CardImpl {
// When Heron's Grace Champion enters the battlefield, other Humans you control get +1/+1 and gain lifelink until end of turn. // When Heron's Grace Champion enters the battlefield, other Humans you control get +1/+1 and gain lifelink until end of turn.
Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, true); Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, true);
effect.setText("other Humans you control gets +1/+1"); effect.setText("other Humans you control get +1/+1");
Ability ability = new EntersBattlefieldTriggeredAbility(effect); Ability ability = new EntersBattlefieldTriggeredAbility(effect);
effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, filter, true); effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, filter, true);
effect.setText("and gain lifelink until end of turn"); effect.setText("and gain lifelink until end of turn");

View file

@ -1,7 +1,5 @@
package mage.cards.j; package mage.cards.j;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
@ -10,26 +8,29 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect;
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.SubType;
import mage.constants.SetTargetPointer; import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID;
/** /**
*
* @author emerald000 * @author emerald000
*/ */
public final class JuniperOrderRanger extends CardImpl { public final class JuniperOrderRanger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
} }
public JuniperOrderRanger(UUID ownerId, CardSetInfo setInfo) { public JuniperOrderRanger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.KNIGHT); this.subtype.add(SubType.KNIGHT);
this.subtype.add(SubType.RANGER); this.subtype.add(SubType.RANGER);
@ -38,12 +39,11 @@ public final class JuniperOrderRanger extends CardImpl {
// Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature and a +1/+1 counter on Juniper Order Ranger. // Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature and a +1/+1 counter on Juniper Order Ranger.
Ability ability = new EntersBattlefieldControlledTriggeredAbility( Ability ability = new EntersBattlefieldControlledTriggeredAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
new AddCountersTargetEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false,
filter, SetTargetPointer.PERMANENT, "Whenever another creature enters the battlefield " +
false, "under your control, put a +1/+1 counter on that creature and a +1/+1 counter on {this}."
SetTargetPointer.PERMANENT, );
"Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature and a +1/+1 counter on Juniper Order Ranger");
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -47,7 +47,7 @@ class KessigCagebreakersEffect extends OneShotEffect {
public KessigCagebreakersEffect() { public KessigCagebreakersEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "create a 2/2 green Wolf creature token tapped and attacking for each creature card in your graveyard"; this.staticText = "create a 2/2 green Wolf creature token that's tapped and attacking for each creature card in your graveyard";
} }
public KessigCagebreakersEffect(final KessigCagebreakersEffect effect) { public KessigCagebreakersEffect(final KessigCagebreakersEffect effect) {

View file

@ -21,7 +21,7 @@ import mage.game.permanent.token.ZombieToken;
*/ */
public final class LilianasMastery extends CardImpl { public final class LilianasMastery extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies");
static { static {
filter.add(SubType.ZOMBIE.getPredicate()); filter.add(SubType.ZOMBIE.getPredicate());

View file

@ -25,7 +25,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/ */
public final class LordOfTheAccursed extends CardImpl { public final class LordOfTheAccursed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie creatures"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.ZOMBIE, "Zombies");
public LordOfTheAccursed(UUID ownerId, CardSetInfo setInfo) { public LordOfTheAccursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
@ -41,7 +41,7 @@ public final class LordOfTheAccursed extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect( Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
new MenaceAbility(), new MenaceAbility(),
Duration.EndOfTurn, Duration.EndOfTurn,
filter, "All Zombies gains menace until end of turn."), filter, "All Zombies gain menace until end of turn."),
new ManaCostsImpl("{1}{B}")); new ManaCostsImpl("{1}{B}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
this.addAbility(ability); this.addAbility(ability);

View file

@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
public final class MidnightReaper extends CardImpl { public final class MidnightReaper extends CardImpl {
private static final FilterCreaturePermanent filter private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("nontoken creature you control"); = new FilterCreaturePermanent("a nontoken creature you control");
static { static {
filter.add(TargetController.YOU.getControllerPredicate()); filter.add(TargetController.YOU.getControllerPredicate());

View file

@ -17,7 +17,7 @@ import mage.game.permanent.token.ZombieToken;
*/ */
public final class OpenTheGraves extends CardImpl { public final class OpenTheGraves extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature you control"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a nontoken creature you control");
static { static {
filter.add(TargetController.YOU.getControllerPredicate()); filter.add(TargetController.YOU.getControllerPredicate());

View file

@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public final class OverseerOfTheDamned extends CardImpl { public final class OverseerOfTheDamned extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature an opponent controls"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a nontoken creature an opponent controls");
static { static {
filter.add(TargetController.OPPONENT.getControllerPredicate()); filter.add(TargetController.OPPONENT.getControllerPredicate());

View file

@ -27,7 +27,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/ */
public final class SigardaHeronsGrace extends CardImpl { public final class SigardaHeronsGrace extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans you control"); private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans");
static { static {
filter.add(SubType.HUMAN.getPredicate()); filter.add(SubType.HUMAN.getPredicate());
@ -45,10 +45,10 @@ public final class SigardaHeronsGrace extends CardImpl {
// You and Humans you control have hexproof. // You and Humans you control have hexproof.
Effect effect = new GainAbilityControllerEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield); Effect effect = new GainAbilityControllerEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield);
effect.setText("You and"); effect.setText("You");
Ability ability =new SimpleStaticAbility(Zone.BATTLEFIELD, effect); Ability ability =new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
effect = new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter); effect = new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter);
effect.setText("and Humans you control have hexproof"); effect.concatBy("and");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);

View file

@ -70,7 +70,7 @@ public final class TombTyrant extends CardImpl {
new ManaCostsImpl<>("{2}{B}"), condition new ManaCostsImpl<>("{2}{B}"), condition
); );
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT));
this.addAbility(ability.addHint(MyTurnHint.instance).addHint(hint)); this.addAbility(ability.addHint(MyTurnHint.instance).addHint(hint));
} }

View file

@ -30,8 +30,8 @@ public final class TrostanisSummoner extends CardImpl {
// When Trostani's Summoner enters the battlefield, create a 2/2 white Knight creature token with vigilance, a 3/3 green Centaur creature token, and a 4/4 green Rhino creature token with trample. // When Trostani's Summoner enters the battlefield, create a 2/2 white Knight creature token with vigilance, a 3/3 green Centaur creature token, and a 4/4 green Rhino creature token with trample.
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightToken())); Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightToken()));
ability.addEffect(new CreateTokenEffect(new CentaurToken())); ability.addEffect(new CreateTokenEffect(new CentaurToken()).setText(", a 3/3 green Centaur creature token"));
ability.addEffect(new CreateTokenEffect(new RhinoToken())); ability.addEffect(new CreateTokenEffect(new RhinoToken()).setText(", and a 4/4 green Rhino creature token with trample"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -29,7 +29,7 @@ public final class UnbreakableFormation extends CardImpl {
// Creatures you control gain indestructible until end of turn. // Creatures you control gain indestructible until end of turn.
this.getSpellAbility().addEffect(new GainAbilityControlledEffect( this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
IndestructibleAbility.getInstance(), Duration.EndOfTurn, IndestructibleAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURE StaticFilters.FILTER_PERMANENT_CREATURES
)); ));
// Addendum If you cast this spell during your main phase, put a +1/+1 counter on each of those creatures, and they also gain vigilance until end of turn. // Addendum If you cast this spell during your main phase, put a +1/+1 counter on each of those creatures, and they also gain vigilance until end of turn.

View file

@ -29,7 +29,7 @@ import java.util.UUID;
public final class WilheltTheRotcleaver extends CardImpl { public final class WilheltTheRotcleaver extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledPermanent(SubType.ZOMBIE); = new FilterControlledPermanent(SubType.ZOMBIE, "another Zombie you control");
private static final FilterControlledPermanent filter2 private static final FilterControlledPermanent filter2
= new FilterControlledPermanent(SubType.ZOMBIE, "a Zombie"); = new FilterControlledPermanent(SubType.ZOMBIE, "a Zombie");
@ -49,7 +49,7 @@ public final class WilheltTheRotcleaver extends CardImpl {
// Whenever another Zombie you control dies, if it didn't have decayed, create a 2/2 black Zombie creature token with decayed. // Whenever another Zombie you control dies, if it didn't have decayed, create a 2/2 black Zombie creature token with decayed.
this.addAbility(new DiesCreatureTriggeredAbility( this.addAbility(new DiesCreatureTriggeredAbility(
new CreateTokenEffect(new ZombieDecayedToken()) new CreateTokenEffect(new ZombieDecayedToken())
.concatBy(", if it didn't have decayed, "), .setText("if it didn't have decayed, create a 2/2 black Zombie creature token with decayed"),
false, filter false, filter
)); ));

View file

@ -58,7 +58,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_CODE = "MID"; // check all abilities and output cards with wrong abilities texts; private static final String FULL_ABILITIES_CHECK_SET_CODE = "MIC"; // 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 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 private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages

View file

@ -115,7 +115,7 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl {
case CONTROLLER_ATTACHED_TO: case CONTROLLER_ATTACHED_TO:
return "At the beginning of the end step of enchanted permanent's controller, " + generateConditionString(); return "At the beginning of the end step of enchanted permanent's controller, " + generateConditionString();
case ENCHANTED: case ENCHANTED:
return "At the beginning of enchanted player's draw step, " + generateConditionString(); return "At the beginning of enchanted player's end step, " + generateConditionString();
} }
return ""; return "";
} }

View file

@ -164,7 +164,7 @@ public class FlashbackAbility extends SpellAbility {
sbRule.append('.'); sbRule.append('.');
} }
if (abilityName != null) { if (abilityName != null) {
sbRule.append(' '); sbRule.append(". ");
sbRule.append(abilityName); sbRule.append(abilityName);
} }
sbRule.append(" <i>(You may cast this card from your graveyard for its flashback cost. Then exile it.)</i>"); sbRule.append(" <i>(You may cast this card from your graveyard for its flashback cost. Then exile it.)</i>");