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
+}