diff --git a/Mage.Sets/src/mage/cards/a/AnjeMaidOfDishonor.java b/Mage.Sets/src/mage/cards/a/AnjeMaidOfDishonor.java
index ca2cb22b254..60992503a43 100644
--- a/Mage.Sets/src/mage/cards/a/AnjeMaidOfDishonor.java
+++ b/Mage.Sets/src/mage/cards/a/AnjeMaidOfDishonor.java
@@ -32,7 +32,7 @@ import mage.game.permanent.token.BloodToken;
*/
public final class AnjeMaidOfDishonor extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("another creature or a Blood Token");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another creature or a Blood token");
static {
filter.add(AnjeMaidOfDishonorPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/b/BallistaWielder.java b/Mage.Sets/src/mage/cards/b/BallistaWielder.java
index 3cb5de8f974..72f2f8b952a 100644
--- a/Mage.Sets/src/mage/cards/b/BallistaWielder.java
+++ b/Mage.Sets/src/mage/cards/b/BallistaWielder.java
@@ -37,7 +37,6 @@ public final class BallistaWielder extends CardImpl {
// {2}{R}: Ballista Wielder deals 1 damage to any target. A creature dealt damage this way can't block this turn.
Ability ability = new SimpleActivatedAbility(new BallistaWielderEffect(), new ManaCostsImpl<>("{2}{R}"));
- ability.addCost(new TapSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/b/BloodswornKnight.java b/Mage.Sets/src/mage/cards/b/BloodswornKnight.java
index d17112c59d7..941c1fce0f8 100644
--- a/Mage.Sets/src/mage/cards/b/BloodswornKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BloodswornKnight.java
@@ -1,29 +1,33 @@
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.common.TapSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.IndestructibleAbility;
-import mage.constants.Duration;
-import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author weirddan455
*/
public final class BloodswornKnight extends CardImpl {
+ private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURES);
+
public BloodswornKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
@@ -37,7 +41,7 @@ public final class BloodswornKnight extends CardImpl {
this.nightCard = true;
// Bloodsworn Knight's power and toughness are each equal to the number of creature cards in your graveyard.
- this.addAbility(new SimpleStaticAbility(new SetPowerToughnessSourceEffect(new CardsInControllerGraveyardCount(), Duration.EndOfGame)));
+ this.addAbility(new SimpleStaticAbility(new SetPowerToughnessSourceEffect(xValue, Duration.EndOfGame)));
// {1}{B}, Discard a card: Bloodsworn Knight gains indestructible until end of turn. Tap it.
Ability ability = new SimpleActivatedAbility(
diff --git a/Mage.Sets/src/mage/cards/b/BloodtitheHarvester.java b/Mage.Sets/src/mage/cards/b/BloodtitheHarvester.java
index 5cf0b93e242..4bd171cdbc1 100644
--- a/Mage.Sets/src/mage/cards/b/BloodtitheHarvester.java
+++ b/Mage.Sets/src/mage/cards/b/BloodtitheHarvester.java
@@ -52,9 +52,9 @@ public final class BloodtitheHarvester extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BloodToken())));
// {T}, Sacrifice Bloodtithe Harvester: Target creature gets -X/-X until end of turn, where X is twice the number of Blood tokens you control. Activate only as a sorcery.
- Ability ability = new ActivateAsSorceryActivatedAbility(
- new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn), new TapSourceCost()
- );
+ Ability ability = new ActivateAsSorceryActivatedAbility(new BoostTargetEffect(
+ xValue, xValue, Duration.EndOfTurn
+ ).setText("target creature gets -X/-X until end of turn, where X is twice the number of Blood tokens you control"), new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability.addHint(hint));
diff --git a/Mage.Sets/src/mage/cards/b/BrineComber.java b/Mage.Sets/src/mage/cards/b/BrineComber.java
index 9e84dfde9d4..cac6dbda703 100644
--- a/Mage.Sets/src/mage/cards/b/BrineComber.java
+++ b/Mage.Sets/src/mage/cards/b/BrineComber.java
@@ -89,6 +89,6 @@ class BrineComberTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} enters the battlefield or becomes the target " +
- "of an Aura spell, create a 1/1 white Spirit creature token with flying";
+ "of an Aura spell, create a 1/1 white Spirit creature token with flying.";
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BrineboundGift.java b/Mage.Sets/src/mage/cards/b/BrineboundGift.java
index feeff97f827..17e94aa84d9 100644
--- a/Mage.Sets/src/mage/cards/b/BrineboundGift.java
+++ b/Mage.Sets/src/mage/cards/b/BrineboundGift.java
@@ -102,6 +102,6 @@ class BrineboundGiftTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} enters the battlefield or enchanted creature becomes the target " +
- "of an Aura spell, create a 1/1 white Spirit creature token with flying";
+ "of an Aura spell, create a 1/1 white Spirit creature token with flying.";
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BrutalCathar.java b/Mage.Sets/src/mage/cards/b/BrutalCathar.java
index 842eafb3735..66d67e83707 100644
--- a/Mage.Sets/src/mage/cards/b/BrutalCathar.java
+++ b/Mage.Sets/src/mage/cards/b/BrutalCathar.java
@@ -33,7 +33,7 @@ public final class BrutalCathar extends CardImpl {
// When this creature enters the battlefield or transforms into Brutal Cathar, exile target creature an opponent controls until this creature leaves the battlefield.
Ability ability = new TransformsOrEntersTriggeredAbility(
new ExileUntilSourceLeavesEffect("creature an opponent controls"), false
- );
+ ).setTriggerPhrase("Whenever this creature enters the battlefield or transforms into {this}, ");
ability.addTarget(new TargetOpponentsCreaturePermanent());
ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new OnLeaveReturnExiledToBattlefieldAbility()));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/c/CacklingCulprit.java b/Mage.Sets/src/mage/cards/c/CacklingCulprit.java
index 4f844eb7aa3..0d6ed4dc548 100644
--- a/Mage.Sets/src/mage/cards/c/CacklingCulprit.java
+++ b/Mage.Sets/src/mage/cards/c/CacklingCulprit.java
@@ -33,7 +33,7 @@ public final class CacklingCulprit extends CardImpl {
// Whenever Cackling Culprit or another creature you control dies, you gain 1 life.
this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility(
- new GainLifeEffect(1), false, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
+ new GainLifeEffect(1), false, StaticFilters.FILTER_CONTROLLED_CREATURE
));
// {1}{B}: Cackling Culprit gains deathtouch until end of turn.
diff --git a/Mage.Sets/src/mage/cards/c/ChangeOfFortune.java b/Mage.Sets/src/mage/cards/c/ChangeOfFortune.java
index 1114259d74f..2bde5c9224c 100644
--- a/Mage.Sets/src/mage/cards/c/ChangeOfFortune.java
+++ b/Mage.Sets/src/mage/cards/c/ChangeOfFortune.java
@@ -24,7 +24,7 @@ public final class ChangeOfFortune extends CardImpl {
// Discard your hand, then draw a card for each card you've discarded this turn.
this.getSpellAbility().addEffect(new DiscardHandControllerEffect());
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ChangeOfFortuneValue.instance));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ChangeOfFortuneValue.instance).concatBy(", then"));
this.getSpellAbility().addWatcher(new DiscardedCardWatcher());
}
diff --git a/Mage.Sets/src/mage/cards/c/ChillOfTheGrave.java b/Mage.Sets/src/mage/cards/c/ChillOfTheGrave.java
index 0bc58281d39..e7a232205db 100644
--- a/Mage.Sets/src/mage/cards/c/ChillOfTheGrave.java
+++ b/Mage.Sets/src/mage/cards/c/ChillOfTheGrave.java
@@ -43,7 +43,7 @@ public final class ChillOfTheGrave extends CardImpl {
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It"));
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private ChillOfTheGrave(final ChillOfTheGrave card) {
diff --git a/Mage.Sets/src/mage/cards/c/CrashingTide.java b/Mage.Sets/src/mage/cards/c/CrashingTide.java
index ed1a2cc645a..d604b1b447a 100644
--- a/Mage.Sets/src/mage/cards/c/CrashingTide.java
+++ b/Mage.Sets/src/mage/cards/c/CrashingTide.java
@@ -33,7 +33,7 @@ public final class CrashingTide extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlashAbility.getInstance(), Duration.WhileOnBattlefield, true),
new PermanentsOnTheBattlefieldCondition(filter),
- "{this} has flash as long as you control a Merfolk")).setRuleAtTheTop(true));
+ "this spell has flash as long as you control a Merfolk")).setRuleAtTheTop(true));
// Return target creature to it's owner's hand.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
diff --git a/Mage.Sets/src/mage/cards/d/DeadlyDancer.java b/Mage.Sets/src/mage/cards/d/DeadlyDancer.java
index 3c4da95ee52..6cb2633093f 100644
--- a/Mage.Sets/src/mage/cards/d/DeadlyDancer.java
+++ b/Mage.Sets/src/mage/cards/d/DeadlyDancer.java
@@ -44,8 +44,9 @@ public final class DeadlyDancer extends CardImpl {
// {R}{R}: Deadly Dancer and another target creature each get +1/+0 until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(
1, 0, Duration.EndOfTurn
- ).setText("{this} and another target creature"), new ManaCostsImpl<>("{R}{R}"));
- ability.addEffect(new BoostTargetEffect(1, 0).setText("each get +1/+0 until end of turn"));
+ ).setText("{this}"), new ManaCostsImpl<>("{R}{R}"));
+ ability.addEffect(new BoostTargetEffect(1, 0)
+ .setText("and another target creature each get +1/+0 until end of turn"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DesperateFarmer.java b/Mage.Sets/src/mage/cards/d/DesperateFarmer.java
index 872e387632d..a0aae4476de 100644
--- a/Mage.Sets/src/mage/cards/d/DesperateFarmer.java
+++ b/Mage.Sets/src/mage/cards/d/DesperateFarmer.java
@@ -9,9 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
+import mage.filter.StaticFilters;
import java.util.UUID;
@@ -20,13 +18,6 @@ import java.util.UUID;
*/
public final class DesperateFarmer extends CardImpl {
- private static final FilterPermanent filter
- = new FilterControlledCreaturePermanent("another creature you control");
-
- static {
- filter.add(AnotherPredicate.instance);
- }
-
public DesperateFarmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
@@ -41,7 +32,10 @@ public final class DesperateFarmer extends CardImpl {
// When another creature you control dies, transform Desperate Farmer.
this.addAbility(new TransformAbility());
- this.addAbility(new DiesCreatureTriggeredAbility(new TransformSourceEffect(), false, filter));
+ this.addAbility(new DiesCreatureTriggeredAbility(
+ new TransformSourceEffect(), false,
+ StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
+ ).setTriggerPhrase("When another creature you control dies, "));
}
private DesperateFarmer(final DesperateFarmer card) {
diff --git a/Mage.Sets/src/mage/cards/d/DollhouseOfHorrors.java b/Mage.Sets/src/mage/cards/d/DollhouseOfHorrors.java
index af1ebc4669e..feaa4101e93 100644
--- a/Mage.Sets/src/mage/cards/d/DollhouseOfHorrors.java
+++ b/Mage.Sets/src/mage/cards/d/DollhouseOfHorrors.java
@@ -1,7 +1,7 @@
package mage.cards.d;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.ExileFromGraveCost;
import mage.abilities.costs.common.TapSourceCost;
@@ -36,7 +36,9 @@ public final class DollhouseOfHorrors extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// {1}, {T}, Exile a creature card from your graveyard: Create a token that's a copy of the exiled card, except it's a 0/0 Construct artifact in addition to its other types and it has "This creature gets +1/+1 for each Construct you control." It gains haste until end of turn. Activate only as a sorcery.
- Ability ability = new SimpleActivatedAbility(new DollhouseOfHorrorsEffect(), new GenericManaCost(1));
+ Ability ability = new ActivateAsSorceryActivatedAbility(
+ new DollhouseOfHorrorsEffect(), new GenericManaCost(1)
+ );
ability.addCost(new TapSourceCost());
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(
StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
diff --git a/Mage.Sets/src/mage/cards/d/DorotheaVengefulVictim.java b/Mage.Sets/src/mage/cards/d/DorotheaVengefulVictim.java
index edc5bd5f117..24b3336c0d0 100644
--- a/Mage.Sets/src/mage/cards/d/DorotheaVengefulVictim.java
+++ b/Mage.Sets/src/mage/cards/d/DorotheaVengefulVictim.java
@@ -36,7 +36,7 @@ public final class DorotheaVengefulVictim extends CardImpl {
// When Dorothea, Vengeful Victim attacks or blocks, sacrifice it at end of combat.
this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())
- ), false));
+ ).setText("sacrifice it at end of combat"), false));
// Disturb {1}{W}{U}
this.addAbility(new DisturbAbility(this, "{1}{W}{U}"));
diff --git a/Mage.Sets/src/mage/cards/d/DreadFugue.java b/Mage.Sets/src/mage/cards/d/DreadFugue.java
index 896e191ee16..345b121c28e 100644
--- a/Mage.Sets/src/mage/cards/d/DreadFugue.java
+++ b/Mage.Sets/src/mage/cards/d/DreadFugue.java
@@ -60,7 +60,7 @@ class DreadFugueEffect extends OneShotEffect {
public DreadFugueEffect(FilterCard filter) {
super(Outcome.Discard);
this.filter = filter;
- staticText = "Target player reveals their hand. You may choose a nonland card from it [with mana value 2 or less]. That player discards that card";
+ staticText = "Target player reveals their hand. You choose a nonland card from it [with mana value 2 or less]. That player discards that card";
}
private DreadFugueEffect(final DreadFugueEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/e/EdgarsAwakening.java b/Mage.Sets/src/mage/cards/e/EdgarsAwakening.java
index 6202a010161..5e97ea7cb09 100644
--- a/Mage.Sets/src/mage/cards/e/EdgarsAwakening.java
+++ b/Mage.Sets/src/mage/cards/e/EdgarsAwakening.java
@@ -13,7 +13,6 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
@@ -28,7 +27,7 @@ public final class EdgarsAwakening extends CardImpl {
// Return target creature card from your graveyard to the battlefield.
this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect());
- this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
+ this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
// When you discard Edgar's Awakening, you may pay {B}. When you do, return target creature card from your graveyard to your hand.
this.addAbility(new EdgarsAwakeningTriggeredAbility());
diff --git a/Mage.Sets/src/mage/cards/f/FellStinger.java b/Mage.Sets/src/mage/cards/f/FellStinger.java
index a2e75524d07..8a9e4fdb051 100644
--- a/Mage.Sets/src/mage/cards/f/FellStinger.java
+++ b/Mage.Sets/src/mage/cards/f/FellStinger.java
@@ -36,7 +36,7 @@ public final class FellStinger extends CardImpl {
// When Fell Stinger exploits a creature, target player draws two cards and loses 2 life.
Ability ability = new ExploitCreatureTriggeredAbility(new DrawCardTargetEffect(2));
- ability.addEffect(new LoseLifeTargetEffect(2));
+ ability.addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life"));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/g/GeralfVisionaryStitcher.java b/Mage.Sets/src/mage/cards/g/GeralfVisionaryStitcher.java
index e6eae41c753..4a43896b3f7 100644
--- a/Mage.Sets/src/mage/cards/g/GeralfVisionaryStitcher.java
+++ b/Mage.Sets/src/mage/cards/g/GeralfVisionaryStitcher.java
@@ -50,7 +50,7 @@ public final class GeralfVisionaryStitcher extends CardImpl {
// Zombies you control have flying.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
- // {U}, {T}, Sacrifice another nontoken creature: Create an X/X blue Zombie token, where X is the sacrificed creature's power.
+ // {U}, {T}, Sacrifice another nontoken creature: Create an X/X blue Zombie token, where X is the sacrificed creature's toughness.
Ability ability = new SimpleActivatedAbility(new GeralfVisionaryStitcherEffect(), new ManaCostsImpl<>("{U}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(filter2));
@@ -71,7 +71,7 @@ class GeralfVisionaryStitcherEffect extends OneShotEffect {
public GeralfVisionaryStitcherEffect() {
super(Outcome.PutCreatureInPlay);
- staticText = "Create an X/X blue Zombie token, where X is the sacrificed creature's power";
+ staticText = "Create an X/X blue Zombie creature token, where X is the sacrificed creature's toughness";
}
private GeralfVisionaryStitcherEffect(final GeralfVisionaryStitcherEffect effect) {
@@ -89,7 +89,7 @@ class GeralfVisionaryStitcherEffect extends OneShotEffect {
for (Cost cost : source.getCosts()) {
if (cost instanceof SacrificeTargetCost) {
for (Permanent permanent : ((SacrificeTargetCost) cost).getPermanents()) {
- xValue += permanent.getPower().getValue();
+ xValue += permanent.getToughness().getValue();
}
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GloriousSunrise.java b/Mage.Sets/src/mage/cards/g/GloriousSunrise.java
index 4594b5d666a..ab3f33679b2 100644
--- a/Mage.Sets/src/mage/cards/g/GloriousSunrise.java
+++ b/Mage.Sets/src/mage/cards/g/GloriousSunrise.java
@@ -51,7 +51,7 @@ public final class GloriousSunrise extends CardImpl {
// • Creatures you control get +1/+1 and gain trample until end of turn.
Ability ability = new BeginningOfCombatTriggeredAbility(new BoostControlledEffect(
1, 1, Duration.EndOfTurn
- ).setText("reatures you control get +1/+1"), TargetController.YOU, false);
+ ).setText("creatures you control get +1/+1"), TargetController.YOU, false);
ability.addEffect(new GainAbilityControlledEffect(
TrampleAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURE
diff --git a/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java b/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java
index 0c911cc887e..d3ade280166 100644
--- a/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java
+++ b/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java
@@ -44,7 +44,7 @@ public final class HalanaAndAlenaPartners extends CardImpl {
// At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is Halana and Alena's power. That creature gains haste until end of turn.
Ability ability = new BeginningOfCombatTriggeredAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance(0), xValue)
- .setText("put X +1/+1 counters on another target creature you control, where X is {this} power"),
+ .setText("put X +1/+1 counters on another target creature you control, where X is {this}'s power"),
TargetController.YOU, false
);
ability.addEffect(new GainAbilityTargetEffect(
diff --git a/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java
index d1bf4e407e1..bec79f3fd06 100644
--- a/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java
+++ b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java
@@ -47,9 +47,10 @@ public final class HenrikaDomnathi extends CardImpl {
// • You draw a card and you lose 1 life.
Mode mode = new Mode(new DrawCardSourceControllerEffect(1).setText("you draw a card"));
mode.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
+ ability.addMode(mode);
// • Transform Henrika Domnathi.
- ability.addEffect(new TransformSourceEffect());
+ ability.addMode(new Mode(new TransformSourceEffect()));
this.addAbility(new TransformAbility());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java b/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java
index 184ebb0b4e6..9d51e0234ee 100644
--- a/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java
+++ b/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java
@@ -21,8 +21,7 @@ import java.util.UUID;
*/
public final class HenrikaInfernalSeer extends CardImpl {
- private static final FilterCreaturePermanent filter
- = new FilterCreaturePermanent("creature you control with flying, deathtouch, and/or lifelink");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(TargetController.YOU.getControllerPredicate());
@@ -55,7 +54,7 @@ public final class HenrikaInfernalSeer extends CardImpl {
// {1}{B}{B}: Each creature you control with flying, deathtouch, and/or lifelink gets +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostAllEffect(
0, 1, Duration.EndOfTurn, filter, false
- ), new ManaCostsImpl<>("{1}{B}{B}")));
+ ).setText("each creature you control with flying, deathtouch, and/or lifelink gets +1/+0 until end of turn"), new ManaCostsImpl<>("{1}{B}{B}")));
}
private HenrikaInfernalSeer(final HenrikaInfernalSeer card) {
diff --git a/Mage.Sets/src/mage/cards/h/HeronBlessedGeist.java b/Mage.Sets/src/mage/cards/h/HeronBlessedGeist.java
index 1efe487fc54..d63452acafd 100644
--- a/Mage.Sets/src/mage/cards/h/HeronBlessedGeist.java
+++ b/Mage.Sets/src/mage/cards/h/HeronBlessedGeist.java
@@ -5,6 +5,7 @@ import mage.abilities.ActivatedAbility;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
+import mage.abilities.costs.common.ExileSourceFromGraveCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.ConditionHint;
@@ -16,7 +17,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TimingRule;
import mage.constants.Zone;
-import mage.filter.StaticFilters;
+import mage.filter.common.FilterEnchantmentPermanent;
import mage.game.permanent.token.SpiritWhiteToken;
import java.util.UUID;
@@ -26,8 +27,9 @@ import java.util.UUID;
*/
public final class HeronBlessedGeist extends CardImpl {
- private static final Condition condition
- = new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_ENCHANTMENT_PERMANENT);
+ private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
+ new FilterEnchantmentPermanent("you control an enchantment and only as a sorcery")
+ );
private static final Hint hint = new ConditionHint(condition, "You control an enchantment");
public HeronBlessedGeist(UUID ownerId, CardSetInfo setInfo) {
@@ -45,6 +47,7 @@ public final class HeronBlessedGeist extends CardImpl {
Zone.GRAVEYARD, new CreateTokenEffect(new SpiritWhiteToken(), 2),
new ManaCostsImpl<>("{3}{W}"), condition
);
+ ability.addCost(new ExileSourceFromGraveCost());
ability.setTiming(TimingRule.SORCERY);
this.addAbility(ability.addHint(hint));
}
diff --git a/Mage.Sets/src/mage/cards/h/HiveheartShaman.java b/Mage.Sets/src/mage/cards/h/HiveheartShaman.java
index c8db005c9f5..35f5f608a75 100644
--- a/Mage.Sets/src/mage/cards/h/HiveheartShaman.java
+++ b/Mage.Sets/src/mage/cards/h/HiveheartShaman.java
@@ -2,13 +2,13 @@ package mage.cards.h;
import mage.MageInt;
import mage.abilities.Ability;
+import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.AttacksTriggeredAbility;
-import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.DomainValue;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
+import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.hint.common.DomainHint;
import mage.cards.Card;
import mage.cards.CardImpl;
@@ -52,12 +52,12 @@ public final class HiveheartShaman extends CardImpl {
this.toughness = new MageInt(5);
// Whenever Hiveheart Shaman attacks, you may search your library for a basic land card that doesn't share a land type with a land you control, put that card onto the battlefield, then shuffle.
- this.addAbility(new AttacksTriggeredAbility(new SearchLibraryPutInHandEffect(
- new TargetCardInLibrary(filter), true, true
- )));
+ this.addAbility(new AttacksTriggeredAbility(
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), true
+ ));
// {5}{G}: Create a 1/1 green Insect creature token. Put X +1/+1 counters on it, where X is the number of basic land types among lands you control. Activate only as a sorcery.
- this.addAbility(new SimpleActivatedAbility(
+ this.addAbility(new ActivateAsSorceryActivatedAbility(
new HiveheartShamanEffect(), new ManaCostsImpl<>("{5}{G}")
).addHint(DomainHint.instance));
}
diff --git a/Mage.Sets/src/mage/cards/h/HoneymoonHearse.java b/Mage.Sets/src/mage/cards/h/HoneymoonHearse.java
index ea51f5fb58d..cc4be54024a 100644
--- a/Mage.Sets/src/mage/cards/h/HoneymoonHearse.java
+++ b/Mage.Sets/src/mage/cards/h/HoneymoonHearse.java
@@ -34,7 +34,7 @@ public final class HoneymoonHearse extends CardImpl {
this.addAbility(new SimpleActivatedAbility(
new AddCardTypeSourceEffect(
Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE
- ),
+ ).setText("{this} becomes an artifact creature until end of turn"),
new TapTargetCost(new TargetControlledPermanent(
2, StaticFilters.FILTER_CONTROLLED_UNTAPPED_CREATURES
))
diff --git a/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java b/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
index e5f0763e5a2..5994fd49068 100644
--- a/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
+++ b/Mage.Sets/src/mage/cards/h/HuntmasterOfTheFells.java
@@ -31,9 +31,7 @@ public final class HuntmasterOfTheFells extends CardImpl {
this.toughness = new MageInt(2);
// Whenever this creature enters the battlefield or transforms into Huntmaster of the Fells, create a 2/2 green Wolf creature token and you gain 2 life.
- Ability ability = new TransformsOrEntersTriggeredAbility(
- new CreateTokenEffect(new WolfToken()), false, true
- );
+ Ability ability = new TransformsOrEntersTriggeredAbility(new CreateTokenEffect(new WolfToken()), false);
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/l/LanternFlare.java b/Mage.Sets/src/mage/cards/l/LanternFlare.java
index 723d4d823f4..b127bd8df92 100644
--- a/Mage.Sets/src/mage/cards/l/LanternFlare.java
+++ b/Mage.Sets/src/mage/cards/l/LanternFlare.java
@@ -33,7 +33,7 @@ public final class LanternFlare extends CardImpl {
// Lantern Flare deals X damage to target creature or planeswalker and you gain X life. [X is the number of creatures you control.]
this.getSpellAbility().addEffect(new DamageTargetEffect(
CreaturesYouControlCount.instance
- ).setText("deals X damage to target creature or planeswalker"));
+ ).setText("{this} deals X damage to target creature or planeswalker"));
this.getSpellAbility().addEffect(new GainLifeEffect(
CreaturesYouControlCount.instance,
"and you gain X life. [X is the number of creatures you control.]"
diff --git a/Mage.Sets/src/mage/cards/m/MagmaPummeler.java b/Mage.Sets/src/mage/cards/m/MagmaPummeler.java
index 805a69d074f..0c53646f66e 100644
--- a/Mage.Sets/src/mage/cards/m/MagmaPummeler.java
+++ b/Mage.Sets/src/mage/cards/m/MagmaPummeler.java
@@ -2,6 +2,7 @@ package mage.cards.m;
import mage.MageInt;
import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.effects.PreventionEffectImpl;
@@ -33,7 +34,7 @@ public final class MagmaPummeler extends CardImpl {
this.toughness = new MageInt(0);
// Magma Pummeler enters the battlefield with X +1/+1 counters on it.
- this.addAbility(new SimpleStaticAbility(new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance())));
+ this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance())));
// If damage would be dealt to Magma Pummeler while it has a +1/+1 counter on it, prevent that damage and remove that many +1/+1 counters from it. When one or more counters are removed from Magma Pummeler this way, it deals that much damage to any target.
this.addAbility(new SimpleStaticAbility(new MagmaPummelerEffect()));
diff --git a/Mage.Sets/src/mage/cards/m/MirrorhallMimic.java b/Mage.Sets/src/mage/cards/m/MirrorhallMimic.java
index 7296833fb55..15a77dbb34e 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorhallMimic.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorhallMimic.java
@@ -34,7 +34,7 @@ public final class MirrorhallMimic extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(
StaticFilters.FILTER_PERMANENT_CREATURE, new MirrorhallMimicApplier()
), true, null, "You may have {this} enter the battlefield as a copy of " +
- "any creature on the battlefield, except it's a Spirit in addition to its other types", null));
+ "any creature on the battlefield, except it's a Spirit in addition to its other types.", null));
// Disturb {3}{U}{U}
this.addAbility(new DisturbAbility(this, "{3}{U}{U}"));
diff --git a/Mage.Sets/src/mage/cards/p/PanickedBystander.java b/Mage.Sets/src/mage/cards/p/PanickedBystander.java
index 1ef54df2994..3b16985cbee 100644
--- a/Mage.Sets/src/mage/cards/p/PanickedBystander.java
+++ b/Mage.Sets/src/mage/cards/p/PanickedBystander.java
@@ -34,7 +34,7 @@ public final class PanickedBystander extends CardImpl {
// Whenever Panicked Bystander or another creature you control dies, you gain 1 life.
this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility(
- new GainLifeEffect(1), false, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
+ new GainLifeEffect(1), false, StaticFilters.FILTER_CONTROLLED_CREATURE
));
// At the beginning of your end step, if you gained 3 or more life this turn, transform Panicked Bystander.
diff --git a/Mage.Sets/src/mage/cards/p/PointedDiscussion.java b/Mage.Sets/src/mage/cards/p/PointedDiscussion.java
index 1b223fbdafb..244c6f72635 100644
--- a/Mage.Sets/src/mage/cards/p/PointedDiscussion.java
+++ b/Mage.Sets/src/mage/cards/p/PointedDiscussion.java
@@ -20,7 +20,7 @@ public final class PointedDiscussion extends CardImpl {
// You draw two cards, lose 2 life, then create a Blood token.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).setText("you draw two cards"));
- this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).concatBy(","));
+ this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).setText(", lose 2 life"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new BloodToken()).concatBy(", then"));
}
diff --git a/Mage.Sets/src/mage/cards/r/RestlessBloodseeker.java b/Mage.Sets/src/mage/cards/r/RestlessBloodseeker.java
index 9db3475e614..2525c0588d9 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessBloodseeker.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessBloodseeker.java
@@ -30,7 +30,7 @@ public final class RestlessBloodseeker extends CardImpl {
private static final Condition condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 0);
private static final Hint hint = new ConditionHint(condition, "You gained life this turn");
private static final FilterControlledPermanent filter
- = new FilterControlledPermanent(SubType.BLOOD, "Blood token");
+ = new FilterControlledPermanent(SubType.BLOOD, "Blood tokens");
static {
filter.add(TokenPredicate.TRUE);
diff --git a/Mage.Sets/src/mage/cards/r/RunoStromkirk.java b/Mage.Sets/src/mage/cards/r/RunoStromkirk.java
index 66f9927c515..a5c7e229a3b 100644
--- a/Mage.Sets/src/mage/cards/r/RunoStromkirk.java
+++ b/Mage.Sets/src/mage/cards/r/RunoStromkirk.java
@@ -41,7 +41,7 @@ public final class RunoStromkirk extends CardImpl {
// When Runo Stromkirk enters the battlefield, put up to one target creature card from your graveyard on top of your library.
Ability ability = new EntersBattlefieldTriggeredAbility(new PutOnLibraryTargetEffect(true));
- ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
+ ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(ability);
// At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If a creature card with mana value 6 or greater is revealed this way, transform Runo Stromkirk.
diff --git a/Mage.Sets/src/mage/cards/s/SanguineStatuette.java b/Mage.Sets/src/mage/cards/s/SanguineStatuette.java
index e932a5869f7..5452de4839e 100644
--- a/Mage.Sets/src/mage/cards/s/SanguineStatuette.java
+++ b/Mage.Sets/src/mage/cards/s/SanguineStatuette.java
@@ -42,7 +42,7 @@ public final class SanguineStatuette extends CardImpl {
.withSubType(SubType.VAMPIRE)
.withAbility(HasteAbility.getInstance()),
"", Duration.EndOfTurn
- ), filter, false, true));
+ ).setText("have {this} become a 3/3 Vampire artifact creature with haste until end of turn"), filter, false, true));
}
private SanguineStatuette(final SanguineStatuette card) {
diff --git a/Mage.Sets/src/mage/cards/s/SawbladeSlinger.java b/Mage.Sets/src/mage/cards/s/SawbladeSlinger.java
index e0dcf412adf..1a3a454b37d 100644
--- a/Mage.Sets/src/mage/cards/s/SawbladeSlinger.java
+++ b/Mage.Sets/src/mage/cards/s/SawbladeSlinger.java
@@ -23,7 +23,7 @@ import java.util.UUID;
public final class SawbladeSlinger extends CardImpl {
private static final FilterPermanent filter = new FilterArtifactPermanent("artifact an opponent controls");
- private static final FilterPermanent filter2 = new FilterPermanent(SubType.ZOMBIE, "Zombie and opponent controls");
+ private static final FilterPermanent filter2 = new FilterPermanent(SubType.ZOMBIE, "Zombie an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
diff --git a/Mage.Sets/src/mage/cards/s/SpikedRipsaw.java b/Mage.Sets/src/mage/cards/s/SpikedRipsaw.java
index d335ad211db..6b16b2be202 100644
--- a/Mage.Sets/src/mage/cards/s/SpikedRipsaw.java
+++ b/Mage.Sets/src/mage/cards/s/SpikedRipsaw.java
@@ -24,7 +24,7 @@ import mage.filter.common.FilterControlledPermanent;
*/
public final class SpikedRipsaw extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOREST, "forest");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOREST, "Forest");
public SpikedRipsaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SteelcladSpirit.java b/Mage.Sets/src/mage/cards/s/SteelcladSpirit.java
index d8206a5a7a7..010fbe4265a 100644
--- a/Mage.Sets/src/mage/cards/s/SteelcladSpirit.java
+++ b/Mage.Sets/src/mage/cards/s/SteelcladSpirit.java
@@ -9,7 +9,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.filter.StaticFilters;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterEnchantmentPermanent;
import java.util.UUID;
@@ -18,6 +19,8 @@ import java.util.UUID;
*/
public final class SteelcladSpirit extends CardImpl {
+ private static final FilterPermanent filter = new FilterEnchantmentPermanent("an enchantment");
+
public SteelcladSpirit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
@@ -30,8 +33,7 @@ public final class SteelcladSpirit extends CardImpl {
// Whenever an enchantment enters the battlefield under your control, Steelclad Spirit can attack this turn as though it didn't have defender.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
- new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn),
- StaticFilters.FILTER_ENCHANTMENT_PERMANENT
+ new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn), filter
));
}
diff --git a/Mage.Sets/src/mage/cards/s/StensiaUprising.java b/Mage.Sets/src/mage/cards/s/StensiaUprising.java
index 265c6410882..ee79b894364 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaUprising.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaUprising.java
@@ -1,7 +1,7 @@
package mage.cards.s;
import mage.abilities.Ability;
-import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
@@ -47,7 +47,7 @@ public final class StensiaUprising extends CardImpl {
new DamageTargetEffect(7), false, "{this} deals 7 damage to any target"
);
reflexiveTrigger.addTarget(new TargetAnyTarget());
- Ability ability = new BeginningOfUpkeepTriggeredAbility(
+ Ability ability = new BeginningOfEndStepTriggeredAbility(
new CreateTokenEffect(new RedHumanToken()), TargetController.YOU, false
);
ability.addEffect(new ConditionalOneShotEffect(
diff --git a/Mage.Sets/src/mage/cards/s/StormchaserDrake.java b/Mage.Sets/src/mage/cards/s/StormchaserDrake.java
index 72c7df74a19..c9a323e28d1 100644
--- a/Mage.Sets/src/mage/cards/s/StormchaserDrake.java
+++ b/Mage.Sets/src/mage/cards/s/StormchaserDrake.java
@@ -1,19 +1,19 @@
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BecomesTargetTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.FilterSpell;
+import java.util.UUID;
+
/**
- *
* @author weirddan455
*/
public final class StormchaserDrake extends CardImpl {
@@ -35,7 +35,9 @@ public final class StormchaserDrake extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Whenever Stormchaser Drake becomes the target of a spell you control, draw a card.
- this.addAbility(new BecomesTargetTriggeredAbility(new DrawCardSourceControllerEffect(1), filter));
+ this.addAbility(new BecomesTargetTriggeredAbility(
+ new DrawCardSourceControllerEffect(1), filter
+ ).setTriggerPhrase("Whenever {this} becomes the target of a spell you control, "));
}
private StormchaserDrake(final StormchaserDrake card) {
diff --git a/Mage.Sets/src/mage/cards/s/SupernaturalRescue.java b/Mage.Sets/src/mage/cards/s/SupernaturalRescue.java
index 82c4eb3a096..3026def22a2 100644
--- a/Mage.Sets/src/mage/cards/s/SupernaturalRescue.java
+++ b/Mage.Sets/src/mage/cards/s/SupernaturalRescue.java
@@ -44,7 +44,7 @@ public final class SupernaturalRescue extends CardImpl {
Zone.ALL,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FlashAbility.getInstance(), Duration.WhileOnBattlefield, true
- ), condition, "{this} has flash as long as you control a Merfolk")
+ ), condition, "this spell has flash as long as you control a Spirit")
).setRuleAtTheTop(true).addHint(hint));
// When you cast this spell, tap up to two target creatures you don't control.
diff --git a/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java b/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
index 27611324325..db4150de835 100644
--- a/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
+++ b/Mage.Sets/src/mage/cards/u/UlrichOfTheKrallenhorde.java
@@ -32,7 +32,7 @@ public final class UlrichOfTheKrallenhorde extends CardImpl {
// Whenever this creature enters the battlefield or transforms into Ulrich of the Krallenhorde, target creature gets +4/+4 until end of turn.
Ability ability = new TransformsOrEntersTriggeredAbility(
- new BoostTargetEffect(4, 4), false, true
+ new BoostTargetEffect(4, 4), false
);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/u/UndeadButler.java b/Mage.Sets/src/mage/cards/u/UndeadButler.java
index 062491a1886..10c9c921e02 100644
--- a/Mage.Sets/src/mage/cards/u/UndeadButler.java
+++ b/Mage.Sets/src/mage/cards/u/UndeadButler.java
@@ -38,7 +38,7 @@ public final class UndeadButler extends CardImpl {
);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(new DiesSourceTriggeredAbility(new DoWhenCostPaid(
- ability, new ExileSourceFromGraveCost(), "Exile {this}?"
+ ability, new ExileSourceFromGraveCost().setText("exile it"), "Exile {this}?"
)));
}
diff --git a/Mage.Sets/src/mage/cards/v/VoldarenEpicure.java b/Mage.Sets/src/mage/cards/v/VoldarenEpicure.java
index 6ea0a14a46b..378ce7c376b 100644
--- a/Mage.Sets/src/mage/cards/v/VoldarenEpicure.java
+++ b/Mage.Sets/src/mage/cards/v/VoldarenEpicure.java
@@ -27,9 +27,9 @@ public final class VoldarenEpicure extends CardImpl {
this.toughness = new MageInt(1);
// When Voldaren Epicure enters the battlefield, it deals 1 damage to each opponent. Create a Blood token.
- Ability ability = new EntersBattlefieldTriggeredAbility(
- new DamagePlayersEffect(1, TargetController.OPPONENT)
- );
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DamagePlayersEffect(
+ 1, TargetController.OPPONENT, "it"
+ ));
ability.addEffect(new CreateTokenEffect(new BloodToken()));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WitchsWeb.java b/Mage.Sets/src/mage/cards/w/WitchsWeb.java
index dc60631c687..04c4f319254 100644
--- a/Mage.Sets/src/mage/cards/w/WitchsWeb.java
+++ b/Mage.Sets/src/mage/cards/w/WitchsWeb.java
@@ -22,8 +22,8 @@ public final class WitchsWeb extends CardImpl {
// Target creature gets +3/+3 and gains reach until end of turn. Untap it.
this.getSpellAbility().addEffect(new BoostTargetEffect(
- 1, 2, Duration.EndOfTurn
- ).setText("Target creature gets +1/+2"));
+ 3, 3, Duration.EndOfTurn
+ ).setText("Target creature gets +3/+3"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
ReachAbility.getInstance(), Duration.EndOfTurn
).setText("and gains reach until end of turn"));
diff --git a/Mage.Sets/src/mage/cards/w/WretchedThrong.java b/Mage.Sets/src/mage/cards/w/WretchedThrong.java
index 544b021466f..d695e88c130 100644
--- a/Mage.Sets/src/mage/cards/w/WretchedThrong.java
+++ b/Mage.Sets/src/mage/cards/w/WretchedThrong.java
@@ -18,7 +18,7 @@ import java.util.UUID;
*/
public final class WretchedThrong extends CardImpl {
- private static final FilterCard filter = new FilterCard("a card name Wretched Throng");
+ private static final FilterCard filter = new FilterCard("a card named Wretched Throng");
static {
filter.add(new NamePredicate("Wretched Throng"));
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 7023781bb07..2a6b597c0e9 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 = "SLD"; // check all abilities and output cards with wrong abilities texts;
+ private static final String FULL_ABILITIES_CHECK_SET_CODE = "VOW"; // 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
@@ -1581,9 +1581,8 @@ public class VerifyCardDataTest {
refText = refText.substring(1, refText.length() - 1);
}
// planeswalker fix [-7]: xxx
- if (refText.contains("[") && refText.contains("]")) {
- refText = refText.replace("[", "").replace("]", "");
- }
+ refText = refText.replaceAll("\\[([\\−\\+]?\\d*)\\]\\: ", "$1: ");
+
// evergreen keyword fix
for (String s : refText.split("[\\$\\\n]")) {
if (Arrays
diff --git a/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java b/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
index 7595f01dc4a..52e6f6e7695 100644
--- a/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
@@ -10,7 +10,6 @@ import mage.constants.Zone;
import mage.util.CardUtil;
/**
- *
* @author LevelX2
*/
public class PayMoreToCastAsThoughtItHadFlashAbility extends SpellAbility {
@@ -42,7 +41,7 @@ public class PayMoreToCastAsThoughtItHadFlashAbility extends SpellAbility {
@Override
public String getRule() {
- return "You may cast {this} as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. (You may cast it any time you could cast an instant.)";
+ return "You may cast this spell as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. (You may cast it any time you could cast an instant.)";
}
}
diff --git a/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
index 8b916e50359..4902f91d450 100644
--- a/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
@@ -53,6 +53,6 @@ public class TransformIntoSourceTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getTriggerPhrase() {
- return "When" + (whenever ? "ever" : "") + " this creature transforms into this {this}, ";
+ return "When" + (whenever ? "ever" : "") + " this creature transforms into {this}, ";
}
}
diff --git a/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
index bd5cda7396e..de57ff9824d 100644
--- a/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
@@ -12,20 +12,12 @@ import mage.game.permanent.Permanent;
*/
public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
- private final boolean whenever;
-
public TransformsOrEntersTriggeredAbility(Effect effect, boolean optional) {
- this(effect, optional, false);
- }
-
- public TransformsOrEntersTriggeredAbility(Effect effect, boolean optional, boolean whenever) {
super(Zone.BATTLEFIELD, effect, optional);
- this.whenever = whenever;
}
private TransformsOrEntersTriggeredAbility(final TransformsOrEntersTriggeredAbility ability) {
super(ability);
- this.whenever = ability.whenever;
}
@Override
@@ -56,6 +48,6 @@ public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getTriggerPhrase() {
- return "When" + (whenever ? "ever" : "") + " this creature enters the battlefield or transforms into {this}, ";
+ return "Whenever this creature enters the battlefield or transforms into {this}, ";
}
}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java b/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java
index 1169199a7b9..e6dcf15e195 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java
@@ -17,7 +17,7 @@ import mage.players.Player;
public class ExileSourceFromGraveCost extends CostImpl {
public ExileSourceFromGraveCost() {
- this.text = "Exile {this} from your graveyard";
+ this.text = "exile {this} from your graveyard";
}
public ExileSourceFromGraveCost(ExileSourceFromGraveCost cost) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityAttachedEffect.java
index 437d4a8b9db..d46281f5df8 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityAttachedEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityAttachedEffect.java
@@ -7,6 +7,8 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
+import java.util.Locale;
+
/**
* @author BetaSteward_at_googlemail.com
*/
@@ -115,7 +117,7 @@ public class GainAbilityAttachedEffect extends ContinuousEffectImpl {
private void setText() {
StringBuilder sb = new StringBuilder();
- sb.append(attachmentType.verb());
+ sb.append(attachmentType.verb().toLowerCase());
sb.append(" " + targetObjectName + " ");
if (duration == Duration.WhileOnBattlefield) {
sb.append("has ");