diff --git a/Mage.Sets/src/mage/cards/a/AltarOfShadows.java b/Mage.Sets/src/mage/cards/a/AltarOfShadows.java index 291c936539a..f8455010b34 100644 --- a/Mage.Sets/src/mage/cards/a/AltarOfShadows.java +++ b/Mage.Sets/src/mage/cards/a/AltarOfShadows.java @@ -38,7 +38,8 @@ public final class AltarOfShadows extends CardImpl { // {7}, {tap}: Destroy target creature. Then put a charge counter on Altar of Shadows. Ability destroyAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new GenericManaCost(7)); destroyAbility.addCost(new TapSourceCost()); - destroyAbility.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(), true)); + destroyAbility.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(), true) + .concatBy("Then")); destroyAbility.addTarget(new TargetCreaturePermanent()); this.addAbility(destroyAbility); } diff --git a/Mage.Sets/src/mage/cards/b/BattleCry.java b/Mage.Sets/src/mage/cards/b/BattleCry.java index 91b8e2a4922..575f7a0c3e6 100644 --- a/Mage.Sets/src/mage/cards/b/BattleCry.java +++ b/Mage.Sets/src/mage/cards/b/BattleCry.java @@ -35,7 +35,7 @@ public final class BattleCry extends CardImpl { this.getSpellAbility().addEffect(new UntapAllEffect(filter)); // Whenever a creature blocks this turn, it gets +0/+1 until end of turn. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BattleCryTriggeredAbility())); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BattleCryTriggeredAbility()).concatBy("
")); } private BattleCry(final BattleCry card) { diff --git a/Mage.Sets/src/mage/cards/b/BattleFrenzy.java b/Mage.Sets/src/mage/cards/b/BattleFrenzy.java index e61d65091b5..3689dff6d07 100644 --- a/Mage.Sets/src/mage/cards/b/BattleFrenzy.java +++ b/Mage.Sets/src/mage/cards/b/BattleFrenzy.java @@ -33,7 +33,7 @@ public final class BattleFrenzy extends CardImpl { // Green creatures you control get +1/+1 until end of turn. this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter1)); // Nongreen creatures you control get +1/+0 until end of turn. - this.getSpellAbility().addEffect(new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter2)); + this.getSpellAbility().addEffect(new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter2).concatBy("
")); } private BattleFrenzy(final BattleFrenzy card) { diff --git a/Mage.Sets/src/mage/cards/b/BlindingFog.java b/Mage.Sets/src/mage/cards/b/BlindingFog.java index 3149e68fc18..58cc7e260dd 100644 --- a/Mage.Sets/src/mage/cards/b/BlindingFog.java +++ b/Mage.Sets/src/mage/cards/b/BlindingFog.java @@ -23,7 +23,7 @@ public final class BlindingFog extends CardImpl { this.getSpellAbility().addEffect(new PreventAllDamageToAllEffect(Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)); // Creatures you control gain hexproof until end of turn. - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false)); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false)); } private BlindingFog(final BlindingFog card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java index 7ad3b0f0188..c896e90e4b0 100644 --- a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java +++ b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java @@ -33,7 +33,8 @@ public final class BloodcrazedHoplite extends CardImpl { this.toughness = new MageInt(1); // Heroic - Whenever you cast a spell that targets Bloodcrazed Hoplite, put a +1/+1 counter on it. - this.addAbility(new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(), false))); + this.addAbility(new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(), false)) + .withRuleTextReplacement(true)); // Whenever a +1/+1 counter is put on Bloodcrazed Hoplite, remove a +1/+1 counter from target creature an opponent controls. Ability ability = new BloodcrazedHopliteTriggeredAbility(); ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); diff --git a/Mage.Sets/src/mage/cards/b/BloodfireColossus.java b/Mage.Sets/src/mage/cards/b/BloodfireColossus.java index 2162a2f451a..86043de4d9d 100644 --- a/Mage.Sets/src/mage/cards/b/BloodfireColossus.java +++ b/Mage.Sets/src/mage/cards/b/BloodfireColossus.java @@ -27,7 +27,7 @@ public final class BloodfireColossus extends CardImpl { this.power = new MageInt(6); this.toughness = new MageInt(6); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageEverythingEffect(6), new ColoredManaCost(ColoredManaSymbol.R)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageEverythingEffect(6, "it"), new ColoredManaCost(ColoredManaSymbol.R)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java b/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java index e9722607785..3ba182ba65d 100644 --- a/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java +++ b/Mage.Sets/src/mage/cards/c/CallerOfTheHunt.java @@ -38,7 +38,7 @@ public final class CallerOfTheHunt extends CardImpl { // As an additional cost to cast Caller of the Hunt, choose a creature type. // Caller of the Hunt's power and toughness are each equal to the number of creatures of the chosen type on the battlefield. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new InfoEffect("as an additional cost to cast this spell, choose a creature type. \r" + this.addAbility(new SimpleStaticAbility(Zone.ALL, new InfoEffect("as an additional cost to cast this spell, choose a creature type.
" + "{this}'s power and toughness are each equal to the number of creatures of the chosen type on the battlefield"))); this.getSpellAbility().setCostAdjuster(CallerOfTheHuntAdjuster.instance); diff --git a/Mage.Sets/src/mage/cards/c/ChickenALaKing.java b/Mage.Sets/src/mage/cards/c/ChickenALaKing.java index b4610d3d97e..42305112e96 100644 --- a/Mage.Sets/src/mage/cards/c/ChickenALaKing.java +++ b/Mage.Sets/src/mage/cards/c/ChickenALaKing.java @@ -97,6 +97,6 @@ class ChickenALaKingTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird"; + return "Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird."; } } diff --git a/Mage.Sets/src/mage/cards/c/CinderShade.java b/Mage.Sets/src/mage/cards/c/CinderShade.java index aa91ee23e59..299b8fb8a35 100644 --- a/Mage.Sets/src/mage/cards/c/CinderShade.java +++ b/Mage.Sets/src/mage/cards/c/CinderShade.java @@ -34,7 +34,8 @@ public final class CinderShade extends CardImpl { this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{B}"))); // {R}, Sacrifice Cinder Shade: Cinder Shade deals damage equal to its power to target creature. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()), new ManaCostsImpl<>("{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + .setText("It deals damage equal to its power to target creature"), new ManaCostsImpl<>("{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/Clairvoyance.java b/Mage.Sets/src/mage/cards/c/Clairvoyance.java index bd1ed3deaa3..ccf6d607fc4 100644 --- a/Mage.Sets/src/mage/cards/c/Clairvoyance.java +++ b/Mage.Sets/src/mage/cards/c/Clairvoyance.java @@ -27,7 +27,8 @@ public final class Clairvoyance extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false) + .concatBy("
")); } private Clairvoyance(final Clairvoyance card) { diff --git a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java index 2bad5b8958d..cd8afd850c6 100644 --- a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java +++ b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java @@ -19,7 +19,7 @@ import mage.filter.common.FilterLandPermanent; */ public final class CrusadingKnight extends CardImpl { - private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponent controls"); + private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponents control"); static { swampFilter.add(SubType.SWAMP.getPredicate()); swampFilter.add(TargetController.OPPONENT.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java index 1341174f42a..f039a87452f 100644 --- a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java +++ b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java @@ -43,7 +43,8 @@ public final class DazzlingBeauty extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private DazzlingBeauty(final DazzlingBeauty card) { diff --git a/Mage.Sets/src/mage/cards/f/Flare.java b/Mage.Sets/src/mage/cards/f/Flare.java index d330adb883d..ff2f4d09df2 100644 --- a/Mage.Sets/src/mage/cards/f/Flare.java +++ b/Mage.Sets/src/mage/cards/f/Flare.java @@ -25,7 +25,8 @@ public final class Flare extends CardImpl { this.getSpellAbility().addTarget(new TargetAnyTarget()); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private Flare(final Flare card) { diff --git a/Mage.Sets/src/mage/cards/f/ForceVoid.java b/Mage.Sets/src/mage/cards/f/ForceVoid.java index acb65ee1102..50c5c46d744 100644 --- a/Mage.Sets/src/mage/cards/f/ForceVoid.java +++ b/Mage.Sets/src/mage/cards/f/ForceVoid.java @@ -28,7 +28,8 @@ public final class ForceVoid extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false) + .concatBy("
")); } private ForceVoid(final ForceVoid card) { diff --git a/Mage.Sets/src/mage/cards/f/Formation.java b/Mage.Sets/src/mage/cards/f/Formation.java index a9774d77c87..a5589a97348 100644 --- a/Mage.Sets/src/mage/cards/f/Formation.java +++ b/Mage.Sets/src/mage/cards/f/Formation.java @@ -28,7 +28,8 @@ public final class Formation extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false) + .concatBy("
")); } private Formation(final Formation card) { diff --git a/Mage.Sets/src/mage/cards/f/Foxfire.java b/Mage.Sets/src/mage/cards/f/Foxfire.java index e44f55af2e7..616b9dc7c75 100644 --- a/Mage.Sets/src/mage/cards/f/Foxfire.java +++ b/Mage.Sets/src/mage/cards/f/Foxfire.java @@ -26,11 +26,12 @@ public final class Foxfire extends CardImpl { // Untap target attacking creature. Prevent all combat damage that would be dealt to and dealt by that creature this turn. this.getSpellAbility().addTarget(new TargetAttackingCreature()); this.getSpellAbility().addEffect(new UntapTargetEffect()); - this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true).setText("Prevent all combat damage that would be dealt to ")); + this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true).setText("Prevent all combat damage that would be dealt to")); this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, true).setText("and dealt by that creature this turn.")); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)),false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)),false).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/g/GethsVerdict.java b/Mage.Sets/src/mage/cards/g/GethsVerdict.java index 46fcf8f5d1b..1add7d0fddc 100644 --- a/Mage.Sets/src/mage/cards/g/GethsVerdict.java +++ b/Mage.Sets/src/mage/cards/g/GethsVerdict.java @@ -20,7 +20,7 @@ public final class GethsVerdict extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{B}"); this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, "Target player")); - this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1)); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java b/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java index b53492c304a..e620bb5439d 100644 --- a/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java +++ b/Mage.Sets/src/mage/cards/g/GlimmerOfGenius.java @@ -18,7 +18,7 @@ public final class GlimmerOfGenius extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}"); // Scry 2, then draw two card. You get {E}{E}. - this.getSpellAbility().addEffect(new ScryEffect(2)); + this.getSpellAbility().addEffect(new ScryEffect(2, false)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).concatBy(", then")); this.getSpellAbility().addEffect(new GetEnergyCountersControllerEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/g/GuiltyConscience.java b/Mage.Sets/src/mage/cards/g/GuiltyConscience.java index b6f082df83a..be4f8fcccd5 100644 --- a/Mage.Sets/src/mage/cards/g/GuiltyConscience.java +++ b/Mage.Sets/src/mage/cards/g/GuiltyConscience.java @@ -35,7 +35,7 @@ public final class GuiltyConscience extends CardImpl { this.addAbility(ability); // Whenever enchanted creature deals damage, Guilty Conscience deals that much damage to that creature. - this.addAbility(new DealsDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, new DamageAttachedEffect(SavedDamageValue.MUCH).setText("that much damage to that creature"), false)); + this.addAbility(new DealsDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, new DamageAttachedEffect(SavedDamageValue.MUCH).setText("{this} deals that much damage to that creature"), false)); } private GuiltyConscience(final GuiltyConscience card) { diff --git a/Mage.Sets/src/mage/cards/h/Headstone.java b/Mage.Sets/src/mage/cards/h/Headstone.java index 638eb0b8d5e..4faa3a0932e 100644 --- a/Mage.Sets/src/mage/cards/h/Headstone.java +++ b/Mage.Sets/src/mage/cards/h/Headstone.java @@ -26,7 +26,8 @@ public final class Headstone extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false) + .concatBy("
")); } private Headstone(final Headstone card) { diff --git a/Mage.Sets/src/mage/cards/h/Heliophial.java b/Mage.Sets/src/mage/cards/h/Heliophial.java index 94dabd9ac9c..70e5b96803f 100644 --- a/Mage.Sets/src/mage/cards/h/Heliophial.java +++ b/Mage.Sets/src/mage/cards/h/Heliophial.java @@ -30,7 +30,7 @@ public final class Heliophial extends CardImpl { this.addAbility(new SunburstAbility(this)); // {2}, Sacrifice Heliophial: Heliophial deals damage equal to the number of charge counters on it to any target. Effect effect = new DamageTargetEffect(new CountersSourceCount(CounterType.CHARGE)); - effect.setText("{this} deals damage equal to the number of charge counters on it to any target"); + effect.setText("it deals damage equal to the number of charge counters on it to any target"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/i/ImperialEdict.java b/Mage.Sets/src/mage/cards/i/ImperialEdict.java index daeb1fb03e7..45fa9c6570d 100644 --- a/Mage.Sets/src/mage/cards/i/ImperialEdict.java +++ b/Mage.Sets/src/mage/cards/i/ImperialEdict.java @@ -45,7 +45,7 @@ class ImperialEdictEffect extends OneShotEffect { ImperialEdictEffect() { super(Outcome.Benefit); - this.staticText = "Target opponent chooses a creature they control. Destroy it."; + this.staticText = "Target opponent chooses a creature they control. Destroy that creature."; } private ImperialEdictEffect(final ImperialEdictEffect effect) { diff --git a/Mage.Sets/src/mage/cards/i/InvaderParasite.java b/Mage.Sets/src/mage/cards/i/InvaderParasite.java index 1b91d1a600d..435bbc1922e 100644 --- a/Mage.Sets/src/mage/cards/i/InvaderParasite.java +++ b/Mage.Sets/src/mage/cards/i/InvaderParasite.java @@ -12,13 +12,9 @@ import mage.abilities.effects.common.DamageTargetEffect; 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.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.common.TargetLandPermanent; import mage.target.targetpointer.FixedTarget; @@ -42,7 +38,7 @@ public final class InvaderParasite extends CardImpl { this.addAbility(ability); // Whenever a land with the same name as the exiled card enters the battlefield under an opponent's control, Invader Parasite deals 2 damage to that player. - this.addAbility(new InvaderParasiteTriggeredAbility()); + this.addAbility(new InvaderParasiteTriggeredAbility().setAbilityWord(AbilityWord.IMPRINT)); } private InvaderParasite(final InvaderParasite card) { diff --git a/Mage.Sets/src/mage/cards/j/Jinx.java b/Mage.Sets/src/mage/cards/j/Jinx.java index 8a12e61d0d4..5f93df9f7ea 100644 --- a/Mage.Sets/src/mage/cards/j/Jinx.java +++ b/Mage.Sets/src/mage/cards/j/Jinx.java @@ -27,7 +27,8 @@ public final class Jinx extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false) + .concatBy("
")); } private Jinx(final Jinx card) { diff --git a/Mage.Sets/src/mage/cards/j/JovensTools.java b/Mage.Sets/src/mage/cards/j/JovensTools.java index 1a65fdd6289..4d505871cb4 100644 --- a/Mage.Sets/src/mage/cards/j/JovensTools.java +++ b/Mage.Sets/src/mage/cards/j/JovensTools.java @@ -1,4 +1,3 @@ - package mage.cards.j; import java.util.UUID; @@ -23,7 +22,7 @@ import mage.target.common.TargetCreaturePermanent; */ public final class JovensTools extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by walls"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls"); static { filter.add(Predicates.not(SubType.WALL.getPredicate())); } diff --git a/Mage.Sets/src/mage/cards/l/LazotepPlating.java b/Mage.Sets/src/mage/cards/l/LazotepPlating.java index 59c39f5a73c..d192d8f2eeb 100644 --- a/Mage.Sets/src/mage/cards/l/LazotepPlating.java +++ b/Mage.Sets/src/mage/cards/l/LazotepPlating.java @@ -31,9 +31,9 @@ public final class LazotepPlating extends CardImpl { Effect effect2 = new GainAbilityControlledEffect( HexproofAbility.getInstance(), Duration.EndOfTurn ); - effect.setText("You and permanents you control gain hexproof until end of turn."); - effect2.setText(""); - this.getSpellAbility().addEffect(effect); + effect.setText("You"); + effect2.setText("and permanents you control gain hexproof until end of turn"); + this.getSpellAbility().addEffect(effect.concatBy("
")); this.getSpellAbility().addEffect(effect2); } diff --git a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java index 5c392aa2a14..1f36f49624d 100644 --- a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java +++ b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java @@ -19,7 +19,7 @@ import mage.filter.common.FilterLandPermanent; */ public final class MaraudingKnight extends CardImpl { - private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponent controls"); + private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponents control"); static { plainsFilter.add(SubType.PLAINS.getPredicate()); plainsFilter.add(TargetController.OPPONENT.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/m/MindRavel.java b/Mage.Sets/src/mage/cards/m/MindRavel.java index cbf3553e82f..ad831bcead6 100644 --- a/Mage.Sets/src/mage/cards/m/MindRavel.java +++ b/Mage.Sets/src/mage/cards/m/MindRavel.java @@ -25,7 +25,8 @@ public final class MindRavel extends CardImpl { this.getSpellAbility().addTarget(new TargetPlayer()); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private MindRavel(final MindRavel card) { diff --git a/Mage.Sets/src/mage/cards/m/MortisDogs.java b/Mage.Sets/src/mage/cards/m/MortisDogs.java index 8452603ca2e..187e747d7db 100644 --- a/Mage.Sets/src/mage/cards/m/MortisDogs.java +++ b/Mage.Sets/src/mage/cards/m/MortisDogs.java @@ -33,7 +33,8 @@ public final class MortisDogs extends CardImpl { // Whenever Mortis Dogs attacks, it gets +2/+0 until end of turn. this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn), false)); // When Mortis Dogs dies, target player loses life equal to its power. - Ability ability = new DiesSourceTriggeredAbility(new LoseLifeTargetEffect(new SourcePermanentPowerCount(false))); + Ability ability = new DiesSourceTriggeredAbility(new LoseLifeTargetEffect(new SourcePermanentPowerCount(false)) + .setText("target player loses life equal to its power")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OverloadedMageRing.java b/Mage.Sets/src/mage/cards/o/OverloadedMageRing.java index 5dd55a9e182..4a7cb3d7cb3 100644 --- a/Mage.Sets/src/mage/cards/o/OverloadedMageRing.java +++ b/Mage.Sets/src/mage/cards/o/OverloadedMageRing.java @@ -32,9 +32,9 @@ public final class OverloadedMageRing extends CardImpl { this.color.setBlue(true); this.nightCard = true; - // {1}, {T}, Sacrifice Overloaded Mage-Ring: Copy target spell you control. + // {1}, {T}, Sacrifice Overloaded Mage-Ring: Copy target spell you control. You may choose new targets for the copy. Ability ability = new SimpleActivatedAbility( - new CopyTargetSpellEffect(false, false, false), new GenericManaCost(1) + new CopyTargetSpellEffect(false, false, true), new GenericManaCost(1) ); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/r/RayOfErasure.java b/Mage.Sets/src/mage/cards/r/RayOfErasure.java index b99e156bb25..fe835527bc9 100644 --- a/Mage.Sets/src/mage/cards/r/RayOfErasure.java +++ b/Mage.Sets/src/mage/cards/r/RayOfErasure.java @@ -27,7 +27,8 @@ public final class RayOfErasure extends CardImpl { // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false)); + new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false) + .concatBy("
")); } private RayOfErasure(final RayOfErasure card) { diff --git a/Mage.Sets/src/mage/cards/r/ReefPirates.java b/Mage.Sets/src/mage/cards/r/ReefPirates.java index 97409ecaf97..3262849ac04 100644 --- a/Mage.Sets/src/mage/cards/r/ReefPirates.java +++ b/Mage.Sets/src/mage/cards/r/ReefPirates.java @@ -1,16 +1,15 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DealsDamageToAPlayerTriggeredAbility; -import mage.abilities.effects.Effect; +import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.effects.common.MillCardsTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import java.util.UUID; + /** * * @author LoneFox @@ -25,9 +24,8 @@ public final class ReefPirates extends CardImpl { this.toughness = new MageInt(2); // Whenever Reef Pirates deals damage to an opponent, that player puts the top card of their library into their graveyard. - Effect effect = new MillCardsTargetEffect(1); - effect.setText("that player mills a card"); - this.addAbility(new DealsDamageToAPlayerTriggeredAbility(effect, false, true)); + this.addAbility(new DealsDamageToOpponentTriggeredAbility(new MillCardsTargetEffect(1), + false, false, true)); } private ReefPirates(final ReefPirates card) { diff --git a/Mage.Sets/src/mage/cards/s/Sanctimony.java b/Mage.Sets/src/mage/cards/s/Sanctimony.java index 04082e1759e..98b85f9b9dc 100644 --- a/Mage.Sets/src/mage/cards/s/Sanctimony.java +++ b/Mage.Sets/src/mage/cards/s/Sanctimony.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -30,7 +29,7 @@ public final class Sanctimony extends CardImpl { // Whenever an opponent taps a Mountain for mana, you may gain 1 life. - this.addAbility(new TapForManaAllTriggeredAbility(new GainLifeEffect(1), filter, SetTargetPointer.NONE)); + this.addAbility(new TapForManaAllTriggeredAbility(new GainLifeEffect(1), filter, SetTargetPointer.NONE, true)); } private Sanctimony(final Sanctimony card) { diff --git a/Mage.Sets/src/mage/cards/s/SaprolingInfestation.java b/Mage.Sets/src/mage/cards/s/SaprolingInfestation.java index 57a9c30018e..ff73a85a654 100644 --- a/Mage.Sets/src/mage/cards/s/SaprolingInfestation.java +++ b/Mage.Sets/src/mage/cards/s/SaprolingInfestation.java @@ -60,7 +60,7 @@ public final class SaprolingInfestation extends CardImpl { @Override public String getRule() { - return "Whenever a player kicks a spell, you creat a 1/1 green Saproling creature token."; + return "Whenever a player kicks a spell, you create a 1/1 green Saproling creature token."; } } } diff --git a/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java b/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java index ad21ba03c37..36b50d4d36b 100644 --- a/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java +++ b/Mage.Sets/src/mage/cards/s/SeasonsBeatings.java @@ -28,6 +28,7 @@ public final class SeasonsBeatings extends CardImpl { // Family gathering - Each creature target player controls deals damage equal to its power to another random creature that player controls. this.getSpellAbility().addEffect(new SeasonsBeatingsEffect()); + this.getSpellAbility().withFlavorWord("Family gathering"); this.getSpellAbility().addTarget(new TargetPlayer()); } @@ -46,7 +47,7 @@ class SeasonsBeatingsEffect extends OneShotEffect { SeasonsBeatingsEffect() { super(Outcome.Damage); - staticText = "Family gathering Each creature target player controls deals damage equal to its power to another random creature that player controls."; + staticText = "Each creature target player controls deals damage equal to its power to another random creature that player controls"; } private SeasonsBeatingsEffect(final SeasonsBeatingsEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SnareTheSkies.java b/Mage.Sets/src/mage/cards/s/SnareTheSkies.java index 3b9f602254d..2cd2803e961 100644 --- a/Mage.Sets/src/mage/cards/s/SnareTheSkies.java +++ b/Mage.Sets/src/mage/cards/s/SnareTheSkies.java @@ -22,8 +22,10 @@ public final class SnareTheSkies extends CardImpl { // Target creature gets +1/+1 and gains reach until end of turn. - this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn) + .setText("target creature gets +1/+1")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn) + .setText("and gains reach until end of turn")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/s/SoulRend.java b/Mage.Sets/src/mage/cards/s/SoulRend.java index bc4b3c7958d..bbb16613dcc 100644 --- a/Mage.Sets/src/mage/cards/s/SoulRend.java +++ b/Mage.Sets/src/mage/cards/s/SoulRend.java @@ -29,7 +29,8 @@ public final class SoulRend extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private SoulRend(final SoulRend card) { diff --git a/Mage.Sets/src/mage/cards/s/SurgeNode.java b/Mage.Sets/src/mage/cards/s/SurgeNode.java index 30c0b097434..f8e87474f1a 100644 --- a/Mage.Sets/src/mage/cards/s/SurgeNode.java +++ b/Mage.Sets/src/mage/cards/s/SurgeNode.java @@ -26,7 +26,7 @@ public final class SurgeNode extends CardImpl { public SurgeNode(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); - this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(6)), "{this} gets six charge counters")); + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(6)), "with six charge counters on it")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.CHARGE.createInstance()), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); ability.addCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance())); diff --git a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java index c4f27760e73..229997e6be1 100644 --- a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java +++ b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java @@ -1,4 +1,3 @@ - package mage.cards.t; import java.util.UUID; @@ -25,7 +24,7 @@ public final class TelimTorsEdict extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("permanent you own or control"); static { - filter.add(new TelimTorsEdictPredicate()); + filter.add(TelimTorsEdictPredicate.instance); } public TelimTorsEdict(UUID ownerId, CardSetInfo setInfo) { @@ -36,7 +35,8 @@ public final class TelimTorsEdict extends CardImpl { this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private TelimTorsEdict(final TelimTorsEdict card) { @@ -49,18 +49,13 @@ public final class TelimTorsEdict extends CardImpl { } } -class TelimTorsEdictPredicate implements ObjectSourcePlayerPredicate { - - public TelimTorsEdictPredicate() { - } +enum TelimTorsEdictPredicate implements ObjectSourcePlayerPredicate { + instance; @Override public boolean apply(ObjectSourcePlayer input, Game game) { Permanent permanent = input.getObject(); UUID playerId = input.getPlayerId(); - if (permanent.isControlledBy(playerId) || permanent.isOwnedBy(playerId)) { - return true; - } - return false; + return permanent.isControlledBy(playerId) || permanent.isOwnedBy(playerId); } } diff --git a/Mage.Sets/src/mage/cards/u/UncannySpeed.java b/Mage.Sets/src/mage/cards/u/UncannySpeed.java index 6b7b4c93882..699867ec06a 100644 --- a/Mage.Sets/src/mage/cards/u/UncannySpeed.java +++ b/Mage.Sets/src/mage/cards/u/UncannySpeed.java @@ -22,8 +22,10 @@ public final class UncannySpeed extends CardImpl { // Target creature gets +3/+0 and gains haste until end of turn. - this.getSpellAbility().addEffect(new BoostTargetEffect(3, 0, Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new BoostTargetEffect(3, 0, Duration.EndOfTurn) + .setText("target creature gets +3/+0")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn) + .setText("and gains haste until end of turn")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/u/Updraft.java b/Mage.Sets/src/mage/cards/u/Updraft.java index 4893de4fa8e..71c5d2cf3ce 100644 --- a/Mage.Sets/src/mage/cards/u/Updraft.java +++ b/Mage.Sets/src/mage/cards/u/Updraft.java @@ -27,7 +27,8 @@ public final class Updraft extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Draw a card at the beginning of the next turn's upkeep. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( + new DrawCardSourceControllerEffect(1)), false).concatBy("
")); } private Updraft(final Updraft card) { diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java index 178b8f94ded..4e7fe8d84e7 100644 --- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java @@ -226,7 +226,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge } } if (replaceRuleText && triggerPhrase != null) { - superRule = superRule.replaceFirst("^((?:you may )?sacrifice |put an? [^ ]+ counter on |return |transform |untap )?\\{this\\}", "$1it"); + superRule = superRule.replaceFirst("^((?:you may )?sacrifice |(put|remove) an? [^ ]+ counter (on|from) |return |transform |untap |regenerate )?\\{this\\}", "$1it"); } sb.append(superRule); if (triggersOnceEachTurn) { diff --git a/Mage/src/main/java/mage/abilities/common/TapForManaAllTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/TapForManaAllTriggeredAbility.java index 70c7f3e283d..35020205b0d 100644 --- a/Mage/src/main/java/mage/abilities/common/TapForManaAllTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/TapForManaAllTriggeredAbility.java @@ -24,7 +24,11 @@ public class TapForManaAllTriggeredAbility extends TriggeredAbilityImpl { private final SetTargetPointer setTargetPointer; public TapForManaAllTriggeredAbility(Effect effect, FilterPermanent filter, SetTargetPointer setTargetPointer) { - super(Zone.BATTLEFIELD, effect); + this(effect, filter, setTargetPointer, false); + } + + public TapForManaAllTriggeredAbility(Effect effect, FilterPermanent filter, SetTargetPointer setTargetPointer, boolean optional) { + super(Zone.BATTLEFIELD, effect, optional); this.filter = filter; this.setTargetPointer = setTargetPointer; setTriggerPhrase("Whenever " + filter.getMessage() + " for mana, "); @@ -69,4 +73,4 @@ public class TapForManaAllTriggeredAbility extends TriggeredAbilityImpl { public TapForManaAllTriggeredAbility copy() { return new TapForManaAllTriggeredAbility(this); } -} \ No newline at end of file +}