diff --git a/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java b/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
index 5f986c84952..7e97709e670 100644
--- a/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
+++ b/Mage.Sets/src/mage/cards/a/AkoumBoulderfoot.java
@@ -27,7 +27,7 @@ public final class AkoumBoulderfoot extends CardImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(5);
- Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(1), false);
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(1, "it"), false);
Target target = new TargetAnyTarget();
ability.addTarget(target);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AngelheartVial.java b/Mage.Sets/src/mage/cards/a/AngelheartVial.java
index e3dd5ea119e..eae17868045 100644
--- a/Mage.Sets/src/mage/cards/a/AngelheartVial.java
+++ b/Mage.Sets/src/mage/cards/a/AngelheartVial.java
@@ -37,7 +37,7 @@ public final class AngelheartVial extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new RemoveCountersSourceCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(4))));
- ability.addEffect(new DrawCardSourceControllerEffect(1));
+ ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);
}
@@ -82,7 +82,7 @@ class AngelheartVialTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever you are dealt damage, you may put that many charge counters on {this}.";
+ return "Whenever you're dealt damage, you may put that many charge counters on {this}.";
}
}
diff --git a/Mage.Sets/src/mage/cards/a/AuraFinesse.java b/Mage.Sets/src/mage/cards/a/AuraFinesse.java
index 6322a94a769..2494b9a8303 100644
--- a/Mage.Sets/src/mage/cards/a/AuraFinesse.java
+++ b/Mage.Sets/src/mage/cards/a/AuraFinesse.java
@@ -41,7 +41,7 @@ public final class AuraFinesse extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent(filter));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private AuraFinesse(final AuraFinesse card) {
diff --git a/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java b/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
index d7eaa877878..78e904835cb 100644
--- a/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
+++ b/Mage.Sets/src/mage/cards/b/BloodriteInvoker.java
@@ -29,7 +29,7 @@ public final class BloodriteInvoker extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(1);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(3), new GenericManaCost(8));
- ability.addEffect(new GainLifeEffect(3));
+ ability.addEffect(new GainLifeEffect(3).concatBy("and"));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/Bramblesnap.java b/Mage.Sets/src/mage/cards/b/Bramblesnap.java
index 94ce24eab1d..a9a4a40b2b4 100644
--- a/Mage.Sets/src/mage/cards/b/Bramblesnap.java
+++ b/Mage.Sets/src/mage/cards/b/Bramblesnap.java
@@ -1,7 +1,5 @@
-
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapTargetCost;
@@ -13,16 +11,27 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetControlledPermanent;
+
+import java.util.UUID;
/**
- *
* @author North
*/
public final class Bramblesnap extends CardImpl {
+ private static final FilterControlledPermanent filter
+ = new FilterControlledCreaturePermanent("untapped creature you control");
+
+ static {
+ filter.add(TappedPredicate.UNTAPPED);
+ }
+
public Bramblesnap(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.ELEMENTAL);
this.power = new MageInt(1);
@@ -31,7 +40,7 @@ public final class Bramblesnap extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BoostSourceEffect(1, 1, Duration.EndOfTurn),
- new TapTargetCost(new TargetControlledCreaturePermanent())));
+ new TapTargetCost(new TargetControlledPermanent(filter))));
}
private Bramblesnap(final Bramblesnap card) {
diff --git a/Mage.Sets/src/mage/cards/c/CadaverImp.java b/Mage.Sets/src/mage/cards/c/CadaverImp.java
index afd2a85f3c7..2d833bb8e4b 100644
--- a/Mage.Sets/src/mage/cards/c/CadaverImp.java
+++ b/Mage.Sets/src/mage/cards/c/CadaverImp.java
@@ -1,11 +1,9 @@
-
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -14,8 +12,9 @@ import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInYourGraveyard;
+import java.util.UUID;
+
/**
- *
* @author North
*/
public final class CadaverImp extends CardImpl {
@@ -31,10 +30,9 @@ public final class CadaverImp extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Cadaver Imp enters the battlefield, you may return target creature card from your graveyard to your hand.
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true);
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(ability);
-
}
private CadaverImp(final CadaverImp card) {
diff --git a/Mage.Sets/src/mage/cards/d/DeathCultist.java b/Mage.Sets/src/mage/cards/d/DeathCultist.java
index 3b5be9709b2..e0ff79c3dd6 100644
--- a/Mage.Sets/src/mage/cards/d/DeathCultist.java
+++ b/Mage.Sets/src/mage/cards/d/DeathCultist.java
@@ -31,7 +31,7 @@ public final class DeathCultist extends CardImpl {
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new LoseLifeTargetEffect(1),
new SacrificeSourceCost());
- ability.addEffect(new GainLifeEffect(1));
+ ability.addEffect(new GainLifeEffect(1).concatBy("and"));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DeathlessAngel.java b/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
index 5565a995682..e4c85490ed6 100644
--- a/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
+++ b/Mage.Sets/src/mage/cards/d/DeathlessAngel.java
@@ -35,7 +35,7 @@ public final class DeathlessAngel extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// {W}{W}: Target creature is indestructible this turn.
- Effect effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, "Target creature is indestructible this turn");
+ Effect effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
effect, new ManaCostsImpl("{W}{W}"));
ability.addTarget(new TargetCreaturePermanent());
diff --git a/Mage.Sets/src/mage/cards/d/DormantGomazoa.java b/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
index b5b09287d7c..a1e3732b1c1 100644
--- a/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
+++ b/Mage.Sets/src/mage/cards/d/DormantGomazoa.java
@@ -37,7 +37,7 @@ public final class DormantGomazoa extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever you become the target of a spell, you may untap Dormant Gomazoa.
- this.addAbility(new BecomesTargetControllerSpellTriggeredAbility(new UntapSourceEffect(), true));
+ this.addAbility(new BecomesTargetControllerSpellTriggeredAbility(new UntapSourceEffect(), true).setTriggerPhrase("Whenever you become the target of a spell, "));
}
private DormantGomazoa(final DormantGomazoa card) {
diff --git a/Mage.Sets/src/mage/cards/d/DrakeUmbra.java b/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
index 3e2dc1835e7..4b55be6cdd3 100644
--- a/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
+++ b/Mage.Sets/src/mage/cards/d/DrakeUmbra.java
@@ -1,8 +1,5 @@
-
package mage.cards.d;
-import java.util.UUID;
-
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
@@ -17,6 +14,8 @@ import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
* @author Loki
*/
@@ -31,12 +30,16 @@ public final class DrakeUmbra extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature gets +3/+3 and has flying.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)));
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
+ 3, 3, Duration.WhileOnBattlefield
+ ));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ FlyingAbility.getInstance(), AttachmentType.AURA
+ ).setText("and has flying"));
+ this.addAbility(ability);
// Totem armor
this.addAbility(new TotemArmorAbility());
diff --git a/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java b/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
index 72334b9d248..1b42a541415 100644
--- a/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
+++ b/Mage.Sets/src/mage/cards/d/DranaKalastriaBloodchief.java
@@ -38,7 +38,7 @@ public final class DranaKalastriaBloodchief extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(StaticValue.get(0), new SignInversionDynamicValue(ManacostVariableValue.REGULAR), Duration.EndOfTurn), new ManaCostsImpl("{X}{B}{B}"));
- ability.addEffect(new BoostSourceEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn));
+ ability.addEffect(new BoostSourceEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn).concatBy("and"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/e/EscapedNull.java b/Mage.Sets/src/mage/cards/e/EscapedNull.java
index 228027ebc63..ad1ad8718dc 100644
--- a/Mage.Sets/src/mage/cards/e/EscapedNull.java
+++ b/Mage.Sets/src/mage/cards/e/EscapedNull.java
@@ -27,7 +27,7 @@ public final class EscapedNull extends CardImpl {
this.toughness = new MageInt(2);
this.addAbility(LifelinkAbility.getInstance());
- this.addAbility(new BlocksOrBecomesBlockedSourceTriggeredAbility(new BoostSourceEffect(5, 0, Duration.EndOfTurn), false));
+ this.addAbility(new BlocksOrBecomesBlockedSourceTriggeredAbility(new BoostSourceEffect(5, 0, Duration.EndOfTurn).setText("it gets +5/+0 until end of turn"), false, false));
}
private EscapedNull(final EscapedNull card) {
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFeed.java b/Mage.Sets/src/mage/cards/e/EssenceFeed.java
index c37b63206a3..d51535d4c97 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFeed.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFeed.java
@@ -23,7 +23,7 @@ public final class EssenceFeed extends CardImpl {
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3));
this.getSpellAbility().addEffect(new GainLifeEffect(3));
- this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 3));
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 3).concatBy("and"));
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java b/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
index 18e05135393..a6042817a77 100644
--- a/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
+++ b/Mage.Sets/src/mage/cards/e/ExplosiveRevelation.java
@@ -45,7 +45,7 @@ class ExplosiveRevelationEffect extends OneShotEffect {
public ExplosiveRevelationEffect() {
super(Outcome.DrawCard);
- this.staticText = "Choose any target. Reveal cards from the top of your library until you reveal a nonland card, {this} deals damage equal to that card's mana value to that permanent or player. Put the nonland card into your hand and the rest on the bottom of your library in any order";
+ this.staticText = "Choose any target. Reveal cards from the top of your library until you reveal a nonland card. {this} deals damage equal to that card's mana value to that permanent or player. Put the nonland card into your hand and the rest on the bottom of your library in any order";
}
public ExplosiveRevelationEffect(final ExplosiveRevelationEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/f/FleetingDistraction.java b/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
index 212f6e26899..31374f04c17 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingDistraction.java
@@ -21,7 +21,7 @@ public final class FleetingDistraction extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
this.getSpellAbility().addEffect(new BoostTargetEffect(-1, 0, Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java b/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
index 7c73994e83a..71cc4f55c66 100644
--- a/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
+++ b/Mage.Sets/src/mage/cards/f/FrostwindInvoker.java
@@ -1,7 +1,5 @@
-
package mage.cards.f;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -10,18 +8,19 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
-import mage.constants.Zone;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author North
*/
public final class FrostwindInvoker extends CardImpl {
public FrostwindInvoker(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
this.subtype.add(SubType.MERFOLK);
this.subtype.add(SubType.WIZARD);
@@ -29,7 +28,10 @@ public final class FrostwindInvoker extends CardImpl {
this.toughness = new MageInt(3);
this.addAbility(FlyingAbility.getInstance());
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{8}")));
+ this.addAbility(new SimpleActivatedAbility(new GainAbilityControlledEffect(
+ FlyingAbility.getInstance(), Duration.EndOfTurn,
+ StaticFilters.FILTER_PERMANENT_CREATURES
+ ), new ManaCostsImpl<>("{8}")));
}
private FrostwindInvoker(final FrostwindInvoker card) {
@@ -41,4 +43,3 @@ public final class FrostwindInvoker extends CardImpl {
return new FrostwindInvoker(this);
}
}
-
diff --git a/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java b/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
index a91653ef4d6..67c29b1c27f 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfEmrakul.java
@@ -20,7 +20,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class HandOfEmrakul extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("four Eldrazi Spawn");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Eldrazi Spawn");
static {
filter.add(new NamePredicate("Eldrazi Spawn"));
diff --git a/Mage.Sets/src/mage/cards/h/HyenaUmbra.java b/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
index 1edc60af013..f85d2b92bb8 100644
--- a/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
+++ b/Mage.Sets/src/mage/cards/h/HyenaUmbra.java
@@ -1,7 +1,5 @@
-
package mage.cards.h;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
@@ -16,26 +14,32 @@ import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author Loki
*/
public final class HyenaUmbra extends CardImpl {
public HyenaUmbra(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
+
// Enchanted creature gets +1/+1 and has first strike.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA)));
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
+ 1, 1, Duration.WhileOnBattlefield
+ ));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ FirstStrikeAbility.getInstance(), AttachmentType.AURA
+ ).setText("and has first strike"));
+ this.addAbility(ability);
+
// Totem armor
this.addAbility(new TotemArmorAbility());
}
diff --git a/Mage.Sets/src/mage/cards/i/InduceDespair.java b/Mage.Sets/src/mage/cards/i/InduceDespair.java
index 2b87a2c8ed6..9985b23a42a 100644
--- a/Mage.Sets/src/mage/cards/i/InduceDespair.java
+++ b/Mage.Sets/src/mage/cards/i/InduceDespair.java
@@ -25,7 +25,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class InduceDespair extends CardImpl {
- private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your hand");
+ private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card from your hand");
public InduceDespair(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
diff --git a/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java b/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
index dd7304c09f3..a1448b907f0 100644
--- a/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
+++ b/Mage.Sets/src/mage/cards/i/IrresistiblePrey.java
@@ -24,7 +24,7 @@ public final class IrresistiblePrey extends CardImpl {
// Draw a card.
this.getSpellAbility().addEffect(new MustBeBlockedByAtLeastOneTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private IrresistiblePrey(final IrresistiblePrey card) {
diff --git a/Mage.Sets/src/mage/cards/i/ItThatBetrays.java b/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
index 1ae54306a7e..866c8b2165c 100644
--- a/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
+++ b/Mage.Sets/src/mage/cards/i/ItThatBetrays.java
@@ -1,7 +1,5 @@
-
package mage.cards.i;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.OpponentSacrificesNonTokenPermanentTriggeredAbility;
import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect;
@@ -13,8 +11,9 @@ import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.TokenPredicate;
+import java.util.UUID;
+
/**
- *
* @author jeffwadsworth
*/
public final class ItThatBetrays extends CardImpl {
@@ -26,7 +25,7 @@ public final class ItThatBetrays extends CardImpl {
}
public ItThatBetrays(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{12}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{12}");
this.subtype.add(SubType.ELDRAZI);
this.power = new MageInt(11);
@@ -36,7 +35,10 @@ public final class ItThatBetrays extends CardImpl {
this.addAbility(new AnnihilatorAbility(2));
// Whenever an opponent sacrifices a nontoken permanent, put that card onto the battlefield under your control.
- this.addAbility(new OpponentSacrificesNonTokenPermanentTriggeredAbility(new ReturnToBattlefieldUnderYourControlTargetEffect()));
+ this.addAbility(new OpponentSacrificesNonTokenPermanentTriggeredAbility(
+ new ReturnToBattlefieldUnderYourControlTargetEffect()
+ .setText("put that card onto the battlefield under your control")
+ ));
}
private ItThatBetrays(final ItThatBetrays card) {
@@ -47,5 +49,4 @@ public final class ItThatBetrays extends CardImpl {
public ItThatBetrays copy() {
return new ItThatBetrays(this);
}
-
}
diff --git a/Mage.Sets/src/mage/cards/k/KabiraVindicator.java b/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
index 40ea1119063..3f714f6aa36 100644
--- a/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
+++ b/Mage.Sets/src/mage/cards/k/KabiraVindicator.java
@@ -37,10 +37,10 @@ public final class KabiraVindicator extends LevelerCard {
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}{W}")));
Abilities abilities1 = new AbilitiesImpl<>();
- abilities1.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, true)));
+ abilities1.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, true)));
Abilities abilities2 = new AbilitiesImpl<>();
- abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, true)));
+ abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, true)));
this.addAbilities(LevelerCardBuilder.construct(
new LevelerCardBuilder.LevelAbility(2, 4, abilities1, 3, 6),
diff --git a/Mage.Sets/src/mage/cards/l/LastKiss.java b/Mage.Sets/src/mage/cards/l/LastKiss.java
index d6a5cac4f01..061cf0288ba 100644
--- a/Mage.Sets/src/mage/cards/l/LastKiss.java
+++ b/Mage.Sets/src/mage/cards/l/LastKiss.java
@@ -20,7 +20,7 @@ public final class LastKiss extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
- this.getSpellAbility().addEffect(new GainLifeEffect(2));
+ this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/l/LivingDestiny.java b/Mage.Sets/src/mage/cards/l/LivingDestiny.java
index 09879698dba..c07c1ed96e1 100644
--- a/Mage.Sets/src/mage/cards/l/LivingDestiny.java
+++ b/Mage.Sets/src/mage/cards/l/LivingDestiny.java
@@ -1,7 +1,5 @@
-
package mage.cards.l;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.OneShotEffect;
@@ -9,25 +7,28 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
+import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInHand;
+import java.util.UUID;
+
/**
- *
* @author jeffwadsworth
*/
public final class LivingDestiny extends CardImpl {
- public LivingDestiny(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
+ private static final FilterCard filter = new FilterCreatureCard("a creature card from your hand");
+ public LivingDestiny(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
// As an additional cost to cast Living Destiny, reveal a creature card from your hand.
- TargetCardInHand targetCard = new TargetCardInHand(new FilterCreatureCard("a creature card"));
+ TargetCardInHand targetCard = new TargetCardInHand(filter);
this.getSpellAbility().addCost(new RevealTargetFromHandCost(targetCard));
-
+
// You gain life equal to the revealed card's converted mana cost.
this.getSpellAbility().addEffect(new LivingDestinyEffect());
}
@@ -46,7 +47,7 @@ class LivingDestinyEffect extends OneShotEffect {
public LivingDestinyEffect() {
super(Outcome.GainLife);
- staticText = "You gain life equal to its mana value";
+ staticText = "You gain life equal to the revealed card's mana value";
}
public LivingDestinyEffect(LivingDestinyEffect effect) {
@@ -70,5 +71,4 @@ class LivingDestinyEffect extends OneShotEffect {
public LivingDestinyEffect copy() {
return new LivingDestinyEffect(this);
}
-
}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/m/MammothUmbra.java b/Mage.Sets/src/mage/cards/m/MammothUmbra.java
index 48733925860..ed7a4331739 100644
--- a/Mage.Sets/src/mage/cards/m/MammothUmbra.java
+++ b/Mage.Sets/src/mage/cards/m/MammothUmbra.java
@@ -1,8 +1,5 @@
-
package mage.cards.m;
-import java.util.UUID;
-
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
@@ -17,6 +14,8 @@ import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
* @author Loki
*/
@@ -26,17 +25,20 @@ public final class MammothUmbra extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature gets +3/+3 and has vigilance.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA)));
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
+ 3, 3, Duration.WhileOnBattlefield
+ ));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ VigilanceAbility.getInstance(), AttachmentType.AURA
+ ).setText("and has vigilance"));
+ this.addAbility(ability);
// Totem armor
this.addAbility(new TotemArmorAbility());
diff --git a/Mage.Sets/src/mage/cards/m/MnemonicWall.java b/Mage.Sets/src/mage/cards/m/MnemonicWall.java
index 921837e17af..f78b5a7b6f2 100644
--- a/Mage.Sets/src/mage/cards/m/MnemonicWall.java
+++ b/Mage.Sets/src/mage/cards/m/MnemonicWall.java
@@ -1,11 +1,9 @@
-
package mage.cards.m;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -15,8 +13,9 @@ import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetCardInYourGraveyard;
+import java.util.UUID;
+
/**
- *
* @author North
*/
public final class MnemonicWall extends CardImpl {
@@ -30,14 +29,14 @@ public final class MnemonicWall extends CardImpl {
}
public MnemonicWall(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
this.subtype.add(SubType.WALL);
this.power = new MageInt(0);
this.toughness = new MageInt(4);
this.addAbility(DefenderAbility.getInstance());
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true);
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true);
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/n/Nighthaze.java b/Mage.Sets/src/mage/cards/n/Nighthaze.java
index 7be5e8daade..3fcf36ad2ec 100644
--- a/Mage.Sets/src/mage/cards/n/Nighthaze.java
+++ b/Mage.Sets/src/mage/cards/n/Nighthaze.java
@@ -22,7 +22,7 @@ public final class Nighthaze extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(new SwampwalkAbility(), Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java b/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
index 3aab19dda54..3d0631eb238 100644
--- a/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
+++ b/Mage.Sets/src/mage/cards/p/PhantasmalAbomination.java
@@ -25,7 +25,7 @@ public final class PhantasmalAbomination extends CardImpl {
this.toughness = new MageInt(5);
this.addAbility(DefenderAbility.getInstance());
- this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
+ this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect().setText("sacrifice it")));
}
private PhantasmalAbomination(final PhantasmalAbomination card) {
diff --git a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
index 0a1699fa1af..2cc0f37972a 100644
--- a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
+++ b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java
@@ -45,7 +45,7 @@ class RealmsUnchartedEffect extends OneShotEffect {
public RealmsUnchartedEffect() {
super(Outcome.DrawCard);
- this.staticText = "Search your library for four land cards with different names and reveal them. An opponent chooses two of those cards. Put the chosen cards into your graveyard and the rest into your hand. Then shuffle";
+ this.staticText = "Search your library for up to four land cards with different names and reveal them. An opponent chooses two of those cards. Put the chosen cards into your graveyard and the rest into your hand. Then shuffle";
}
public RealmsUnchartedEffect(final RealmsUnchartedEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java b/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
index e64dc813215..8a0716ac12b 100644
--- a/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
+++ b/Mage.Sets/src/mage/cards/r/RepelTheDarkness.java
@@ -20,7 +20,7 @@ public final class RepelTheDarkness extends CardImpl {
this.getSpellAbility().addEffect(new TapTargetEffect());
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
}
diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java b/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
index 103534a8011..caadfbe9c63 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxOfMagosi.java
@@ -31,7 +31,7 @@ public final class SphinxOfMagosi extends CardImpl {
this.toughness = new MageInt(6);
this.addAbility(FlyingAbility.getInstance());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{2}{U}"));
- ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
+ ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).concatBy(", then"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SpiderUmbra.java b/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
index e231e773a53..450a8efac39 100644
--- a/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
+++ b/Mage.Sets/src/mage/cards/s/SpiderUmbra.java
@@ -1,7 +1,5 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
@@ -16,26 +14,31 @@ import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author Loki
*/
public final class SpiderUmbra extends CardImpl {
public SpiderUmbra(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget.getTargetName());
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
+
// Enchanted creature gets +1/+1 and has reach.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA)));
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
+ 1, 1, Duration.WhileOnBattlefield
+ ));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ ReachAbility.getInstance(), AttachmentType.AURA
+ ).setText("and has reach"));
+ this.addAbility(ability);
this.addAbility(new TotemArmorAbility());
}
diff --git a/Mage.Sets/src/mage/cards/s/SplinterTwin.java b/Mage.Sets/src/mage/cards/s/SplinterTwin.java
index 584ff927417..0871fffdbc5 100644
--- a/Mage.Sets/src/mage/cards/s/SplinterTwin.java
+++ b/Mage.Sets/src/mage/cards/s/SplinterTwin.java
@@ -62,7 +62,7 @@ class SplinterTwinEffect extends OneShotEffect {
public SplinterTwinEffect() {
super(Outcome.PutCreatureInPlay);
- this.staticText = "Create a token that's a copy of this creature, except it has haste. Exile it at the beginning of the next end step";
+ this.staticText = "Create a token that's a copy of this creature, except it has haste. Exile that token at the beginning of the next end step";
}
public SplinterTwinEffect(final SplinterTwinEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java b/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
index 1245387b2e0..565f3f85ad8 100644
--- a/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
+++ b/Mage.Sets/src/mage/cards/s/StalwartShieldBearers.java
@@ -1,34 +1,34 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.common.continuous.BoostControlledEffect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
-import mage.constants.Zone;
+import mage.constants.SubType;
+import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
+import java.util.UUID;
+
/**
- *
* @author North
*/
public final class StalwartShieldBearers extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control with defender");
static {
+ filter.add(TargetController.YOU.getControllerPredicate());
filter.add(new AbilityPredicate(DefenderAbility.class));
}
public StalwartShieldBearers(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
@@ -36,7 +36,9 @@ public final class StalwartShieldBearers extends CardImpl {
this.toughness = new MageInt(3);
this.addAbility(DefenderAbility.getInstance());
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter, true)));
+ this.addAbility(new SimpleStaticAbility(new BoostAllEffect(
+ 0, 2, Duration.WhileOnBattlefield, filter, true
+ )));
}
private StalwartShieldBearers(final StalwartShieldBearers card) {
diff --git a/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java b/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
index 7d5321e5804..dcc56ab0ba4 100644
--- a/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
+++ b/Mage.Sets/src/mage/cards/s/SurrakarSpellblade.java
@@ -1,7 +1,5 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
@@ -13,35 +11,32 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.FilterSpell;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author jeffwadsworth
*/
public final class SurrakarSpellblade extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("instant or sorcery card");
-
- static {
- filter.add(Predicates.or(
- CardType.INSTANT.getPredicate(),
- CardType.SORCERY.getPredicate()));
- }
-
public SurrakarSpellblade(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
this.subtype.add(SubType.SURRAKAR);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Whenever you cast an instant or sorcery spell, you may put a charge counter on Surrakar Spellblade.
- this.addAbility(new SpellCastControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), filter, true));
+ this.addAbility(new SpellCastControllerTriggeredAbility(
+ new AddCountersSourceEffect(CounterType.CHARGE.createInstance()),
+ StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, true
+ ));
// Whenever Surrakar Spellblade deals combat damage to a player, you may draw X cards, where X is the number of charge counters on it.
- this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.CHARGE)), true));
+ this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(
+ new CountersSourceCount(CounterType.CHARGE)
+ ).setText("draw X cards, where X is the number of charge counters on it"), true));
}
private SurrakarSpellblade(final SurrakarSpellblade card) {
diff --git a/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java b/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
index 133b92453d3..c6e9cf89415 100644
--- a/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
+++ b/Mage.Sets/src/mage/cards/t/TimeOfHeroes.java
@@ -17,7 +17,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class TimeOfHeroes extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control with a level counter");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature you control with a level counter on it");
static {
filter.add(TargetController.YOU.getControllerPredicate());
diff --git a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
index fbb597854c1..7a3883cdf01 100644
--- a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
+++ b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java
@@ -33,7 +33,7 @@ public final class TotemGuideHartebeest extends CardImpl {
this.toughness = new MageInt(5);
// When Totem-Guide Hartebeest enters the battlefield, you may search your library for an Aura card, reveal it, put it into your hand, then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, false), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), true));
}
private TotemGuideHartebeest(final TotemGuideHartebeest card) {
diff --git a/Mage.Sets/src/mage/cards/v/ValakutFireboar.java b/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
index 63774bc62c8..83529ba2d02 100644
--- a/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
+++ b/Mage.Sets/src/mage/cards/v/ValakutFireboar.java
@@ -25,7 +25,7 @@ public final class ValakutFireboar extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(7);
- this.addAbility(new AttacksTriggeredAbility(new SwitchPowerToughnessSourceEffect(Duration.EndOfTurn), false));
+ this.addAbility(new AttacksTriggeredAbility(new SwitchPowerToughnessSourceEffect(Duration.EndOfTurn).setText("switch its power and toughness until end of turn"), false));
}
private ValakutFireboar(final ValakutFireboar card) {
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 25478ff44e0..6b45d2ca57b 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -62,7 +62,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
- private static final String FULL_ABILITIES_CHECK_SET_CODE = "WWK"; // check all abilities and output cards with wrong abilities texts;
+ private static final String FULL_ABILITIES_CHECK_SET_CODE = "ROE"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java
index 0f6d338f209..52aa47cc609 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java
@@ -129,7 +129,7 @@ public class CreateTokenEffect extends OneShotEffect {
if (tapped && !attacking) {
sb.append("tapped ");
}
- sb.append(token.getDescription());
+ sb.append(token.getDescription().replace("token. It has", "tokens. They have"));
if (token.getDescription().endsWith("token")) {
sb.append("s");
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java b/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
index 6b643db3550..3d63f2f1100 100644
--- a/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
@@ -38,7 +38,7 @@ public class TotemArmorAbility extends SimpleStaticAbility {
@Override
public String getRule() {
- return "Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)";
+ return "totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)";
}
}
diff --git a/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java b/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java
index 01f5e695fdd..28fe0304e74 100644
--- a/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java
@@ -18,7 +18,7 @@ import java.util.Arrays;
public final class EldraziSpawnToken extends TokenImpl {
public EldraziSpawnToken() {
- super("Eldrazi Spawn", "0/1 colorless Eldrazi Spawn creature with \"Sacrifice this creature: Add {C}.\"");
+ super("Eldrazi Spawn", "0/1 colorless Eldrazi Spawn creature token. It has \"Sacrifice this creature: Add {C}.\"");
cardType.add(CardType.CREATURE);
subtype.add(SubType.ELDRAZI);
subtype.add(SubType.SPAWN);