From 4fe2904f3fc5a2fd3ef257f753259b0252687639 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 4 Oct 2021 21:16:14 -0400 Subject: [PATCH] [MIC] various text fixes --- .../mage/cards/a/AccomplishedAlchemist.java | 3 +- .../src/mage/cards/a/AngelOfGlorysRise.java | 2 +- Mage.Sets/src/mage/cards/b/BestialMenace.java | 13 +++---- Mage.Sets/src/mage/cards/c/CorpseAugur.java | 26 ++++++------- .../src/mage/cards/c/CurseOfUnbinding.java | 2 +- Mage.Sets/src/mage/cards/d/DeathBaron.java | 38 +++++++++++-------- .../src/mage/cards/d/DiregrafCaptain.java | 8 +--- Mage.Sets/src/mage/cards/e/EaterOfHope.java | 2 +- Mage.Sets/src/mage/cards/g/GisaAndGeralf.java | 2 +- .../src/mage/cards/h/HavengulRunebinder.java | 2 +- Mage.Sets/src/mage/cards/h/HeraldOfWar.java | 2 +- .../src/mage/cards/h/HeronbladeElite.java | 8 +++- .../src/mage/cards/h/HeronsGraceChampion.java | 2 +- .../src/mage/cards/j/JuniperOrderRanger.java | 24 ++++++------ .../src/mage/cards/k/KessigCagebreakers.java | 2 +- .../src/mage/cards/l/LilianasMastery.java | 2 +- .../src/mage/cards/l/LordOfTheAccursed.java | 4 +- .../src/mage/cards/m/MidnightReaper.java | 2 +- Mage.Sets/src/mage/cards/o/OpenTheGraves.java | 2 +- .../src/mage/cards/o/OverseerOfTheDamned.java | 2 +- .../src/mage/cards/s/SigardaHeronsGrace.java | 6 +-- Mage.Sets/src/mage/cards/t/TombTyrant.java | 2 +- .../src/mage/cards/t/TrostanisSummoner.java | 4 +- .../mage/cards/u/UnbreakableFormation.java | 2 +- .../mage/cards/w/WilheltTheRotcleaver.java | 4 +- .../java/mage/verify/VerifyCardDataTest.java | 2 +- .../BeginningOfEndStepTriggeredAbility.java | 2 +- .../abilities/keyword/FlashbackAbility.java | 2 +- 28 files changed, 88 insertions(+), 84 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AccomplishedAlchemist.java b/Mage.Sets/src/mage/cards/a/AccomplishedAlchemist.java index 3ea63de1b0..0dc91629e0 100644 --- a/Mage.Sets/src/mage/cards/a/AccomplishedAlchemist.java +++ b/Mage.Sets/src/mage/cards/a/AccomplishedAlchemist.java @@ -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. this.addAbility(new DynamicManaAbility( - new Mana(0, 0, 0, 0, 0, 0, 1, 0), - ControllerGotLifeCount.instance, new TapSourceCost(), "Add X mana " + + Mana.AnyMana(1), ControllerGotLifeCount.instance, new TapSourceCost(), "Add X mana " + "of any one color, where X is the amount of life you gained this turn", true ).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher()); } diff --git a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java index a512c49044..c8df87128b 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java @@ -55,7 +55,7 @@ class AngelOfGlorysRiseEffect extends OneShotEffect { public AngelOfGlorysRiseEffect() { 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) { diff --git a/Mage.Sets/src/mage/cards/b/BestialMenace.java b/Mage.Sets/src/mage/cards/b/BestialMenace.java index f5e22de69e..75e1740db7 100644 --- a/Mage.Sets/src/mage/cards/b/BestialMenace.java +++ b/Mage.Sets/src/mage/cards/b/BestialMenace.java @@ -1,8 +1,5 @@ - - package mage.cards.b; -import java.util.UUID; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; 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.WolfToken; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class BestialMenace extends CardImpl { 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 WolfToken())); - this.getSpellAbility().addEffect(new CreateTokenEffect(new ElephantToken())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new WolfToken()).setText(", a 2/2 green Wolf creature token")); + this.getSpellAbility().addEffect(new CreateTokenEffect(new ElephantToken()).setText(", and a 3/3 green Elephant creature token")); } private BestialMenace(final BestialMenace card) { @@ -33,5 +31,4 @@ public final class BestialMenace extends CardImpl { public BestialMenace copy() { return new BestialMenace(this); } - } diff --git a/Mage.Sets/src/mage/cards/c/CorpseAugur.java b/Mage.Sets/src/mage/cards/c/CorpseAugur.java index e1bc59d461..d393d6b052 100644 --- a/Mage.Sets/src/mage/cards/c/CorpseAugur.java +++ b/Mage.Sets/src/mage/cards/c/CorpseAugur.java @@ -1,42 +1,42 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardsInTargetPlayersGraveyardCount; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author fireshoes */ public final class CorpseAugur extends CardImpl { + private static final DynamicValue dynamicValue + = new CardsInTargetPlayersGraveyardCount(StaticFilters.FILTER_CARD_CREATURE); + 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.WIZARD); this.power = new MageInt(4); 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. - CardsInTargetPlayersGraveyardCount dynamicValue = new CardsInTargetPlayersGraveyardCount(new FilterCreatureCard("the number of creature cards")); - Effect effect = new DrawCardSourceControllerEffect(dynamicValue); - effect.setText("You draw X cards"); - Ability ability = new DiesSourceTriggeredAbility(effect, false); - effect = new LoseLifeSourceControllerEffect(dynamicValue); - effect.setText("and you lose X life, where X is the number of creature cards in target player's graveyard"); - ability.addEffect(effect); + Ability ability = new DiesSourceTriggeredAbility( + new DrawCardSourceControllerEffect(dynamicValue).setText("you draw X cards"), false + ); + ability.addEffect(new LoseLifeSourceControllerEffect(dynamicValue) + .setText("and you lose X life, where X is the number of creature cards in target player's graveyard")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CurseOfUnbinding.java b/Mage.Sets/src/mage/cards/c/CurseOfUnbinding.java index 2cc4c2494a..9e07fd63b5 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfUnbinding.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfUnbinding.java @@ -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. this.addAbility(new BeginningOfUpkeepTriggeredAbility( - new CurseOfConformityEffect(), TargetController.ENCHANTED, false + new CurseOfUnbindingEffect(), TargetController.ENCHANTED, false )); } diff --git a/Mage.Sets/src/mage/cards/d/DeathBaron.java b/Mage.Sets/src/mage/cards/d/DeathBaron.java index 90c0d4c2f0..49fd9011ed 100644 --- a/Mage.Sets/src/mage/cards/d/DeathBaron.java +++ b/Mage.Sets/src/mage/cards/d/DeathBaron.java @@ -1,6 +1,7 @@ package mage.cards.d; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -12,7 +13,9 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; 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; @@ -21,13 +24,11 @@ import java.util.UUID; */ public final class DeathBaron extends CardImpl { - private static final FilterCreaturePermanent filterSkeletons = new FilterCreaturePermanent(); - private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent(); + private static final FilterCreaturePermanent filter + = new FilterCreaturePermanent("Skeletons you control and other Zombies"); static { - filterSkeletons.add(SubType.SKELETON.getPredicate()); - filterZombie.add(SubType.ZOMBIE.getPredicate()); - filterZombie.add(Predicates.not(SubType.SKELETON.getPredicate())); + filter.add(DeathBaronPredicate.instance); } 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. Ability ability = new SimpleStaticAbility(new BoostControlledEffect( - 1, 1, Duration.WhileOnBattlefield, filterSkeletons, false - ).setText("Skeletons you control")); + 1, 1, Duration.WhileOnBattlefield, filter, false + )); ability.addEffect(new GainAbilityControlledEffect( - DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filterSkeletons, false - ).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 + DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter, true ).setText("and have deathtouch")); this.addAbility(ability); } @@ -63,3 +58,16 @@ public final class DeathBaron extends CardImpl { return new DeathBaron(this); } } + +enum DeathBaronPredicate implements ObjectSourcePlayerPredicate { + instance; + + @Override + public boolean apply(ObjectSourcePlayer 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); + } +} diff --git a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java index 36838145f2..a47f7e4f4e 100644 --- a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java +++ b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java @@ -15,7 +15,6 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.target.common.TargetOpponent; @@ -27,11 +26,8 @@ import java.util.UUID; */ public final class DiregrafCaptain extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie"); - - static { - filter.add(SubType.ZOMBIE.getPredicate()); - } + private static final FilterCreaturePermanent filter + = new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie creatures"); public DiregrafCaptain(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}"); diff --git a/Mage.Sets/src/mage/cards/e/EaterOfHope.java b/Mage.Sets/src/mage/cards/e/EaterOfHope.java index b3fbc44780..9dc034624d 100644 --- a/Mage.Sets/src/mage/cards/e/EaterOfHope.java +++ b/Mage.Sets/src/mage/cards/e/EaterOfHope.java @@ -27,7 +27,7 @@ import mage.target.common.TargetCreaturePermanent; */ 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 { destroyFilter.add(AnotherPredicate.instance); diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java index 5218e38613..553d380de9 100644 --- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java +++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java @@ -58,7 +58,7 @@ class GisaAndGeralfCastFromGraveyardEffect extends AsThoughEffectImpl { GisaAndGeralfCastFromGraveyardEffect() { 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) { diff --git a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java index c12da624b7..d8a3e48a09 100644 --- a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java +++ b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java @@ -48,7 +48,7 @@ public final class HavengulRunebinder extends CardImpl { new ManaCostsImpl("{2}{U}")); ability.addCost(new TapSourceCost()); 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); } diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfWar.java b/Mage.Sets/src/mage/cards/h/HeraldOfWar.java index b4b795dc85..74580a163d 100644 --- a/Mage.Sets/src/mage/cards/h/HeraldOfWar.java +++ b/Mage.Sets/src/mage/cards/h/HeraldOfWar.java @@ -33,7 +33,7 @@ public final class HeraldOfWar extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // 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. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new HeraldOfWarCostReductionEffect())); diff --git a/Mage.Sets/src/mage/cards/h/HeronbladeElite.java b/Mage.Sets/src/mage/cards/h/HeronbladeElite.java index e4b4ec2a3d..588ffda941 100644 --- a/Mage.Sets/src/mage/cards/h/HeronbladeElite.java +++ b/Mage.Sets/src/mage/cards/h/HeronbladeElite.java @@ -1,13 +1,14 @@ package mage.cards.h; import mage.MageInt; +import mage.Mana; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.VigilanceAbility; -import mage.abilities.mana.AnyColorManaAbility; +import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; 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. - 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) { diff --git a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java index ee42578378..edf79a329e 100644 --- a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java +++ b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java @@ -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. 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); effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, filter, true); effect.setText("and gain lifelink until end of turn"); diff --git a/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java b/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java index 8c3ae7a9ef..8cde404161 100644 --- a/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java +++ b/Mage.Sets/src/mage/cards/j/JuniperOrderRanger.java @@ -1,7 +1,5 @@ - package mage.cards.j; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; @@ -10,26 +8,29 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import java.util.UUID; + /** - * * @author emerald000 */ public final class JuniperOrderRanger extends CardImpl { - + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + static { filter.add(AnotherPredicate.instance); } 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.KNIGHT); 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. Ability ability = new EntersBattlefieldControlledTriggeredAbility( - Zone.BATTLEFIELD, - new AddCountersTargetEffect(CounterType.P1P1.createInstance()), - filter, - false, - 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"); + Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), + StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, + 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 {this}." + ); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java b/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java index 5daf85d9c0..72125f8cb7 100644 --- a/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java +++ b/Mage.Sets/src/mage/cards/k/KessigCagebreakers.java @@ -47,7 +47,7 @@ class KessigCagebreakersEffect extends OneShotEffect { public KessigCagebreakersEffect() { 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) { diff --git a/Mage.Sets/src/mage/cards/l/LilianasMastery.java b/Mage.Sets/src/mage/cards/l/LilianasMastery.java index 1a0a49ac95..b41616fb49 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasMastery.java +++ b/Mage.Sets/src/mage/cards/l/LilianasMastery.java @@ -21,7 +21,7 @@ import mage.game.permanent.token.ZombieToken; */ public final class LilianasMastery extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies"); static { filter.add(SubType.ZOMBIE.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java index 39b3b27206..aeaecbd9c7 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java +++ b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java @@ -25,7 +25,7 @@ import mage.filter.common.FilterCreaturePermanent; */ 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) { 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( new MenaceAbility(), Duration.EndOfTurn, - filter, "All Zombies gains menace until end of turn."), + filter, "All Zombies gain menace until end of turn."), new ManaCostsImpl("{1}{B}")); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MidnightReaper.java b/Mage.Sets/src/mage/cards/m/MidnightReaper.java index 4e6ac688e6..0d97abc011 100644 --- a/Mage.Sets/src/mage/cards/m/MidnightReaper.java +++ b/Mage.Sets/src/mage/cards/m/MidnightReaper.java @@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.TokenPredicate; public final class MidnightReaper extends CardImpl { private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("nontoken creature you control"); + = new FilterCreaturePermanent("a nontoken creature you control"); static { filter.add(TargetController.YOU.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/o/OpenTheGraves.java b/Mage.Sets/src/mage/cards/o/OpenTheGraves.java index 679aceeb29..2821dd9fbc 100644 --- a/Mage.Sets/src/mage/cards/o/OpenTheGraves.java +++ b/Mage.Sets/src/mage/cards/o/OpenTheGraves.java @@ -17,7 +17,7 @@ import mage.game.permanent.token.ZombieToken; */ 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 { filter.add(TargetController.YOU.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java b/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java index 00e1ddb654..9616d5f95b 100644 --- a/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java +++ b/Mage.Sets/src/mage/cards/o/OverseerOfTheDamned.java @@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent; */ 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 { filter.add(TargetController.OPPONENT.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java index 18f1d3e670..5f7673ef04 100644 --- a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java +++ b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java @@ -27,7 +27,7 @@ import mage.target.common.TargetCardInYourGraveyard; */ 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 { filter.add(SubType.HUMAN.getPredicate()); @@ -45,10 +45,10 @@ public final class SigardaHeronsGrace extends CardImpl { // You and Humans you control have hexproof. Effect effect = new GainAbilityControllerEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield); - effect.setText("You and"); + effect.setText("You"); Ability ability =new SimpleStaticAbility(Zone.BATTLEFIELD, effect); effect = new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter); - effect.setText("and Humans you control have hexproof"); + effect.concatBy("and"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TombTyrant.java b/Mage.Sets/src/mage/cards/t/TombTyrant.java index 3aadd1726d..6e8641b5d0 100644 --- a/Mage.Sets/src/mage/cards/t/TombTyrant.java +++ b/Mage.Sets/src/mage/cards/t/TombTyrant.java @@ -70,7 +70,7 @@ public final class TombTyrant extends CardImpl { new ManaCostsImpl<>("{2}{B}"), condition ); 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)); } diff --git a/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java b/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java index 18dbdb27e7..0dfd2b28d5 100644 --- a/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java +++ b/Mage.Sets/src/mage/cards/t/TrostanisSummoner.java @@ -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. Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightToken())); - ability.addEffect(new CreateTokenEffect(new CentaurToken())); - ability.addEffect(new CreateTokenEffect(new RhinoToken())); + ability.addEffect(new CreateTokenEffect(new CentaurToken()).setText(", a 3/3 green Centaur creature token")); + ability.addEffect(new CreateTokenEffect(new RhinoToken()).setText(", and a 4/4 green Rhino creature token with trample")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java b/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java index 34df150c94..106298ccb5 100644 --- a/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java +++ b/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java @@ -29,7 +29,7 @@ public final class UnbreakableFormation extends CardImpl { // Creatures you control gain indestructible until end of turn. this.getSpellAbility().addEffect(new GainAbilityControlledEffect( 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. diff --git a/Mage.Sets/src/mage/cards/w/WilheltTheRotcleaver.java b/Mage.Sets/src/mage/cards/w/WilheltTheRotcleaver.java index 19506338b1..e5760a8727 100644 --- a/Mage.Sets/src/mage/cards/w/WilheltTheRotcleaver.java +++ b/Mage.Sets/src/mage/cards/w/WilheltTheRotcleaver.java @@ -29,7 +29,7 @@ import java.util.UUID; public final class WilheltTheRotcleaver extends CardImpl { private static final FilterPermanent filter - = new FilterControlledPermanent(SubType.ZOMBIE); + = new FilterControlledPermanent(SubType.ZOMBIE, "another Zombie you control"); private static final FilterControlledPermanent filter2 = 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. this.addAbility(new DiesCreatureTriggeredAbility( 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 )); diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index ed37b8723f..ec96e97b39 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -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 = "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 ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages diff --git a/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java index f63bd155bf..b3aca3cb30 100644 --- a/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java @@ -115,7 +115,7 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { case CONTROLLER_ATTACHED_TO: return "At the beginning of the end step of enchanted permanent's controller, " + generateConditionString(); 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 ""; } diff --git a/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java index 22ca67bc19..f95107007c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FlashbackAbility.java @@ -164,7 +164,7 @@ public class FlashbackAbility extends SpellAbility { sbRule.append('.'); } if (abilityName != null) { - sbRule.append(' '); + sbRule.append(". "); sbRule.append(abilityName); } sbRule.append(" (You may cast this card from your graveyard for its flashback cost. Then exile it.)");