diff --git a/Mage.Sets/src/mage/cards/a/AbominationOfLlanowar.java b/Mage.Sets/src/mage/cards/a/AbominationOfLlanowar.java
index ced91d19c97..502c44f8a03 100644
--- a/Mage.Sets/src/mage/cards/a/AbominationOfLlanowar.java
+++ b/Mage.Sets/src/mage/cards/a/AbominationOfLlanowar.java
@@ -26,7 +26,7 @@ public final class AbominationOfLlanowar extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledPermanent(SubType.ELF, "Elves you control");
private static final FilterCard filter2
- = new FilterCard("plus the number of Elf cards in your graveyard");
+ = new FilterCard("plus the number of Elf cards");
static {
filter2.add(SubType.ELF.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/a/AlharuSolemnRitualist.java b/Mage.Sets/src/mage/cards/a/AlharuSolemnRitualist.java
index c133edea696..3c28abda5d0 100644
--- a/Mage.Sets/src/mage/cards/a/AlharuSolemnRitualist.java
+++ b/Mage.Sets/src/mage/cards/a/AlharuSolemnRitualist.java
@@ -52,6 +52,7 @@ public final class AlharuSolemnRitualist extends CardImpl {
// When Alharu, Solemn Ritualist enters the battlefield, put a +1/+1 counter on each of up to two other target creatures.
Ability ability = new EntersBattlefieldTriggeredAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance())
+ .setText("put a +1/+1 counter on each of up to two other target creatures")
);
ability.addTarget(new TargetPermanent(0, 2, filter, false));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AngelicArmaments.java b/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
index 84ebb1ef64f..21bfe3fb16d 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicArmaments.java
@@ -1,8 +1,7 @@
-
package mage.cards.a;
-import java.util.UUID;
import mage.ObjectColor;
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.AddCardColorAttachedEffect;
@@ -15,20 +14,29 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
+import java.util.UUID;
+
/**
* @author noxx
*/
public final class AngelicArmaments extends CardImpl {
public AngelicArmaments(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2, has flying, and is a white Angel in addition to its other colors and types.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.EQUIPMENT)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AddCardColorAttachedEffect(ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AddCardSubtypeAttachedEffect(SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT)));
+ Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ FlyingAbility.getInstance(), AttachmentType.EQUIPMENT
+ ).setText(", has flying"));
+ ability.addEffect(new AddCardColorAttachedEffect(
+ ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
+ ).setText(", and is"));
+ ability.addEffect(new AddCardSubtypeAttachedEffect(
+ SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
+ ).setText("white Angel in addition to its other colors and types").concatBy("a"));
+ this.addAbility(ability);
// Equip {4}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(4)));
diff --git a/Mage.Sets/src/mage/cards/a/AnointerOfValor.java b/Mage.Sets/src/mage/cards/a/AnointerOfValor.java
index 8288b73ffc0..18f176d4d5d 100644
--- a/Mage.Sets/src/mage/cards/a/AnointerOfValor.java
+++ b/Mage.Sets/src/mage/cards/a/AnointerOfValor.java
@@ -39,7 +39,7 @@ public final class AnointerOfValor extends CardImpl {
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
false, "put a +1/+1 counter on that creature"
), new GenericManaCost(3), "Pay {3}?"
- ), false, StaticFilters.FILTER_PERMANENT_CREATURE_A,
+ ), false, StaticFilters.FILTER_PERMANENT_CREATURE,
SetTargetPointer.PERMANENT, false
));
}
diff --git a/Mage.Sets/src/mage/cards/a/AuroraPhoenix.java b/Mage.Sets/src/mage/cards/a/AuroraPhoenix.java
index e7d1e805297..6786212a783 100644
--- a/Mage.Sets/src/mage/cards/a/AuroraPhoenix.java
+++ b/Mage.Sets/src/mage/cards/a/AuroraPhoenix.java
@@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class AuroraPhoenix extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("spell with cascade");
+ private static final FilterSpell filter = new FilterSpell("a spell with cascade");
static {
filter.add(new AbilityPredicate(CascadeAbility.class));
diff --git a/Mage.Sets/src/mage/cards/b/BlasphemousAct.java b/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
index 26e4869b22f..cd94d9f5088 100644
--- a/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
+++ b/Mage.Sets/src/mage/cards/b/BlasphemousAct.java
@@ -47,7 +47,7 @@ class BlasphemousCostReductionEffect extends CostModificationEffectImpl {
BlasphemousCostReductionEffect() {
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
- staticText = "{this} costs {1} less to cast for each creature on the battlefield";
+ staticText = "this spell costs {1} less to cast for each creature on the battlefield";
}
BlasphemousCostReductionEffect(BlasphemousCostReductionEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/b/BlazingSunsteel.java b/Mage.Sets/src/mage/cards/b/BlazingSunsteel.java
index fbfb2e5177b..4b41203a9e8 100644
--- a/Mage.Sets/src/mage/cards/b/BlazingSunsteel.java
+++ b/Mage.Sets/src/mage/cards/b/BlazingSunsteel.java
@@ -33,7 +33,9 @@ public final class BlazingSunsteel extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +1/+0 for each opponent you have.
- this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(OpponentsCount.instance, StaticValue.get(0))));
+ this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(
+ OpponentsCount.instance, StaticValue.get(0)
+ ).setText("equipped creature gets +1/+0 for each opponent you have")));
// Whenever equipped creature is dealt damage, it deals that much damage to any target.
this.addAbility(new BlazingSunsteelTriggeredAbility());
diff --git a/Mage.Sets/src/mage/cards/b/BorosCharm.java b/Mage.Sets/src/mage/cards/b/BorosCharm.java
index b43d9a32a38..37a2ac0f0ab 100644
--- a/Mage.Sets/src/mage/cards/b/BorosCharm.java
+++ b/Mage.Sets/src/mage/cards/b/BorosCharm.java
@@ -1,11 +1,9 @@
-
package mage.cards.b;
-import java.util.UUID;
import mage.abilities.Mode;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.IndestructibleAbility;
@@ -13,12 +11,12 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetPlayerOrPlaneswalker;
+import java.util.UUID;
+
/**
- *
* @author Plopman
*/
public final class BorosCharm extends CardImpl {
@@ -30,11 +28,9 @@ public final class BorosCharm extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(4));
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
//or permanents you control are indestructible this turn
- Mode mode = new Mode();
- Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledPermanent(), false);
- effect.setText("permanents you control are indestructible this turn");
- mode.addEffect(effect);
- this.getSpellAbility().addMode(mode);
+ this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(
+ IndestructibleAbility.getInstance(), Duration.EndOfTurn
+ )));
//or target creature gains double strike until end of turn.
Mode mode2 = new Mode();
mode2.addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
diff --git a/Mage.Sets/src/mage/cards/c/CoerciveRecruiter.java b/Mage.Sets/src/mage/cards/c/CoerciveRecruiter.java
index 90e03003b44..4dfd5f8f916 100644
--- a/Mage.Sets/src/mage/cards/c/CoerciveRecruiter.java
+++ b/Mage.Sets/src/mage/cards/c/CoerciveRecruiter.java
@@ -15,6 +15,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@@ -23,7 +24,7 @@ import java.util.UUID;
*/
public final class CoerciveRecruiter extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.PIRATE);
+ private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.PIRATE, "Pirate");
public CoerciveRecruiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
@@ -44,6 +45,7 @@ public final class CoerciveRecruiter extends CardImpl {
ability.addEffect(new AddCardSubTypeTargetEffect(
SubType.PIRATE, Duration.EndOfTurn
).setText("and becomes a Pirate in addition to its other types"));
+ ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java b/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
index 4a7a5840582..78254142323 100644
--- a/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
+++ b/Mage.Sets/src/mage/cards/d/DargoTheShipwrecker.java
@@ -42,7 +42,7 @@ public final class DargoTheShipwrecker extends CardImpl {
cost.setText("As an additional cost to cast this spell, " +
"you may sacrifice any number of artifacts and/or creatures. " +
"This spell costs {2} less to cast for each permanent sacrificed this way " +
- "and {2} less to cast for each other artifact or creature you've sacrificed this turn.");
+ "and {2} less to cast for each other artifact or creature you've sacrificed this turn");
this.getSpellAbility().addCost(cost);
Ability ability = new SimpleStaticAbility(Zone.ALL, new DargoTheShipwreckerEffect());
ability.setRuleVisible(false);
diff --git a/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java b/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
index 307887aef9e..859edb0f641 100644
--- a/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
+++ b/Mage.Sets/src/mage/cards/d/DereviEmpyrialTactician.java
@@ -99,7 +99,7 @@ class DereviEmpyrialTacticianTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever {this} enters the battlefield or a creature you control deals combat damage to a player, you may tap or untap target permanent";
+ return "Whenever {this} enters the battlefield or a creature you control deals combat damage to a player, you may tap or untap target permanent.";
}
@Override
diff --git a/Mage.Sets/src/mage/cards/g/GraftedWargear.java b/Mage.Sets/src/mage/cards/g/GraftedWargear.java
index 786599c2388..dc2df6aa27f 100644
--- a/Mage.Sets/src/mage/cards/g/GraftedWargear.java
+++ b/Mage.Sets/src/mage/cards/g/GraftedWargear.java
@@ -29,7 +29,7 @@ public final class GraftedWargear extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(3, 2)));
// Whenever Grafted Wargear becomes unattached from a permanent, sacrifice that permanent.
- this.addAbility(new UnattachedTriggeredAbility(new SacrificeTargetEffect(), false));
+ this.addAbility(new UnattachedTriggeredAbility(new SacrificeTargetEffect().setText("sacrifice that permanent"), false));
// Equip {0}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(0)));
diff --git a/Mage.Sets/src/mage/cards/h/HellkiteCourser.java b/Mage.Sets/src/mage/cards/h/HellkiteCourser.java
index 07fd4a5d164..5b5d8ba8fad 100644
--- a/Mage.Sets/src/mage/cards/h/HellkiteCourser.java
+++ b/Mage.Sets/src/mage/cards/h/HellkiteCourser.java
@@ -39,7 +39,7 @@ public final class HellkiteCourser extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Hellkite Courser enters the battlefield, you may put a commander you own from the command zone onto the battlefield. It gains haste. Return it to the command zone at the beginning of the next end step.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new HellkiteCourserEffect()));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new HellkiteCourserEffect(), true));
}
private HellkiteCourser(final HellkiteCourser card) {
diff --git a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
index 2a44a903b35..f4065c73964 100644
--- a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
+++ b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java
@@ -90,6 +90,6 @@ class IkraShidiqiTheUsurperTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness";
+ return "Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness.";
}
}
diff --git a/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java b/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
index 8bc764d587d..56744cf8b9e 100644
--- a/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
+++ b/Mage.Sets/src/mage/cards/i/IntangibleVirtue.java
@@ -1,7 +1,6 @@
-
package mage.cards.i;
-import java.util.UUID;
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@@ -10,30 +9,34 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TokenPredicate;
+import java.util.UUID;
+
/**
- *
* @author BetaSteward
*/
public final class IntangibleVirtue extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
+ private static final FilterCreaturePermanent filter
+ = new FilterCreaturePermanent("creature tokens");
static {
filter.add(TokenPredicate.instance);
}
public IntangibleVirtue(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
// Creature tokens you control get +1/+1 and have vigilance.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
-
+ Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
+ 1, 1, Duration.WhileOnBattlefield, filter
+ ));
+ ability.addEffect(new GainAbilityControlledEffect(
+ VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, filter
+ ).setText("and have vigilance"));
+ this.addAbility(ability);
}
public IntangibleVirtue(final IntangibleVirtue card) {
diff --git a/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java b/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
index 877c0bd31fc..92d716a6a3c 100644
--- a/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
+++ b/Mage.Sets/src/mage/cards/i/InterpretTheSigns.java
@@ -1,10 +1,7 @@
-
package mage.cards.i;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.keyword.ScryEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -14,20 +11,18 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.players.Player;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class InterpretTheSigns extends CardImpl {
public InterpretTheSigns(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
// Scry 3, then reveal the top card of your library. Draw cards equal to that card's converted mana cost.
- this.getSpellAbility().addEffect(new ScryEffect(3));
this.getSpellAbility().addEffect(new InterpretTheSignsEffect());
-
}
public InterpretTheSigns(final InterpretTheSigns card) {
@@ -44,7 +39,7 @@ class InterpretTheSignsEffect extends OneShotEffect {
public InterpretTheSignsEffect() {
super(Outcome.DrawCard);
- this.staticText = ", then reveal the top card of your library. Draw cards equal to that card's converted mana cost";
+ this.staticText = "scry 3, then reveal the top card of your library. Draw cards equal to that card's converted mana cost";
}
public InterpretTheSignsEffect(final InterpretTheSignsEffect effect) {
@@ -59,15 +54,16 @@ class InterpretTheSignsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- Card sourceCard = game.getCard(source.getSourceId());
- if (controller != null && sourceCard != null) {
- Card card = controller.getLibrary().getFromTop(game);
- if (card != null) {
- controller.revealCards(sourceCard.getName(), new CardsImpl(card), game);
- controller.drawCards(card.getConvertedManaCost(), source.getSourceId(), game);
- }
+ if (controller == null) {
+ return false;
+ }
+ controller.scry(3, source, game);
+ Card card = controller.getLibrary().getFromTop(game);
+ if (card == null) {
return true;
}
- return false;
+ controller.revealCards(source, new CardsImpl(card), game);
+ controller.drawCards(card.getConvertedManaCost(), source.getSourceId(), game);
+ return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
index 185018949ca..43c48b2969d 100644
--- a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
+++ b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
@@ -62,7 +62,7 @@ class KaradorGhostChieftainCostReductionEffect extends CostModificationEffectImp
KaradorGhostChieftainCostReductionEffect() {
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
- staticText = "{this} costs {1} less to cast for each creature card in your graveyard";
+ staticText = "this spell costs {1} less to cast for each creature card in your graveyard";
}
KaradorGhostChieftainCostReductionEffect(KaradorGhostChieftainCostReductionEffect effect) {
@@ -99,7 +99,7 @@ class KaradorGhostChieftainCastFromGraveyardEffect extends AsThoughEffectImpl {
KaradorGhostChieftainCastFromGraveyardEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
- staticText = "During each of your turns, you may cast one creature card from your graveyard";
+ staticText = "During each of your turns, you may cast a creature card from your graveyard";
}
KaradorGhostChieftainCastFromGraveyardEffect(final KaradorGhostChieftainCastFromGraveyardEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/k/KedissEmberclawFamiliar.java b/Mage.Sets/src/mage/cards/k/KedissEmberclawFamiliar.java
index 675bbc7350c..a5f72617d85 100644
--- a/Mage.Sets/src/mage/cards/k/KedissEmberclawFamiliar.java
+++ b/Mage.Sets/src/mage/cards/k/KedissEmberclawFamiliar.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class KedissEmberclawFamiliar extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledPermanent("commander you control");
+ private static final FilterPermanent filter = new FilterControlledPermanent("a commander you control");
static {
filter.add(CommanderPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/k/KeskitTheFleshSculptor.java b/Mage.Sets/src/mage/cards/k/KeskitTheFleshSculptor.java
index 2b98b3b3dd8..6eaafcaf4a1 100644
--- a/Mage.Sets/src/mage/cards/k/KeskitTheFleshSculptor.java
+++ b/Mage.Sets/src/mage/cards/k/KeskitTheFleshSculptor.java
@@ -28,7 +28,7 @@ import java.util.UUID;
public final class KeskitTheFleshSculptor extends CardImpl {
private static final FilterControlledPermanent filter
- = new FilterControlledPermanent("three other artifacts and/or creatures");
+ = new FilterControlledPermanent("other artifacts and/or creatures");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
index 8bc9acdeffc..daef1b8f2b3 100644
--- a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
+++ b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java
@@ -1,7 +1,5 @@
-
package mage.cards.l;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
@@ -17,13 +15,14 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author Loki
*/
public final class LysAlanaBowmaster extends CardImpl {
- private static final FilterSpell filterElf = new FilterSpell("Elf");
+ private static final FilterSpell filterElf = new FilterSpell("an Elf spell");
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
static {
@@ -32,14 +31,15 @@ public final class LysAlanaBowmaster extends CardImpl {
}
public LysAlanaBowmaster(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.ARCHER);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.addAbility(ReachAbility.getInstance());
- Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(2), filterElf, true);
+ Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(2)
+ .setText("{this} deal 2 damage to target creature with flying"), filterElf, true);
ability.addTarget(new TargetCreaturePermanent(filterFlying));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java b/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
index 330a47bbd8c..e364bb0a1ad 100644
--- a/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
+++ b/Mage.Sets/src/mage/cards/m/MelokuTheCloudedMirror.java
@@ -1,7 +1,5 @@
-
package mage.cards.m;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -14,19 +12,17 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledLandPermanent;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.MelokuTheCloudedMirrorToken;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
* @author Loki
*/
public final class MelokuTheCloudedMirror extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
-
public MelokuTheCloudedMirror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
addSuperType(SuperType.LEGENDARY);
@@ -39,8 +35,12 @@ public final class MelokuTheCloudedMirror extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// {1}, Return a land you control to its owner's hand: Create a 1/1 blue Illusion creature token with flying.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new MelokuTheCloudedMirrorToken(), 1), new GenericManaCost(1));
- ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter)));
+ Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(
+ new MelokuTheCloudedMirrorToken(), 1
+ ), new GenericManaCost(1));
+ ability.addCost(new ReturnToHandChosenControlledPermanentCost(
+ new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)
+ ));
this.addAbility(ability);
}
@@ -52,5 +52,4 @@ public final class MelokuTheCloudedMirror extends CardImpl {
public MelokuTheCloudedMirror copy() {
return new MelokuTheCloudedMirror(this);
}
-
}
diff --git a/Mage.Sets/src/mage/cards/m/MerchantRaiders.java b/Mage.Sets/src/mage/cards/m/MerchantRaiders.java
index 8cf18b62853..fb30b179b10 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantRaiders.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantRaiders.java
@@ -35,7 +35,7 @@ public final class MerchantRaiders extends CardImpl {
this.toughness = new MageInt(4);
// Whenever Merchant Raiders or another Pirate enters the battlefield under your control, tap up to one target creature. That creature doesn't untap during its controller's untap step for as long as you control Merchant Raiders.
- Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter);
+ Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter,false,true);
ability.addEffect(new MerchantRaidersEffect());
ability.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability, new MerchantRaidersWatcher());
diff --git a/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java b/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
index 1fcdfe85202..f99bcc4a595 100644
--- a/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
+++ b/Mage.Sets/src/mage/cards/m/MindlessAutomaton.java
@@ -31,7 +31,7 @@ public final class MindlessAutomaton extends CardImpl {
this.toughness = new MageInt(0);
// Mindless Automaton enters the battlefield with two +1/+1 counters on it.
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))));
+ this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),"with two +1/+1 counters on it"));
// {1}, Discard a card: Put a +1/+1 counter on Mindless Automaton.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1));
diff --git a/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java b/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
index 28f7226af55..f2b8331550d 100644
--- a/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
+++ b/Mage.Sets/src/mage/cards/m/MonstrousOnslaught.java
@@ -23,7 +23,7 @@ public final class MonstrousOnslaught extends CardImpl {
// Monstrous Onslaught deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast Monstrous Onslaught.
DynamicValue xValue = GreatestPowerAmongControlledCreaturesValue.instance;
Effect effect = new DamageMultiEffect(xValue);
- effect.setText("{this} deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast {this}");
+ effect.setText("{this} deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast this spell");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(xValue));
}
diff --git a/Mage.Sets/src/mage/cards/n/NecroticHex.java b/Mage.Sets/src/mage/cards/n/NecroticHex.java
index e27f4097512..c43d66d55b5 100644
--- a/Mage.Sets/src/mage/cards/n/NecroticHex.java
+++ b/Mage.Sets/src/mage/cards/n/NecroticHex.java
@@ -24,9 +24,9 @@ public final class NecroticHex extends CardImpl {
));
// You create six tapped 2/2 black creature tokens.
- this.getSpellAbility().addEffect(
- new CreateTokenEffect(new ZombieToken(), 6).concatBy("
You")
- );
+ this.getSpellAbility().addEffect(new CreateTokenEffect(
+ new ZombieToken(), 6, true, false
+ ).concatBy("
You"));
}
private NecroticHex(final NecroticHex card) {
diff --git a/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java b/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
index e47929beac3..b5aae28dc5e 100644
--- a/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
+++ b/Mage.Sets/src/mage/cards/r/RakdosLordOfRiots.java
@@ -58,7 +58,7 @@ class RakdosLordOfRiotsCantCastEffect extends ContinuousRuleModifyingEffectImpl
public RakdosLordOfRiotsCantCastEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment);
- staticText = "You can't cast {this} unless an opponent lost life this turn";
+ staticText = "You can't cast this spell unless an opponent lost life this turn";
}
public RakdosLordOfRiotsCantCastEffect(final RakdosLordOfRiotsCantCastEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
index 188c20076ba..dbbb495ff28 100644
--- a/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
+++ b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
@@ -45,7 +45,7 @@ public final class RebbecArchitectOfAscension extends CardImpl {
// Artifacts you control have protection from each converted mana cost among artifacts you control.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new ProtectionAbility(filter), Duration.WhileOnBattlefield,
- StaticFilters.FILTER_PERMANENT_ARTIFACT
+ StaticFilters.FILTER_PERMANENT_ARTIFACTS
)));
// Partner
diff --git a/Mage.Sets/src/mage/cards/r/RelicSeeker.java b/Mage.Sets/src/mage/cards/r/RelicSeeker.java
index 6b372436324..41dbff2827d 100644
--- a/Mage.Sets/src/mage/cards/r/RelicSeeker.java
+++ b/Mage.Sets/src/mage/cards/r/RelicSeeker.java
@@ -19,7 +19,7 @@ import mage.target.common.TargetCardInLibrary;
*/
public final class RelicSeeker extends CardImpl {
- private static final FilterCard filter = new FilterCard("an Equipment card");
+ private static final FilterCard filter = new FilterCard("Equipment card");
static {
filter.add(CardType.ARTIFACT.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/r/ReyavMasterSmith.java b/Mage.Sets/src/mage/cards/r/ReyavMasterSmith.java
index e65546f6331..3b399ada6bb 100644
--- a/Mage.Sets/src/mage/cards/r/ReyavMasterSmith.java
+++ b/Mage.Sets/src/mage/cards/r/ReyavMasterSmith.java
@@ -45,7 +45,7 @@ public final class ReyavMasterSmith extends CardImpl {
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
new GainAbilityTargetEffect(
DoubleStrikeAbility.getInstance(), Duration.EndOfTurn,
- "that creature gains double strike until end of turn"
+ "that creature gains double strike until end of turn."
), false, filter, true
));
}
diff --git a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
index 3d95cc5195a..65fe8fcc618 100644
--- a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
+++ b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java
@@ -117,6 +117,6 @@ class ReyhanLastOfTheAbzanTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a creature you control dies or is put into the command zone, if it had one or more +1/+1 counters on it, you may put that may +1/+1 counters on target creature.";
+ return "Whenever a creature you control dies or is put into the command zone, if it had one or more +1/+1 counters on it, you may put that many +1/+1 counters on target creature.";
}
}
diff --git a/Mage.Sets/src/mage/cards/s/SakashimasProtege.java b/Mage.Sets/src/mage/cards/s/SakashimasProtege.java
index d80bca1c39e..6e35d0bef4b 100644
--- a/Mage.Sets/src/mage/cards/s/SakashimasProtege.java
+++ b/Mage.Sets/src/mage/cards/s/SakashimasProtege.java
@@ -40,7 +40,8 @@ public final class SakashimasProtege extends CardImpl {
this.addAbility(new CascadeAbility());
// You may have Sakashima's Protege enter the battlefield as a copy of any permanent that entered the battlefield this turn.
- this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter), true));
+ this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter)
+ .setText("you may have {this} enter the battlefield as a copy of any permanent that entered the battlefield this turn"), true));
}
private SakashimasProtege(final SakashimasProtege card) {
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
index b479986e674..c5c643dd424 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java
@@ -56,7 +56,7 @@ class ScourgeOfFleetsEffect extends OneShotEffect {
public ScourgeOfFleetsEffect() {
super(Outcome.Benefit);
- this.staticText = "return each creature your opponents control with toughness X or less, where X is the number of Islands you control";
+ this.staticText = "return each creature your opponents control with toughness X or less to its owner's hand, where X is the number of Islands you control";
}
public ScourgeOfFleetsEffect(final ScourgeOfFleetsEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SeraphicGreatsword.java b/Mage.Sets/src/mage/cards/s/SeraphicGreatsword.java
index 7d652485aa3..e489844eeff 100644
--- a/Mage.Sets/src/mage/cards/s/SeraphicGreatsword.java
+++ b/Mage.Sets/src/mage/cards/s/SeraphicGreatsword.java
@@ -38,7 +38,7 @@ public final class SeraphicGreatsword extends CardImpl {
this.addAbility(new SeraphicGreatswordTriggeredAbility());
// Equip {4}
- this.addAbility(new EquipAbility(2));
+ this.addAbility(new EquipAbility(4));
}
private SeraphicGreatsword(final SeraphicGreatsword card) {
diff --git a/Mage.Sets/src/mage/cards/s/SimicCharm.java b/Mage.Sets/src/mage/cards/s/SimicCharm.java
index 9daae89120f..892710e5599 100644
--- a/Mage.Sets/src/mage/cards/s/SimicCharm.java
+++ b/Mage.Sets/src/mage/cards/s/SimicCharm.java
@@ -6,6 +6,7 @@ import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +29,7 @@ public final class SimicCharm extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
//permanents you control gain hexproof until end of turn
Mode mode = new Mode();
- mode.addEffect(new GainAbilityAllEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, new FilterControlledPermanent()));
+ mode.addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn));
this.getSpellAbility().addMode(mode);
//return target creature to its owner's hand.
Mode mode2 = new Mode();
diff --git a/Mage.Sets/src/mage/cards/s/SkaabGoliath.java b/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
index e393e1327e8..e24731e6110 100644
--- a/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
+++ b/Mage.Sets/src/mage/cards/s/SkaabGoliath.java
@@ -27,7 +27,7 @@ public final class SkaabGoliath extends CardImpl {
this.toughness = new MageInt(9);
// As an additional cost to cast Skaab Goliath, exile two creature cards from your graveyard.
- this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)));
+ this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)));
this.addAbility(TrampleAbility.getInstance());
}
diff --git a/Mage.Sets/src/mage/cards/s/SlayersStronghold.java b/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
index 93a881c7051..7f8edeae999 100644
--- a/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
+++ b/Mage.Sets/src/mage/cards/s/SlayersStronghold.java
@@ -1,7 +1,5 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@@ -15,24 +13,31 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author Loki
*/
public final class SlayersStronghold extends CardImpl {
public SlayersStronghold(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
+ super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility());
+
// {R}{W}, {tap}: Target creature gets +2/+0 and gains vigilance and haste until end of turn.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}{W}"));
- ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn));
- ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
+ Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
+ 2, 0, Duration.EndOfTurn
+ ).setText("target creatures gets +2/+0"), new ManaCostsImpl("{R}{W}"));
+ ability.addEffect(new GainAbilityTargetEffect(
+ VigilanceAbility.getInstance(), Duration.EndOfTurn
+ ).setText("and gains vigilance"));
+ ability.addEffect(new GainAbilityTargetEffect(
+ HasteAbility.getInstance(), Duration.EndOfTurn
+ ).setText("and haste until end of turn"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/SpiritMantle.java b/Mage.Sets/src/mage/cards/s/SpiritMantle.java
index 9d1a539ed0d..9184c01ba8d 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritMantle.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritMantle.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;
@@ -12,19 +10,23 @@ import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
+import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
* @author nantuko
*/
public final class SpiritMantle extends CardImpl {
- public SpiritMantle(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
- this.subtype.add(SubType.AURA);
+ private static final FilterCard filter = new FilterCreatureCard("creatures");
+ public SpiritMantle(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
+ this.subtype.add(SubType.AURA);
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
@@ -34,8 +36,11 @@ public final class SpiritMantle extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +1/+1 and has protection from creatures.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(new FilterCreatureCard("creatures")), AttachmentType.AURA)));
+ ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ new ProtectionAbility(filter), AttachmentType.AURA
+ ).setText("and has protection from creatures"));
+ this.addAbility(ability);
}
public SpiritMantle(final SpiritMantle card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java b/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java
index ae0cd577470..0bc159290a6 100644
--- a/Mage.Sets/src/mage/cards/s/SpontaneousMutation.java
+++ b/Mage.Sets/src/mage/cards/s/SpontaneousMutation.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.dynamicvalue.DynamicValue;
@@ -15,20 +13,22 @@ import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Outcome;
-import mage.constants.Zone;
+import mage.constants.SubType;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class SpontaneousMutation extends CardImpl {
+ private static final DynamicValue value = new SignInversionDynamicValue(new CardsInControllerGraveyardCount());
+
public SpontaneousMutation(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
this.subtype.add(SubType.AURA);
// Flash
@@ -42,8 +42,8 @@ public final class SpontaneousMutation extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets -X/-0, where X is the number of cards in your graveyard.
- DynamicValue value = new SignInversionDynamicValue(new CardsInControllerGraveyardCount());
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(value, StaticValue.get(-0))));
+ this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(value, StaticValue.get(0))
+ .setText("enchanted creature gets -X/-0, where X is the number of cards in your graveyard")));
}
public SpontaneousMutation(final SpontaneousMutation card) {
diff --git a/Mage.Sets/src/mage/cards/s/SweetGumRecluse.java b/Mage.Sets/src/mage/cards/s/SweetGumRecluse.java
index b043e1c9e96..d036a129b8b 100644
--- a/Mage.Sets/src/mage/cards/s/SweetGumRecluse.java
+++ b/Mage.Sets/src/mage/cards/s/SweetGumRecluse.java
@@ -50,6 +50,7 @@ public final class SweetGumRecluse extends CardImpl {
// When Sweet-Gum Recluse enters the battlefield, put three +1/+1 counters on each of any number of target creatures that entered the battlefield this turn.
Ability ability = new EntersBattlefieldTriggeredAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance(3))
+ .setText("put three +1/+1 counters on each of any number of target creatures that entered the battlefield this turn")
);
ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, filter, false));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/SzatsWill.java b/Mage.Sets/src/mage/cards/s/SzatsWill.java
index 31ea6b8b395..ae5b51ae538 100644
--- a/Mage.Sets/src/mage/cards/s/SzatsWill.java
+++ b/Mage.Sets/src/mage/cards/s/SzatsWill.java
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
public final class SzatsWill extends CardImpl {
private static final FilterPermanent filter
- = new FilterControlledCreaturePermanent("a creature they control with the greatest power");
+ = new FilterControlledCreaturePermanent("creature they control with the greatest power");
static {
filter.add(SzatsWillPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java b/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
index 4f70c21434c..b0aa2d13bd4 100644
--- a/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
+++ b/Mage.Sets/src/mage/cards/t/ThrasiosTritonHero.java
@@ -1,29 +1,22 @@
-
package mage.cards.t;
-import java.util.UUID;
import mage.MageInt;
-import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.keyword.PartnerAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.Outcome;
-import mage.constants.SuperType;
-import mage.constants.Zone;
+import mage.constants.*;
import mage.game.Game;
import mage.players.Player;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class ThrasiosTritonHero extends CardImpl {
@@ -38,14 +31,13 @@ public final class ThrasiosTritonHero extends CardImpl {
this.toughness = new MageInt(3);
// {4}: Scry 1, then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(4));
- ability.addEffect(new ThrasiosTritonHeroEffect());
- this.addAbility(ability);
+ this.addAbility(new SimpleActivatedAbility(new ThrasiosTritonHeroEffect(), new GenericManaCost(4)));
+
// Partner
this.addAbility(PartnerAbility.getInstance());
}
- public ThrasiosTritonHero(final ThrasiosTritonHero card) {
+ private ThrasiosTritonHero(final ThrasiosTritonHero card) {
super(card);
}
@@ -59,7 +51,8 @@ class ThrasiosTritonHeroEffect extends OneShotEffect {
public ThrasiosTritonHeroEffect() {
super(Outcome.DrawCard);
- this.staticText = "then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card";
+ this.staticText = "scry 1, then reveal the top card of your library. " +
+ "If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card";
}
public ThrasiosTritonHeroEffect(final ThrasiosTritonHeroEffect effect) {
@@ -74,24 +67,24 @@ class ThrasiosTritonHeroEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- MageObject sourceObject = game.getObject(source.getSourceId());
- if (sourceObject == null || controller == null) {
+ if (controller == null) {
return false;
}
- if (controller.getLibrary().hasCards()) {
- CardsImpl cards = new CardsImpl();
- Card card = controller.getLibrary().getFromTop(game);
- if (card == null) {
- return false;
- }
- cards.add(card);
- controller.revealCards(sourceObject.getName(), cards, game);
- if (card.isLand()) {
- controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
- } else {
- controller.drawCards(1, source.getSourceId(), game);
- }
+ controller.scry(1, source, game);
+ if (!controller.getLibrary().hasCards()) {
+ return true;
}
+ CardsImpl cards = new CardsImpl();
+ Card card = controller.getLibrary().getFromTop(game);
+ if (card == null) {
+ return false;
+ }
+ cards.add(card);
+ controller.revealCards(source, cards, game);
+ if (card.isLand()) {
+ return controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
+ }
+ controller.drawCards(1, source.getSourceId(), game);
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/t/ThreeVisits.java b/Mage.Sets/src/mage/cards/t/ThreeVisits.java
index 1c92db1fc48..8a695e0dce0 100644
--- a/Mage.Sets/src/mage/cards/t/ThreeVisits.java
+++ b/Mage.Sets/src/mage/cards/t/ThreeVisits.java
@@ -1,7 +1,5 @@
-
package mage.cards.t;
-import java.util.UUID;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -10,24 +8,24 @@ import mage.constants.SubType;
import mage.filter.common.FilterLandCard;
import mage.target.common.TargetCardInLibrary;
+import java.util.UUID;
+
/**
- *
* @author Plopman
*/
public final class ThreeVisits extends CardImpl {
- private static final FilterLandCard filter = new FilterLandCard("Forest");
+ private static final FilterLandCard filter = new FilterLandCard("Forest card");
+
static {
filter.add(SubType.FOREST.getPredicate());
}
-
- public ThreeVisits(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
+ public ThreeVisits(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
// Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)));
-
}
public ThreeVisits(final ThreeVisits card) {
diff --git a/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java b/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java
index fadb3d45eb3..ce01b00ccda 100644
--- a/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java
+++ b/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java
@@ -16,6 +16,7 @@ import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetControlledPermanent;
+import mage.target.common.TargetOpponentsCreaturePermanent;
import java.util.UUID;
@@ -42,7 +43,11 @@ public final class TrenchBehemoth extends CardImpl {
this.addAbility(ability);
// Whenever a land enters the battlefield under your control, target creature an opponent controls attacks during its controller's next combat phase if able.
- ability = new EntersBattlefieldControlledTriggeredAbility(new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A);
+ ability = new EntersBattlefieldControlledTriggeredAbility(
+ new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A
+ );
+ ability.addTarget(new TargetOpponentsCreaturePermanent());
+ this.addAbility(ability);
}
private TrenchBehemoth(final TrenchBehemoth card) {
diff --git a/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java b/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
index 769c8aa4f72..44fa6ef443c 100644
--- a/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
+++ b/Mage.Sets/src/mage/cards/v/VialSmasherTheFierce.java
@@ -97,7 +97,7 @@ class VialSmasherTheFierceTriggeredAbility extends SpellCastControllerTriggeredA
@Override
public String getRule() {
return "Whenever you cast your first spell each turn, choose an opponent at random. "
- + "{this} deals damage equal to that spell's converted mana cost to that player or a planeswalker that player controls";
+ + "{this} deals damage equal to that spell's converted mana cost to that player or a planeswalker that player controls.";
}
}
diff --git a/Mage.Sets/src/mage/cards/w/WhelmingWave.java b/Mage.Sets/src/mage/cards/w/WhelmingWave.java
index a02dfdadb2e..7c3235a1056 100644
--- a/Mage.Sets/src/mage/cards/w/WhelmingWave.java
+++ b/Mage.Sets/src/mage/cards/w/WhelmingWave.java
@@ -33,7 +33,7 @@ public final class WhelmingWave extends CardImpl {
// Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses and Serpents.
Effect effect = new ReturnToHandFromBattlefieldAllEffect(filter);
- effect.setText("Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses and Serpents");
+ effect.setText("Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses, and Serpents");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/w/WickerboughElder.java b/Mage.Sets/src/mage/cards/w/WickerboughElder.java
index 5e6c2ed13d0..b2069bc415d 100644
--- a/Mage.Sets/src/mage/cards/w/WickerboughElder.java
+++ b/Mage.Sets/src/mage/cards/w/WickerboughElder.java
@@ -1,4 +1,3 @@
-
package mage.cards.w;
import mage.MageInt;
@@ -12,8 +11,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ColoredManaSymbol;
+import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
@@ -27,7 +26,7 @@ import java.util.UUID;
public final class WickerboughElder extends CardImpl {
public WickerboughElder(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.TREEFOLK);
this.subtype.add(SubType.SHAMAN);
@@ -35,7 +34,8 @@ public final class WickerboughElder extends CardImpl {
this.toughness = new MageInt(4);
// Wickerbough Elder enters the battlefield with a -1/-1 counter on it.
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(1))));
+ this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(1)), "with a -1/-1 counter on it"));
+
// {G}, Remove a -1/-1 counter from Wickerbough Elder: Destroy target artifact or enchantment.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new RemoveCountersSourceCost(CounterType.M1M1.createInstance(1)));
diff --git a/Mage.Sets/src/mage/cards/w/WildheartInvoker.java b/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
index 82d4f9423fc..b53ad12621a 100644
--- a/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
+++ b/Mage.Sets/src/mage/cards/w/WildheartInvoker.java
@@ -1,7 +1,5 @@
-
package mage.cards.w;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -11,27 +9,31 @@ import mage.abilities.keyword.TrampleAbility;
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.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author North
*/
public final class WildheartInvoker extends CardImpl {
public WildheartInvoker(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.SHAMAN);
this.power = new MageInt(4);
this.toughness = new MageInt(3);
- SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(5, 5, Duration.EndOfTurn), new ManaCostsImpl("{8}"));
- ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(new BoostTargetEffect(
+ 5, 5, Duration.EndOfTurn
+ ).setText("target creature gets +5/+5"), new ManaCostsImpl("{8}"));
+ ability.addEffect(new GainAbilityTargetEffect(
+ TrampleAbility.getInstance(), Duration.EndOfTurn
+ ).setText("and gains trample until end of turn"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/y/YavimayaElder.java b/Mage.Sets/src/mage/cards/y/YavimayaElder.java
index bc46c0636ac..6af4ee68334 100644
--- a/Mage.Sets/src/mage/cards/y/YavimayaElder.java
+++ b/Mage.Sets/src/mage/cards/y/YavimayaElder.java
@@ -34,7 +34,7 @@ public final class YavimayaElder extends CardImpl {
this.toughness = new MageInt(1);
// When Yavimaya Elder dies, you may search your library for up to two basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
- this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
+ this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true), true));
// {2}, Sacrifice Yavimaya Elder: Draw a card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java
index 7e2c9c5336e..8c7077a37f3 100644
--- a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java
@@ -5,19 +5,19 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
/**
- *
* @author TheElk801
*/
public class SacrificePermanentTriggeredAbility extends TriggeredAbilityImpl {
- private FilterPermanent filter;
+ private final FilterPermanent filter;
public SacrificePermanentTriggeredAbility(Effect effect) {
- this(effect, new FilterPermanent());
+ this(effect, StaticFilters.FILTER_PERMANENT_A);
}
public SacrificePermanentTriggeredAbility(Effect effect, FilterPermanent filter) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/RevealTopLandToBattlefieldElseHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RevealTopLandToBattlefieldElseHandEffect.java
index 62b7b680400..8af9d57f519 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/RevealTopLandToBattlefieldElseHandEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/RevealTopLandToBattlefieldElseHandEffect.java
@@ -14,7 +14,7 @@ public class RevealTopLandToBattlefieldElseHandEffect extends OneShotEffect {
public RevealTopLandToBattlefieldElseHandEffect() {
super(Outcome.DrawCard);
- this.staticText = "Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand";
+ this.staticText = "reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put that card into your hand";
}
public RevealTopLandToBattlefieldElseHandEffect(final RevealTopLandToBattlefieldElseHandEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostAllOfChosenSubtypeEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostAllOfChosenSubtypeEffect.java
index cfc1f2a7b57..6a2c1e466af 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostAllOfChosenSubtypeEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostAllOfChosenSubtypeEffect.java
@@ -1,8 +1,3 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
package mage.abilities.effects.common.continuous;
import mage.abilities.Ability;
@@ -14,15 +9,14 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
/**
- *
* @author LevelX2
*/
public class BoostAllOfChosenSubtypeEffect extends BoostAllEffect {
- SubType subtype = null;
+ private SubType subtype = null;
public BoostAllOfChosenSubtypeEffect(int power, int toughness, Duration duration, boolean excludeSource) {
- super(power, toughness, duration, new FilterCreaturePermanent("All creatures of the chosen type"), excludeSource);
+ super(power, toughness, duration, new FilterCreaturePermanent("creatures of the chosen type"), excludeSource);
}
public BoostAllOfChosenSubtypeEffect(int power, int toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource) {
@@ -56,5 +50,4 @@ public class BoostAllOfChosenSubtypeEffect extends BoostAllEffect {
discard();
}
}
-
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
index 2bcc5c8af85..26ce3dc39b7 100644
--- a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
@@ -60,7 +60,7 @@ public class CascadeAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- StringBuilder sb = new StringBuilder("Cascade");
+ StringBuilder sb = new StringBuilder("cascade");
if (withReminder) {
sb.append(REMINDERTEXT);
}
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index 585ff67d0df..0254debdfaa 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -210,6 +210,12 @@ public final class StaticFilters {
FILTER_PERMANENT.setLockedFilter(true);
}
+ public static final FilterPermanent FILTER_PERMANENT_A = new FilterPermanent("a permanent");
+
+ static {
+ FILTER_PERMANENT_A.setLockedFilter(true);
+ }
+
public static final FilterPermanent FILTER_PERMANENTS = new FilterPermanent("permanents");
static {
diff --git a/Mage/src/main/java/mage/game/permanent/token/DragonEggDragonToken.java b/Mage/src/main/java/mage/game/permanent/token/DragonEggDragonToken.java
index 859a8e2be28..ca3571ea6b1 100644
--- a/Mage/src/main/java/mage/game/permanent/token/DragonEggDragonToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/DragonEggDragonToken.java
@@ -18,7 +18,7 @@ import mage.constants.Zone;
public final class DragonEggDragonToken extends TokenImpl {
public DragonEggDragonToken() {
- super("Dragon", "2/2 red Dragon creature token with flying that has \"{R}: This creature gets +1/+0 until end of turn");
+ super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn");
this.setOriginalExpansionSetCode("M14");
cardType.add(CardType.CREATURE);
color.setRed(true);
diff --git a/Mage/src/main/java/mage/game/permanent/token/ProsshKoboldToken.java b/Mage/src/main/java/mage/game/permanent/token/ProsshKoboldToken.java
index bc4861d688e..cd4f1cc5a78 100644
--- a/Mage/src/main/java/mage/game/permanent/token/ProsshKoboldToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/ProsshKoboldToken.java
@@ -12,7 +12,7 @@ import mage.MageInt;
public final class ProsshKoboldToken extends TokenImpl {
public ProsshKoboldToken() {
- super("Kobolds of Kher Keep", "0/1 red Kobold creature tokens");
+ super("Kobolds of Kher Keep", "0/1 red Kobold creature tokens named Kobolds of Kher Keep");
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.KOBOLD);