diff --git a/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java b/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java index b0331a3e626..225eea9cbb0 100644 --- a/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java +++ b/Mage.Sets/src/mage/cards/a/AdmiralsOrder.java @@ -24,12 +24,11 @@ public final class AdmiralsOrder extends CardImpl { // Raid - If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost. this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl("{U}"), RaidCondition.instance, - "

Raid — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost"), + "
Raid — If you attacked this turn, you may pay {U} rather than pay this spell's mana cost"), new PlayerAttackedWatcher()); // Counter target spell. this.getSpellAbility().addEffect(new CounterTargetEffect()); this.getSpellAbility().addTarget(new TargetSpell()); - this.getSpellAbility().setAbilityWord(AbilityWord.RAID); this.getSpellAbility().addHint(RaidHint.instance); } diff --git a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java index d22ba61bc2b..adfcd640ca9 100644 --- a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java +++ b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java @@ -25,7 +25,7 @@ import mage.watchers.common.RevoltWatcher; public final class AidFromTheCowl extends CardImpl { private static final String ruleText = "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, " - + "you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library."; + + "reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library."; public AidFromTheCowl(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}"); diff --git a/Mage.Sets/src/mage/cards/a/AkoumFirebird.java b/Mage.Sets/src/mage/cards/a/AkoumFirebird.java index f233a9f061b..c64e50ab76b 100644 --- a/Mage.Sets/src/mage/cards/a/AkoumFirebird.java +++ b/Mage.Sets/src/mage/cards/a/AkoumFirebird.java @@ -44,7 +44,7 @@ public final class AkoumFirebird extends CardImpl { // Landfall-Whenever a land enters the battlefield under your control, you may pay {4}{R}{R}. // If you do, return Akoum Firebird from your graveyard to the battlefield. this.addAbility(new AkoumFirebirdLandfallAbility(new DoIfCostPaid( - new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl("{4}{R}{R}")), false)); + new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ManaCostsImpl("{4}{R}{R}")), false)); } private AkoumFirebird(final AkoumFirebird card) { diff --git a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java index 81f26520e8b..64b74a7824e 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java +++ b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java @@ -86,7 +86,7 @@ class AngelicArbiterEffect2 extends ContinuousRuleModifyingEffectImpl { public AngelicArbiterEffect2() { super(Duration.WhileOnBattlefield, Outcome.Benefit); - staticText = "Each opponent who attacked with a creature this turn can't cast spells"; + staticText = "Each opponent who attacked this turn can't cast spells"; } public AngelicArbiterEffect2(final AngelicArbiterEffect2 effect) { diff --git a/Mage.Sets/src/mage/cards/a/ArrowStorm.java b/Mage.Sets/src/mage/cards/a/ArrowStorm.java index ad7273389b2..7d68830e13d 100644 --- a/Mage.Sets/src/mage/cards/a/ArrowStorm.java +++ b/Mage.Sets/src/mage/cards/a/ArrowStorm.java @@ -32,9 +32,8 @@ public final class ArrowStorm extends CardImpl { this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new DamageTargetEffect(5, false), RaidCondition.instance, - "

Raid — If you attacked with a creature this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented")); + "

Raid — If you attacked this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented")); this.getSpellAbility().addWatcher(new PlayerAttackedWatcher()); - this.getSpellAbility().setAbilityWord(AbilityWord.RAID); this.getSpellAbility().addHint(RaidHint.instance); } diff --git a/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java b/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java index 1f71e3f3930..1a483827cad 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java +++ b/Mage.Sets/src/mage/cards/a/AuriokSunchaser.java @@ -1,17 +1,20 @@ package mage.cards.a; import mage.MageInt; +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.hint.common.MetalcraftHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; import java.util.UUID; @@ -20,9 +23,6 @@ import java.util.UUID; */ public final class AuriokSunchaser extends CardImpl { - protected static String effect1Text = "Metalcraft — As long as you control three or more artifacts, Auriok Sunchaser gets +2/+2"; - protected static String effect2Text = "Metalcraft — As long as you control three or more artifacts, Auriok Sunchaser has flying"; - public AuriokSunchaser(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.subtype.add(SubType.HUMAN); @@ -31,19 +31,14 @@ public final class AuriokSunchaser extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - ContinuousEffect effect1 = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, - new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, effect1Text)) - .setAbilityWord(AbilityWord.METALCRAFT) - .addHint(MetalcraftHint.instance) - ); - - ContinuousEffect effect2 = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, - new ConditionalContinuousEffect(effect2, MetalcraftCondition.instance, effect2Text)) - .setAbilityWord(AbilityWord.METALCRAFT) - .addHint(MetalcraftHint.instance) - ); + Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( + new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), + MetalcraftCondition.instance, "as long as you control three or more artifacts, {this} gets +2/+2" + )); + ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect( + FlyingAbility.getInstance(), Duration.WhileOnBattlefield + ), MetalcraftCondition.instance, "and has flying")); + this.addAbility(ability.setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance)); } private AuriokSunchaser(final AuriokSunchaser card) { diff --git a/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java b/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java index 6c94ac1628b..1c1879adf8f 100644 --- a/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java +++ b/Mage.Sets/src/mage/cards/b/BalothWoodcrasher.java @@ -26,8 +26,8 @@ public final class BalothWoodcrasher extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(4); - LandfallAbility ability = new LandfallAbility(new BoostSourceEffect(4, 4, Duration.EndOfTurn), false); - ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn)); + LandfallAbility ability = new LandfallAbility(new BoostSourceEffect(4, 4, Duration.EndOfTurn).setText("{this} gets +4/+4"), false); + ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).setText("and gains trample until end of turn")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java b/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java index bdd745139e3..83c8dfd3755 100644 --- a/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java +++ b/Mage.Sets/src/mage/cards/b/BellowingSaddlebrute.java @@ -32,7 +32,7 @@ public final class BellowingSaddlebrute extends CardImpl { this.addAbility(new ConditionalInterveningIfTriggeredAbility( new EntersBattlefieldTriggeredAbility(new LoseLifeSourceControllerEffect(4)), new InvertCondition(RaidCondition.instance), - "Raid — When {this} enters the battlefield, you lose 4 life unless you attacked with a creature this turn") + "Raid — When {this} enters the battlefield, you lose 4 life unless you attacked this turn.") .setAbilityWord(AbilityWord.RAID) .addHint(RaidHint.instance), new PlayerAttackedWatcher()); diff --git a/Mage.Sets/src/mage/cards/b/BreakOfDay.java b/Mage.Sets/src/mage/cards/b/BreakOfDay.java index 2bb5a09bd14..02502d868ec 100644 --- a/Mage.Sets/src/mage/cards/b/BreakOfDay.java +++ b/Mage.Sets/src/mage/cards/b/BreakOfDay.java @@ -32,7 +32,7 @@ public final class BreakOfDay extends CardImpl { StaticFilters.FILTER_PERMANENT_CREATURES, false ), new LockedInCondition(FatefulHourCondition.instance), "
Fateful hour — If you have 5 or less life, " + - "those creatures also are indestructible this turn" + "those creatures gain indestructible until end of turn" )); } diff --git a/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java b/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java index 352f72ef6d2..f3ffee2a352 100644 --- a/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java +++ b/Mage.Sets/src/mage/cards/b/BrilliantSpectrum.java @@ -25,7 +25,7 @@ public final class BrilliantSpectrum extends CardImpl { Effect effect = new DrawCardSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()); effect.setText("Draw X cards, where X is the number of colors of mana spent to cast this spell"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addEffect(new DiscardControllerEffect(2)); + this.getSpellAbility().addEffect(new DiscardControllerEffect(2).concatBy("Then")); } private BrilliantSpectrum(final BrilliantSpectrum card) { diff --git a/Mage.Sets/src/mage/cards/c/CacklingFlames.java b/Mage.Sets/src/mage/cards/c/CacklingFlames.java index 5ef7543cb0e..501f8cb4bdb 100644 --- a/Mage.Sets/src/mage/cards/c/CacklingFlames.java +++ b/Mage.Sets/src/mage/cards/c/CacklingFlames.java @@ -22,7 +22,7 @@ public final class CacklingFlames extends CardImpl { // Hellbent - Cackling Flames deals 5 damage to that creature or player instead if you have no cards in hand. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new DamageTargetEffect(5), new DamageTargetEffect(3), HellbentCondition.instance, - "{this} deals 3 damage to any target
Hellbent " + + "{this} deals 3 damage to any target.
Hellbent " + "— {this} deals 5 damage instead if you have no cards in hand." )); this.getSpellAbility().addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/c/CarapaceForger.java b/Mage.Sets/src/mage/cards/c/CarapaceForger.java index 06c196070ba..40e48b860a0 100644 --- a/Mage.Sets/src/mage/cards/c/CarapaceForger.java +++ b/Mage.Sets/src/mage/cards/c/CarapaceForger.java @@ -8,7 +8,10 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.hint.common.MetalcraftHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; import java.util.UUID; @@ -25,15 +28,11 @@ public final class CarapaceForger extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new SimpleStaticAbility( - Zone.BATTLEFIELD, - new ConditionalContinuousEffect( - new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), - MetalcraftCondition.instance, "Metalcraft — {this} gets " + - "+2/+2 as long as you control three or more artifacts" - )) - .setAbilityWord(AbilityWord.METALCRAFT) - .addHint(MetalcraftHint.instance)); + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), + MetalcraftCondition.instance, "{this} gets " + + "+2/+2 as long as you control three or more artifacts" + )).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance)); } private CarapaceForger(final CarapaceForger card) { diff --git a/Mage.Sets/src/mage/cards/c/ChromeMox.java b/Mage.Sets/src/mage/cards/c/ChromeMox.java index 52d284f598f..0b7ccdc18c4 100644 --- a/Mage.Sets/src/mage/cards/c/ChromeMox.java +++ b/Mage.Sets/src/mage/cards/c/ChromeMox.java @@ -14,6 +14,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceColor; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -39,7 +40,7 @@ public final class ChromeMox extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}"); // Imprint - When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromeMoxEffect(), true)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromeMoxEffect(), true).setAbilityWord(AbilityWord.IMPRINT)); // {T}: Add one mana of any of the exiled card's colors. this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new ChromeMoxManaEffect(), new TapSourceCost())); } diff --git a/Mage.Sets/src/mage/cards/c/ChromeSteed.java b/Mage.Sets/src/mage/cards/c/ChromeSteed.java index e65cd74a3c8..26f35224a09 100644 --- a/Mage.Sets/src/mage/cards/c/ChromeSteed.java +++ b/Mage.Sets/src/mage/cards/c/ChromeSteed.java @@ -8,7 +8,10 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.hint.common.MetalcraftHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; import java.util.UUID; @@ -23,15 +26,11 @@ public final class ChromeSteed extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new SimpleStaticAbility( - Zone.BATTLEFIELD, - new ConditionalContinuousEffect( - new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), - MetalcraftCondition.instance, "Metalcraft — {this} gets " + - "+2/+2 as long as you control three or more artifacts" - )) - .setAbilityWord(AbilityWord.METALCRAFT) - .addHint(MetalcraftHint.instance)); + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), + MetalcraftCondition.instance, "{this} gets " + + "+2/+2 as long as you control three or more artifacts" + )).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance)); } private ChromeSteed(final ChromeSteed card) { @@ -42,5 +41,4 @@ public final class ChromeSteed extends CardImpl { public ChromeSteed copy() { return new ChromeSteed(this); } - } diff --git a/Mage.Sets/src/mage/cards/c/CloneShell.java b/Mage.Sets/src/mage/cards/c/CloneShell.java index d31fd85d05f..6ce2cfdaa2d 100644 --- a/Mage.Sets/src/mage/cards/c/CloneShell.java +++ b/Mage.Sets/src/mage/cards/c/CloneShell.java @@ -6,10 +6,7 @@ import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.*; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.game.Game; import mage.game.permanent.Permanent; @@ -33,7 +30,7 @@ public final class CloneShell extends CardImpl { this.toughness = new MageInt(2); // Imprint - When Clone Shell enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library in any order. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CloneShellEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CloneShellEffect(), false).setAbilityWord(AbilityWord.IMPRINT)); // When Clone Shell dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control. this.addAbility(new DiesSourceTriggeredAbility(new CloneShellDiesEffect())); diff --git a/Mage.Sets/src/mage/cards/c/CodeOfConstraint.java b/Mage.Sets/src/mage/cards/c/CodeOfConstraint.java index f548ade2784..a88990cfc8e 100644 --- a/Mage.Sets/src/mage/cards/c/CodeOfConstraint.java +++ b/Mage.Sets/src/mage/cards/c/CodeOfConstraint.java @@ -29,7 +29,7 @@ public final class CodeOfConstraint extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); // Addendum — If you cast this spell during your main phase, tap that creature and it doesn't untap during its controller's next untap step. this.getSpellAbility().addEffect(new CodeOfConstraintEffect()); diff --git a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java index ba0d5f960e9..8f2ed7780f8 100644 --- a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java +++ b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java @@ -34,7 +34,6 @@ public final class ConcussiveBolt extends CardImpl { // Metalcraft — If you control three or more artifacts, creatures that player controls can't block this turn. this.getSpellAbility().addEffect(new ConcussiveBoltEffect()); this.getSpellAbility().addEffect(new ConcussiveBoltRestrictionEffect()); - this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT); this.getSpellAbility().addHint(MetalcraftHint.instance); } @@ -52,7 +51,7 @@ class ConcussiveBoltEffect extends OneShotEffect { public ConcussiveBoltEffect() { super(Outcome.Benefit); - this.staticText = "Metalcraft — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn."; + this.staticText = "
Metalcraft — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn."; } public ConcussiveBoltEffect(final ConcussiveBoltEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/CropSigil.java b/Mage.Sets/src/mage/cards/c/CropSigil.java index bb9d2af4467..1efa3cb98b6 100644 --- a/Mage.Sets/src/mage/cards/c/CropSigil.java +++ b/Mage.Sets/src/mage/cards/c/CropSigil.java @@ -43,7 +43,7 @@ public final class CropSigil extends CardImpl { Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(true), new ManaCostsImpl<>("{2}{G}"), DeliriumCondition.instance, "Delirium — {2}{G}, Sacrifice {this}: Return up to one target creature card and up to one target land card from your graveyard to your hand. " - + "Activate only if there are four or more card types among cards in your graveyard"); + + "Activate only if there are four or more card types among cards in your graveyard."); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterCreature)); ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterLand)); diff --git a/Mage.Sets/src/mage/cards/d/DarkDabbling.java b/Mage.Sets/src/mage/cards/d/DarkDabbling.java index bab340e52df..8337340f6f4 100644 --- a/Mage.Sets/src/mage/cards/d/DarkDabbling.java +++ b/Mage.Sets/src/mage/cards/d/DarkDabbling.java @@ -48,7 +48,7 @@ class DarkDabblingEffect extends OneShotEffect { public DarkDabblingEffect() { super(Outcome.Benefit); - this.staticText = "Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control"; + this.staticText = "
Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control"; } public DarkDabblingEffect(final DarkDabblingEffect effect) { diff --git a/Mage.Sets/src/mage/cards/d/DeathreapRitual.java b/Mage.Sets/src/mage/cards/d/DeathreapRitual.java index 3fea56bee97..a4a9f34b931 100644 --- a/Mage.Sets/src/mage/cards/d/DeathreapRitual.java +++ b/Mage.Sets/src/mage/cards/d/DeathreapRitual.java @@ -8,6 +8,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.hint.common.MorbidHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.TargetController; import mage.constants.Zone; @@ -23,7 +24,7 @@ public final class DeathreapRitual extends CardImpl { // Morbid — At the beginning of each end step, if a creature died this turn, you may draw a card. this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), - TargetController.ANY, MorbidCondition.instance, true).addHint(MorbidHint.instance)); + TargetController.ANY, MorbidCondition.instance, true).addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID)); } private DeathreapRitual(final DeathreapRitual card) { diff --git a/Mage.Sets/src/mage/cards/d/DispenseJustice.java b/Mage.Sets/src/mage/cards/d/DispenseJustice.java index 84b1e3e4960..8a09c91c822 100644 --- a/Mage.Sets/src/mage/cards/d/DispenseJustice.java +++ b/Mage.Sets/src/mage/cards/d/DispenseJustice.java @@ -28,7 +28,6 @@ public final class DispenseJustice extends CardImpl { // Metalcraft — That player sacrifices two attacking creatures instead if you control three or more artifacts. this.getSpellAbility().addEffect(new DispenseJusticeEffect()); this.getSpellAbility().addTarget(new TargetPlayer()); - this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT); this.getSpellAbility().addHint(MetalcraftHint.instance); } diff --git a/Mage.Sets/src/mage/cards/e/EtchedChampion.java b/Mage.Sets/src/mage/cards/e/EtchedChampion.java index 176017ef353..872ae670259 100644 --- a/Mage.Sets/src/mage/cards/e/EtchedChampion.java +++ b/Mage.Sets/src/mage/cards/e/EtchedChampion.java @@ -22,7 +22,7 @@ import java.util.UUID; * @author North */ public final class EtchedChampion extends CardImpl { - private static final String ruleText = "Metalcraft — Etched Champion has protection from all colors as long as you control three or more artifacts"; + private static final String ruleText = "{this} has protection from all colors as long as you control three or more artifacts"; private static final FilterCard filter = new FilterCard("all colors"); diff --git a/Mage.Sets/src/mage/cards/e/ExclusionRitual.java b/Mage.Sets/src/mage/cards/e/ExclusionRitual.java index d94793960c7..57102524f93 100644 --- a/Mage.Sets/src/mage/cards/e/ExclusionRitual.java +++ b/Mage.Sets/src/mage/cards/e/ExclusionRitual.java @@ -8,10 +8,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.game.Game; @@ -40,7 +37,7 @@ public final class ExclusionRitual extends CardImpl { // Imprint - When Exclusion Ritual enters the battlefield, exile target nonland permanent. Ability ability = new EntersBattlefieldTriggeredAbility(new ExclusionRitualImprintEffect(), false); ability.addTarget(new TargetPermanent(filter)); - this.addAbility(ability); + this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT); // Players can't cast spells with the same name as the exiled card. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ExclusionRitualReplacementEffect())); } diff --git a/Mage.Sets/src/mage/cards/e/ExertInfluence.java b/Mage.Sets/src/mage/cards/e/ExertInfluence.java index c071c37ad09..c56cb657859 100644 --- a/Mage.Sets/src/mage/cards/e/ExertInfluence.java +++ b/Mage.Sets/src/mage/cards/e/ExertInfluence.java @@ -48,7 +48,7 @@ class ExertInfluenceEffect extends OneShotEffect { public ExertInfluenceEffect() { super(Outcome.GainControl); - this.staticText = "Gain control of target creature if its power is less than or equal to the number of colors spent to cast this spell"; + this.staticText = "Gain control of target creature if its power is less than or equal to the number of colors of mana spent to cast this spell"; } public ExertInfluenceEffect(final ExertInfluenceEffect effect) { diff --git a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java index 888af884a05..70c285bf42d 100644 --- a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java +++ b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java @@ -20,7 +20,7 @@ import java.util.UUID; * @author Loki */ public final class EzurisBrigade extends CardImpl { - private static final String rule = "Metalcraft — As long as you control three or more artifacts, Ezuri's Brigade gets +4/+4 and has trample"; + private static final String rule = "As long as you control three or more artifacts, {this} gets +4/+4"; public EzurisBrigade(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); @@ -33,7 +33,7 @@ public final class EzurisBrigade extends CardImpl { ContinuousEffect boostSource = new BoostSourceEffect(4, 4, Duration.WhileOnBattlefield); ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, rule); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); - ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), MetalcraftCondition.instance, "")); + ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), MetalcraftCondition.instance, "and has trample")); ability.setAbilityWord(AbilityWord.METALCRAFT); ability.addHint(MetalcraftHint.instance); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/f/FesterhideBoar.java b/Mage.Sets/src/mage/cards/f/FesterhideBoar.java index 1beda4953c7..9714339aaea 100644 --- a/Mage.Sets/src/mage/cards/f/FesterhideBoar.java +++ b/Mage.Sets/src/mage/cards/f/FesterhideBoar.java @@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; @@ -31,7 +32,7 @@ public final class FesterhideBoar extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Morbid — Festerhide Boar enters the battlefield with two +1/+1 counters on it if a creature died this turn. this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), - MorbidCondition.instance, ""), "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance)); + MorbidCondition.instance, ""), "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID)); } private FesterhideBoar(final FesterhideBoar card) { diff --git a/Mage.Sets/src/mage/cards/g/GalvanicBlast.java b/Mage.Sets/src/mage/cards/g/GalvanicBlast.java index d0962d36bdd..3f715e60704 100644 --- a/Mage.Sets/src/mage/cards/g/GalvanicBlast.java +++ b/Mage.Sets/src/mage/cards/g/GalvanicBlast.java @@ -31,7 +31,6 @@ public final class GalvanicBlast extends CardImpl { MetalcraftCondition.instance, effectText )); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT); this.getSpellAbility().addHint(MetalcraftHint.instance); } diff --git a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java index 98f11973e56..b38ebfa6516 100644 --- a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java +++ b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java @@ -18,7 +18,7 @@ import java.util.UUID; */ public final class GhalmasWarden extends CardImpl { - private static final String rule = "Metalcraft — Ghalma's Warden gets +2/+2 as long as you control three or more artifacts"; + private static final String rule = "{this} gets +2/+2 as long as you control three or more artifacts"; public GhalmasWarden(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); diff --git a/Mage.Sets/src/mage/cards/g/GravetillerWurm.java b/Mage.Sets/src/mage/cards/g/GravetillerWurm.java index 6b2684c788b..3ae7150b9f0 100644 --- a/Mage.Sets/src/mage/cards/g/GravetillerWurm.java +++ b/Mage.Sets/src/mage/cards/g/GravetillerWurm.java @@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; @@ -31,7 +32,7 @@ public final class GravetillerWurm extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Morbid — Gravetiller Wurm enters the battlefield with four +1/+1 counters on it if a creature died this turn. this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)), - MorbidCondition.instance, ""), "with four +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance)); + MorbidCondition.instance, ""), "with four +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID)); } private GravetillerWurm(final GravetillerWurm card) { diff --git a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java index 7ced58150c5..560f85dc0da 100644 --- a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java +++ b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java @@ -31,7 +31,7 @@ public final class GreenwheelLiberator extends CardImpl { // permanent you controlled left the battlefield this turn. Ability ability = new EntersBattlefieldAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, RevoltCondition.instance, - "Revolt — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn", null); + "Revolt — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", null); ability.addWatcher(new RevoltWatcher()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HeartlessPillage.java b/Mage.Sets/src/mage/cards/h/HeartlessPillage.java index 9c366f5a7d6..0bb94d9f380 100644 --- a/Mage.Sets/src/mage/cards/h/HeartlessPillage.java +++ b/Mage.Sets/src/mage/cards/h/HeartlessPillage.java @@ -31,9 +31,8 @@ public final class HeartlessPillage extends CardImpl { this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new CreateTokenEffect(new TreasureToken()), RaidCondition.instance, - "

Raid — If you attacked with a creature this turn, create a colorless Treasure artifact token with \"{T}, Sacrifice this artifact: Add one mana of any color.\"")); + "

Raid — If you attacked this turn, create a colorless Treasure artifact token with \"{T}, Sacrifice this artifact: Add one mana of any color.\"")); this.getSpellAbility().addWatcher(new PlayerAttackedWatcher()); - this.getSpellAbility().setAbilityWord(AbilityWord.RAID); this.getSpellAbility().addHint(RaidHint.instance); } diff --git a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java index 3bca1b1a4ed..9d50a5e0e5c 100644 --- a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java +++ b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java @@ -32,7 +32,7 @@ public final class HiddenStockpile extends CardImpl { // Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token. Ability ability = new ConditionalInterveningIfTriggeredAbility(new BeginningOfYourEndStepTriggeredAbility(new CreateTokenEffect(new ServoToken()), false), RevoltCondition.instance, - "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token"); + "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token."); ability.setAbilityWord(AbilityWord.REVOLT); ability.addWatcher(new RevoltWatcher()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java b/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java index 011b9b4bc06..121d8d766b1 100644 --- a/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java +++ b/Mage.Sets/src/mage/cards/h/HowlOfTheHorde.java @@ -38,10 +38,9 @@ public final class HowlOfTheHorde extends CardImpl { this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new CreateDelayedTriggeredAbilityEffect(new HowlOfTheHordeDelayedTriggeredAbility()), RaidCondition.instance, - "

Raid — If you attacked with a creature this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.") + "

Raid — If you attacked this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.") ); this.getSpellAbility().addWatcher(new PlayerAttackedWatcher()); - this.getSpellAbility().setAbilityWord(AbilityWord.RAID); this.getSpellAbility().addHint(RaidHint.instance); } diff --git a/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java b/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java index b549c4071fa..173ca7df69a 100644 --- a/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java +++ b/Mage.Sets/src/mage/cards/h/HungerOfTheHowlpack.java @@ -29,7 +29,7 @@ public final class HungerOfTheHowlpack extends CardImpl { new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)), new AddCountersTargetEffect(CounterType.P1P1.createInstance()), MorbidCondition.instance, - "Put a +1/+1 counter on target creature. Morbid — Put three +1/+1 counters on that creature instead if a creature died this turn")); + "Put a +1/+1 counter on target creature.
Morbid — Put three +1/+1 counters on that creature instead if a creature died this turn")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addHint(MorbidHint.instance); } diff --git a/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java b/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java index 2d2b06ae033..a89daa819a9 100644 --- a/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java +++ b/Mage.Sets/src/mage/cards/i/IndomitableArchangel.java @@ -21,7 +21,7 @@ import java.util.UUID; */ public final class IndomitableArchangel extends CardImpl { - private static final String rule = "Metalcraft — Artifacts you control have shroud as long as you control three or more artifacts."; + private static final String rule = "Artifacts you control have shroud as long as you control three or more artifacts."; private static final FilterPermanent filter = new FilterPermanent("Artifacts"); diff --git a/Mage.Sets/src/mage/cards/i/InexorableBlob.java b/Mage.Sets/src/mage/cards/i/InexorableBlob.java index 0500f61cefb..1c708a27b90 100644 --- a/Mage.Sets/src/mage/cards/i/InexorableBlob.java +++ b/Mage.Sets/src/mage/cards/i/InexorableBlob.java @@ -29,8 +29,8 @@ public final class InexorableBlob extends CardImpl { // in your graveyard, create a 3/3 green Ooze creature token that’s tapped and attacking. this.addAbility(new ConditionalInterveningIfTriggeredAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new InexorableBlobOozeToken(), 1, true, true), false), DeliriumCondition.instance, - "Delirium — Whenever {this} attacks and there are at least four card types among cards in your graveyard, " - + "create a 3/3 green Ooze creature token tapped and attacking.") + "Delirium — Whenever {this} attacks, if there are four or more card types among cards in your graveyard, " + + "create a 3/3 green Ooze creature token that's tapped and attacking.") .addHint(CardTypesInGraveyardHint.YOU)); } diff --git a/Mage.Sets/src/mage/cards/k/KnowledgePool.java b/Mage.Sets/src/mage/cards/k/KnowledgePool.java index 06d3300b3d7..c4af8384624 100644 --- a/Mage.Sets/src/mage/cards/k/KnowledgePool.java +++ b/Mage.Sets/src/mage/cards/k/KnowledgePool.java @@ -9,6 +9,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -37,7 +38,7 @@ public final class KnowledgePool extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}"); // Imprint - When Knowledge Pool enters the battlefield, each player exiles the top three cards of their library - this.addAbility(new EntersBattlefieldTriggeredAbility(new KnowledgePoolEffect1(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new KnowledgePoolEffect1(), false).setAbilityWord(AbilityWord.IMPRINT)); // Whenever a player casts a spell from their hand, that player exiles it. If the player does, they may cast another nonland card exiled with Knowledge Pool without paying that card's mana cost. this.addAbility(new KnowledgePoolAbility()); diff --git a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java index bdba958ee09..d66cc678d58 100644 --- a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java +++ b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java @@ -37,7 +37,7 @@ public final class LifecraftCavalry extends CardImpl { new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, RevoltCondition.instance, - "Revolt — {this} enters the battlefield with two +1/+1 counter on it if a permanent you controlled left the battlefield this turn", null), + "Revolt — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", null), new RevoltWatcher() ); } diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java index 184bdfc754a..3e05b674b76 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java +++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java @@ -42,7 +42,7 @@ public final class MalakirSoothsayer extends CardImpl { // Cohort — {T}, Tap an untapped Ally you control: You draw a card and you lose a life. SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new DrawCardSourceControllerEffect(1), + new DrawCardSourceControllerEffect(1).setText("you draw a card"), new TapSourceCost()); ability.setAbilityWord(AbilityWord.COHORT); ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false))); diff --git a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java index 829bcd50994..7f1534ab42d 100644 --- a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java +++ b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java @@ -36,7 +36,7 @@ public final class MaliciousAffliction extends CardImpl { Ability ability = new ConditionalInterveningIfTriggeredAbility( new CastSourceTriggeredAbility(new CopySourceSpellEffect(), true), MorbidCondition.instance, "Morbid — When you cast this spell, " + - "if a creature died this turn, you may copy {this} and may choose a new target for the copy" + "if a creature died this turn, you may copy {this} and may choose a new target for the copy." ); ability.setRuleAtTheTop(true); this.addAbility(ability.addHint(MorbidHint.instance)); diff --git a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java index a4f1bef316e..eced211738a 100644 --- a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java +++ b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java @@ -27,7 +27,7 @@ public final class MightBeyondReason extends CardImpl { new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), DeliriumCondition.instance, "Put two +1/+1 counter on target creature.
" - + "Delirium — Put three +1/+1 counter on that creature instead if there are four or more card types among cards in your graveyard" + + "Delirium — Put three +1/+1 counters on that creature instead if there are four or more card types among cards in your graveyard" )); getSpellAbility().addTarget(new TargetCreaturePermanent()); getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); diff --git a/Mage.Sets/src/mage/cards/m/MimicVat.java b/Mage.Sets/src/mage/cards/m/MimicVat.java index 116f55e0050..a951e44e4b6 100644 --- a/Mage.Sets/src/mage/cards/m/MimicVat.java +++ b/Mage.Sets/src/mage/cards/m/MimicVat.java @@ -17,6 +17,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -102,7 +103,7 @@ class MimicVatTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever a nontoken creature dies, you may exile that card. If you do, return each other card exiled with {this} to its owner's graveyard."; + return AbilityWord.IMPRINT.formatWord() + "Whenever a nontoken creature dies, you may exile that card. If you do, return each other card exiled with {this} to its owner's graveyard."; } } diff --git a/Mage.Sets/src/mage/cards/m/MirranMettle.java b/Mage.Sets/src/mage/cards/m/MirranMettle.java index 77beffebf79..b87643552fb 100644 --- a/Mage.Sets/src/mage/cards/m/MirranMettle.java +++ b/Mage.Sets/src/mage/cards/m/MirranMettle.java @@ -19,7 +19,7 @@ import java.util.UUID; */ public final class MirranMettle extends CardImpl { - private static final String effectText = "Metalcraft — That creature gets +4/+4 until end of turn instead if you control three or more artifacts."; + private static final String effectText = "
Metalcraft — That creature gets +4/+4 until end of turn instead if you control three or more artifacts."; public MirranMettle(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}"); @@ -31,7 +31,6 @@ public final class MirranMettle extends CardImpl { // Metalcraft — That creature gets +4/+4 until end of turn instead if you control three or more artifacts. this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new LockedInCondition(MetalcraftCondition.instance), effectText)); - this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT); this.getSpellAbility().addHint(MetalcraftHint.instance); } diff --git a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java index bbec0aa34e5..ac66622c24f 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java +++ b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java @@ -29,7 +29,6 @@ public final class MoltenPsyche extends CardImpl { // Metalcraft — If you control three or more artifacts, Molten Psyche deals damage to each opponent equal to the number of cards that player has drawn this turn. this.getSpellAbility().addEffect(new MoltenPsycheEffect()); this.getSpellAbility().addWatcher(new MoltenPsycheWatcher()); - this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT); this.getSpellAbility().addHint(MetalcraftHint.instance); } diff --git a/Mage.Sets/src/mage/cards/m/MyrWelder.java b/Mage.Sets/src/mage/cards/m/MyrWelder.java index 77ca9e70423..d8b71b15129 100644 --- a/Mage.Sets/src/mage/cards/m/MyrWelder.java +++ b/Mage.Sets/src/mage/cards/m/MyrWelder.java @@ -12,13 +12,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.SubType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterArtifactCard; import mage.game.Game; import mage.game.permanent.Permanent; @@ -39,7 +33,7 @@ public final class MyrWelder extends CardImpl { // Imprint - {tap}: Exile target artifact card from a graveyard SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyrWelderEffect(), new TapSourceCost()); ability.addTarget(new TargetCardInGraveyard(new FilterArtifactCard("artifact card from a graveyard"))); - this.addAbility(ability); + this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT)); // Myr Welder has all activated abilities of all cards exiled with it this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MyrWelderContinuousEffect())); diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java b/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java index fc2ec9a3c0a..3a68864fa39 100644 --- a/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java +++ b/Mage.Sets/src/mage/cards/o/ObNixilisTheFallen.java @@ -32,7 +32,7 @@ public final class ObNixilisTheFallen extends CardImpl { // Landfall - Whenever a land enters the battlefield under your control, you may have target player lose 3 life. // If you do, put three +1/+1 counters on Ob Nixilis, the Fallen. Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3), true); - ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))); + ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)).concatBy("If you do,")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PainfulTruths.java b/Mage.Sets/src/mage/cards/p/PainfulTruths.java index 78ddc7b4bb6..9064c4f8d8a 100644 --- a/Mage.Sets/src/mage/cards/p/PainfulTruths.java +++ b/Mage.Sets/src/mage/cards/p/PainfulTruths.java @@ -26,7 +26,7 @@ public final class PainfulTruths extends CardImpl { effect.setText("You draw X cards"); getSpellAbility().addEffect(effect); effect = new LoseLifeSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()); - effect.setText("and lose X life, where X is the number of colors of mana spent to cast this spell"); + effect.setText("and you lose X life, where X is the number of colors of mana spent to cast this spell"); getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/p/PanopticMirror.java b/Mage.Sets/src/mage/cards/p/PanopticMirror.java index 8faeea8f0df..ee1aabaccfc 100644 --- a/Mage.Sets/src/mage/cards/p/PanopticMirror.java +++ b/Mage.Sets/src/mage/cards/p/PanopticMirror.java @@ -32,7 +32,7 @@ public final class PanopticMirror extends CardImpl { // Imprint - {X}, {tap}: You may exile an instant or sorcery card with converted mana cost X from your hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PanopticMirrorExileEffect(), new VariableManaCost()); ability.addCost(new TapSourceCost()); - this.addAbility(ability); + this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT)); // At the beginning of your upkeep, you may copy a card exiled with Panoptic Mirror. If you do, you may cast the copy without paying its mana cost. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PanopticMirrorCastEffect(), TargetController.YOU, true)); } diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java b/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java index 333c7b2efdf..770ced6731a 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianIngester.java @@ -12,13 +12,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.TokenPredicate; @@ -50,7 +44,7 @@ public final class PhyrexianIngester extends CardImpl { // Imprint - When Phyrexian Ingester enters the battlefield, you may exile target nontoken creature. Ability ability = new EntersBattlefieldTriggeredAbility(new PhyrexianIngesterImprintEffect(), true); ability.addTarget(new TargetPermanent(filter)); - this.addAbility(ability); + this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT)); // Phyrexian Ingester gets +X/+Y, where X is the exiled creature card's power and Y is its toughness. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PhyrexianIngesterBoostEffect())); } diff --git a/Mage.Sets/src/mage/cards/p/ProteanRaider.java b/Mage.Sets/src/mage/cards/p/ProteanRaider.java index 46674dac3b6..b65252b7ee8 100644 --- a/Mage.Sets/src/mage/cards/p/ProteanRaider.java +++ b/Mage.Sets/src/mage/cards/p/ProteanRaider.java @@ -30,7 +30,7 @@ public final class ProteanRaider extends CardImpl { // Raid — If you attacked with a creature this turn, you may have Protean Raider enter the battlefield as a copy of any creature on the battlefield. Ability ability = new EntersBattlefieldAbility(new CopyPermanentEffect(), true, RaidCondition.instance, - "Raid — If you attacked with a creature this turn, you may have {this} enter the battlefield as a copy of any creature on the battlefield.", ""); + "Raid — If you attacked this turn, you may have {this} enter the battlefield as a copy of any creature on the battlefield.", ""); ability.setAbilityWord(AbilityWord.RAID); ability.addHint(RaidHint.instance); this.addAbility(ability, new PlayerAttackedWatcher()); diff --git a/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java b/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java index 44199fd08d9..92502e35c98 100644 --- a/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java +++ b/Mage.Sets/src/mage/cards/r/RazorfieldRhino.java @@ -26,7 +26,7 @@ public final class RazorfieldRhino extends CardImpl { // Metalcraft — Razorfield Rhino gets +2/+2 as long as you control three or more artifacts. ContinuousEffect effect1 = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, "Metalcraft — Razorfield Rhino gets +2/+2 as long as you control three or more artifacts")) + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, "{this} gets +2/+2 as long as you control three or more artifacts")) .setAbilityWord(AbilityWord.METALCRAFT) .addHint(MetalcraftHint.instance)); } diff --git a/Mage.Sets/src/mage/cards/r/RetreatToHagra.java b/Mage.Sets/src/mage/cards/r/RetreatToHagra.java index 809847beaaa..86f40f2d08c 100644 --- a/Mage.Sets/src/mage/cards/r/RetreatToHagra.java +++ b/Mage.Sets/src/mage/cards/r/RetreatToHagra.java @@ -28,7 +28,7 @@ public final class RetreatToHagra extends CardImpl { // Landfall- Whenever a land enters the battlefield under your control, // choose one - Target creature gets +1/+0 and gains deathtouch until end of turn; LandfallAbility ability = new LandfallAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), false); - Effect effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn); + Effect effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn).setText("and gains deathtouch until end of turn"); effect.setOutcome(Outcome.Benefit); ability.addEffect(effect); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/r/RustedRelic.java b/Mage.Sets/src/mage/cards/r/RustedRelic.java index be3eff980fb..514d30a0854 100644 --- a/Mage.Sets/src/mage/cards/r/RustedRelic.java +++ b/Mage.Sets/src/mage/cards/r/RustedRelic.java @@ -26,7 +26,7 @@ public final class RustedRelic extends CardImpl { new ConditionalContinuousEffect( new BecomesCreatureSourceEffect(new RustedRelicToken(), "artifact", Duration.WhileOnBattlefield), MetalcraftCondition.instance, - "Metalcraft — {this} is a 5/5 Golem artifact creature as long as you control three or more artifacts")) + "{this} is a 5/5 Golem artifact creature as long as you control three or more artifacts")) .setAbilityWord(AbilityWord.METALCRAFT) .addHint(MetalcraftHint.instance) ); diff --git a/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java b/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java index afef026fe8a..82f3a11d07f 100644 --- a/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java +++ b/Mage.Sets/src/mage/cards/s/SemblanceAnvil.java @@ -29,7 +29,7 @@ public final class SemblanceAnvil extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // Imprint - When Semblance Anvil enters the battlefield, you may exile a nonland card from your hand. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SemblanceAnvilEffect(), true)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new SemblanceAnvilEffect(), true).setAbilityWord(AbilityWord.IMPRINT)); // Spells you cast that share a card type with the exiled card cost {2} less to cast. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SemblanceAnvilCostReductionEffect())); diff --git a/Mage.Sets/src/mage/cards/s/ShoalSerpent.java b/Mage.Sets/src/mage/cards/s/ShoalSerpent.java index 778aa865ef6..1c7e1d8a099 100644 --- a/Mage.Sets/src/mage/cards/s/ShoalSerpent.java +++ b/Mage.Sets/src/mage/cards/s/ShoalSerpent.java @@ -48,7 +48,7 @@ class ShoalSerpentEffect extends ContinuousEffectImpl { public ShoalSerpentEffect() { super(Duration.EndOfTurn, Outcome.AddAbility); - staticText = "Until end of turn, {this} loses defender"; + staticText = "{this} loses defender until end of turn"; } public ShoalSerpentEffect(final ShoalSerpentEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java b/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java index 427d94439ab..a232f75a5e8 100644 --- a/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java +++ b/Mage.Sets/src/mage/cards/s/SiegehornCeratops.java @@ -27,7 +27,7 @@ public final class SiegehornCeratops extends CardImpl { // Enrage — Whenever Siegehorn Ceratops is dealt damage, put two +1/+1 counters on it. this.addAbility(new DealtDamageToSourceTriggeredAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)) - .setText("put two +1/+1 counter on it"), false, true)); + .setText("put two +1/+1 counters on it"), false, true)); } private SiegehornCeratops(final SiegehornCeratops card) { diff --git a/Mage.Sets/src/mage/cards/s/SilverSeraph.java b/Mage.Sets/src/mage/cards/s/SilverSeraph.java index 20b99c3e778..e17d2334f2a 100644 --- a/Mage.Sets/src/mage/cards/s/SilverSeraph.java +++ b/Mage.Sets/src/mage/cards/s/SilverSeraph.java @@ -34,7 +34,7 @@ public final class SilverSeraph extends CardImpl { // Threshold - Other creatures you control get +2/+2 as long as seven or more cards are in your graveyard. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, true), new CardsInControllerGraveyardCondition(7), - "other creatures you control +2/+2 as long as seven or more cards are in your graveyard")); + "other creatures you control get +2/+2 as long as seven or more cards are in your graveyard")); ability.setAbilityWord(AbilityWord.THRESHOLD); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java b/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java index eb039b4cae0..8627abe95d4 100644 --- a/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java +++ b/Mage.Sets/src/mage/cards/s/SlaughterhouseBouncer.java @@ -34,9 +34,8 @@ public final class SlaughterhouseBouncer extends CardImpl { Ability ability = new ConditionalInterveningIfTriggeredAbility( new DiesSourceTriggeredAbility(new BoostTargetEffect(-3, -3, Duration.EndOfTurn)), HellbentCondition.instance, - "When {this} dies, if you have no cards in hand, target creature gets -3/-3 until end of turn." + AbilityWord.HELLBENT.formatWord() + "When {this} dies, if you have no cards in hand, target creature gets -3/-3 until end of turn." ); - ability.setAbilityWord(AbilityWord.HELLBENT); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SnapsailGlider.java b/Mage.Sets/src/mage/cards/s/SnapsailGlider.java index 0461c306db7..87112631742 100644 --- a/Mage.Sets/src/mage/cards/s/SnapsailGlider.java +++ b/Mage.Sets/src/mage/cards/s/SnapsailGlider.java @@ -19,7 +19,7 @@ import java.util.UUID; */ public final class SnapsailGlider extends CardImpl { - protected static String rule = "Metalcraft — Snapsail Glider has flying as long as you control three or more artifacts"; + protected static String rule = "{this} has flying as long as you control three or more artifacts"; public SnapsailGlider(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java b/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java index c332e5bbd54..565da40ac6a 100644 --- a/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java +++ b/Mage.Sets/src/mage/cards/s/SomberwaldSpider.java @@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; @@ -32,7 +33,7 @@ public final class SomberwaldSpider extends CardImpl { // Morbid — Somberwald Spider enters the battlefield with two +1/+1 counters on it if a creature died this turn. this.addAbility(new EntersBattlefieldAbility( new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), MorbidCondition.instance, ""), - "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance)); + "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID)); } private SomberwaldSpider(final SomberwaldSpider card) { diff --git a/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java b/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java index 7ad2a65f6e6..91974047010 100644 --- a/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java +++ b/Mage.Sets/src/mage/cards/s/SpiralingDuelist.java @@ -19,7 +19,7 @@ import java.util.UUID; */ public final class SpiralingDuelist extends CardImpl { - private static final String effectText = "Metalcraft — Spiraling Duelist has double strike as long as you control three or more artifacts."; + private static final String effectText = "{this} has double strike as long as you control three or more artifacts."; public SpiralingDuelist(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); diff --git a/Mage.Sets/src/mage/cards/s/SpireSerpent.java b/Mage.Sets/src/mage/cards/s/SpireSerpent.java index a10afcbe59d..81c34fc7a1a 100644 --- a/Mage.Sets/src/mage/cards/s/SpireSerpent.java +++ b/Mage.Sets/src/mage/cards/s/SpireSerpent.java @@ -22,7 +22,7 @@ import java.util.UUID; */ public final class SpireSerpent extends CardImpl { - private static final String abilityText1 = "Metalcraft — As long as you control three or more artifacts, {this} gets +2/+2"; + private static final String abilityText1 = "As long as you control three or more artifacts, {this} gets +2/+2"; public SpireSerpent(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); diff --git a/Mage.Sets/src/mage/cards/s/StrataScythe.java b/Mage.Sets/src/mage/cards/s/StrataScythe.java index c9bb0eec607..6905e435e84 100644 --- a/Mage.Sets/src/mage/cards/s/StrataScythe.java +++ b/Mage.Sets/src/mage/cards/s/StrataScythe.java @@ -14,10 +14,7 @@ import mage.abilities.keyword.EquipAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.NamePredicate; @@ -35,7 +32,7 @@ public final class StrataScythe extends CardImpl { public StrataScythe(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); this.subtype.add(SubType.EQUIPMENT); - this.addAbility(new EntersBattlefieldTriggeredAbility(new StrataScytheImprintEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new StrataScytheImprintEffect()).setAbilityWord(AbilityWord.IMPRINT)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(SameNameAsExiledCountValue.getInstance(), SameNameAsExiledCountValue.getInstance()))); this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3))); } diff --git a/Mage.Sets/src/mage/cards/s/SummaryJudgment.java b/Mage.Sets/src/mage/cards/s/SummaryJudgment.java index 615f1d9159e..a6ed77c27e4 100644 --- a/Mage.Sets/src/mage/cards/s/SummaryJudgment.java +++ b/Mage.Sets/src/mage/cards/s/SummaryJudgment.java @@ -52,7 +52,7 @@ class SummaryJudgementEffect extends OneShotEffect { super(Outcome.Benefit); staticText = "{this} deals 3 damage to target tapped creature." + "
Addendum — If you cast this spell during your main phase, " + - "it deals 5 damage to that creature instead."; + "it deals 5 damage."; } private SummaryJudgementEffect(final SummaryJudgementEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java b/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java index fbd8fbb2169..7d487a7128d 100644 --- a/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java +++ b/Mage.Sets/src/mage/cards/s/SunCrownedHunters.java @@ -27,7 +27,7 @@ public final class SunCrownedHunters extends CardImpl { // Enrage — Whenever Sun-Crowned Hunters is dealt damage, it deals 3 damage to target opponent. Ability ability = new DealtDamageToSourceTriggeredAbility( - new DamageTargetEffect(3).setText("it deals 3 damage to target opponent"), false, true + new DamageTargetEffect(3, "it"), false, true ); ability.addTarget(new TargetOpponentOrPlaneswalker()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SunspringExpedition.java b/Mage.Sets/src/mage/cards/s/SunspringExpedition.java index 79a950295e4..5e76cd18826 100644 --- a/Mage.Sets/src/mage/cards/s/SunspringExpedition.java +++ b/Mage.Sets/src/mage/cards/s/SunspringExpedition.java @@ -1,14 +1,9 @@ - - package mage.cards.s; -import java.util.UUID; import mage.abilities.ActivatedAbility; import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.Cost; -import mage.abilities.costs.Costs; -import mage.abilities.costs.CostsImpl; +import mage.abilities.costs.CompositeCost; import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.GainLifeEffect; @@ -16,24 +11,25 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; import mage.counters.CounterType; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class SunspringExpedition extends CardImpl { public SunspringExpedition(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}"); this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true)); - Costs costs = new CostsImpl<>(); - costs.add(new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3))); - costs.add(new SacrificeSourceCost()); - ActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(8), costs); + ActivatedAbility ability = new SimpleActivatedAbility( + new GainLifeEffect(8), new CompositeCost( + new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)), + new SacrificeSourceCost(), "Remove three quest counters from {this} and sacrifice it" + )); this.addAbility(ability); } @@ -45,5 +41,4 @@ public final class SunspringExpedition extends CardImpl { public SunspringExpedition copy() { return new SunspringExpedition(this); } - } diff --git a/Mage.Sets/src/mage/cards/t/TribalFlames.java b/Mage.Sets/src/mage/cards/t/TribalFlames.java index 24eef4f2022..dd8cebe2a19 100644 --- a/Mage.Sets/src/mage/cards/t/TribalFlames.java +++ b/Mage.Sets/src/mage/cards/t/TribalFlames.java @@ -7,6 +7,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.hint.common.DomainHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.target.common.TargetAnyTarget; @@ -24,6 +25,7 @@ public final class TribalFlames extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(new DomainValue())); this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addHint(DomainHint.instance); + this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); } private TribalFlames(final TribalFlames card) { diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java b/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java index 772b7a3585f..a7450f9da67 100644 --- a/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java +++ b/Mage.Sets/src/mage/cards/u/UlvenwaldBear.java @@ -11,6 +11,7 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.hint.common.MorbidHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Outcome; @@ -34,7 +35,7 @@ public final class UlvenwaldBear extends CardImpl { Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2), Outcome.BoostCreature)), MorbidCondition.instance, "When {this} enters the battlefield, if a creature died this turn, put two +1/+1 counters on target creature."); ability.addTarget(new TargetCreaturePermanent()); - this.addAbility(ability.addHint(MorbidHint.instance)); + this.addAbility(ability.addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID)); } private UlvenwaldBear(final UlvenwaldBear card) { diff --git a/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java b/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java index 62ced3ec1d4..34df150c947 100644 --- a/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java +++ b/Mage.Sets/src/mage/cards/u/UnbreakableFormation.java @@ -51,7 +51,7 @@ class UnbreakableFormationEffect extends OneShotEffect { UnbreakableFormationEffect() { super(Outcome.Benefit); staticText = "
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."; + "put a +1/+1 counter on each of those creatures and they gain vigilance until end of turn."; } private UnbreakableFormationEffect(final UnbreakableFormationEffect effect) { diff --git a/Mage.Sets/src/mage/cards/u/UnholyHunger.java b/Mage.Sets/src/mage/cards/u/UnholyHunger.java index 0298c4b3fbd..8e15034517e 100644 --- a/Mage.Sets/src/mage/cards/u/UnholyHunger.java +++ b/Mage.Sets/src/mage/cards/u/UnholyHunger.java @@ -27,7 +27,7 @@ public final class UnholyHunger extends CardImpl { // Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life. Effect effect = new ConditionalOneShotEffect(new GainLifeEffect(2), - SpellMasteryCondition.instance, "Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life"); + SpellMasteryCondition.instance, "
Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life"); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/w/WarNameAspirant.java b/Mage.Sets/src/mage/cards/w/WarNameAspirant.java index de94cf8fe48..76a632da8fa 100644 --- a/Mage.Sets/src/mage/cards/w/WarNameAspirant.java +++ b/Mage.Sets/src/mage/cards/w/WarNameAspirant.java @@ -39,7 +39,7 @@ public final class WarNameAspirant extends CardImpl { // Raid — War-Name Aspirant enters the battlefield with a +1/+1 counter on it if you attacked this turn. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1), false), RaidCondition.instance, - "Raid — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn", + "Raid — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.", "{this} enters the battlefield with a +1/+1 counter") .setAbilityWord(AbilityWord.RAID) .addHint(RaidHint.instance), diff --git a/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java b/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java index 01be0ac8b56..49d27a75e2e 100644 --- a/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java +++ b/Mage.Sets/src/mage/cards/z/ZendikarsRoil.java @@ -1,18 +1,15 @@ - package mage.cards.z; -import java.util.UUID; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; -import mage.abilities.effects.Effect; +import mage.abilities.common.LandfallAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.ZendikarsRoilElementalToken; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class ZendikarsRoil extends CardImpl { @@ -21,8 +18,7 @@ public final class ZendikarsRoil extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}"); // Whenever a land enters the battlefield under your control, create a 2/2 green Elemental creature token. - Effect effect = new CreateTokenEffect(new ZendikarsRoilElementalToken()); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(effect, new FilterLandPermanent("a land"))); + this.addAbility(new LandfallAbility(new CreateTokenEffect(new ZendikarsRoilElementalToken()))); } private ZendikarsRoil(final ZendikarsRoil card) { diff --git a/Mage/src/main/java/mage/abilities/abilityword/ConstellationAbility.java b/Mage/src/main/java/mage/abilities/abilityword/ConstellationAbility.java index c12c6a2f8b1..45acd06a856 100644 --- a/Mage/src/main/java/mage/abilities/abilityword/ConstellationAbility.java +++ b/Mage/src/main/java/mage/abilities/abilityword/ConstellationAbility.java @@ -22,7 +22,6 @@ public class ConstellationAbility extends TriggeredAbilityImpl { public ConstellationAbility(Effect effect) { this(effect, false); - setAbilityWord(AbilityWord.CONSTELLATION); } public ConstellationAbility(Effect effect, boolean optional) { @@ -32,6 +31,7 @@ public class ConstellationAbility extends TriggeredAbilityImpl { public ConstellationAbility(Effect effect, boolean optional, boolean thisOr) { super(Zone.BATTLEFIELD, effect, optional); this.thisOr = thisOr; + setAbilityWord(AbilityWord.CONSTELLATION); } public ConstellationAbility(final ConstellationAbility ability) { diff --git a/Mage/src/main/java/mage/abilities/abilityword/StriveAbility.java b/Mage/src/main/java/mage/abilities/abilityword/StriveAbility.java index 78b056226c9..0f63428318e 100644 --- a/Mage/src/main/java/mage/abilities/abilityword/StriveAbility.java +++ b/Mage/src/main/java/mage/abilities/abilityword/StriveAbility.java @@ -37,7 +37,8 @@ public class StriveAbility extends SimpleStaticAbility { @Override public String getRule() { - return new StringBuilder("this spell costs ").append(striveCost).append(" more to cast for each target beyond the first.").toString(); + return abilityWord.formatWord() + "This spell costs " + + striveCost + " more to cast for each target beyond the first."; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java b/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java index 7b487f3a5db..0b4d247a84c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java @@ -31,7 +31,7 @@ public class IntimidateAbility extends EvasionAbility implements MageSingleton { @Override public String getRule() { - return "Intimidate"; + return "intimidate"; } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/EldraziHorrorToken.java b/Mage/src/main/java/mage/game/permanent/token/EldraziHorrorToken.java index 95f042f15be..4c541c96b36 100644 --- a/Mage/src/main/java/mage/game/permanent/token/EldraziHorrorToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/EldraziHorrorToken.java @@ -21,7 +21,7 @@ public final class EldraziHorrorToken extends TokenImpl { } public EldraziHorrorToken() { - super("Eldrazi Horror", "3/2 colorless Eldrazi Horror creature"); + super("Eldrazi Horror", "3/2 colorless Eldrazi Horror creature token"); cardType.add(CardType.CREATURE); subtype.add(SubType.ELDRAZI); subtype.add(SubType.HORROR); diff --git a/Mage/src/main/java/mage/game/permanent/token/GrovetenderDruidsPlantToken.java b/Mage/src/main/java/mage/game/permanent/token/GrovetenderDruidsPlantToken.java index 424cf239d9e..22094914661 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GrovetenderDruidsPlantToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GrovetenderDruidsPlantToken.java @@ -12,7 +12,7 @@ import mage.MageInt; public final class GrovetenderDruidsPlantToken extends TokenImpl { public GrovetenderDruidsPlantToken() { - super("Plant", "1/1 green Plant creature"); + super("Plant", "1/1 green Plant creature token"); cardType.add(CardType.CREATURE); color.setGreen(true); subtype.add(SubType.PLANT); diff --git a/Mage/src/test/java/mage/cards/decks/importer/samples/testdeck.json b/Mage/src/test/java/mage/cards/decks/importer/samples/testdeck.json index 70e99295b88..34c54f991c9 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/samples/testdeck.json +++ b/Mage/src/test/java/mage/cards/decks/importer/samples/testdeck.json @@ -1008,7 +1008,7 @@ "manaCost": "{1}{U}", "name": "Chart a Course", "number": "48", - "originalText": "Draw two cards. Then discard a card unless you attacked with a creature this turn.", + "originalText": "Draw two cards. Then discard a card unless you attacked this turn.", "originalType": "Sorcery", "printings": [ "JMP",