diff --git a/Mage.Sets/src/mage/cards/a/AllIsDust.java b/Mage.Sets/src/mage/cards/a/AllIsDust.java
index fab13e4be5..606f71cded 100644
--- a/Mage.Sets/src/mage/cards/a/AllIsDust.java
+++ b/Mage.Sets/src/mage/cards/a/AllIsDust.java
@@ -38,7 +38,7 @@ class AllIsDustEffect extends OneShotEffect {
AllIsDustEffect() {
super(Outcome.DestroyPermanent);
- staticText = "Each player sacrifices all colored permanents they control";
+ staticText = "Each player sacrifices all permanents they control that are one or more colors";
}
AllIsDustEffect(final AllIsDustEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
index 75b677d4e3..a7feb5b51c 100644
--- a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
+++ b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java
@@ -57,7 +57,7 @@ public final class ArahboRoarOfTheWorld extends CardImpl {
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new BeginningOfCombatTriggeredAbility(Zone.ALL, new BoostTargetEffect(3, 3, Duration.EndOfTurn), TargetController.YOU, false, false),
SourceOnBattlefieldOrCommandZoneCondition.instance,
- "Eminence — At the beginning of combat on your turn, if Arahbo, Roar of the World is in the command zone or on the battlefield, another target Cat you control gets +3/+3 until end of turn.");
+ "At the beginning of combat on your turn, if {this} is in the command zone or on the battlefield, another target Cat you control gets +3/+3 until end of turn.");
ability.addTarget(new TargetCreaturePermanent(filter));
ability.setAbilityWord(AbilityWord.EMINENCE);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/b/Bitterblossom.java b/Mage.Sets/src/mage/cards/b/Bitterblossom.java
index 6dccf29d3d..fc09f2e01a 100644
--- a/Mage.Sets/src/mage/cards/b/Bitterblossom.java
+++ b/Mage.Sets/src/mage/cards/b/Bitterblossom.java
@@ -25,7 +25,7 @@ public final class Bitterblossom extends CardImpl {
// At the beginning of your upkeep, you lose 1 life and create a 1/1 black Faerie Rogue creature token with flying.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(1), TargetController.YOU, false);
- ability.addEffect(new CreateTokenEffect(new FaerieRogueToken(), 1));
+ ability.addEffect(new CreateTokenEffect(new FaerieRogueToken(), 1).concatBy("and"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/Bloodghast.java b/Mage.Sets/src/mage/cards/b/Bloodghast.java
index 41683fe1a1..d410525537 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodghast.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodghast.java
@@ -1,7 +1,6 @@
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.CantBlockAbility;
import mage.abilities.common.LandfallAbility;
@@ -19,14 +18,15 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
+import java.util.UUID;
+
/**
- *
* @author maurer.it_at_gmail.com
*/
public final class Bloodghast extends CardImpl {
public Bloodghast(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
this.subtype.add(SubType.VAMPIRE, SubType.SPIRIT);
this.power = new MageInt(2);
@@ -38,9 +38,9 @@ public final class Bloodghast extends CardImpl {
ContinuousEffect effect = new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect,
new XorLessLifeCondition(XorLessLifeCondition.CheckType.AN_OPPONENT, 10),
- "Bloodghast has haste as long as an opponent has 10 or less life")));
+ "{this} has haste as long as an opponent has 10 or less life")));
// Landfall — Whenever a land enters the battlefield under your control, you may return Bloodghast from your graveyard to the battlefield.
- this.addAbility(new LandfallAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(), true));
+ this.addAbility(new LandfallAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), true));
}
private Bloodghast(final Bloodghast card) {
diff --git a/Mage.Sets/src/mage/cards/c/CrashThrough.java b/Mage.Sets/src/mage/cards/c/CrashThrough.java
index 3492f65f39..cf38223331 100644
--- a/Mage.Sets/src/mage/cards/c/CrashThrough.java
+++ b/Mage.Sets/src/mage/cards/c/CrashThrough.java
@@ -25,7 +25,7 @@ public final class CrashThrough extends CardImpl {
getSpellAbility().addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"));
// Draw a card.
- getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private CrashThrough(final CrashThrough card) {
diff --git a/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java b/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
index 3de0705a66..748692f376 100644
--- a/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
+++ b/Mage.Sets/src/mage/cards/c/CraterhoofBehemoth.java
@@ -40,8 +40,13 @@ public final class CraterhoofBehemoth extends CardImpl {
this.addAbility(HasteAbility.getInstance());
// When Craterhoof Behemoth enters the battlefield, creatures you control gain trample and get +X/+X until end of turn, where X is the number of creatures you control.
- Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter));
- ability.addEffect(new BoostControlledEffect(CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn, filter, false, true));
+ Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(
+ TrampleAbility.getInstance(), Duration.EndOfTurn, filter
+ ).setText("creatures you control gain trample"));
+ ability.addEffect(new BoostControlledEffect(
+ CreaturesYouControlCount.instance, CreaturesYouControlCount.instance,
+ Duration.EndOfTurn, filter, false, true
+ ).setText("and get +X/+X until end of turn, where X is the number of creatures you control"));
ability.addHint(CreaturesYouControlHint.instance);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/e/EldraziMonument.java b/Mage.Sets/src/mage/cards/e/EldraziMonument.java
index 84dc4608e6..72c29f69cf 100644
--- a/Mage.Sets/src/mage/cards/e/EldraziMonument.java
+++ b/Mage.Sets/src/mage/cards/e/EldraziMonument.java
@@ -1,14 +1,11 @@
-
package mage.cards.e;
-import java.util.UUID;
import mage.abilities.Ability;
-import mage.abilities.common.OnEventTriggeredAbility;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
-import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.IndestructibleAbility;
@@ -16,20 +13,13 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.Zone;
+import mage.constants.TargetController;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.game.Game;
-import mage.game.events.GameEvent.EventType;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
- *
* @author BetaSteward_at_googlemail.com
*/
public final class EldraziMonument extends CardImpl {
@@ -38,13 +28,26 @@ public final class EldraziMonument extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// Creatures you control get +1/+1, have flying, and are indestructible.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, false)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, new FilterCreaturePermanent())));
- Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Creatures you control"), false);
- effect.setText("Creatures you control are indestructible");
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+ Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
+ 1, 1, Duration.WhileOnBattlefield,
+ StaticFilters.FILTER_PERMANENT_CREATURES, false
+ ));
+ ability.addEffect(new GainAbilityControlledEffect(
+ FlyingAbility.getInstance(), Duration.WhileOnBattlefield,
+ StaticFilters.FILTER_PERMANENT_CREATURES
+ ).setText("and have flying"));
+ ability.addEffect(new GainAbilityControlledEffect(
+ IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield,
+ StaticFilters.FILTER_PERMANENT_CREATURES
+ ).setText("and indestructible"));
+ this.addAbility(ability);
+
// At the beginning of your upkeep, sacrifice a creature. If you can't, sacrifice Eldrazi Monument.
- this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new EldraziMonumentEffect()));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(
+ new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(
+ new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)
+ )).setText("sacrifice a creature. If you can't, sacrifice {this}"), TargetController.YOU, false
+ ));
}
private EldraziMonument(final EldraziMonument card) {
@@ -55,42 +58,4 @@ public final class EldraziMonument extends CardImpl {
public EldraziMonument copy() {
return new EldraziMonument(this);
}
-
-}
-
-class EldraziMonumentEffect extends OneShotEffect {
-
- public EldraziMonumentEffect() {
- super(Outcome.Sacrifice);
- staticText = "sacrifice a creature. If you can't, sacrifice {this}";
- }
-
- public EldraziMonumentEffect(final EldraziMonumentEffect ability) {
- super(ability);
- }
-
- @Override
- public EldraziMonumentEffect copy() {
- return new EldraziMonumentEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- TargetControlledPermanent target = new TargetControlledCreaturePermanent();
- Player player = game.getPlayer(source.getControllerId());
- if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
- player.choose(this.outcome, target, source.getSourceId(), game);
- Permanent permanent = game.getPermanent(target.getFirstTarget());
- if (permanent != null) {
- return permanent.sacrifice(source, game);
- }
- }
- Permanent permanent = game.getPermanent(source.getSourceId());
- if (permanent != null) {
- return permanent.sacrifice(source, game);
- }
- return false;
-
- }
-
}
diff --git a/Mage.Sets/src/mage/cards/f/FleetSwallower.java b/Mage.Sets/src/mage/cards/f/FleetSwallower.java
index ec45e0924b..8dd4df8346 100644
--- a/Mage.Sets/src/mage/cards/f/FleetSwallower.java
+++ b/Mage.Sets/src/mage/cards/f/FleetSwallower.java
@@ -48,7 +48,7 @@ class FleetSwallowerEffect extends OneShotEffect {
public FleetSwallowerEffect() {
super(Outcome.Detriment);
- staticText = "target player puts the top half of their library, rounded up, into their graveyard";
+ staticText = "target player mills half their library, rounded up";
}
public FleetSwallowerEffect(final FleetSwallowerEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinKing.java b/Mage.Sets/src/mage/cards/g/GoblinKing.java
index 411fd4f5b5..32fa90921b 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinKing.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinKing.java
@@ -31,7 +31,7 @@ public final class GoblinKing extends CardImpl {
// Other Goblin creatures get +1/+1 and have mountainwalk.
Effect effect = new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
- effect.setText("Other Goblin creatures get +1/+1");
+ effect.setText("Other Goblins get +1/+1");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
effect = new GainAbilityAllEffect(new MountainwalkAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
effect.setText("and have mountainwalk");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
index 77c078fae5..51e57715cf 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java
@@ -1,28 +1,28 @@
-
package mage.cards.g;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.StaticValue;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.AttackingPredicate;
import mage.game.permanent.token.GoblinToken;
-import mage.watchers.common.AttackedThisTurnWatcher;
+
+import java.util.UUID;
/**
- *
* @author Quercitron
*/
public final class GoblinRabblemaster extends CardImpl {
@@ -47,8 +47,7 @@ public final class GoblinRabblemaster extends CardImpl {
this.toughness = new MageInt(2);
// Other Goblin creatures you control attack each turn if able.
- Effect effect = new AttacksIfAbleAllEffect(otherGoblinFilter);
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect), new AttackedThisTurnWatcher());
+ this.addAbility(new SimpleStaticAbility(new AttacksIfAbleAllEffect(otherGoblinFilter, Duration.WhileOnBattlefield, true)));
// At the beginning of combat on your turn, create a 1/1 red Goblin creature token with haste.
this.addAbility(new BeginningOfCombatTriggeredAbility(new CreateTokenEffect(new GoblinToken(true)), TargetController.YOU, false));
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTrashmaster.java b/Mage.Sets/src/mage/cards/g/GoblinTrashmaster.java
index a4f0f60603..cb525385e2 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTrashmaster.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTrashmaster.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetControlledPermanent;
public final class GoblinTrashmaster extends CardImpl {
private static final FilterCreaturePermanent filter
- = new FilterCreaturePermanent(SubType.GOBLIN, "Goblins you control");
+ = new FilterCreaturePermanent(SubType.GOBLIN, "Goblins");
private static final FilterControlledCreaturePermanent filter2
= new FilterControlledCreaturePermanent(SubType.GOBLIN, "a Goblin");
diff --git a/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java b/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
index a31c8d8c4b..c4e063ff6d 100644
--- a/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
+++ b/Mage.Sets/src/mage/cards/h/HeliodGodOfTheSun.java
@@ -44,7 +44,7 @@ public final class HeliodGodOfTheSun extends CardImpl {
// Other creatures you control have vigilance.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
VigilanceAbility.getInstance(), Duration.WhileOnBattlefield,
- StaticFilters.FILTER_PERMANENT_CREATURE, true
+ StaticFilters.FILTER_PERMANENT_CREATURES, true
)));
// {2}{W}{W}: Create a 2/1 white Cleric enchantment creature token.
diff --git a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
index f117bb484c..39549524d2 100644
--- a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
+++ b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
@@ -48,9 +48,9 @@ public final class KothophedSoulHoarder extends CardImpl {
// Whenever a permanent owned by another player is put into the graveyard from the battlefield, you draw one card and lose 1 life.
Effect effect = new DrawCardSourceControllerEffect(1);
- effect.setText("you draw one card");
+ effect.setText("you draw a card");
Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD, effect, filter,
- "Whenever a permanent owned by another player is put into the graveyard from the battlefield, ", false);
+ "Whenever a permanent owned by another player is put into a graveyard from the battlefield, ", false);
effect = new LoseLifeSourceControllerEffect(1);
effect.setText("and lose 1 life");
ability.addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java b/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
index 31e5e2845f..e6cbeb750d 100644
--- a/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
+++ b/Mage.Sets/src/mage/cards/l/LifeFromTheLoam.java
@@ -1,8 +1,6 @@
-
package mage.cards.l;
-import java.util.UUID;
-import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.keyword.DredgeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -10,18 +8,18 @@ import mage.constants.CardType;
import mage.filter.common.FilterLandCard;
import mage.target.common.TargetCardInYourGraveyard;
+import java.util.UUID;
+
/**
- *
* @author jonubuu
*/
public final class LifeFromTheLoam extends CardImpl {
public LifeFromTheLoam(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
-
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
// Return up to three target land cards from your graveyard to your hand.
- this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
+ this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, new FilterLandCard("land cards from your graveyard")));
// Dredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)
this.addAbility(new DredgeAbility(3));
diff --git a/Mage.Sets/src/mage/cards/m/MichonneRuthlessSurvivor.java b/Mage.Sets/src/mage/cards/m/MichonneRuthlessSurvivor.java
index f418dae1ad..75a02d7dcc 100644
--- a/Mage.Sets/src/mage/cards/m/MichonneRuthlessSurvivor.java
+++ b/Mage.Sets/src/mage/cards/m/MichonneRuthlessSurvivor.java
@@ -15,6 +15,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
+import mage.game.permanent.token.WalkerToken;
import mage.game.permanent.token.ZombieToken;
import java.util.Objects;
@@ -35,7 +36,7 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
this.toughness = new MageInt(3);
// When Michonne enters the battlefield, create two Walker tokens.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ZombieToken(), 2)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WalkerToken(), 2)));
// As long as Michonne is equipped, she must be blocked if able.
this.addAbility(new SimpleStaticAbility(new ConditionalRequirementEffect(
@@ -44,7 +45,7 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
)));
// Whenever Michonne and at least two Zombies attack, she gains indestructible until end of turn.
- this.addAbility(new BattalionAbility());
+ this.addAbility(new MichonneRuthlessSurvivorAbility());
}
private MichonneRuthlessSurvivor(final MichonneRuthlessSurvivor card) {
@@ -57,19 +58,19 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
}
}
-class BattalionAbility extends TriggeredAbilityImpl {
+class MichonneRuthlessSurvivorAbility extends TriggeredAbilityImpl {
- public BattalionAbility() {
+ public MichonneRuthlessSurvivorAbility() {
super(Zone.BATTLEFIELD, new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn));
}
- public BattalionAbility(final BattalionAbility ability) {
+ public MichonneRuthlessSurvivorAbility(final MichonneRuthlessSurvivorAbility ability) {
super(ability);
}
@Override
- public BattalionAbility copy() {
- return new BattalionAbility(this);
+ public MichonneRuthlessSurvivorAbility copy() {
+ return new MichonneRuthlessSurvivorAbility(this);
}
@Override
diff --git a/Mage.Sets/src/mage/cards/n/NeganTheColdBlooded.java b/Mage.Sets/src/mage/cards/n/NeganTheColdBlooded.java
index 52e27d0d56..bc812c21a6 100644
--- a/Mage.Sets/src/mage/cards/n/NeganTheColdBlooded.java
+++ b/Mage.Sets/src/mage/cards/n/NeganTheColdBlooded.java
@@ -46,7 +46,7 @@ public final class NeganTheColdBlooded extends CardImpl {
// Whenever an opponent sacrifices a creature, you create a Treasure token.
this.addAbility(new SacrificeAllTriggeredAbility(
- new CreateTokenEffect(new TreasureToken()),
+ new CreateTokenEffect(new TreasureToken()).setText("you create a Treasure token"),
StaticFilters.FILTER_PERMANENT_A_CREATURE,
TargetController.OPPONENT, false
));
diff --git a/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java b/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
index 9b0635f87a..85f4456c6f 100644
--- a/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
+++ b/Mage.Sets/src/mage/cards/n/NyleaGodOfTheHunt.java
@@ -45,7 +45,7 @@ public final class NyleaGodOfTheHunt extends CardImpl {
// Other creatures you control have trample.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
- StaticFilters.FILTER_PERMANENT_CREATURE, true
+ StaticFilters.FILTER_PERMANENT_CREATURES, true
)));
// {3}{G}: Target creature gets +2/+2 until end of turn.
diff --git a/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java b/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
index b80c3ff479..a1f7bdfb96 100644
--- a/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
+++ b/Mage.Sets/src/mage/cards/r/RekiTheHistoryOfKamigawa.java
@@ -18,7 +18,7 @@ import mage.filter.FilterSpell;
*/
public final class RekiTheHistoryOfKamigawa extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("legendary spell");
+ private static final FilterSpell filter = new FilterSpell("a legendary spell");
static {
filter.add(SuperType.LEGENDARY.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
index 8ae89334cd..662c87a9ee 100644
--- a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
+++ b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java
@@ -1,14 +1,12 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.continuous.BoostControlledEffect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -20,8 +18,9 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.SquirrelToken;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class SquirrelWrangler extends CardImpl {
@@ -29,7 +28,7 @@ public final class SquirrelWrangler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SQUIRREL, "Squirrel creatures");
public SquirrelWrangler(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.HUMAN);
this.subtype.add(SubType.DRUID);
@@ -42,7 +41,7 @@ public final class SquirrelWrangler extends CardImpl {
this.addAbility(ability);
// {1}{G}, Sacrifice a land: Squirrel creatures get +1/+1 until end of turn.
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1,1,Duration.EndOfTurn, filter), new ManaCostsImpl("{1}{G}"));
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.EndOfTurn, filter, false), new ManaCostsImpl("{1}{G}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/SwanSong.java b/Mage.Sets/src/mage/cards/s/SwanSong.java
index 73ca3c9296..273f13f9dc 100644
--- a/Mage.Sets/src/mage/cards/s/SwanSong.java
+++ b/Mage.Sets/src/mage/cards/s/SwanSong.java
@@ -22,7 +22,7 @@ import mage.target.TargetSpell;
*/
public final class SwanSong extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("enchantment, instant or sorcery spell");
+ private static final FilterSpell filter = new FilterSpell("enchantment, instant, or sorcery spell");
static {
filter.add(Predicates.or(CardType.ENCHANTMENT.getPredicate(),
@@ -52,7 +52,7 @@ class SwanSongEffect extends OneShotEffect {
public SwanSongEffect() {
super(Outcome.Benefit);
- this.staticText = "Counter target enchantment, instant or sorcery spell. Its controller creates a 2/2 blue Bird creature token with flying";
+ this.staticText = "Counter target enchantment, instant, or sorcery spell. Its controller creates a 2/2 blue Bird creature token with flying";
}
public SwanSongEffect(final SwanSongEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/t/Thraximundar.java b/Mage.Sets/src/mage/cards/t/Thraximundar.java
index 06e0485b5d..c8c4c15d9e 100644
--- a/Mage.Sets/src/mage/cards/t/Thraximundar.java
+++ b/Mage.Sets/src/mage/cards/t/Thraximundar.java
@@ -96,7 +96,7 @@ class ThraximundarTriggeredAbility extends TriggeredAbilityImpl {
}
@Override
- public String getTriggerPhrase() {
+ public String getRule() {
return "Whenever {this} attacks, defending player sacrifices a creature.";
}
}
@@ -123,7 +123,7 @@ class PlayerSacrificesCreatureTriggeredAbility extends TriggeredAbilityImpl {
}
@Override
- public String getRule() {
+ public String getTriggerPhrase() {
return "Whenever a player sacrifices a creature, " ;
}
diff --git a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
index 909fdca869..cfdb2ec06f 100644
--- a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
+++ b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java
@@ -72,8 +72,8 @@ class ToshiroUmezawaEffect extends OneShotEffect {
public ToshiroUmezawaEffect() {
super(Outcome.Benefit);
- this.staticText = "cast target instant card from your graveyard. "
- + "If that card would be put into a graveyard this turn, exile it instead";
+ this.staticText = "you may cast target instant card from your graveyard. "
+ + "If that spell would be put into a graveyard this turn, exile it instead";
}
public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java b/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
index 5cf42beabd..5d8f355900 100644
--- a/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
+++ b/Mage.Sets/src/mage/cards/v/VaultOfTheArchangel.java
@@ -1,7 +1,5 @@
-
package mage.cards.v;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@@ -14,25 +12,30 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author North
*/
public final class VaultOfTheArchangel extends CardImpl {
public VaultOfTheArchangel(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());
+
// {2}{W}{B}, {tap}: Creatures you control gain deathtouch and lifelink until end of turn.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures"), false),
- new ManaCostsImpl("{2}{W}{B}"));
- ability.addEffect(new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures"), false));
+ Ability ability = new SimpleActivatedAbility(new GainAbilityControlledEffect(
+ DeathtouchAbility.getInstance(), Duration.EndOfTurn,
+ StaticFilters.FILTER_PERMANENT_CREATURE
+ ).setText("creatures you control gain deathtouch"), new ManaCostsImpl<>("{2}{W}{B}"));
+ ability.addEffect(new GainAbilityControlledEffect(
+ LifelinkAbility.getInstance(), Duration.EndOfTurn,
+ StaticFilters.FILTER_PERMANENT_CREATURE
+ ).setText("and lifelink until end of turn"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 7e88983e48..7023781bb0 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -58,7 +58,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
- private static final String FULL_ABILITIES_CHECK_SET_CODE = "GRN"; // check all abilities and output cards with wrong abilities texts;
+ private static final String FULL_ABILITIES_CHECK_SET_CODE = "SLD"; // 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