diff --git a/Mage.Sets/src/mage/cards/a/Aggression.java b/Mage.Sets/src/mage/cards/a/Aggression.java
index ff49c5be3b5..ba2014b4b56 100644
--- a/Mage.Sets/src/mage/cards/a/Aggression.java
+++ b/Mage.Sets/src/mage/cards/a/Aggression.java
@@ -31,7 +31,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*/
public final class Aggression extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature");
static {
filter.add(Predicates.not(SubType.WALL.getPredicate()));
diff --git a/Mage.Sets/src/mage/cards/a/ArchwingDragon.java b/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
index 06b05f4bce8..f012837afb2 100644
--- a/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
+++ b/Mage.Sets/src/mage/cards/a/ArchwingDragon.java
@@ -30,7 +30,7 @@ public final class ArchwingDragon extends CardImpl {
this.addAbility(HasteAbility.getInstance());
// At the beginning of the end step, return Archwing Dragon to its owner's hand.
- this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.ANY, false));
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.NEXT, false));
}
diff --git a/Mage.Sets/src/mage/cards/b/BaneclawMarauder.java b/Mage.Sets/src/mage/cards/b/BaneclawMarauder.java
index e158a3c738f..668dd16535e 100644
--- a/Mage.Sets/src/mage/cards/b/BaneclawMarauder.java
+++ b/Mage.Sets/src/mage/cards/b/BaneclawMarauder.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class BaneclawMarauder extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature blocking {this}");
static {
filter.add(BlockingOrBlockedBySourcePredicate.BLOCKING);
diff --git a/Mage.Sets/src/mage/cards/b/Bargain.java b/Mage.Sets/src/mage/cards/b/Bargain.java
index a93ab26dd40..fa6bfb7a838 100644
--- a/Mage.Sets/src/mage/cards/b/Bargain.java
+++ b/Mage.Sets/src/mage/cards/b/Bargain.java
@@ -23,7 +23,7 @@ public final class Bargain extends CardImpl {
this.getSpellAbility().addTarget(new TargetOpponent());
// You gain 7 life.
- this.getSpellAbility().addEffect(new GainLifeEffect(7));
+ this.getSpellAbility().addEffect(new GainLifeEffect(7).concatBy("
"));
}
private Bargain(final Bargain card) {
diff --git a/Mage.Sets/src/mage/cards/b/BasaltGolem.java b/Mage.Sets/src/mage/cards/b/BasaltGolem.java
index 92b3fbd754b..ece46148a57 100644
--- a/Mage.Sets/src/mage/cards/b/BasaltGolem.java
+++ b/Mage.Sets/src/mage/cards/b/BasaltGolem.java
@@ -41,7 +41,7 @@ public final class BasaltGolem extends CardImpl {
// Whenever Basalt Golem becomes blocked by a creature, that creature's controller sacrifices it at end of combat. If the player does, they put a 0/2 colorless Wall artifact creature token with defender onto the battlefield.
Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new BasaltGolemEffect()), true);
- effect.setText("that creature's controller sacrifices it at end of combat. If the player does, they put a 0/2 colorless Wall artifact creature token with defender onto the battlefield.");
+ effect.setText("that creature's controller sacrifices it at end of combat. If the player does, they create a 0/2 colorless Wall artifact creature token with defender");
this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(effect, false));
}
@@ -58,7 +58,7 @@ public final class BasaltGolem extends CardImpl {
class BasaltGolemEffect extends OneShotEffect {
BasaltGolemEffect() {
super(Outcome.DestroyPermanent);
- staticText = "that creature's controller sacrifices it. If the player does, they create a 0/2 colorless Wall artifact creature token with defender.";
+ staticText = "that creature's controller sacrifices it. If the player does, they create a 0/2 colorless Wall artifact creature token with defender";
}
private BasaltGolemEffect(final BasaltGolemEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java b/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
index 2681be3303c..647697c6deb 100644
--- a/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
+++ b/Mage.Sets/src/mage/cards/b/BlistercoilWeird.java
@@ -29,7 +29,7 @@ public final class BlistercoilWeird extends CardImpl {
// Whenever you cast an instant or sorcery spell, Blistercoil Weird gets +1/+1 until end of turn. Untap it.
Ability ability = new SpellCastControllerTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false);
- ability.addEffect(new UntapSourceEffect());
+ ability.addEffect(new UntapSourceEffect().setText("Untap it"));
this.addAbility(ability);
}
@@ -43,4 +43,3 @@ public final class BlistercoilWeird extends CardImpl {
return new BlistercoilWeird(this);
}
}
-
diff --git a/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java b/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
index 8631afaede9..748d0b75137 100644
--- a/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
+++ b/Mage.Sets/src/mage/cards/b/BloodstokeHowler.java
@@ -20,11 +20,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class BloodstokeHowler extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creatures you control");
-
- static {
- filter.add(SubType.BEAST.getPredicate());
- }
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.BEAST, "Beast creatures");
public BloodstokeHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BurningProphet.java b/Mage.Sets/src/mage/cards/b/BurningProphet.java
index 6d7d53e2263..067e6170648 100644
--- a/Mage.Sets/src/mage/cards/b/BurningProphet.java
+++ b/Mage.Sets/src/mage/cards/b/BurningProphet.java
@@ -28,12 +28,10 @@ public final class BurningProphet extends CardImpl {
// Whenever you cast a noncreature spell, Burning Prophet gets +1/+0 until end of turn, then scry 1.
Ability ability = new SpellCastControllerTriggeredAbility(
- new BoostSourceEffect(
- 1, 0, Duration.EndOfTurn
- ).setText("{this} gets +1/+0 until end of turn, then"),
+ new BoostSourceEffect(1, 0, Duration.EndOfTurn),
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
);
- ability.addEffect(new ScryEffect(1, false));
+ ability.addEffect(new ScryEffect(1, false).concatBy(", then"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/c/CeremonialGuard.java b/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
index ae4132f3d0f..2f8478792c5 100644
--- a/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CeremonialGuard.java
@@ -29,7 +29,8 @@ public final class CeremonialGuard extends CardImpl {
// When Ceremonial Guard attacks or blocks, destroy it at end of combat.
this.addAbility(new AttacksOrBlocksTriggeredAbility(
new CreateDelayedTriggeredAbilityEffect(
- new AtTheEndOfCombatDelayedTriggeredAbility(new DestroySourceEffect())),
+ new AtTheEndOfCombatDelayedTriggeredAbility(new DestroySourceEffect().setText("destroy it at end of combat"))
+ .setTriggerPhrase("")),
false));
}
diff --git a/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java b/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
index 34145dcfb39..cd76c9ce32a 100644
--- a/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
+++ b/Mage.Sets/src/mage/cards/c/ChainOfPlasma.java
@@ -43,7 +43,7 @@ class ChainOfPlasmaEffect extends OneShotEffect {
ChainOfPlasmaEffect() {
super(Outcome.Damage);
- this.staticText = "{this} deals 3 damage to any target. Then that player or that creature's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy.";
+ this.staticText = "{this} deals 3 damage to any target. Then that player or that permanent's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy.";
}
ChainOfPlasmaEffect(final ChainOfPlasmaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/ChariotOfTheSun.java b/Mage.Sets/src/mage/cards/c/ChariotOfTheSun.java
index 07f256a81ae..6f5d699dc7f 100644
--- a/Mage.Sets/src/mage/cards/c/ChariotOfTheSun.java
+++ b/Mage.Sets/src/mage/cards/c/ChariotOfTheSun.java
@@ -57,7 +57,7 @@ class ChariotOfTheSunEffect extends ContinuousEffectImpl {
public ChariotOfTheSunEffect() {
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.SetPT_7b, Outcome.UnboostCreature);
- staticText = "and its toughness becomes 1";
+ staticText = "and has base toughness 1";
}
public ChariotOfTheSunEffect(final ChariotOfTheSunEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
index 3107cedbe01..e40e4c76208 100644
--- a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
+++ b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java
@@ -39,7 +39,7 @@ public final class CloakOfInvisibility extends CardImpl {
this.addAbility(ability);
// Enchanted creature has phasing and can't be blocked except by Walls.
- ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(PhasingAbility.getInstance(), AttachmentType.AURA).setText("Enchanted creature has phasing "));
+ ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(PhasingAbility.getInstance(), AttachmentType.AURA).setText("Enchanted creature has phasing"));
ability.addEffect(new CantBeBlockedByCreaturesAttachedEffect(Duration.WhileOnBattlefield, filter, AttachmentType.AURA)
.setText("and can't be blocked except by Walls. " +
"(It phases in or out before its controller untaps during each of their untap steps. " +
diff --git a/Mage.Sets/src/mage/cards/c/CoastalPiracy.java b/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
index eb0c2aaf5d0..ca402ee2357 100644
--- a/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
+++ b/Mage.Sets/src/mage/cards/c/CoastalPiracy.java
@@ -23,7 +23,7 @@ public final class CoastalPiracy extends CardImpl {
// Whenever a creature you control deals combat damage to an opponent, you may draw a card.
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
- StaticFilters.FILTER_CONTROLLED_CREATURE, true, SetTargetPointer.PLAYER,
+ StaticFilters.FILTER_CONTROLLED_A_CREATURE, true, SetTargetPointer.PLAYER,
true, true, TargetController.OPPONENT
));
}
diff --git a/Mage.Sets/src/mage/cards/c/Contempt.java b/Mage.Sets/src/mage/cards/c/Contempt.java
index 68047604b89..f88da26b440 100644
--- a/Mage.Sets/src/mage/cards/c/Contempt.java
+++ b/Mage.Sets/src/mage/cards/c/Contempt.java
@@ -42,7 +42,8 @@ public final class Contempt extends CardImpl {
this.addAbility(ability);
// Whenever enchanted creature attacks, return it and Contempt to their owners' hands at end of combat.
- this.addAbility(new AttacksAttachedTriggeredAbility(new ContemptEffect(), AttachmentType.AURA, false));
+ this.addAbility(new AttacksAttachedTriggeredAbility(new ContemptEffect(), AttachmentType.AURA, false)
+ .setTriggerPhrase("When enchanted creature attacks, "));
}
diff --git a/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java b/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
index 7daec3df965..a409a7d7e3d 100644
--- a/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
+++ b/Mage.Sets/src/mage/cards/c/ControlOfTheCourt.java
@@ -21,7 +21,7 @@ public final class ControlOfTheCourt extends CardImpl {
// Draw four cards, then discard three cards at random.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(4));
Effect effect = new DiscardControllerEffect(3, true);
- effect.setText("then discard three cards at random");
+ effect.concatBy(", then");
this.getSpellAbility().addEffect(effect);
}
@@ -33,4 +33,4 @@ public final class ControlOfTheCourt extends CardImpl {
public ControlOfTheCourt copy() {
return new ControlOfTheCourt(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/c/Cowardice.java b/Mage.Sets/src/mage/cards/c/Cowardice.java
index aa7a552438f..c5e6f9dfc9f 100644
--- a/Mage.Sets/src/mage/cards/c/Cowardice.java
+++ b/Mage.Sets/src/mage/cards/c/Cowardice.java
@@ -63,11 +63,11 @@ class CowardiceTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a creature becomes the target of a spell or ability, return that creature to its owner's hand";
+ return "Whenever a creature becomes the target of a spell or ability, return that creature to its owner's hand.";
}
@Override
public CowardiceTriggeredAbility copy() {
return new CowardiceTriggeredAbility(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/c/Cunning.java b/Mage.Sets/src/mage/cards/c/Cunning.java
index 2d66c35423d..668f803b1b6 100644
--- a/Mage.Sets/src/mage/cards/c/Cunning.java
+++ b/Mage.Sets/src/mage/cards/c/Cunning.java
@@ -43,7 +43,8 @@ public final class Cunning extends CardImpl {
// When enchanted creature attacks or blocks, sacrifice Cunning at the beginning of the next cleanup step.
this.addAbility(new AttacksOrBlocksAttachedTriggeredAbility(
- new SacrificeSourceBeginningCleanupStepEffect(), AttachmentType.AURA));
+ new SacrificeSourceBeginningCleanupStepEffect(), AttachmentType.AURA)
+ .setTriggerPhrase("When enchanted creature attacks or blocks, "));
}
private Cunning(final Cunning card) {
diff --git a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
index 9a5c149e6d8..f8d320efe60 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java
@@ -31,11 +31,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class DarkSupplicant extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("Clerics you control");
-
- static {
- filter.add(SubType.CLERIC.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.CLERIC, "Clerics");
public DarkSupplicant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
diff --git a/Mage.Sets/src/mage/cards/d/DeathMatch.java b/Mage.Sets/src/mage/cards/d/DeathMatch.java
index 27cdd2b7d2c..6ec60eaa1eb 100644
--- a/Mage.Sets/src/mage/cards/d/DeathMatch.java
+++ b/Mage.Sets/src/mage/cards/d/DeathMatch.java
@@ -27,7 +27,7 @@ public final class DeathMatch extends CardImpl {
// Whenever a creature enters the battlefield, that creature's controller may have target creature of their choice get -3/-3 until end of turn.
// NOTE: The ability being optional is implemented in the subclass to give the choice to correct player.
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new DeathMatchEffect(),
- StaticFilters.FILTER_PERMANENT_CREATURE, false, SetTargetPointer.PLAYER, "");
+ StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PLAYER, "");
ability.addTarget(new TargetCreaturePermanent());
ability.setTargetAdjuster(DeathMatchAdjuster.instance);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/d/Delraich.java b/Mage.Sets/src/mage/cards/d/Delraich.java
index 135de65e670..701576cf6d2 100644
--- a/Mage.Sets/src/mage/cards/d/Delraich.java
+++ b/Mage.Sets/src/mage/cards/d/Delraich.java
@@ -22,7 +22,7 @@ import java.util.UUID;
public final class Delraich extends CardImpl {
private static final FilterControlledCreaturePermanent filter
- = new FilterControlledCreaturePermanent("black creature");
+ = new FilterControlledCreaturePermanent("black creatures");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/d/DispersingOrb.java b/Mage.Sets/src/mage/cards/d/DispersingOrb.java
index 4e0c16c56eb..c573d11371f 100644
--- a/Mage.Sets/src/mage/cards/d/DispersingOrb.java
+++ b/Mage.Sets/src/mage/cards/d/DispersingOrb.java
@@ -9,6 +9,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledPermanent;
@@ -23,7 +24,7 @@ public final class DispersingOrb extends CardImpl {
// {3}{U}, Sacrifice a permanent: Return target permanent to its owner's hand.
Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{3}{U}"));
- ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent()));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_SHORT_TEXT)));
ability.addTarget(new TargetPermanent().withChooseHint("return to hand"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/e/Embargo.java b/Mage.Sets/src/mage/cards/e/Embargo.java
index 3a845aa6f5f..05356a7a657 100644
--- a/Mage.Sets/src/mage/cards/e/Embargo.java
+++ b/Mage.Sets/src/mage/cards/e/Embargo.java
@@ -1,4 +1,3 @@
-
package mage.cards.e;
import java.util.UUID;
@@ -11,23 +10,19 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
-import mage.constants.Zone;
-import mage.filter.FilterPermanent;
-import mage.filter.common.FilterNonlandPermanent;
+import mage.filter.StaticFilters;
/**
*
* @author fireshoes
*/
public final class Embargo extends CardImpl {
-
- private static final FilterPermanent filter = new FilterNonlandPermanent();
public Embargo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
// Nonland permanents don't untap during their controllers' untap steps.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
+ this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, StaticFilters.FILTER_PERMANENTS_NON_LAND)));
// At the beginning of your upkeep, you lose 2 life.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(2), TargetController.YOU, false));
diff --git a/Mage.Sets/src/mage/cards/e/EnchantedBeing.java b/Mage.Sets/src/mage/cards/e/EnchantedBeing.java
index 24b6f39e453..d2021a3ebf7 100644
--- a/Mage.Sets/src/mage/cards/e/EnchantedBeing.java
+++ b/Mage.Sets/src/mage/cards/e/EnchantedBeing.java
@@ -29,8 +29,8 @@ public final class EnchantedBeing extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
- // Prevent all damage that would be dealt to Enchanted Being by enchanted creatures.
- this.addAbility(new SimpleStaticAbility(new PreventAllDamageToSourceByPermanentsEffect(filter)));
+ // Prevent all combat damage that would be dealt to Enchanted Being by enchanted creatures.
+ this.addAbility(new SimpleStaticAbility(new PreventAllDamageToSourceByPermanentsEffect(filter, true)));
}
private EnchantedBeing(final EnchantedBeing card) {
diff --git a/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java b/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java
index c9febcf5b7d..70b7376679f 100644
--- a/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java
+++ b/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java
@@ -33,7 +33,7 @@ public final class EzuriStalkerOfSpheres extends CardImpl {
// When Ezuri, Stalker of Spheres enters the battlefield, you may pay {3}. If you do, proliferate twice.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
new ProliferateEffect(false), new GenericManaCost(3)
- ).addEffect(new ProliferateEffect().setText("twice"))));
+ ).addEffect(new ProliferateEffect().setText(" twice"))));
// Whenever you proliferate, draw a card.
this.addAbility(new ProliferatedControllerTriggeredAbility(new DrawCardSourceControllerEffect(1)));
diff --git a/Mage.Sets/src/mage/cards/f/Feint.java b/Mage.Sets/src/mage/cards/f/Feint.java
index 4ffa7c667d8..a8e011ba355 100644
--- a/Mage.Sets/src/mage/cards/f/Feint.java
+++ b/Mage.Sets/src/mage/cards/f/Feint.java
@@ -27,8 +27,9 @@ public final class Feint extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
// Tap all creatures blocking target attacking creature. Prevent all combat damage that would be dealt this turn by that creature and each creature blocking it.
- this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true).setText(""));
this.getSpellAbility().addEffect(new FeintEffect());
+ this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true)
+ .setText("Prevent all combat damage that would be dealt this turn by that creature and each creature blocking it"));
this.getSpellAbility().addTarget(new TargetAttackingCreature());
}
@@ -47,7 +48,7 @@ class FeintEffect extends OneShotEffect {
public FeintEffect() {
super(Outcome.ReturnToHand);
- this.staticText = "Tap all creatures blocking target attacking creature. Prevent all combat damage that would be dealt this turn by that creature and each creature blocking it";
+ this.staticText = "tap all creatures blocking target attacking creature";
}
public FeintEffect(final FeintEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/f/FlametongueYearling.java b/Mage.Sets/src/mage/cards/f/FlametongueYearling.java
index c04aacddc04..e351dafe366 100644
--- a/Mage.Sets/src/mage/cards/f/FlametongueYearling.java
+++ b/Mage.Sets/src/mage/cards/f/FlametongueYearling.java
@@ -35,7 +35,7 @@ public final class FlametongueYearling extends CardImpl {
this.toughness = new MageInt(1);
// Multikicker {2}
- this.addAbility(new MultikickerAbility(new GenericManaCost(2)));
+ this.addAbility(new MultikickerAbility("{2}"));
// Flametongue Yearling enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(
diff --git a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
index c2d842ab207..f9cb7a06b22 100644
--- a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
+++ b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java
@@ -1,11 +1,16 @@
package mage.cards.f;
import mage.MageInt;
-import mage.abilities.keyword.DauntAbility;
+import mage.abilities.common.SimpleEvasionAbility;
+import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.Duration;
import mage.constants.SubType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
@@ -14,6 +19,13 @@ import java.util.UUID;
*/
public final class FleetFootedMonk extends CardImpl {
+ private static final FilterCreaturePermanent filter
+ = new FilterCreaturePermanent("creatures with power 2 or greater");
+
+ static {
+ filter.add(new PowerPredicate(ComparisonType.OR_GREATER, 2));
+ }
+
public FleetFootedMonk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add(SubType.HUMAN);
@@ -22,7 +34,7 @@ public final class FleetFootedMonk extends CardImpl {
this.toughness = new MageInt(1);
// Fleet-Footed Monk can't be blocked by creatures with power 2 or greater.
- this.addAbility(new DauntAbility());
+ this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)));
}
private FleetFootedMonk(final FleetFootedMonk card) {
diff --git a/Mage.Sets/src/mage/cards/f/FluxChanneler.java b/Mage.Sets/src/mage/cards/f/FluxChanneler.java
index db14684b2f0..f4698be1dce 100644
--- a/Mage.Sets/src/mage/cards/f/FluxChanneler.java
+++ b/Mage.Sets/src/mage/cards/f/FluxChanneler.java
@@ -26,7 +26,7 @@ public final class FluxChanneler extends CardImpl {
// Whenever you cast a noncreature spell, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.)
this.addAbility(new SpellCastControllerTriggeredAbility(
- new ProliferateEffect(), StaticFilters.FILTER_SPELL_NON_CREATURE, false
+ new ProliferateEffect(), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
));
}
diff --git a/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java b/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
index e0a9d236cd3..93850d5cf93 100644
--- a/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
+++ b/Mage.Sets/src/mage/cards/f/FreyalisesCharm.java
@@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class FreyalisesCharm extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("black spell");
+ private static final FilterSpell filter = new FilterSpell("a black spell");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
index d11f49e7743..e290d9637fd 100644
--- a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
+++ b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java
@@ -30,7 +30,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class GallowsAtWillowHill extends CardImpl {
- private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control");
+ private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Humans you control");
static {
humanFilter.add(TappedPredicate.UNTAPPED);
diff --git a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
index 7467c839ce0..f938a316f34 100644
--- a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
+++ b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
@@ -20,11 +20,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class GangrenousGoliath extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Clerics");
-
- static {
- filter.add(SubType.CLERIC.getPredicate());
- }
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CLERIC,"untapped Clerics you control");
public GangrenousGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
index 458c2a708b2..ba52266dd9a 100644
--- a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
+++ b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java
@@ -75,7 +75,7 @@ class GhastlyRemainsTriggeredAbility extends BeginningOfUpkeepTriggeredAbility {
@Override
public String getRule() {
- return "At the beginning of your upkeep, if {this} is in your graveyard, you may pay {B}{B}{B}. If you do, return {this} to your hand";
+ return "At the beginning of your upkeep, if {this} is in your graveyard, you may pay {B}{B}{B}. If you do, return {this} to your hand.";
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GixsCommand.java b/Mage.Sets/src/mage/cards/g/GixsCommand.java
index 1303ca53f8a..118e274a72d 100644
--- a/Mage.Sets/src/mage/cards/g/GixsCommand.java
+++ b/Mage.Sets/src/mage/cards/g/GixsCommand.java
@@ -79,7 +79,7 @@ class GixsCommandCounterEffect extends OneShotEffect {
public GixsCommandCounterEffect() {
super(Outcome.BoostCreature);
- this.staticText = "Put two +1/+1 counter on up to one creature. It gains lifelink until end of turn.";
+ this.staticText = "Put two +1/+1 counters on up to one creature. It gains lifelink until end of turn.";
}
private GixsCommandCounterEffect(final GixsCommandCounterEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/g/GlissasScorn.java b/Mage.Sets/src/mage/cards/g/GlissasScorn.java
index 7d30c11901f..7b6ad0403f6 100644
--- a/Mage.Sets/src/mage/cards/g/GlissasScorn.java
+++ b/Mage.Sets/src/mage/cards/g/GlissasScorn.java
@@ -20,7 +20,7 @@ public final class GlissasScorn extends CardImpl {
// Destroy target artifact. Its controller loses 1 life.
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
- this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addEffect(new LoseLifeTargetControllerEffect(1));
}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
index c6a93f9c25a..d49e63491d6 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java
@@ -62,7 +62,7 @@ class GoblinClearCutterManaEffect extends ManaEffect {
public GoblinClearCutterManaEffect() {
super();
- this.staticText = "Add 3 mana in any combination of {R} and/or {G}";
+ this.staticText = "Add three mana in any combination of {R} and/or {G}";
netMana.add(new Mana(0, 0, 0, 0, 3, 0, 0, 0));
netMana.add(new Mana(0, 0, 0, 1, 2, 0, 0, 0));
netMana.add(new Mana(0, 0, 0, 2, 1, 0, 0, 0));
diff --git a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
index eb1050c609f..66c48f2a028 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java
@@ -40,7 +40,7 @@ public final class GoblinPyromancer extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new BoostAllEffect(3, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, false)));
// At the beginning of the end step, destroy all Goblins.
- this.addAbility(new BeginningOfEndStepTriggeredAbility(new DestroyAllEffect(filterPermanent, false), TargetController.ANY, false));
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(new DestroyAllEffect(filterPermanent, false), TargetController.NEXT, false));
}
private GoblinPyromancer(final GoblinPyromancer card) {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
index 36e6474cfdd..b29111b05f5 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java
@@ -28,11 +28,10 @@ import mage.target.common.TargetControlledPermanent;
public final class GoblinSoothsayer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
- private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("goblin");
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.GOBLIN, "Goblin");
- static {
+ static {
filter.add(new ColorPredicate(ObjectColor.RED));
- filter2.add(SubType.GOBLIN.getPredicate());
}
public GoblinSoothsayer(UUID ownerId, CardSetInfo setInfo) {
@@ -58,4 +57,4 @@ public final class GoblinSoothsayer extends CardImpl {
public GoblinSoothsayer copy() {
return new GoblinSoothsayer(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java b/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
index 86c82df1b70..2592c683377 100644
--- a/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
+++ b/Mage.Sets/src/mage/cards/g/GrangerGuildmage.java
@@ -36,7 +36,7 @@ public final class GrangerGuildmage extends CardImpl {
// {R}, {tap}: Granger Guildmage deals 1 damage to any target and 1 damage to you.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{R}"));
ability.addCost(new TapSourceCost());
- ability.addEffect(new DamageControllerEffect(1));
+ ability.addEffect(new DamageControllerEffect(1).setText("and 1 damage to you"));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
@@ -55,4 +55,4 @@ public final class GrangerGuildmage extends CardImpl {
public GrangerGuildmage copy() {
return new GrangerGuildmage(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java b/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
index fcd76760522..92334d10ae2 100644
--- a/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
+++ b/Mage.Sets/src/mage/cards/h/HakimLoreweaver.java
@@ -63,7 +63,7 @@ public final class HakimLoreweaver extends CardImpl {
this.addAbility(ability);
// {U}{U}, {tap}: Destroy all Auras attached to Hakim.
- Ability ability2 = new SimpleActivatedAbility(new HakimLoreweaverEffect(), new ManaCostsImpl<>("{U}{U}"));
+ Ability ability2 = new SimpleActivatedAbility(new HakimLoreweaverDestroyEffect(), new ManaCostsImpl<>("{U}{U}"));
ability2.addCost(new TapSourceCost());
this.addAbility(ability2);
}
@@ -186,4 +186,4 @@ class HakimLoreweaverPredicate implements Predicate {
public boolean apply(Permanent input, Game game) {
return input.isAttachedTo(permanent.getId());
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/h/Hesitation.java b/Mage.Sets/src/mage/cards/h/Hesitation.java
index 8bda0f71317..d42e4f03808 100644
--- a/Mage.Sets/src/mage/cards/h/Hesitation.java
+++ b/Mage.Sets/src/mage/cards/h/Hesitation.java
@@ -24,7 +24,8 @@ public final class Hesitation extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
// When a player casts a spell, sacrifice Hesitation and counter that spell.
- Ability ability = new SpellCastAllTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A, false, SetTargetPointer.SPELL);
+ Ability ability = new SpellCastAllTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A, false, SetTargetPointer.SPELL)
+ .setTriggerPhrase("When a player casts a spell, ");
Effect effect = new CounterTargetEffect();
effect.setText("and counter that spell");
ability.addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/h/HornOfPlenty.java b/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
index c0196b97204..052c397f488 100644
--- a/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
+++ b/Mage.Sets/src/mage/cards/h/HornOfPlenty.java
@@ -48,7 +48,7 @@ class HornOfPlentyEffect extends OneShotEffect {
public HornOfPlentyEffect() {
super(Outcome.Detriment);
- this.staticText = "they may pay {1}. If that player does, they draw a card at the beginning of the next end step";
+ this.staticText = "they may pay {1}. If the player does, they draw a card at the beginning of the next end step";
}
public HornOfPlentyEffect(final HornOfPlentyEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/i/InfiniteAuthority.java b/Mage.Sets/src/mage/cards/i/InfiniteAuthority.java
index ac66c1c9418..d87bcb432eb 100644
--- a/Mage.Sets/src/mage/cards/i/InfiniteAuthority.java
+++ b/Mage.Sets/src/mage/cards/i/InfiniteAuthority.java
@@ -60,7 +60,8 @@ public final class InfiniteAuthority extends CardImpl {
class InfiniteAuthorityTriggeredAbility extends TriggeredAbilityImpl {
InfiniteAuthorityTriggeredAbility() {
- super(Zone.BATTLEFIELD, new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new InfiniteAuthorityEffect())));
+ super(Zone.BATTLEFIELD, new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(
+ new InfiniteAuthorityEffect()).setTriggerPhrase("")));
setTriggerPhrase("Whenever enchanted creature blocks or becomes blocked by a creature with toughness 3 or less, ");
}
diff --git a/Mage.Sets/src/mage/cards/i/InquisitorExarch.java b/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
index b484c0aac50..62ade83b50a 100644
--- a/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
+++ b/Mage.Sets/src/mage/cards/i/InquisitorExarch.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import java.util.UUID;
@@ -12,7 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.target.TargetPlayer;
+import mage.target.common.TargetOpponent;
/**
*
@@ -30,7 +29,7 @@ public final class InquisitorExarch extends CardImpl {
Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2));
Mode mode = new Mode(new LoseLifeTargetEffect(2));
- mode.addTarget(new TargetPlayer());
+ mode.addTarget(new TargetOpponent());
ability.addMode(mode);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/i/InvaderParasite.java b/Mage.Sets/src/mage/cards/i/InvaderParasite.java
index afce56d2f0c..a21f197805e 100644
--- a/Mage.Sets/src/mage/cards/i/InvaderParasite.java
+++ b/Mage.Sets/src/mage/cards/i/InvaderParasite.java
@@ -125,6 +125,6 @@ class InvaderParasiteTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a land with the same name as the exiled card enters the battlefield under an opponent's control, {this} deals 2 damage to that player";
+ return "Whenever a land with the same name as the exiled card enters the battlefield under an opponent's control, {this} deals 2 damage to that player.";
}
}
diff --git a/Mage.Sets/src/mage/cards/j/JackalopeHerd.java b/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
index aca52e91b85..fc263d5dfe0 100644
--- a/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
+++ b/Mage.Sets/src/mage/cards/j/JackalopeHerd.java
@@ -26,7 +26,8 @@ public final class JackalopeHerd extends CardImpl {
this.toughness = new MageInt(5);
// When you cast a spell, return Jackalope Herd to its owner's hand.
- this.addAbility(new SpellCastControllerTriggeredAbility(new ReturnToHandSourceEffect(true), StaticFilters.FILTER_SPELL_A, false));
+ this.addAbility(new SpellCastControllerTriggeredAbility(new ReturnToHandSourceEffect(true), StaticFilters.FILTER_SPELL_A, false)
+ .setTriggerPhrase("When you cast a spell, "));
}
private JackalopeHerd(final JackalopeHerd card) {
diff --git a/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java b/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java
index e406cf6d585..050210bdf93 100644
--- a/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java
+++ b/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java
@@ -58,7 +58,7 @@ public final class JorKadeenFirstGoldwarden extends CardImpl {
));
ability.addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1),
- condition, "Then if {this}'s power is 4 or greater"
+ condition, "Then if {this}'s power is 4 or greater, draw a card"
));
this.addAbility(ability.addHint(hint));
}
diff --git a/Mage.Sets/src/mage/cards/k/KinzuOfTheBleakCoven.java b/Mage.Sets/src/mage/cards/k/KinzuOfTheBleakCoven.java
index 7c1c9e65c9a..5d7a8417a3a 100644
--- a/Mage.Sets/src/mage/cards/k/KinzuOfTheBleakCoven.java
+++ b/Mage.Sets/src/mage/cards/k/KinzuOfTheBleakCoven.java
@@ -69,7 +69,7 @@ class KinzuOfTheBleakCovenEffect extends OneShotEffect {
KinzuOfTheBleakCovenEffect() {
super(Outcome.Benefit);
- staticText = "you may pay 2 Life and exile it. If you do, " +
+ staticText = "you may pay 2 life and exile it. If you do, " +
"create a token that's a copy of that creature" +
", except it's 1/1 and has toxic 1.";
}
diff --git a/Mage.Sets/src/mage/cards/l/LairDelve.java b/Mage.Sets/src/mage/cards/l/LairDelve.java
index 610a1a2647b..438fac79f2a 100644
--- a/Mage.Sets/src/mage/cards/l/LairDelve.java
+++ b/Mage.Sets/src/mage/cards/l/LairDelve.java
@@ -16,7 +16,7 @@ import mage.filter.predicate.Predicates;
*/
public final class LairDelve extends CardImpl {
- private static final FilterCard filter = new FilterCard("all creature and land cards");
+ private static final FilterCard filter = new FilterCard("creature and land cards");
static {
filter.add(Predicates.or(CardType.LAND.getPredicate(), CardType.CREATURE.getPredicate()));
diff --git a/Mage.Sets/src/mage/cards/l/LifeMatrix.java b/Mage.Sets/src/mage/cards/l/LifeMatrix.java
index f1f6d57d3fe..52aa1806074 100644
--- a/Mage.Sets/src/mage/cards/l/LifeMatrix.java
+++ b/Mage.Sets/src/mage/cards/l/LifeMatrix.java
@@ -36,7 +36,7 @@ public final class LifeMatrix extends CardImpl {
Zone.BATTLEFIELD,
new AddCountersTargetEffect(CounterType.MATRIX.createInstance()),
new GenericManaCost(4),
- new IsStepCondition(PhaseStep.UPKEEP), "Put a matrix counter on target creature and "
+ new IsStepCondition(PhaseStep.UPKEEP), "{4}, {T}: Put a matrix counter on target creature and "
+ "that creature gains \"Remove a matrix counter from this creature: "
+ "Regenerate this creature.\" Activate only during your upkeep.");
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD,
diff --git a/Mage.Sets/src/mage/cards/l/Lunge.java b/Mage.Sets/src/mage/cards/l/Lunge.java
index 8d8154a340b..b3bb6efb96f 100644
--- a/Mage.Sets/src/mage/cards/l/Lunge.java
+++ b/Mage.Sets/src/mage/cards/l/Lunge.java
@@ -26,7 +26,7 @@ public final class Lunge extends CardImpl {
Effect effect = new DamageTargetEffect(2).setUseOnlyTargetPointer(true);
effect.setTargetPointer(new SecondTargetPointer());
- effect.setText("and 2 damage to target player");
+ effect.setText("and 2 damage to target player or planeswalker");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
}
diff --git a/Mage.Sets/src/mage/cards/m/MagdaBrazenOutlaw.java b/Mage.Sets/src/mage/cards/m/MagdaBrazenOutlaw.java
index 4eaa77ac0f7..4bf4651f7c4 100644
--- a/Mage.Sets/src/mage/cards/m/MagdaBrazenOutlaw.java
+++ b/Mage.Sets/src/mage/cards/m/MagdaBrazenOutlaw.java
@@ -32,7 +32,7 @@ public final class MagdaBrazenOutlaw extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.DWARF, "Dwarves");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.DWARF, "a Dwarf you control");
private static final FilterCard filter3 = new FilterCard("an artifact or Dragon card");
- private static final FilterControlledPermanent filter4 = new FilterControlledPermanent(SubType.TREASURE, "treasures");
+ private static final FilterControlledPermanent filter4 = new FilterControlledPermanent(SubType.TREASURE, "Treasures");
static {
filter3.add(Predicates.or(CardType.ARTIFACT.getPredicate(), SubType.DRAGON.getPredicate()));
}
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
index a9d50591ad2..b8ba300456e 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java
@@ -58,8 +58,8 @@ class MaskOfTheMimicEffect extends OneShotEffect {
MaskOfTheMimicEffect() {
super(Outcome.Benefit);
- this.staticText = "Search your library for a card with the same name as target nontoken creature "
- + "and put that card onto the battlefield. Then shuffle.";
+ this.staticText = "Search your library for a card with the same name as target nontoken creature,"
+ + " put that card onto the battlefield, then shuffle.";
}
MaskOfTheMimicEffect(final MaskOfTheMimicEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/m/MeliraTheLivingCure.java b/Mage.Sets/src/mage/cards/m/MeliraTheLivingCure.java
index c3c22fda213..78958f11747 100644
--- a/Mage.Sets/src/mage/cards/m/MeliraTheLivingCure.java
+++ b/Mage.Sets/src/mage/cards/m/MeliraTheLivingCure.java
@@ -47,7 +47,7 @@ public final class MeliraTheLivingCure extends CardImpl {
this.toughness = new MageInt(3);
// If you would get one or more poison counters, instead you get one poison counter and you can't get additional poison counters this turn.
- this.addAbility(new SimpleStaticAbility(new MeliraTheLivingCurePreventionEffect()));
+ this.addAbility(new SimpleStaticAbility(new MeliraTheLivingCureReplacementEffect()));
// Exile Melira, the Living Cure: Choose another target creature or artifact. When it's put into a graveyard this turn, return that card to the battlefield under its owner's control.
Ability ability = new SimpleActivatedAbility(new CreateDelayedTriggeredAbilityEffect(
@@ -72,15 +72,15 @@ public final class MeliraTheLivingCure extends CardImpl {
}
}
-class MeliraTheLivingCureReplacmentEffect extends ReplacementEffectImpl {
+class MeliraTheLivingCureReplacementEffect extends ReplacementEffectImpl {
- MeliraTheLivingCureReplacmentEffect() {
+ MeliraTheLivingCureReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = "if you would get one or more poison counters, instead you get " +
"one poison counter and you can't get additional poison counters this turn";
}
- private MeliraTheLivingCureReplacmentEffect(final MeliraTheLivingCureReplacmentEffect effect) {
+ private MeliraTheLivingCureReplacementEffect(final MeliraTheLivingCureReplacementEffect effect) {
super(effect);
}
@@ -104,8 +104,8 @@ class MeliraTheLivingCureReplacmentEffect extends ReplacementEffectImpl {
}
@Override
- public MeliraTheLivingCureReplacmentEffect copy() {
- return new MeliraTheLivingCureReplacmentEffect(this);
+ public MeliraTheLivingCureReplacementEffect copy() {
+ return new MeliraTheLivingCureReplacementEffect(this);
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MentalAgony.java b/Mage.Sets/src/mage/cards/m/MentalAgony.java
index 6c8d61d49c7..2c94446cf2d 100644
--- a/Mage.Sets/src/mage/cards/m/MentalAgony.java
+++ b/Mage.Sets/src/mage/cards/m/MentalAgony.java
@@ -21,7 +21,7 @@ public final class MentalAgony extends CardImpl {
// Target player discards two cards and loses 2 life.
this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
- this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2));
+ this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life"));
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/m/Mindculling.java b/Mage.Sets/src/mage/cards/m/Mindculling.java
index 699a7231bca..1daf5d3e7cf 100644
--- a/Mage.Sets/src/mage/cards/m/Mindculling.java
+++ b/Mage.Sets/src/mage/cards/m/Mindculling.java
@@ -19,9 +19,9 @@ public final class Mindculling extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, "you"));
this.getSpellAbility().addTarget(new TargetOpponent());
- this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
+ this.getSpellAbility().addEffect(new DiscardTargetEffect(2).concatBy("and"));
}
private Mindculling(final Mindculling card) {
diff --git a/Mage.Sets/src/mage/cards/m/MisersCage.java b/Mage.Sets/src/mage/cards/m/MisersCage.java
index 4c0efe59e95..fc317f79eb8 100644
--- a/Mage.Sets/src/mage/cards/m/MisersCage.java
+++ b/Mage.Sets/src/mage/cards/m/MisersCage.java
@@ -78,6 +78,6 @@ class MisersCageTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "at the beginning of each opponent's upkeep, if that player has five or more cards in hand, {this} deals 2 damage to that player";
+ return "at the beginning of each opponent's upkeep, if that player has five or more cards in hand, {this} deals 2 damage to that player.";
}
}
diff --git a/Mage.Sets/src/mage/cards/m/MoggBombers.java b/Mage.Sets/src/mage/cards/m/MoggBombers.java
index fb36dae7ed8..a19631b9414 100644
--- a/Mage.Sets/src/mage/cards/m/MoggBombers.java
+++ b/Mage.Sets/src/mage/cards/m/MoggBombers.java
@@ -14,6 +14,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.target.TargetPlayer;
+import mage.target.common.TargetPlayerOrPlaneswalker;
/**
*
@@ -21,7 +22,7 @@ import mage.target.TargetPlayer;
*/
public final class MoggBombers extends CardImpl {
- private static final String rule = "When another creature enters the battlefield, sacrifice {this} and it deals 3 damage to target player.";
+ private static final String rule = "When another creature enters the battlefield, sacrifice {this} and it deals 3 damage to target player or planeswalker.";
public MoggBombers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
@@ -40,7 +41,7 @@ public final class MoggBombers extends CardImpl {
false,
rule);
ability.addEffect(damageTargetPlayer);
- ability.addTarget(new TargetPlayer());
+ ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MomentOfSilence.java b/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
index 1f51484654a..f01a7e62ec4 100644
--- a/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
+++ b/Mage.Sets/src/mage/cards/m/MomentOfSilence.java
@@ -18,7 +18,7 @@ public final class MomentOfSilence extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
// Target player skips their next combat phase this turn.
- this.getSpellAbility().addEffect(new SkipCombatStepEffect(Duration.EndOfTurn).setText("Target player skips their next combat this turn"));
+ this.getSpellAbility().addEffect(new SkipCombatStepEffect(Duration.EndOfTurn).setText("Target player skips their next combat phase this turn"));
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/m/Mortuary.java b/Mage.Sets/src/mage/cards/m/Mortuary.java
index a2d125a5359..821ddb45d30 100644
--- a/Mage.Sets/src/mage/cards/m/Mortuary.java
+++ b/Mage.Sets/src/mage/cards/m/Mortuary.java
@@ -20,7 +20,7 @@ public final class Mortuary extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
// Whenever a creature is put into your graveyard from the battlefield, put that card on top of your library.
- Ability ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(new PutOnLibraryTargetEffect(true, "put that card on top of your library."), false, StaticFilters.FILTER_PERMANENT_CREATURE, true, true);
+ Ability ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(new PutOnLibraryTargetEffect(true, "put that card on top of your library."), false, StaticFilters.FILTER_PERMANENT_A_CREATURE, true, true);
this.addAbility(ability);
}
@@ -32,4 +32,4 @@ public final class Mortuary extends CardImpl {
public Mortuary copy() {
return new Mortuary(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/MyrelShieldOfArgive.java b/Mage.Sets/src/mage/cards/m/MyrelShieldOfArgive.java
index 5611e6204aa..c30ea008c91 100644
--- a/Mage.Sets/src/mage/cards/m/MyrelShieldOfArgive.java
+++ b/Mage.Sets/src/mage/cards/m/MyrelShieldOfArgive.java
@@ -25,7 +25,7 @@ import java.util.UUID;
public final class MyrelShieldOfArgive extends CardImpl {
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
- new FilterControlledPermanent(SubType.SOLDIER), null
+ new FilterControlledPermanent(SubType.SOLDIER, "Soldiers you control"), null
);
private static final Hint hint = new ValueHint("Soldiers you control", xValue);
diff --git a/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java b/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java
index c2b9da60d25..1408839be36 100644
--- a/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java
+++ b/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java
@@ -27,7 +27,7 @@ import java.util.UUID;
public final class NecrogenRotpriest extends CardImpl {
private static final FilterPermanent filter
- = new FilterControlledCreaturePermanent("creature you control with toxic");
+ = new FilterControlledCreaturePermanent("a creature you control with toxic");
static {
filter.add(new AbilityPredicate(ToxicAbility.class));
diff --git a/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java b/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
index 720ecb26a28..842b94f119a 100644
--- a/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
+++ b/Mage.Sets/src/mage/cards/n/NewPrahvGuildmage.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetNonlandPermanent;
*/
public final class NewPrahvGuildmage extends CardImpl {
- private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent an opponent control");
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanent an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
diff --git a/Mage.Sets/src/mage/cards/n/NosyGoblin.java b/Mage.Sets/src/mage/cards/n/NosyGoblin.java
index e535e7dbd93..d045eea88b5 100644
--- a/Mage.Sets/src/mage/cards/n/NosyGoblin.java
+++ b/Mage.Sets/src/mage/cards/n/NosyGoblin.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class NosyGoblin extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face down creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-down creature");
static {
filter.add(FaceDownPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/o/OrimsCure.java b/Mage.Sets/src/mage/cards/o/OrimsCure.java
index f80db4d4042..c35d0b03b70 100644
--- a/Mage.Sets/src/mage/cards/o/OrimsCure.java
+++ b/Mage.Sets/src/mage/cards/o/OrimsCure.java
@@ -37,7 +37,7 @@ public final class OrimsCure extends CardImpl {
// If you control a Plains, you may tap an untapped creature you control rather than pay Orim's Cure's mana cost.
Cost cost = new TapTargetCost(new TargetControlledPermanent(1,1,filterCreature,false));
- cost.setText(" tap an untapped creature you control");
+ cost.setText("tap an untapped creature you control");
this.addAbility(new AlternativeCostSourceAbility(cost, new PermanentsOnTheBattlefieldCondition(filter)));
// Prevent the next 4 damage that would be dealt to any target this turn.
diff --git a/Mage.Sets/src/mage/cards/o/OutOfTime.java b/Mage.Sets/src/mage/cards/o/OutOfTime.java
index e28d782450b..d9fdc7a6a73 100644
--- a/Mage.Sets/src/mage/cards/o/OutOfTime.java
+++ b/Mage.Sets/src/mage/cards/o/OutOfTime.java
@@ -56,7 +56,7 @@ class OutOfTimePhaseOutEffect extends OneShotEffect {
public OutOfTimePhaseOutEffect() {
super(Outcome.AIDontUseIt);
- this.staticText = "untap all creatures, then phase them out until {this} leaves the battlefield. "
+ this.staticText = "untap all creatures, then those creatures phase out until {this} leaves the battlefield. "
+ "Put a time counter on {this} for each creature phased out this way";
}
diff --git a/Mage.Sets/src/mage/cards/p/PalisadeGiant.java b/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
index 42f26f03dac..096f8f47941 100644
--- a/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
+++ b/Mage.Sets/src/mage/cards/p/PalisadeGiant.java
@@ -65,7 +65,7 @@ class PalisadeGiantReplacementEffect extends ReplacementEffectImpl {
PalisadeGiantReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.RedirectDamage);
- staticText = "All damage that would be dealt to you or another permanent you control is dealt to {this} instead";
+ staticText = "All damage that would be dealt to you and other permanents you control is dealt to {this} instead";
}
PalisadeGiantReplacementEffect(final PalisadeGiantReplacementEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/p/ParasiticImplant.java b/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
index 1512e663241..cef68a85ba3 100644
--- a/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
+++ b/Mage.Sets/src/mage/cards/p/ParasiticImplant.java
@@ -35,7 +35,7 @@ public final class ParasiticImplant extends CardImpl {
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
ability = new BeginningOfUpkeepTriggeredAbility(new ParasiticImplantEffect(), TargetController.YOU, false);
- ability.addEffect(new CreateTokenEffect(new PhyrexianMyrToken()));
+ ability.addEffect(new CreateTokenEffect(new PhyrexianMyrToken()).concatBy("and you"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/p/Penance.java b/Mage.Sets/src/mage/cards/p/Penance.java
index 77abfcd09e4..697cc02ac38 100644
--- a/Mage.Sets/src/mage/cards/p/Penance.java
+++ b/Mage.Sets/src/mage/cards/p/Penance.java
@@ -47,7 +47,7 @@ class PenanceEffect extends PreventionEffectImpl {
public PenanceEffect() {
super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
- this.staticText = "The next time a black or red source of your choice would deal damage to you this turn, prevent that damage.";
+ this.staticText = "The next time a black or red source of your choice would deal damage this turn, prevent that damage.";
this.target = new TargetSource();
}
@@ -76,14 +76,12 @@ class PenanceEffect extends PreventionEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
- if (!this.used
- && super.applies(event, source, game)) {
- if (event.getTargetId().equals(source.getControllerId())
- && event.getSourceId().equals(target.getFirstTarget())) {
+ if (!this.used && super.applies(event, source, game)) {
+ if (event.getSourceId().equals(target.getFirstTarget())) {
return (game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.BLACK)
|| game.getObject(target.getFirstTarget()).getColor(game).contains(ObjectColor.RED));
}
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/p/Piety.java b/Mage.Sets/src/mage/cards/p/Piety.java
index 94848631f5a..4f3002407ff 100644
--- a/Mage.Sets/src/mage/cards/p/Piety.java
+++ b/Mage.Sets/src/mage/cards/p/Piety.java
@@ -17,14 +17,13 @@ import mage.filter.common.FilterBlockingCreature;
*/
public final class Piety extends CardImpl {
- static final FilterBlockingCreature filter = new FilterBlockingCreature();
+ private static final FilterBlockingCreature filter = new FilterBlockingCreature("blocking creatures");
public Piety(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
// Blocking creatures get +0/+3 until end of turn.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(0, 3, Duration.EndOfTurn, filter, false)));
- //this.addAbility(new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_POST, "end Piety", true, new BoostAllEffect(0, 3, Duration.EndOfTurn, filter, false)));
}
private Piety(final Piety card) {
diff --git a/Mage.Sets/src/mage/cards/p/PriceOfBetrayal.java b/Mage.Sets/src/mage/cards/p/PriceOfBetrayal.java
index 30b7775498d..d9ebefc7789 100644
--- a/Mage.Sets/src/mage/cards/p/PriceOfBetrayal.java
+++ b/Mage.Sets/src/mage/cards/p/PriceOfBetrayal.java
@@ -32,7 +32,7 @@ public final class PriceOfBetrayal extends CardImpl {
));
}
- private static final FilterPermanentOrPlayer filter2 = new FilterPermanentOrPlayer("artifact, creature, planeswalker or opponent", filter, new FilterOpponent());
+ private static final FilterPermanentOrPlayer filter2 = new FilterPermanentOrPlayer("artifact, creature, planeswalker, or opponent", filter, new FilterOpponent());
public PriceOfBetrayal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
@@ -128,4 +128,4 @@ class PriceOfBetrayalEffect extends OneShotEffect {
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java b/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
index 647978989e7..669552b58b1 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalWhisperer.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.card.FaceDownPredicate;
*/
public final class PrimalWhisperer extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-down creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-down creature on the battlefield");
static {
filter.add(FaceDownPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/p/Pulverize.java b/Mage.Sets/src/mage/cards/p/Pulverize.java
index 51b913b5136..db6f4e08998 100644
--- a/Mage.Sets/src/mage/cards/p/Pulverize.java
+++ b/Mage.Sets/src/mage/cards/p/Pulverize.java
@@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterArtifactPermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;
@@ -32,7 +32,7 @@ public final class Pulverize extends CardImpl {
this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, true))));
// Destroy all artifacts.
- this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterArtifactPermanent()));
+ this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS));
}
private Pulverize(final Pulverize card) {
diff --git a/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java b/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
index cbfe2217922..03f5da202c6 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessEmbermage.java
@@ -31,7 +31,7 @@ public final class RecklessEmbermage extends CardImpl {
// {1}{R}: Reckless Embermage deals 1 damage to any target and 1 damage to itself.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{R}"));
- ability.addEffect(new DamageSelfEffect(1));
+ ability.addEffect(new DamageSelfEffect(1).setText("and 1 damage to itself"));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/RescueRetriever.java b/Mage.Sets/src/mage/cards/r/RescueRetriever.java
index 1d61c53a701..16c430cf59b 100644
--- a/Mage.Sets/src/mage/cards/r/RescueRetriever.java
+++ b/Mage.Sets/src/mage/cards/r/RescueRetriever.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
public final class RescueRetriever extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SOLDIER, "other Soldier you control");
- private static final FilterAttackingCreature filterAttacking = new FilterAttackingCreature("attacking Soldiers you control");
+ private static final FilterAttackingCreature filterAttacking = new FilterAttackingCreature("other attacking Soldiers you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java b/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
index dba624e774f..3e94aa8a3ec 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideEntrancer.java
@@ -91,6 +91,6 @@ class RiptideEntrancerTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} deals combat damage to a player, you may sacrifice it. "
- + "If you do, gain control of target creature that player controls";
+ + "If you do, gain control of target creature that player controls.";
}
}
diff --git a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
index dee2c6c4879..c21304aa9cb 100644
--- a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
+++ b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java
@@ -18,11 +18,7 @@ import mage.game.permanent.token.ZombieToken;
*/
public final class RotlungReanimator extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Cleric");
-
- static {
- filter.add(SubType.CLERIC.getPredicate());
- }
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.CLERIC, "Cleric");
public RotlungReanimator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SaidDone.java b/Mage.Sets/src/mage/cards/s/SaidDone.java
index b32b25fe168..6c291145c0f 100644
--- a/Mage.Sets/src/mage/cards/s/SaidDone.java
+++ b/Mage.Sets/src/mage/cards/s/SaidDone.java
@@ -33,10 +33,10 @@ public final class SaidDone extends SplitCard {
));
// Done
- // Tap up to two target creatures. They don't untap during their controllers' next untap step.
+ // Tap up to two target creatures. Those creatures don't untap during their controllers' next untap step.
this.getRightHalfCard().getSpellAbility().addEffect(new TapTargetEffect());
this.getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
- this.getRightHalfCard().getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("They"));
+ this.getRightHalfCard().getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("Those creatures"));
}
private SaidDone(final SaidDone card) {
diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java b/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
index 30f25abddf3..f0e01a6f3b1 100644
--- a/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
+++ b/Mage.Sets/src/mage/cards/s/SaprazzanOutrigger.java
@@ -26,7 +26,9 @@ public final class SaprazzanOutrigger extends CardImpl {
this.toughness = new MageInt(5);
// When Saprazzan Outrigger attacks or blocks, put it on top of its owner's library at end of combat.
- DelayedTriggeredAbility ability = new AtTheEndOfCombatDelayedTriggeredAbility(new PutOnLibrarySourceEffect(true, "put it on top of its owner's library at end of combat"));
+ DelayedTriggeredAbility ability = new AtTheEndOfCombatDelayedTriggeredAbility(
+ new PutOnLibrarySourceEffect(true, "put it on top of its owner's library at end of combat"))
+ .setTriggerPhrase("");
this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(ability, true), false));
}
diff --git a/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java b/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
index ac1ca9f69b4..81cf312cc80 100644
--- a/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
+++ b/Mage.Sets/src/mage/cards/s/SerpentineBasilisk.java
@@ -29,7 +29,8 @@ public final class SerpentineBasilisk extends CardImpl {
// Whenever Serpentine Basilisk deals combat damage to a creature, destroy that creature at end of combat.
this.addAbility(new DealsCombatDamageToACreatureTriggeredAbility(
new CreateDelayedTriggeredAbilityEffect(
- new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect("destroy that creature at end of combat")), true), false, true));
+ new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect("destroy that creature at end of combat"))
+ .setTriggerPhrase(""), true), false, true));
// Morph {1}{G}{G}
this.addAbility(new MorphAbility(new ManaCostsImpl<>("{1}{G}{G}")));
}
diff --git a/Mage.Sets/src/mage/cards/s/ShadesBreath.java b/Mage.Sets/src/mage/cards/s/ShadesBreath.java
index 7ac89a66e6b..aa036b3e3ef 100644
--- a/Mage.Sets/src/mage/cards/s/ShadesBreath.java
+++ b/Mage.Sets/src/mage/cards/s/ShadesBreath.java
@@ -80,7 +80,7 @@ class ShadesBreathSetSubtypeEffect extends ContinuousEffectImpl {
ShadesBreathSetSubtypeEffect() {
super(Duration.EndOfTurn, Layer.TypeChangingEffects_4, SubLayer.NA, Outcome.Benefit);
- staticText = "Shade";
+ staticText = " Shade";
}
private ShadesBreathSetSubtypeEffect(final ShadesBreathSetSubtypeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
index afc124405b8..a4da8160e5d 100644
--- a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
+++ b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java
@@ -45,7 +45,7 @@ public final class ShaukuEndbringer extends CardImpl {
// {T}: Exile target creature and put a +1/+1 counter on Shauku.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost());
- ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
+ ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).concatBy("and"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SkitteringHorror.java b/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
index f685d21d370..faccb0d2b32 100644
--- a/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
+++ b/Mage.Sets/src/mage/cards/s/SkitteringHorror.java
@@ -25,7 +25,8 @@ public final class SkitteringHorror extends CardImpl {
this.toughness = new MageInt(3);
// When you cast a creature spell, sacrifice Skittering Horror.
- this.addAbility(new SpellCastControllerTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false));
+ this.addAbility(new SpellCastControllerTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false)
+ .setTriggerPhrase("When you cast a creature spell, "));
}
private SkitteringHorror(final SkitteringHorror card) {
diff --git a/Mage.Sets/src/mage/cards/s/SlagFiend.java b/Mage.Sets/src/mage/cards/s/SlagFiend.java
index 922d314d41c..bb49df1c5bd 100644
--- a/Mage.Sets/src/mage/cards/s/SlagFiend.java
+++ b/Mage.Sets/src/mage/cards/s/SlagFiend.java
@@ -27,7 +27,8 @@ public final class SlagFiend extends CardImpl {
this.power = new MageInt(0);
this.toughness = new MageInt(0);
- this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new CardsInAllGraveyardsCount(new FilterArtifactCard("artifacts")))));
+ this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(
+ new CardsInAllGraveyardsCount(new FilterArtifactCard("artifact cards")))));
}
private SlagFiend(final SlagFiend card) {
@@ -38,4 +39,4 @@ public final class SlagFiend extends CardImpl {
public SlagFiend copy() {
return new SlagFiend(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SorcerousSight.java b/Mage.Sets/src/mage/cards/s/SorcerousSight.java
index d368d5d452a..0121b65b047 100644
--- a/Mage.Sets/src/mage/cards/s/SorcerousSight.java
+++ b/Mage.Sets/src/mage/cards/s/SorcerousSight.java
@@ -26,7 +26,7 @@ public final class SorcerousSight extends CardImpl {
this.getSpellAbility().addTarget(new TargetOpponent());
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private SorcerousSight(final SorcerousSight card) {
diff --git a/Mage.Sets/src/mage/cards/s/SoulTithe.java b/Mage.Sets/src/mage/cards/s/SoulTithe.java
index e8a6d308a1c..368d3a16417 100644
--- a/Mage.Sets/src/mage/cards/s/SoulTithe.java
+++ b/Mage.Sets/src/mage/cards/s/SoulTithe.java
@@ -8,10 +8,7 @@ import mage.abilities.effects.common.AttachEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.TargetController;
+import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -26,8 +23,6 @@ import java.util.UUID;
*/
public final class SoulTithe extends CardImpl {
- static final String rule = "At the beginning of the upkeep of enchanted permanent's controller, that player sacrifices it unless they pay {X}, where X is its mana value";
-
public SoulTithe(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
this.subtype.add(SubType.AURA);
@@ -42,7 +37,8 @@ public final class SoulTithe extends CardImpl {
// At the beginning of the upkeep of enchanted permanent's controller,
// that player sacrifices it unless they pay {X},
// where X is its converted mana cost.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SoulTitheEffect(), TargetController.CONTROLLER_ATTACHED_TO, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SoulTitheEffect(), TargetController.CONTROLLER_ATTACHED_TO, false)
+ .setTriggerPhrase("At the beginning of the upkeep of enchanted permanent's controller, "));
}
private SoulTithe(final SoulTithe card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpiritAway.java b/Mage.Sets/src/mage/cards/s/SpiritAway.java
index bf3444f87d0..3e5f5137231 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritAway.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritAway.java
@@ -24,7 +24,6 @@ import mage.target.common.TargetCreaturePermanent;
/**
*
* @author noxx
-
*/
public final class SpiritAway extends CardImpl {
@@ -41,11 +40,11 @@ public final class SpiritAway extends CardImpl {
this.addAbility(ability);
// You control enchanted creature.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect()));
+ this.addAbility(new SimpleStaticAbility(new ControlEnchantedEffect()));
// Enchanted creature gets +2/+2 and has flying.
- SimpleStaticAbility ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
- ability2.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA));
+ SimpleStaticAbility ability2 = new SimpleStaticAbility(new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
+ ability2.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA).setText("and has flying"));
this.addAbility(ability2);
}
diff --git a/Mage.Sets/src/mage/cards/s/SpyNetwork.java b/Mage.Sets/src/mage/cards/s/SpyNetwork.java
index 4be5d8353fd..03ad1e60c11 100644
--- a/Mage.Sets/src/mage/cards/s/SpyNetwork.java
+++ b/Mage.Sets/src/mage/cards/s/SpyNetwork.java
@@ -33,7 +33,7 @@ public final class SpyNetwork extends CardImpl {
// Look at target player's hand, the top card of that player's library, and any face-down creatures they control. Look at the top four cards of your library, then put them back in any order.
this.getSpellAbility().addEffect(new SpyNetworkLookAtTargetPlayerHandEffect());
- this.getSpellAbility().addEffect(new LookLibraryTopCardTargetPlayerEffect().setText(" the top card of that player's library"));
+ this.getSpellAbility().addEffect(new LookLibraryTopCardTargetPlayerEffect().setText(" the top card of that player's library,"));
this.getSpellAbility().addEffect(new SpyNetworkFaceDownEffect());
this.getSpellAbility().addEffect(new LookLibraryControllerEffect(4));
this.getSpellAbility().addTarget(new TargetPlayer());
diff --git a/Mage.Sets/src/mage/cards/s/Subdue.java b/Mage.Sets/src/mage/cards/s/Subdue.java
index d66fd744b83..7c8364d3d70 100644
--- a/Mage.Sets/src/mage/cards/s/Subdue.java
+++ b/Mage.Sets/src/mage/cards/s/Subdue.java
@@ -22,7 +22,8 @@ public final class Subdue extends CardImpl {
// Prevent all combat damage that would be dealt by target creature this turn. That creature gets +0/+X until end of turn, where X is its converted mana cost.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true));
+ this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true)
+ .setText("prevent all combat damage that would be dealt by target creature this turn"));
this.getSpellAbility().addEffect(new BoostTargetEffect(StaticValue.get(0), TargetManaValue.instance, Duration.EndOfTurn)
.setText("That creature gets +0/+X until end of turn, where X is its mana value"));
}
diff --git a/Mage.Sets/src/mage/cards/t/ThranPowerSuit.java b/Mage.Sets/src/mage/cards/t/ThranPowerSuit.java
index 9b1e79e1b04..1522f930017 100644
--- a/Mage.Sets/src/mage/cards/t/ThranPowerSuit.java
+++ b/Mage.Sets/src/mage/cards/t/ThranPowerSuit.java
@@ -36,7 +36,7 @@ public final class ThranPowerSuit extends CardImpl {
));
ability.addEffect(new GainAbilityAttachedEffect(new WardAbility(
new GenericManaCost(2), false
- ), AttachmentType.EQUIPMENT).setText("and has ward {2} (Whenever equipped creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.)"));
+ ), AttachmentType.EQUIPMENT).setText("and has ward {2}. (Whenever equipped creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.)"));
this.addAbility(ability);
// Equip {2}
diff --git a/Mage.Sets/src/mage/cards/t/TithebearerGiant.java b/Mage.Sets/src/mage/cards/t/TithebearerGiant.java
index b3ba27a062d..b595d69af8c 100644
--- a/Mage.Sets/src/mage/cards/t/TithebearerGiant.java
+++ b/Mage.Sets/src/mage/cards/t/TithebearerGiant.java
@@ -27,7 +27,7 @@ public final class TithebearerGiant extends CardImpl {
// When Tithebearer Giant enters the battlefield, you draw a card and you lose 1 life.
Ability ability = new EntersBattlefieldTriggeredAbility(
- new DrawCardSourceControllerEffect(1), false
+ new DrawCardSourceControllerEffect(1, "you"), false
);
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/TreetopDefense.java b/Mage.Sets/src/mage/cards/t/TreetopDefense.java
index 0dd06d490c7..8c23a2e0181 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopDefense.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopDefense.java
@@ -13,6 +13,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.PhaseStep;
import mage.constants.TurnPhase;
+import mage.filter.StaticFilters;
import mage.watchers.common.PlayerAttackedStepWatcher;
/**
@@ -33,7 +34,7 @@ public final class TreetopDefense extends CardImpl {
this.addAbility(ability);
// Creatures you control gain reach until end of turn.
- this.getSpellAbility().addEffect(new GainAbilityControlledEffect(ReachAbility.getInstance(), Duration.EndOfTurn));
+ this.getSpellAbility().addEffect(new GainAbilityControlledEffect(ReachAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
}
private TreetopDefense(final TreetopDefense card) {
diff --git a/Mage.Sets/src/mage/cards/v/Vertigo.java b/Mage.Sets/src/mage/cards/v/Vertigo.java
index 87c02057b0e..37d06241451 100644
--- a/Mage.Sets/src/mage/cards/v/Vertigo.java
+++ b/Mage.Sets/src/mage/cards/v/Vertigo.java
@@ -31,7 +31,8 @@ public final class Vertigo extends CardImpl {
// Vertigo deals 2 damage to target creature with flying. That creature loses flying until end of turn.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
- this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
+ this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)
+ .setText("That creature loses flying until end of turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
}
diff --git a/Mage.Sets/src/mage/cards/w/WaveElemental.java b/Mage.Sets/src/mage/cards/w/WaveElemental.java
index 6d99291d93d..45d4f6c1ad7 100644
--- a/Mage.Sets/src/mage/cards/w/WaveElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WaveElemental.java
@@ -42,7 +42,7 @@ public final class WaveElemental extends CardImpl {
Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{U}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
- ability.addTarget(new TargetPermanent(0, 4, filter, false));
+ ability.addTarget(new TargetPermanent(0, 3, filter, false));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLies.java b/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
index bb95c0b7c36..804ee6924b4 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfLies.java
@@ -67,7 +67,7 @@ class WeaverOfLiesEffect extends OneShotEffect {
WeaverOfLiesEffect() {
super(Outcome.Benefit);
- this.staticText = "turn any number of target creatures with a morph ability other than {this} face down";
+ this.staticText = "turn any number of target creatures with morph abilities other than {this} face down";
}
WeaverOfLiesEffect(final WeaverOfLiesEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/y/YusriFortunesFlame.java b/Mage.Sets/src/mage/cards/y/YusriFortunesFlame.java
index d2ef7227aab..84fe2942424 100644
--- a/Mage.Sets/src/mage/cards/y/YusriFortunesFlame.java
+++ b/Mage.Sets/src/mage/cards/y/YusriFortunesFlame.java
@@ -50,7 +50,7 @@ class YusriFortunesFlameEffect extends OneShotEffect {
YusriFortunesFlameEffect() {
super(Outcome.Benefit);
staticText = "choose a number between 1 and 5. Flip that many coins. For each flip you win, draw a card. " +
- "For each flip you lose, {this} deals 2 damage to you. You you won five flips this way, " +
+ "For each flip you lose, {this} deals 2 damage to you. If you won five flips this way, " +
"you may cast spells from your hand this turn without paying their mana costs";
}
diff --git a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
index 27a4039d40b..b3c90eb9b35 100644
--- a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
+++ b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java
@@ -59,7 +59,7 @@ class ZirilanOfTheClawEffect extends OneShotEffect {
public ZirilanOfTheClawEffect() {
super(Outcome.PutCreatureInPlay);
- this.staticText = "Search your library for a Dragon permanent card and put that card onto the battlefield. Then shuffle."
+ this.staticText = "Search your library for a Dragon permanent card, put that card onto the battlefield, then shuffle."
+ " That Dragon gains haste until end of turn. Exile it at the beginning of the next end step";
}
diff --git a/Mage.Sets/src/mage/cards/z/ZursWeirding.java b/Mage.Sets/src/mage/cards/z/ZursWeirding.java
index 9b0b35c5ee0..3a922790a38 100644
--- a/Mage.Sets/src/mage/cards/z/ZursWeirding.java
+++ b/Mage.Sets/src/mage/cards/z/ZursWeirding.java
@@ -46,7 +46,7 @@ class ZursWeirdingReplacementEffect extends ReplacementEffectImpl {
ZursWeirdingReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Neutral);
- this.staticText = "If a player would draw a card, they reveal it instead." +
+ this.staticText = "If a player would draw a card, they reveal it instead. " +
"Then any other player may pay 2 life. If a player does, " +
"put that card into its owner's graveyard. Otherwise, that player draws a card.";
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/LookAtTargetPlayerHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LookAtTargetPlayerHandEffect.java
index 6d3e191da93..ccc21d321ef 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/LookAtTargetPlayerHandEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/LookAtTargetPlayerHandEffect.java
@@ -16,7 +16,7 @@ public class LookAtTargetPlayerHandEffect extends OneShotEffect {
public LookAtTargetPlayerHandEffect() {
super(Outcome.Benefit);
- this.staticText = "Look at target player's hand";
+ this.staticText = "look at target player's hand";
}
public LookAtTargetPlayerHandEffect(final LookAtTargetPlayerHandEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
index 1a7bf8c0ef7..10527902be5 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
@@ -41,6 +41,6 @@ public class TurnFaceUpTargetEffect extends OneShotEffect {
@Override
public String getText(Mode mode) {
- return "turn target " + mode.getTargets().get(0).getTargetName() + " face-up";
+ return "turn target " + mode.getTargets().get(0).getTargetName() + " face up";
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java
index ca807c9fe84..74276fd0be0 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java
@@ -20,6 +20,7 @@ public class CantBeBlockedByCreaturesAllEffect extends RestrictionEffect {
this.filterCreatures = filterCreatures;
this.filterBlockedBy = filterBlockedBy;
staticText = filterCreatures.getMessage() + " can't be blocked "
+ + (duration == Duration.EndOfTurn ? "this turn " : "")
+ (filterBlockedBy.getMessage().startsWith("except by") ? "" : "by ")
+ filterBlockedBy.getMessage();
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java
index e7208691fa0..4f044a6bf59 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java
@@ -121,7 +121,7 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl {
private void setText() {
StringBuilder sb = new StringBuilder();
if (excludeSource) {
- sb.append("Other ");
+ sb.append("other ");
}
String gainedAbility = ability.getRule();
sb.append(filter.getMessage()).append(" you control ");
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java
index 2a6aeb22d7c..848288e02e0 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java
@@ -35,7 +35,8 @@ public class GainAbilitySourceEffect extends ContinuousEffectImpl {
public GainAbilitySourceEffect(Ability ability, Duration duration, boolean onCard) {
this(ability, duration, onCard, false);
- staticText = "{this} gains " + ability.getRule() + ' ' + duration.toString();
+ staticText = "{this} gains " + ability.getRule()
+ + (duration.toString().isEmpty() ? "" : ' ' + duration.toString());
}
public GainAbilitySourceEffect(Ability ability, Duration duration, boolean onCard, boolean noStaticText) {