diff --git a/Mage.Sets/src/mage/cards/a/AbundantMaw.java b/Mage.Sets/src/mage/cards/a/AbundantMaw.java
index 22088397493..2c564e00cf4 100644
--- a/Mage.Sets/src/mage/cards/a/AbundantMaw.java
+++ b/Mage.Sets/src/mage/cards/a/AbundantMaw.java
@@ -31,8 +31,8 @@ public final class AbundantMaw extends CardImpl {
this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{6}{B}")));
// When you cast Abundant Maw, target opponent loses 3 life and you gain 3 life.
- Ability ability = new CastSourceTriggeredAbility(new GainLifeEffect(3));
- ability.addEffect(new LoseLifeTargetEffect(3).concatBy("and"));
+ Ability ability = new CastSourceTriggeredAbility(new LoseLifeTargetEffect(3));
+ ability.addEffect(new GainLifeEffect(3).concatBy("and"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java b/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java
index 1aeb144daca..fe77742c321 100644
--- a/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java
+++ b/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java
@@ -53,7 +53,7 @@ public final class AceFearlessRebel extends CardImpl {
ability,
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN),
"Sacrifice an artifact?"
- )).setTriggerPhrase("Nitro-9"));
+ )).withFlavorWord("Nitro-9"));
// Doctor's companion
this.addAbility(DoctorsCompanionAbility.getInstance());
diff --git a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
index eb45bfa5d36..208ed972cb7 100644
--- a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
+++ b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java
@@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInHand;
@@ -34,7 +33,7 @@ public final class AdvancedStitchwing extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// {2}{U}, Discard two cards: Return Advanced Stitchwing from your graveyard to the battlefield tapped.
- Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl<>("{2}{U}"));
+ Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl<>("{2}{U}"));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, StaticFilters.FILTER_CARD_CARDS)));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/a/Aeolipile.java b/Mage.Sets/src/mage/cards/a/Aeolipile.java
index ac83131cfe3..d58131f88ba 100644
--- a/Mage.Sets/src/mage/cards/a/Aeolipile.java
+++ b/Mage.Sets/src/mage/cards/a/Aeolipile.java
@@ -24,7 +24,7 @@ public final class Aeolipile extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// {1}, {tap}, Sacrifice Aeolipile: Aeolipile deals 2 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{1}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{1}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
diff --git a/Mage.Sets/src/mage/cards/a/AerieOuphes.java b/Mage.Sets/src/mage/cards/a/AerieOuphes.java
index 3a2510d7652..54eb8d72b71 100644
--- a/Mage.Sets/src/mage/cards/a/AerieOuphes.java
+++ b/Mage.Sets/src/mage/cards/a/AerieOuphes.java
@@ -40,7 +40,7 @@ public final class AerieOuphes extends CardImpl {
// Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount())
- .setText("{this} deals damage equal to its power to target creature with flying"), new SacrificeSourceCost());
+ .setText("it deals damage equal to its power to target creature with flying"), new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AncientHydra.java b/Mage.Sets/src/mage/cards/a/AncientHydra.java
index 1683be4300e..7a2a2d432b9 100644
--- a/Mage.Sets/src/mage/cards/a/AncientHydra.java
+++ b/Mage.Sets/src/mage/cards/a/AncientHydra.java
@@ -32,7 +32,7 @@ public final class AncientHydra extends CardImpl {
// Fading 5
this.addAbility(new FadingAbility(5, this));
// {1}, Remove a fade counter from Ancient Hydra: Ancient Hydra deals 1 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{1}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new ManaCostsImpl<>("{1}"));
ability.addCost(new RemoveCountersSourceCost(CounterType.FADE.createInstance(1)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
index 6d9c0805d9a..48d49d07e0a 100644
--- a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
+++ b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -25,7 +24,7 @@ import mage.filter.common.FilterControlledPermanent;
public final class AngelicOverseer extends CardImpl {
private static final String rule1 = "As long as you control a Human, {this} has hexproof";
- private static final String rule2 = "and is indestructible";
+ private static final String rule2 = "and indestructible";
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human");
static {
diff --git a/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java b/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java
index 9467eb125c4..d5e73c52b2d 100644
--- a/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java
+++ b/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java
@@ -43,7 +43,7 @@ public final class ArixmethesSlumberingIsle extends CardImpl {
// Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it.
Ability ability = new EntersBattlefieldAbility(
new TapSourceEffect(true), false, null,
- "{this} enters the battlefield tapped with five slumber counters on it", null
+ "{this} enters the battlefield tapped with five slumber counters on it.", null
);
ability.addEffect(new AddCountersSourceEffect(CounterType.SLUMBER.createInstance(5)));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
index 34765583d58..4d617d726c2 100644
--- a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
+++ b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java
@@ -35,7 +35,7 @@ public final class ArmageddonClock extends CardImpl {
// {4}: Remove a doom counter from Armageddon Clock. Any player may activate this ability but only during any upkeep step.
ActivatedAbilityImpl ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
new RemoveCounterSourceEffect(CounterType.DOOM.createInstance()), new ManaCostsImpl<>("{4}"), new IsStepCondition(PhaseStep.UPKEEP, false),
- "Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step");
+ "{4}: Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step.");
ability.setMayActivate(TargetController.ANY);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AuraFlux.java b/Mage.Sets/src/mage/cards/a/AuraFlux.java
index b23d4ddcca0..1f61e68a70e 100644
--- a/Mage.Sets/src/mage/cards/a/AuraFlux.java
+++ b/Mage.Sets/src/mage/cards/a/AuraFlux.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -13,7 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
-import mage.constants.Zone;
import mage.filter.common.FilterEnchantmentPermanent;
/**
@@ -26,8 +24,9 @@ public final class AuraFlux extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
// Other enchantments have "At the beginning of your upkeep, sacrifice this enchantment unless you pay {2}."
- Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2)), TargetController.YOU, false);
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true)));
+ Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2))
+ .setText("sacrifice this enchantment unless you pay {2}"), TargetController.YOU, false);
+ this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true)));
}
private AuraFlux(final AuraFlux card) {
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
index 2073fc4b786..bcdd9b609c0 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java
@@ -45,7 +45,7 @@ public final class AvatarOfFury extends CardImpl {
// If an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfFuryCondition.instance)
- .setText("if an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast"))
+ .setText("if an opponent controls seven or more lands, this spell costs {6} less to cast"))
.addHint(new ConditionHint(AvatarOfFuryCondition.instance, "Opponent controls seven or more lands"))
);
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
index 2c40e9d674f..f2ad028ddbc 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java
@@ -32,7 +32,7 @@ public final class AvatarOfHope extends CardImpl {
// If you have 3 or less life, Avatar of Hope costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfHopeCondition.instance)
- .setText("if you have 3 or less life, Avatar of Hope costs {6} less to cast"))
+ .setText("if you have 3 or less life, this spell costs {6} less to cast"))
.addHint(new ConditionHint(AvatarOfHopeCondition.instance))
);
diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
index 603d5d04a85..7f9e11ce448 100644
--- a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
+++ b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java
@@ -27,7 +27,7 @@ public final class AvatarOfWill extends CardImpl {
// If an opponent has no cards in hand, Avatar of Will costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, OpponentHasNoCardsInHandCondition.instance)
- .setText("If an opponent has no cards in hand, Avatar of Will costs {6} less to cast")
+ .setText("If an opponent has no cards in hand, this spell costs {6} less to cast")
).addHint(new ConditionHint(OpponentHasNoCardsInHandCondition.instance, "Opponent has no cards in hand"))
);
diff --git a/Mage.Sets/src/mage/cards/b/BarbarianRing.java b/Mage.Sets/src/mage/cards/b/BarbarianRing.java
index 3d721dc9643..947a8386b37 100644
--- a/Mage.Sets/src/mage/cards/b/BarbarianRing.java
+++ b/Mage.Sets/src/mage/cards/b/BarbarianRing.java
@@ -34,7 +34,7 @@ public final class BarbarianRing extends CardImpl {
// Threshold - {R}, {T}, Sacrifice Barbarian Ring: Barbarian Ring deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard.
Ability thresholdAbility = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
- new DamageTargetEffect(2),
+ new DamageTargetEffect(2, "it"),
new ManaCostsImpl<>("{R}"),
new CardsInControllerGraveyardCondition(7));
thresholdAbility.addCost(new TapSourceCost());
diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
index 205b00562ef..bd40d2c4077 100644
--- a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
+++ b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java
@@ -28,7 +28,7 @@ public final class BattlewiseHoplite extends CardImpl {
// Heroic - Whenever you cast a spell that targets Battlewise Hoplite, put a +1/+1 counter on Battlewise Hoplite, then scry 1.
Ability ability = new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
- ability.addEffect(new ScryEffect(1, false));
+ ability.addEffect(new ScryEffect(1, false).concatBy(", then"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
index f5567ff1170..c117dcd2f27 100644
--- a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
+++ b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java
@@ -1,4 +1,3 @@
-
package mage.cards.b;
import java.util.UUID;
@@ -10,10 +9,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -27,7 +25,7 @@ public final class BenefactorsDraught extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Untap all creatures.
- this.getSpellAbility().addEffect(new UntapAllEffect(new FilterCreaturePermanent()));
+ this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
// Until end of turn, whenever a creature an opponent controls blocks, draw a card.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BenefactorsDraughtTriggeredAbility()));
diff --git a/Mage.Sets/src/mage/cards/b/Bereavement.java b/Mage.Sets/src/mage/cards/b/Bereavement.java
index 4b6a0f8f254..9f90fc52865 100644
--- a/Mage.Sets/src/mage/cards/b/Bereavement.java
+++ b/Mage.Sets/src/mage/cards/b/Bereavement.java
@@ -1,4 +1,3 @@
-
package mage.cards.b;
import java.util.UUID;
@@ -40,7 +39,7 @@ public final class Bereavement extends CardImpl {
class BereavementTriggeredAbility extends TriggeredAbilityImpl {
- public BereavementTriggeredAbility() {
+ BereavementTriggeredAbility() {
super(Zone.BATTLEFIELD, new DiscardTargetEffect(1));
}
@@ -72,6 +71,6 @@ class BereavementTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a green creature dies, its controller discards a card";
+ return "Whenever a green creature dies, its controller discards a card.";
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BlightedGorge.java b/Mage.Sets/src/mage/cards/b/BlightedGorge.java
index 5a096ba121d..59cd161df34 100644
--- a/Mage.Sets/src/mage/cards/b/BlightedGorge.java
+++ b/Mage.Sets/src/mage/cards/b/BlightedGorge.java
@@ -29,7 +29,7 @@ public final class BlightedGorge extends CardImpl {
// {4}{R}, {T}, Sacrifice Blighted Gorge: Blighted Gorge deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new DamageTargetEffect(2),
+ new DamageTargetEffect(2, "it"),
new ManaCostsImpl<>("{4}{R}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/b/BloodMoney.java b/Mage.Sets/src/mage/cards/b/BloodMoney.java
index cacf25f81a4..1c140952a0b 100644
--- a/Mage.Sets/src/mage/cards/b/BloodMoney.java
+++ b/Mage.Sets/src/mage/cards/b/BloodMoney.java
@@ -40,7 +40,7 @@ class BloodMoneyEffect extends OneShotEffect {
BloodMoneyEffect() {
super(Outcome.Benefit);
- staticText = "destroy all creatures. For each nontoken creature destroyed this way, create a tapped Treasure token";
+ staticText = "destroy all creatures. For each nontoken creature destroyed this way, you create a tapped Treasure token";
}
private BloodMoneyEffect(final BloodMoneyEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/b/BoneDragon.java b/Mage.Sets/src/mage/cards/b/BoneDragon.java
index f356a27c55e..376ab62b425 100644
--- a/Mage.Sets/src/mage/cards/b/BoneDragon.java
+++ b/Mage.Sets/src/mage/cards/b/BoneDragon.java
@@ -43,7 +43,7 @@ public final class BoneDragon extends CardImpl {
// {3}{B}{B}, Exile seven other cards from your graveyard: Return Bone Dragon from your graveyard to the battlefield tapped.
Ability ability = new SimpleActivatedAbility(
Zone.GRAVEYARD,
- new ReturnSourceFromGraveyardToBattlefieldEffect(true),
+ new ReturnSourceFromGraveyardToBattlefieldEffect(true, false),
new ManaCostsImpl<>("{3}{B}{B}")
);
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(7, filter)));
diff --git a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
index 9676683c732..9df6b1075fa 100644
--- a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
+++ b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java
@@ -22,7 +22,7 @@ public final class BoneyardWurm extends CardImpl {
this.subtype.add(SubType.WURM);
// Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.
- DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
+ DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURES);
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(value)));
}
diff --git a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
index bd9270cb213..505a927094c 100644
--- a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
+++ b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java
@@ -4,15 +4,14 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.DamageControllerEffect;
+import mage.abilities.effects.common.FlipCoinEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.game.Game;
import mage.game.permanent.token.DjinnToken;
-import mage.players.Player;
import java.util.UUID;
@@ -25,7 +24,10 @@ public final class BottleOfSuleiman extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// {1}, Sacrifice Bottle of Suleiman: Flip a coin. If you lose the flip, Bottle of Suleiman deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BottleOfSuleimanEffect(), new GenericManaCost(1));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new FlipCoinEffect(
+ new CreateTokenEffect(new DjinnToken()),
+ new DamageControllerEffect(5)
+ ), new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
@@ -39,37 +41,3 @@ public final class BottleOfSuleiman extends CardImpl {
return new BottleOfSuleiman(this);
}
}
-
-class BottleOfSuleimanEffect extends OneShotEffect {
-
- public BottleOfSuleimanEffect() {
- super(Outcome.PutCreatureInPlay);
- staticText = "Flip a coin. If you lose the flip, {this} deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying.";
- }
-
- private BottleOfSuleimanEffect(final BottleOfSuleimanEffect effect) {
- super(effect);
- }
-
- @Override
- public BottleOfSuleimanEffect copy() {
- return new BottleOfSuleimanEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player you = game.getPlayer(source.getControllerId());
- if (you != null) {
- if (you.flipCoin(source, game, true)) {
- DjinnToken token = new DjinnToken();
- token.putOntoBattlefield(1, game, source, source.getControllerId());
- return true;
- } else {
- you.damage(5, source.getSourceId(), source, game);
- return true;
- }
-
- }
- return false;
- }
-}
diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
index 7c0756c793f..cfe4aa43c1b 100644
--- a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
+++ b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
@@ -42,7 +42,8 @@ public final class BrassTalonChimera extends CardImpl {
// Sacrifice Brass-Talon Chimera: Put a +2/+2 counter on target Chimera creature. It gains first strike. (This effect lasts indefinitely.)
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
- ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield).setText("It gains first strike. (This effect lasts indefinitely.)"));
+ ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield)
+ .setText("It gains first strike. (This effect lasts indefinitely.)"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
index af355950f87..e9e08b4717b 100644
--- a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
+++ b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java
@@ -1,32 +1,24 @@
-
-
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
+import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
*
* @author LevelX2
*/
-
public final class BronzebeakMoa extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
- static {
- filter.add(AnotherPredicate.instance);
- }
public BronzebeakMoa (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
this.subtype.add(SubType.BIRD);
@@ -35,8 +27,8 @@ public final class BronzebeakMoa extends CardImpl {
this.toughness = new MageInt(2);
// Whenever another creature enters the battlefield under your control, Bronzebeak Moa gets +3/+3 until end of turn.
- this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3,3, Duration.EndOfTurn),filter,false));
-
+ this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
+ new BoostSourceEffect(3,3, Duration.EndOfTurn), StaticFilters.FILTER_ANOTHER_CREATURE));
}
private BronzebeakMoa(final BronzebeakMoa card) {
diff --git a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
index a64d1e6ad82..eef192722f9 100644
--- a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
+++ b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java
@@ -1,27 +1,31 @@
-
package mage.cards.b;
-import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
-import mage.filter.common.FilterUntappedCreature;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+
+import java.util.UUID;
/**
* @author noxx
*/
public final class BuildersBlessing extends CardImpl {
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures");
+ static {
+ filter.add(TappedPredicate.UNTAPPED);
+ }
+
public BuildersBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
-
// Untapped creatures you control get +0/+2.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures"))));
+ this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter)));
}
private BuildersBlessing(final BuildersBlessing card) {
diff --git a/Mage.Sets/src/mage/cards/b/BurningVengeance.java b/Mage.Sets/src/mage/cards/b/BurningVengeance.java
index cf588d3e76b..9a4d8c7f87a 100644
--- a/Mage.Sets/src/mage/cards/b/BurningVengeance.java
+++ b/Mage.Sets/src/mage/cards/b/BurningVengeance.java
@@ -1,4 +1,3 @@
-
package mage.cards.b;
import java.util.UUID;
@@ -10,7 +9,6 @@ import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.target.common.TargetAnyTarget;
/**
@@ -38,12 +36,10 @@ public final class BurningVengeance extends CardImpl {
class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl {
- private static final String abilityText = "Whenever you cast a spell from your graveyard, {this} deals 2 damage to any target";
-
BurningVengeanceOnCastAbility() {
super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false);
- TargetAnyTarget target = new TargetAnyTarget();
- this.addTarget(target);
+ this.addTarget(new TargetAnyTarget());
+ setTriggerPhrase("Whenever you cast a spell from your graveyard, ");
}
private BurningVengeanceOnCastAbility(final BurningVengeanceOnCastAbility ability) {
@@ -65,8 +61,4 @@ class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl {
return new BurningVengeanceOnCastAbility(this);
}
- @Override
- public String getRule() {
- return abilityText;
- }
}
diff --git a/Mage.Sets/src/mage/cards/c/Castle.java b/Mage.Sets/src/mage/cards/c/Castle.java
index 33b3cd45ff2..bbc584f70a8 100644
--- a/Mage.Sets/src/mage/cards/c/Castle.java
+++ b/Mage.Sets/src/mage/cards/c/Castle.java
@@ -1,29 +1,33 @@
-
package mage.cards.c;
-import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
-import mage.filter.common.FilterUntappedCreature;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+
+import java.util.UUID;
/**
*
* @author KholdFuzion
-
*/
public final class Castle extends CardImpl {
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures");
+ static {
+ filter.add(TappedPredicate.UNTAPPED);
+ }
+
public Castle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
// Untapped creatures you control get +0/+2.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature())));
+ this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter)));
}
private Castle(final Castle card) {
diff --git a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
index 8cb63f4a8f6..6bb422cba54 100644
--- a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
+++ b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java
@@ -42,7 +42,7 @@ public final class ChamberOfManipulation extends CardImpl {
controlAbility.addTarget(new TargetCreaturePermanent());
controlAbility.addCost(new DiscardTargetCost(new TargetCardInHand()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(controlAbility, AttachmentType.AURA,
- Duration.WhileOnBattlefield, "Enchanted land has \"{t}, Discard a card: Gain control of target creature until end of turn.\"")));
+ Duration.WhileOnBattlefield, "Enchanted land has \"{T}, Discard a card: Gain control of target creature until end of turn.\"")));
}
private ChamberOfManipulation(final ChamberOfManipulation card) {
diff --git a/Mage.Sets/src/mage/cards/c/CinderElemental.java b/Mage.Sets/src/mage/cards/c/CinderElemental.java
index ca6e6a7ccff..19aea72d13c 100644
--- a/Mage.Sets/src/mage/cards/c/CinderElemental.java
+++ b/Mage.Sets/src/mage/cards/c/CinderElemental.java
@@ -31,7 +31,7 @@ public final class CinderElemental extends CardImpl {
this.toughness = new MageInt(2);
// {X}{R}, {tap}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
diff --git a/Mage.Sets/src/mage/cards/c/ClaimFame.java b/Mage.Sets/src/mage/cards/c/ClaimFame.java
index fcd9a4c36aa..86f4b77ab63 100644
--- a/Mage.Sets/src/mage/cards/c/ClaimFame.java
+++ b/Mage.Sets/src/mage/cards/c/ClaimFame.java
@@ -43,7 +43,8 @@ public final class ClaimFame extends SplitCard {
// Aftermath
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
// Target creature gets +2/+0 and gains haste until end of turn.
- getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
+ getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn)
+ .setText("target creature gets +2/+0"));
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
.setText("and gains haste until end of turn"));
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
diff --git a/Mage.Sets/src/mage/cards/c/CoercivePortal.java b/Mage.Sets/src/mage/cards/c/CoercivePortal.java
index 6f974f82fdd..bb6b7808401 100644
--- a/Mage.Sets/src/mage/cards/c/CoercivePortal.java
+++ b/Mage.Sets/src/mage/cards/c/CoercivePortal.java
@@ -32,7 +32,7 @@ public final class CoercivePortal extends CardImpl {
false, false, "Will of the council — " +
"At the beginning of your upkeep, starting with you, each player votes for carnage or homage. " +
"If carnage gets more votes, sacrifice {this} and destroy all nonland permanents. " +
- "If homage gets more votes or the vote is tied, draw a card"
+ "If homage gets more votes or the vote is tied, draw a card."
));
}
diff --git a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
index afe3a4833cd..873af3d5d45 100644
--- a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
+++ b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java
@@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@@ -38,7 +37,7 @@ public final class ConsecrateLand extends CardImpl {
this.addAbility(ability);
// Enchanted land is indestructible and can't be enchanted by other Auras.
- Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land is indestructible"));
+ Ability ability2 = new SimpleStaticAbility(new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land has indestructible"));
ability2.addEffect(new ConsecrateLandRuleEffect());
this.addAbility(ability2);
}
diff --git a/Mage.Sets/src/mage/cards/c/CracklingTriton.java b/Mage.Sets/src/mage/cards/c/CracklingTriton.java
index 0f4fec2ab91..f329fa11fd4 100644
--- a/Mage.Sets/src/mage/cards/c/CracklingTriton.java
+++ b/Mage.Sets/src/mage/cards/c/CracklingTriton.java
@@ -30,7 +30,7 @@ public final class CracklingTriton extends CardImpl {
this.toughness = new MageInt(3);
// {2}{R}, Sacrifice Crackling Triton: Crackling Triton deals 2 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{2}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
index cb3e9cb25e5..f66502b321c 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java
@@ -32,7 +32,7 @@ public final class CurseOfOblivion extends CardImpl {
// At the beginning of enchanted player's upkeep, that player exiles two cards from their graveyard.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ExileFromZoneTargetEffect(
Zone.GRAVEYARD, StaticFilters.FILTER_CARD_CARDS, 2, false
- ).setText("that player exiles two cards from their graveyard"), TargetController.ENCHANTED, false));
+ ), TargetController.ENCHANTED, false));
}
private CurseOfOblivion(final CurseOfOblivion card) {
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
index f172e205f86..f54be276769 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java
@@ -55,7 +55,7 @@ class CurseOfVitalityEffect extends OneShotEffect {
CurseOfVitalityEffect() {
super(Outcome.Benefit);
- this.staticText = "gain 2 life. Each opponent attacking that player does the same.";
+ this.staticText = "you gain 2 life. Each opponent attacking that player does the same.";
}
private CurseOfVitalityEffect(final CurseOfVitalityEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
index 5ddbc1c9f17..a4333416a76 100644
--- a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
+++ b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java
@@ -23,7 +23,7 @@ public final class CyclopeanMummy extends CardImpl {
this.toughness = new MageInt(1);
// When Cyclopean Mummy dies, exile it.
- this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect()));
+ this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect().setText("exile it")));
}
private CyclopeanMummy(final CyclopeanMummy card) {
diff --git a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
index 03dfb9ae0d3..9747d8f0a69 100644
--- a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
+++ b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.d;
import java.util.UUID;
@@ -27,8 +25,9 @@ public final class DecimatorWeb extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(2), new ManaCostsImpl<>("{4}"));
ability.addCost(new TapSourceCost());
- ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance()));
- ability.addEffect(new MillCardsTargetEffect(6));
+ ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance())
+ .setText(", gets a poison counter"));
+ ability.addEffect(new MillCardsTargetEffect(6).setText(", then mills six cards"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DelifsCube.java b/Mage.Sets/src/mage/cards/d/DelifsCube.java
index 9732043d492..e13aeabddd6 100644
--- a/Mage.Sets/src/mage/cards/d/DelifsCube.java
+++ b/Mage.Sets/src/mage/cards/d/DelifsCube.java
@@ -14,11 +14,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Outcome;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@@ -41,7 +41,7 @@ public final class DelifsCube extends CardImpl {
// {2}, Remove a cube counter from Delif's Cube: Regenerate target creature.
ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new GenericManaCost(2));
ability.addCost(new RemoveCountersSourceCost(CounterType.CUBE.createInstance()));
- ability.addTarget(new TargetControlledCreaturePermanent());
+ ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
index 359f3de6ce5..bfe805f223b 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java
@@ -1,4 +1,3 @@
-
package mage.cards.d;
import mage.MageInt;
@@ -25,7 +24,7 @@ import java.util.UUID;
* @author noxx
*/
public final class DevoutChaplain extends CardImpl {
- private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control");
+ private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Humans you control");
static {
humanFilter.add(TappedPredicate.UNTAPPED);
diff --git a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
index c440838a5ff..a277f231690 100644
--- a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
+++ b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java
@@ -32,7 +32,7 @@ public final class DivebomberGriffin extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// {tap}, Sacrifice Divebomber Griffin: Divebomber Griffin deals 3 damage to target attacking or blocking creature.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/d/Doomfall.java b/Mage.Sets/src/mage/cards/d/Doomfall.java
index d92f1f435e9..e622d96099b 100644
--- a/Mage.Sets/src/mage/cards/d/Doomfall.java
+++ b/Mage.Sets/src/mage/cards/d/Doomfall.java
@@ -56,7 +56,7 @@ class DoomfallEffect extends OneShotEffect {
public DoomfallEffect() {
super(Outcome.Exile);
- this.staticText = "target player exiles a creature they control";
+ this.staticText = "target opponent exiles a creature they control";
}
private DoomfallEffect(final DoomfallEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
index c7ea9fe0d27..83600e44b11 100644
--- a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
+++ b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
@@ -23,7 +23,7 @@ import java.util.UUID;
public final class EarlOfSquirrel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
- private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels you control");
+ private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels");
static {
filter.add(TokenPredicate.TRUE);
diff --git a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
index d1ef52f0390..168c82ae6cc 100644
--- a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
+++ b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java
@@ -15,7 +15,6 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.target.targetpointer.FixedTarget;
/**
@@ -80,6 +79,6 @@ class EdricSpymasterOfTrestTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card";
+ return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card.";
}
}
diff --git a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
index 75d864f0087..3fa1ea16729 100644
--- a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
+++ b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java
@@ -6,7 +6,6 @@ import mage.abilities.effects.common.PreventAllDamageToAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TokenPredicate;
@@ -34,7 +33,7 @@ public final class EmmaraTandris extends CardImpl {
this.toughness = new MageInt(7);
// Prevent all damage that would be dealt to creature tokens you control.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, StaticFilters.FILTER_CREATURE_TOKENS)));
+ this.addAbility(new SimpleStaticAbility(new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filter)));
}
private EmmaraTandris(final EmmaraTandris card) {
diff --git a/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java b/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java
index 05acd8c90a2..582e587c496 100644
--- a/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java
+++ b/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java
@@ -45,7 +45,7 @@ class EnterTheGodEternalsEffect extends OneShotEffect {
EnterTheGodEternalsEffect() {
super(Outcome.Benefit);
staticText = "{this} deals 4 damage to target creature and you gain life equal to the damage dealt this way. "
- + "Target player mills four cards. Amass 4.";
+ + "Target player mills four cards. Amass Zombies 4.";
}
private EnterTheGodEternalsEffect(final EnterTheGodEternalsEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/f/FaerieNoble.java b/Mage.Sets/src/mage/cards/f/FaerieNoble.java
index 17f3c7263b4..8a7074d25db 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieNoble.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieNoble.java
@@ -40,7 +40,7 @@ public final class FaerieNoble extends CardImpl {
// Other Faerie creatures you control get +0/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, filter, true)));
// {tap}: Other Faerie creatures you control get +1/+0 until end of turn.
- Effect effect = new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield, filter, true);
+ Effect effect = new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, true);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/f/FatalMutation.java b/Mage.Sets/src/mage/cards/f/FatalMutation.java
index 92add95162f..989229771bc 100644
--- a/Mage.Sets/src/mage/cards/f/FatalMutation.java
+++ b/Mage.Sets/src/mage/cards/f/FatalMutation.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -54,7 +53,7 @@ class FatalMutationAbility extends TriggeredAbilityImpl {
public FatalMutationAbility(Effect effect) {
super(Zone.BATTLEFIELD, effect, false);
- setTriggerPhrase("Whenever enchanted creature is turned face up, ");
+ setTriggerPhrase("When enchanted creature is turned face up, ");
}
private FatalMutationAbility(final FatalMutationAbility ability) {
@@ -81,4 +80,3 @@ class FatalMutationAbility extends TriggeredAbilityImpl {
}
}
-
diff --git a/Mage.Sets/src/mage/cards/f/FavorableWinds.java b/Mage.Sets/src/mage/cards/f/FavorableWinds.java
index 74a1074444d..552efaffaea 100644
--- a/Mage.Sets/src/mage/cards/f/FavorableWinds.java
+++ b/Mage.Sets/src/mage/cards/f/FavorableWinds.java
@@ -1,25 +1,24 @@
-
package mage.cards.f;
-import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.common.continuous.BoostControlledEffect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.keyword.FlyingAbility;
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.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
+import java.util.UUID;
+
/**
*
* @author noxx
*/
public final class FavorableWinds extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with flying");
static {
filter.add(new AbilityPredicate(FlyingAbility.class));
@@ -29,7 +28,7 @@ public final class FavorableWinds extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
// Creatures you control with flying get +1/+1.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
+ this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
}
private FavorableWinds(final FavorableWinds card) {
diff --git a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
index d6a31abbb4b..4e2113188fe 100644
--- a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
+++ b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java
@@ -37,7 +37,7 @@ public final class FiveAlarmFire extends CardImpl {
//Whenever a creature you control deals combat damage, put a blaze counter on Five-Alarm Fire.
this.addAbility(new FiveAlarmFireTriggeredAbility());
//Remove five blaze counters from Five-Alarm Fire: Five-Alarm Fire deals 5 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5)));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
index bf33c517010..145fbfd8ad8 100644
--- a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
+++ b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -24,9 +23,8 @@ public final class FleetfeatherSandals extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature has flying and haste.
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD,
- new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard));
- ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard));
+ Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.EQUIPMENT));
+ ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and haste"));
this.addAbility(ability);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
diff --git a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
index 9af08dab707..0556b056104 100644
--- a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
+++ b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java
@@ -36,7 +36,7 @@ public final class FlitterstepEidolon extends CardImpl {
this.addAbility(new CantBeBlockedSourceAbility());
// Enchanted creature gets +1/+1 and can't be blocked.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield));
- ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA));
+ ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA).setText("and can't be blocked"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/f/FontOfIre.java b/Mage.Sets/src/mage/cards/f/FontOfIre.java
index 8a012a878fe..861dbfc2df3 100644
--- a/Mage.Sets/src/mage/cards/f/FontOfIre.java
+++ b/Mage.Sets/src/mage/cards/f/FontOfIre.java
@@ -23,7 +23,7 @@ public final class FontOfIre extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
// {3}{R}, Sacrifice Font of Ire: Font of Ire deals 5 damage to target player.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new ManaCostsImpl<>("{3}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new ManaCostsImpl<>("{3}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
index 27ab9e75b2d..014a7754548 100644
--- a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
+++ b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java
@@ -34,9 +34,9 @@ public final class FromUnderTheFloorboards extends CardImpl {
// If From Under the Floorboards's madness cost was paid, instead create X of those tokens tapped and you gain X life.
DynamicValue xValue = new FromUnderTheFloorboardsManacostVariableValue();
Effect effect = new CreateTokenEffect(new ZombieToken(), xValue, true, false);
- effect.setText("Create three 2/2 black Zombie creature tokens tapped and you gain 3 life. If {this} madness cost was paid, instead create X of those tokens tapped and you gain X life");
+ effect.setText("Create three tapped 2/2 black Zombie creature tokens and you gain 3 life. If this spell's madness cost was paid, instead create X of those tokens");
this.getSpellAbility().addEffect(effect);
- this.getSpellAbility().addEffect(new GainLifeEffect(xValue));
+ this.getSpellAbility().addEffect(new GainLifeEffect(xValue).concatBy("and"));
}
private FromUnderTheFloorboards(final FromUnderTheFloorboards card) {
diff --git a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
index 9621f81124a..930acdf5fed 100644
--- a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
+++ b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -21,7 +20,9 @@ public final class GerrardsBattleCry extends CardImpl {
public GerrardsBattleCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), new ManaCostsImpl<>("{2}{W}")));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false),
+ new ManaCostsImpl<>("{2}{W}")));
}
private GerrardsBattleCry(final GerrardsBattleCry card) {
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java
index 3452516fb4c..27457bf2633 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java
@@ -24,7 +24,6 @@ import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
-import mage.target.targetadjustment.TargetAdjuster;
import java.util.UUID;
@@ -51,7 +50,7 @@ public final class GiftOfDoom extends CardImpl {
));
ability2.addEffect(new GainAbilityAttachedEffect(
IndestructibleAbility.getInstance(), AttachmentType.AURA
- ));
+ ).setText("and indestructible"));
this.addAbility(ability2);
// Morph—Sacrifice another creature.
diff --git a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
index 96265eff9e0..d73aab1c354 100644
--- a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
+++ b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import mage.abilities.Ability;
@@ -18,7 +17,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
@@ -44,8 +43,7 @@ public final class GleamOfAuthority extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control
- DynamicValue amount = new CountersOnControlledCount();
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(amount, amount, Duration.WhileOnBattlefield)
+ this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(CountersOnControlledCount.instance, CountersOnControlledCount.instance)
.setText("Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control.")
));
@@ -53,7 +51,7 @@ public final class GleamOfAuthority extends CardImpl {
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA));
Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BolsterEffect(1), new ManaCostsImpl<>("{W}"));
gainedAbility.addCost(new TapSourceCost());
- ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bloster 1.\""));
+ ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bolster 1.\""));
this.addAbility(ability);
}
@@ -67,22 +65,14 @@ public final class GleamOfAuthority extends CardImpl {
}
}
-class CountersOnControlledCount implements DynamicValue {
-
- static FilterCreaturePermanent filter = new FilterCreaturePermanent();
-
- CountersOnControlledCount() {
- }
-
- private CountersOnControlledCount(final CountersOnControlledCount dynamicValue) {
- super();
- }
+enum CountersOnControlledCount implements DynamicValue {
+ instance;
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
int count = 0;
Permanent enchantment = game.getPermanent(sourceAbility.getSourceId());
- for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, sourceAbility.getControllerId(), game)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, sourceAbility.getControllerId(), game)) {
if (!permanent.getId().equals(enchantment.getAttachedTo())) {
count += permanent.getCounters(game).getCount(CounterType.P1P1);
}
@@ -92,7 +82,7 @@ class CountersOnControlledCount implements DynamicValue {
@Override
public CountersOnControlledCount copy() {
- return new CountersOnControlledCount(this);
+ return instance;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/g/Goblinslide.java b/Mage.Sets/src/mage/cards/g/Goblinslide.java
index 0d08e8cd1f5..e0e7f1e1fd3 100644
--- a/Mage.Sets/src/mage/cards/g/Goblinslide.java
+++ b/Mage.Sets/src/mage/cards/g/Goblinslide.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -25,7 +24,7 @@ public final class Goblinslide extends CardImpl {
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(
new CreateTokenEffect(new GoblinToken(true)),
new GenericManaCost(1)),
- StaticFilters.FILTER_SPELL_NON_CREATURE,
+ StaticFilters.FILTER_SPELL_A_NON_CREATURE,
false
));
}
diff --git a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
index 4cbc21ed9c3..a1e8ea0622e 100644
--- a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
+++ b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class GodPharaohsFaithful extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("a blue, black or red spell");
+ private static final FilterSpell filter = new FilterSpell("a blue, black, or red spell");
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED)));
}
diff --git a/Mage.Sets/src/mage/cards/g/GroundPounder.java b/Mage.Sets/src/mage/cards/g/GroundPounder.java
index 4b6983a4e0a..9e105a63ecc 100644
--- a/Mage.Sets/src/mage/cards/g/GroundPounder.java
+++ b/Mage.Sets/src/mage/cards/g/GroundPounder.java
@@ -109,6 +109,6 @@ class GroundPounderTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn";
+ return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn.";
}
}
diff --git a/Mage.Sets/src/mage/cards/g/GruulWarChant.java b/Mage.Sets/src/mage/cards/g/GruulWarChant.java
index b5f645a99b7..c63618e8235 100644
--- a/Mage.Sets/src/mage/cards/g/GruulWarChant.java
+++ b/Mage.Sets/src/mage/cards/g/GruulWarChant.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -12,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
-import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AttackingPredicate;
@@ -33,10 +31,9 @@ public final class GruulWarChant extends CardImpl {
// Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.)
- Ability ability = new SimpleStaticAbility(
- Zone.BATTLEFIELD,
- new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter));
- ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
+ Ability ability = new SimpleStaticAbility(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
+ ability.addEffect(new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter)
+ .setText("and have menace"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
index 53c5b8259a8..97da98912a5 100644
--- a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
+++ b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java
@@ -1,12 +1,10 @@
-
-
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
-import mage.abilities.effects.common.continuous.BoostControlledEffect;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.effects.common.counter.AddPoisonCounterTargetEffect;
import mage.abilities.keyword.InfectAbility;
import mage.cards.CardImpl;
@@ -14,9 +12,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.filter.FilterSpell;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.TargetPlayer;
@@ -26,7 +23,7 @@ import mage.target.TargetPlayer;
*/
public final class HandOfThePraetors extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with infect");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with infect");
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with infect");
static {
@@ -44,7 +41,7 @@ public final class HandOfThePraetors extends CardImpl {
this.toughness = new MageInt(2);
this.addAbility(InfectAbility.getInstance());
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
+ this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
SpellCastControllerTriggeredAbility ability = new SpellCastControllerTriggeredAbility(new AddPoisonCounterTargetEffect(1), filterSpell, false);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
index 19ad209ea35..1775707ee30 100644
--- a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
+++ b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.UUID;
@@ -18,10 +17,9 @@ public final class HarrowingJourney extends CardImpl {
public HarrowingJourney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
-
// Target player draws three cards and loses 3 life.
this.getSpellAbility().addEffect(new DrawCardTargetEffect(3));
- this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3));
+ this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3).setText("and loses 3 life"));
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/h/HiredTorturer.java b/Mage.Sets/src/mage/cards/h/HiredTorturer.java
index 6af3ec9c734..c0b3477d705 100644
--- a/Mage.Sets/src/mage/cards/h/HiredTorturer.java
+++ b/Mage.Sets/src/mage/cards/h/HiredTorturer.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.h;
import java.util.UUID;
@@ -66,7 +64,7 @@ class HiredTorturerEffect extends OneShotEffect {
public HiredTorturerEffect() {
super(Outcome.Detriment);
- staticText = "and reveals a card at random from their hand";
+ staticText = ", then reveals a card at random from their hand";
}
private HiredTorturerEffect(final HiredTorturerEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
index 622186b3499..ddc1c888895 100644
--- a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
+++ b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.UUID;
@@ -18,10 +17,9 @@ public final class HorrifyingRevelation extends CardImpl {
public HorrifyingRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
-
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new DiscardTargetEffect(1));
- this.getSpellAbility().addEffect(new MillCardsTargetEffect(1));
+ this.getSpellAbility().addEffect(new MillCardsTargetEffect(1).setText(", then mills a card"));
}
private HorrifyingRevelation(final HorrifyingRevelation card) {
diff --git a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
index cf22eeb631a..602052ccff7 100644
--- a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
+++ b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java
@@ -35,7 +35,7 @@ public final class IcatianJavelineers extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.JAVELIN.createInstance()), "with a javelin counter on it"));
// {tap}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new TapSourceCost());
ability.addCost(new RemoveCountersSourceCost(CounterType.JAVELIN.createInstance()));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/i/Insight.java b/Mage.Sets/src/mage/cards/i/Insight.java
index f0fc8a179d7..cdb3e0286a9 100644
--- a/Mage.Sets/src/mage/cards/i/Insight.java
+++ b/Mage.Sets/src/mage/cards/i/Insight.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class Insight extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("green spell");
+ private static final FilterSpell filter = new FilterSpell("a green spell");
static {
filter.add(new ColorPredicate(ObjectColor.GREEN));
@@ -28,7 +28,7 @@ public final class Insight extends CardImpl {
// Whenever an opponent casts a green spell, you draw a card.
- this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), filter, false));
+ this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1, "you"), filter, false));
}
private Insight(final Insight card) {
diff --git a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
index 52b969aab40..d69696056d1 100644
--- a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
+++ b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import mage.MageInt;
@@ -26,7 +25,7 @@ import java.util.UUID;
*/
public final class IronHeartChimera extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
static {
filter.add(SubType.CHIMERA.getPredicate());
@@ -44,7 +43,8 @@ public final class IronHeartChimera extends CardImpl {
// Sacrifice Iron-Heart Chimera: Put a +2/+2 counter on target Chimera creature. It gains vigilance.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
- ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield)
+ .setText("It gains vigilance. (This effect lasts indefinitely.)"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/i/IronMaiden.java b/Mage.Sets/src/mage/cards/i/IronMaiden.java
index cae9107d065..db3611c4aa7 100644
--- a/Mage.Sets/src/mage/cards/i/IronMaiden.java
+++ b/Mage.Sets/src/mage/cards/i/IronMaiden.java
@@ -1,7 +1,6 @@
package mage.cards.i;
import mage.abilities.Ability;
-import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@@ -42,11 +41,11 @@ class IronMaidenEffect extends OneShotEffect {
private IronMaidenEffect(final IronMaidenEffect effect) {
super(effect);
- this.staticText = "Iron Maiden deals X damage to that player, where X is the number of cards in their hand minus 4";
}
public IronMaidenEffect() {
super(Outcome.Damage);
+ this.staticText = "{this} deals X damage to that player, where X is the number of cards in their hand minus 4";
}
@Override
diff --git a/Mage.Sets/src/mage/cards/j/JadeBearer.java b/Mage.Sets/src/mage/cards/j/JadeBearer.java
index e2dc0843194..98c977b51a2 100644
--- a/Mage.Sets/src/mage/cards/j/JadeBearer.java
+++ b/Mage.Sets/src/mage/cards/j/JadeBearer.java
@@ -1,4 +1,3 @@
-
package mage.cards.j;
import java.util.UUID;
@@ -10,9 +9,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
-import mage.target.common.TargetCreaturePermanent;
+import mage.target.TargetPermanent;
/**
*
@@ -20,12 +19,10 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class JadeBearer extends CardImpl {
- private static final FilterCreaturePermanent filterYourAnotherMerfolk = new FilterCreaturePermanent();
+ private static final FilterControlledCreaturePermanent filter =
+ new FilterControlledCreaturePermanent(SubType.MERFOLK, "another target Merfolk you control");
static {
- filterYourAnotherMerfolk.add(AnotherPredicate.instance);
- filterYourAnotherMerfolk.add(SubType.MERFOLK.getPredicate());
- filterYourAnotherMerfolk.add(TargetController.YOU.getControllerPredicate());
- filterYourAnotherMerfolk.setMessage("another " + SubType.MERFOLK.toString() + " you control");
+ filter.add(AnotherPredicate.instance);
}
public JadeBearer(UUID ownerId, CardSetInfo setInfo) {
@@ -38,7 +35,7 @@ public final class JadeBearer extends CardImpl {
// When Jade Bearer enters the battlefield, put a +1/+1 counter on another target Merfolk you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), false);
- ability.addTarget(new TargetCreaturePermanent(filterYourAnotherMerfolk));
+ ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
@@ -50,4 +47,4 @@ public final class JadeBearer extends CardImpl {
public JadeBearer copy() {
return new JadeBearer(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/j/JujuBubble.java b/Mage.Sets/src/mage/cards/j/JujuBubble.java
index b3791e4d247..e15b58d9727 100644
--- a/Mage.Sets/src/mage/cards/j/JujuBubble.java
+++ b/Mage.Sets/src/mage/cards/j/JujuBubble.java
@@ -28,7 +28,7 @@ public final class JujuBubble extends CardImpl {
// When you play a card, sacrifice Juju Bubble.
this.addAbility(new PlayCardTriggeredAbility(TargetController.YOU, Zone.BATTLEFIELD,
- new SacrificeSourceEffect(), false));
+ new SacrificeSourceEffect(), false).setTriggerPhrase("When you play a card, "));
// {2}: You gain 1 life.
this.addAbility(new SimpleActivatedAbility(new GainLifeEffect(1), new GenericManaCost(2)));
diff --git a/Mage.Sets/src/mage/cards/k/KarplusanHound.java b/Mage.Sets/src/mage/cards/k/KarplusanHound.java
index 0594dc97da8..cfd0c78ea9d 100644
--- a/Mage.Sets/src/mage/cards/k/KarplusanHound.java
+++ b/Mage.Sets/src/mage/cards/k/KarplusanHound.java
@@ -1,4 +1,3 @@
-
package mage.cards.k;
import java.util.UUID;
@@ -33,7 +32,7 @@ public final class KarplusanHound extends CardImpl {
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new AttacksTriggeredAbility(new DamageTargetEffect(2), false),
new PermanentsOnTheBattlefieldCondition(filter),
- "if you control a Chandra planeswalker, "
+ "Whenever {this} attacks, if you control a Chandra planeswalker, "
+ "this creature deals 2 damage to any target"
);
ability.addTarget(new TargetAnyTarget());
diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java b/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java
index 4620d62c95f..4480660ced7 100644
--- a/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java
+++ b/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java
@@ -57,8 +57,7 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
KjeldoranEliteGuardEffect() {
super(Outcome.Neutral);
staticText = "Target creature gets +2/+2 until end of turn. "
- + "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard. "
- + "Activate only during combat.";
+ + "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard.";
}
@Override
diff --git a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
index 9b326478f41..917ddd8f8aa 100644
--- a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
+++ b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java
@@ -1,4 +1,3 @@
-
package mage.cards.l;
import mage.MageInt;
@@ -44,7 +43,8 @@ public final class LeadBellyChimera extends CardImpl {
// Sacrifice Lead-Belly Chimera: Put a +2/+2 counter on target Chimera creature. It gains trample.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
- ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield)
+ .setText("It gains trample. (This effect lasts indefinitely.)"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java b/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java
index 6cf1e61d8b3..1fa59966910 100644
--- a/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java
+++ b/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java
@@ -29,7 +29,7 @@ import java.util.UUID;
*/
public final class LozhanDragonsLegacy extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("an Adventure spell or Dragon spell");
+ private static final FilterSpell filter = new FilterSpell("an Adventure or Dragon spell");
private static final FilterPermanentOrPlayer filter2
= new FilterAnyTarget("any target that isn't a commander");
diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
index 3e05b674b76..59c1dcd3ca3 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -46,8 +45,7 @@ public final class MalakirSoothsayer extends CardImpl {
new TapSourceCost());
ability.setAbilityWord(AbilityWord.COHORT);
ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
- Effect effect = new LoseLifeSourceControllerEffect(1);
- effect.setText("and you lose a life");
+ Effect effect = new LoseLifeSourceControllerEffect(1).concatBy("and");
ability.addEffect(effect);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
index f95a0cc1c78..f0101955cb8 100644
--- a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
+++ b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java
@@ -32,7 +32,7 @@ import mage.game.permanent.Permanent;
*/
public final class ManorGargoyle extends CardImpl {
- private static final String rule = "{this} is indestructible as long as it has defender.";
+ private static final String rule = "{this} has indestructible as long as it has defender.";
public ManorGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
diff --git a/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java b/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java
index 736a9c9f795..93257ecac1f 100644
--- a/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java
+++ b/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java
@@ -48,7 +48,7 @@ public final class MiirymSentinelWyrm extends CardImpl {
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true),
filter, false, SetTargetPointer.PERMANENT, "Whenever another nontoken Dragon " +
"enters the battlefield under your control, create a token that's a copy of it, " +
- "except the token isn't legendary if that Dragon is legendary."
+ "except the token isn't legendary."
));
}
diff --git a/Mage.Sets/src/mage/cards/m/MizziumTank.java b/Mage.Sets/src/mage/cards/m/MizziumTank.java
index 5201a837df7..4d8e8a21f41 100644
--- a/Mage.Sets/src/mage/cards/m/MizziumTank.java
+++ b/Mage.Sets/src/mage/cards/m/MizziumTank.java
@@ -34,7 +34,7 @@ public final class MizziumTank extends CardImpl {
// Whenever you cast a noncreature spell, Mizzium Tank becomes an artifact creature and gets +1/+1 until end of turn.
Ability ability = new SpellCastControllerTriggeredAbility(new AddCardTypeSourceEffect(
Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE
- ).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_NON_CREATURE, false);
+ ).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false);
ability.addEffect(new BoostSourceEffect(
1, 1, Duration.EndOfTurn
).setText("and gets +1/+1 until end of turn"));
diff --git a/Mage.Sets/src/mage/cards/m/MoggFanatic.java b/Mage.Sets/src/mage/cards/m/MoggFanatic.java
index 098c1faa79e..d386cde732d 100644
--- a/Mage.Sets/src/mage/cards/m/MoggFanatic.java
+++ b/Mage.Sets/src/mage/cards/m/MoggFanatic.java
@@ -28,7 +28,7 @@ public final class MoggFanatic extends CardImpl {
this.toughness = new MageInt(1);
// Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MortalWound.java b/Mage.Sets/src/mage/cards/m/MortalWound.java
index fa9bd9ccc80..46c865183d6 100644
--- a/Mage.Sets/src/mage/cards/m/MortalWound.java
+++ b/Mage.Sets/src/mage/cards/m/MortalWound.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -32,7 +31,8 @@ public final class MortalWound extends CardImpl {
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
// When enchanted creature is dealt damage, destroy it.
- this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false));
+ this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false)
+ .setTriggerPhrase("When enchanted creature is dealt damage, "));
}
private MortalWound(final MortalWound card) {
diff --git a/Mage.Sets/src/mage/cards/m/Mugging.java b/Mage.Sets/src/mage/cards/m/Mugging.java
index 8c667fe340f..cafce54ccee 100644
--- a/Mage.Sets/src/mage/cards/m/Mugging.java
+++ b/Mage.Sets/src/mage/cards/m/Mugging.java
@@ -22,7 +22,8 @@ public final class Mugging extends CardImpl {
// Mugging deals 2 damage to target creature. That creature can't block this turn.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
- this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
+ this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)
+ .setText("That creature can't block this turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/m/MummyParamount.java b/Mage.Sets/src/mage/cards/m/MummyParamount.java
index c061c996ab9..356ccec5e17 100644
--- a/Mage.Sets/src/mage/cards/m/MummyParamount.java
+++ b/Mage.Sets/src/mage/cards/m/MummyParamount.java
@@ -1,9 +1,8 @@
-
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
-import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
+import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -33,7 +32,7 @@ public final class MummyParamount extends CardImpl {
this.toughness = new MageInt(2);
// Whenever another Zombie enters the battlefield under your control, Mummy Paramount gets +1/+1 until end of turn.
- this.addAbility(new EntersBattlefieldAllTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter));
+ this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter));
}
private MummyParamount(final MummyParamount card) {
diff --git a/Mage.Sets/src/mage/cards/n/NissasRevelation.java b/Mage.Sets/src/mage/cards/n/NissasRevelation.java
index 3cd20baf995..fb738ca94c0 100644
--- a/Mage.Sets/src/mage/cards/n/NissasRevelation.java
+++ b/Mage.Sets/src/mage/cards/n/NissasRevelation.java
@@ -26,7 +26,7 @@ public final class NissasRevelation extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}");
// Scry 5, then reveal the top card of your library. If it's a creature card, you draw cards equal to its power and you gain life equal to its toughness.
- this.getSpellAbility().addEffect(new ScryEffect(5));
+ this.getSpellAbility().addEffect(new ScryEffect(5, false));
this.getSpellAbility().addEffect(new NissasRevelationEffect());
}
diff --git a/Mage.Sets/src/mage/cards/n/NoMercy.java b/Mage.Sets/src/mage/cards/n/NoMercy.java
index 49a6da0df2b..8bf1494e14a 100644
--- a/Mage.Sets/src/mage/cards/n/NoMercy.java
+++ b/Mage.Sets/src/mage/cards/n/NoMercy.java
@@ -69,7 +69,7 @@ public final class NoMercy extends CardImpl {
@Override
public String getRule() {
- return "Whenever a creature deals damage to you, destroy it";
+ return "Whenever a creature deals damage to you, destroy it.";
}
}
diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
index 1409bedb6f7..852de264283 100644
--- a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
+++ b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java
@@ -36,7 +36,7 @@ public final class NoxiousGhoul extends CardImpl {
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new BoostAllEffect(
-1, -1, Duration.EndOfTurn, filter, false
- ), filter2, false, true));
+ ), filter2));
}
private NoxiousGhoul(final NoxiousGhoul card) {
diff --git a/Mage.Sets/src/mage/cards/o/OasisRitualist.java b/Mage.Sets/src/mage/cards/o/OasisRitualist.java
index 97bc4049047..5819239ab07 100644
--- a/Mage.Sets/src/mage/cards/o/OasisRitualist.java
+++ b/Mage.Sets/src/mage/cards/o/OasisRitualist.java
@@ -1,4 +1,3 @@
-
package mage.cards.o;
import java.util.UUID;
@@ -6,7 +5,6 @@ import mage.MageInt;
import mage.abilities.costs.common.ExertSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
-import mage.abilities.effects.mana.ManaEffect;
import mage.abilities.mana.AnyColorManaAbility;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@@ -33,7 +31,7 @@ public final class OasisRitualist extends CardImpl {
this.addAbility(new AnyColorManaAbility());
// {T}, Exert Oasis Ritualist: Add two mana of any one color to your manna pool.
SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD,
- (ManaEffect) new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color to your manna pool. (An exerted creature won't untap during your next untap step.)"),
+ new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color. (An exerted creature won't untap during your next untap step.)"),
new TapSourceCost());
ability.addCost(new ExertSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
index eacbfe91f67..ae29c463a13 100644
--- a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
+++ b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java
@@ -41,9 +41,9 @@ public final class OketrasLastMercy extends CardImpl {
class OketrasLastMercyEffect extends OneShotEffect {
- public OketrasLastMercyEffect() {
+ OketrasLastMercyEffect() {
super(Outcome.Benefit);
- staticText = "Your life total becomes your starting life total";
+ staticText = "Your life total becomes equal to your starting life total";
}
private OketrasLastMercyEffect(final OketrasLastMercyEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/o/OraclesInsight.java b/Mage.Sets/src/mage/cards/o/OraclesInsight.java
index bdade2f208f..639c77606c9 100644
--- a/Mage.Sets/src/mage/cards/o/OraclesInsight.java
+++ b/Mage.Sets/src/mage/cards/o/OraclesInsight.java
@@ -41,8 +41,7 @@ public final class OraclesInsight extends CardImpl {
// Enchanted creature has "{T}: Scry 1, then draw a card."
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new TapSourceCost());
- Effect effect = new DrawCardSourceControllerEffect(1);
- effect.setText("then draw a card");
+ Effect effect = new DrawCardSourceControllerEffect(1).concatBy(", then");
ability.addEffect(effect);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.AURA, Duration.WhileOnBattlefield)));
}
diff --git a/Mage.Sets/src/mage/cards/p/PainKami.java b/Mage.Sets/src/mage/cards/p/PainKami.java
index 0c6955a4e4a..5216627200e 100644
--- a/Mage.Sets/src/mage/cards/p/PainKami.java
+++ b/Mage.Sets/src/mage/cards/p/PainKami.java
@@ -28,7 +28,7 @@ public final class PainKami extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/p/PharikasCure.java b/Mage.Sets/src/mage/cards/p/PharikasCure.java
index d20f5e4679d..2297efad30f 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasCure.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasCure.java
@@ -22,7 +22,7 @@ public final class PharikasCure extends CardImpl {
// Pharika's Cure deals 2 damage to target creature and you gain 2 life.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new GainLifeEffect(2));
+ this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
}
private PharikasCure(final PharikasCure card) {
diff --git a/Mage.Sets/src/mage/cards/p/PharikasMender.java b/Mage.Sets/src/mage/cards/p/PharikasMender.java
index a7d488a96a0..07791e6c096 100644
--- a/Mage.Sets/src/mage/cards/p/PharikasMender.java
+++ b/Mage.Sets/src/mage/cards/p/PharikasMender.java
@@ -36,7 +36,7 @@ public final class PharikasMender extends CardImpl {
this.toughness = new MageInt(3);
// When Pharika's Mender enters the battlefield, you may return target creature or enchantment card from your graveyard to your hand.
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect());
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true);
Target target = new TargetCardInYourGraveyard(filter);
ability.addTarget(target);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/p/PolisCrusher.java b/Mage.Sets/src/mage/cards/p/PolisCrusher.java
index fbbecb52c09..1a1ca134934 100644
--- a/Mage.Sets/src/mage/cards/p/PolisCrusher.java
+++ b/Mage.Sets/src/mage/cards/p/PolisCrusher.java
@@ -108,6 +108,6 @@ class PolisCrusherTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} deals combat damage to a player,"
- + " if {this} is monstrous, destroy target enchantment that player controls";
+ + " if {this} is monstrous, destroy target enchantment that player controls.";
}
}
diff --git a/Mage.Sets/src/mage/cards/p/PsychicStrike.java b/Mage.Sets/src/mage/cards/p/PsychicStrike.java
index fbe49e6e112..208c50fe765 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicStrike.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicStrike.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import java.util.UUID;
@@ -8,7 +7,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
-import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.stack.StackObject;
import mage.players.Player;
@@ -23,9 +21,8 @@ public final class PsychicStrike extends CardImpl {
public PsychicStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}");
-
// Counter target spell. Its controller puts the top two cards of their library into their graveyard.
- this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL));
+ this.getSpellAbility().addTarget(new TargetSpell());
this.getSpellAbility().addEffect(new PsychicStrikeEffect());
}
@@ -41,9 +38,9 @@ public final class PsychicStrike extends CardImpl {
class PsychicStrikeEffect extends OneShotEffect {
- public PsychicStrikeEffect() {
+ PsychicStrikeEffect() {
super(Outcome.Detriment);
- staticText = "Counter target spell. Its controller puts the top two cards of their library into their graveyard";
+ staticText = "Counter target spell. Its controller mills two cards";
}
private PsychicStrikeEffect(final PsychicStrikeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
index ac46c40cbaf..46f8e880036 100644
--- a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
+++ b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java
@@ -22,7 +22,7 @@ public final class PurgeTheProfane extends CardImpl {
// Target opponent discards two cards and you gain 2 life.
this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
this.getSpellAbility().addTarget(new TargetOpponent());
- this.getSpellAbility().addEffect(new GainLifeEffect(2));
+ this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
}
private PurgeTheProfane(final PurgeTheProfane card) {
diff --git a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
index 4926a326f99..e86166369af 100644
--- a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
+++ b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java
@@ -1,10 +1,9 @@
-
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.TrampleAbility;
@@ -35,8 +34,10 @@ public final class RagebloodShaman extends CardImpl {
// Trample
this.addAbility(TrampleAbility.getInstance());
// Other Minotaur creatures you control get +1/+1 and have trample.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(StaticValue.get(1), StaticValue.get(1), Duration.WhileOnBattlefield, filter, true)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
+ Ability ability = new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true));
+ ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)
+ .setText("and have trample"));
+ this.addAbility(ability);
}
private RagebloodShaman(final RagebloodShaman card) {
diff --git a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
index 986be72f816..79c33631452 100644
--- a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
+++ b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -28,7 +27,6 @@ public final class RaidersSpoils extends CardImpl {
public RaidersSpoils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
-
// Creatures you control get +1/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield)));
@@ -50,6 +48,7 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl {
RaidersSpoilsTriggeredAbility() {
super(Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new PayLifeCost(1)), false);
+ setTriggerPhrase("Whenever a Warrior you control deals combat damage to a player, ");
}
private RaidersSpoilsTriggeredAbility(final RaidersSpoilsTriggeredAbility ability) {
@@ -75,9 +74,5 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl {
}
return false;
}
-
- @Override
- public String getRule() {
- return "Whenever a Warrior you control deals combat damage to a player, you may pay 1 life. If you do, draw a card";
- }
+
}
diff --git a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
index c114f101294..eda5e45c9f2 100644
--- a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
+++ b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java
@@ -43,7 +43,7 @@ public final class RasputinDreamweaver extends CardImpl {
this.toughness = new MageInt(1);
// Rasputin Dreamweaver enters the battlefield with seven dream counters on it.
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "seven dream counters on it"));
+ this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "with seven dream counters on it"));
// Remove a dream counter from Rasputin: Add {C}.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(1),
diff --git a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
index 3dc95cbe6c6..afcb5c8c6b1 100644
--- a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
+++ b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java
@@ -1,18 +1,18 @@
-
package mage.cards.r;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ExertCreatureControllerTriggeredAbility;
-import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.LoseLifeOpponentsEffect;
import mage.abilities.keyword.ExertAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
+import mage.constants.TargetController;
+
+import java.util.UUID;
/**
*
@@ -32,12 +32,8 @@ public final class ResoluteSurvivors extends CardImpl {
this.addAbility(new ExertAbility(null, false));
// Whenever you exert a creature, Resolute Survivors deals 1 damage to each opponent and you gain 1 life.
- Effect effect = new LoseLifeOpponentsEffect(1);
- effect.setText("Whenever you exert a creature, {this} deals 1 damage to each opponent");
- Ability ability = new ExertCreatureControllerTriggeredAbility(effect);
- effect = new GainLifeEffect(1);
- effect.setText("and you gain 1 life");
- ability.addEffect(effect);
+ Ability ability = new ExertCreatureControllerTriggeredAbility(new DamagePlayersEffect(1, TargetController.OPPONENT));
+ ability.addEffect(new GainLifeEffect(1).concatBy("and"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/ReverentMantra.java b/Mage.Sets/src/mage/cards/r/ReverentMantra.java
index 4b2911d55dc..beb1f050847 100644
--- a/Mage.Sets/src/mage/cards/r/ReverentMantra.java
+++ b/Mage.Sets/src/mage/cards/r/ReverentMantra.java
@@ -35,7 +35,7 @@ public final class ReverentMantra extends CardImpl {
// Choose a color. All creatures gain protection from the chosen color until end of turn.
this.getSpellAbility().addEffect(new GainProtectionFromColorAllEffect(
- Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE
+ Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_ALL_CREATURES
));
}
diff --git a/Mage.Sets/src/mage/cards/r/RhonassMonument.java b/Mage.Sets/src/mage/cards/r/RhonassMonument.java
index 26e522b0a8c..a24e0a3b715 100644
--- a/Mage.Sets/src/mage/cards/r/RhonassMonument.java
+++ b/Mage.Sets/src/mage/cards/r/RhonassMonument.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -49,9 +48,10 @@ public final class RhonassMonument extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1)));
// Whenever you cast a creature spell, target creature you control gets +2/+2 and gains trample until end of turn.
- Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), filter2, false);
+ Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn)
+ .setText("target creature you control gets +2/+2"), filter2, false);
Effect effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn);
- effect.setText(" and gains trample until end of turn");
+ effect.setText("and gains trample until end of turn");
ability.addEffect(effect);
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/r/RighteousWar.java b/Mage.Sets/src/mage/cards/r/RighteousWar.java
index a541948fbf8..09f2165673c 100644
--- a/Mage.Sets/src/mage/cards/r/RighteousWar.java
+++ b/Mage.Sets/src/mage/cards/r/RighteousWar.java
@@ -20,8 +20,8 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class RighteousWar extends CardImpl {
- private static final FilterCreaturePermanent whiteFilter = new FilterCreaturePermanent("white creatures you control");
- private static final FilterCreaturePermanent blackFilter = new FilterCreaturePermanent("black creatures you control");
+ private static final FilterCreaturePermanent whiteFilter = new FilterCreaturePermanent("white creatures");
+ private static final FilterCreaturePermanent blackFilter = new FilterCreaturePermanent("black creatures");
static {
whiteFilter.add(new ColorPredicate(ObjectColor.WHITE));
diff --git a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
index 5e398b4a149..5bbf4683aa9 100644
--- a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
+++ b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.r;
import java.util.UUID;
@@ -21,7 +19,7 @@ import mage.filter.common.FilterControlledPermanent;
*/
public final class RofellosLlanowarEmissary extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control");
static {
filter.add(SubType.FOREST.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/r/RunicArmasaur.java b/Mage.Sets/src/mage/cards/r/RunicArmasaur.java
index 80d62d9d807..a6da7f45b1b 100644
--- a/Mage.Sets/src/mage/cards/r/RunicArmasaur.java
+++ b/Mage.Sets/src/mage/cards/r/RunicArmasaur.java
@@ -46,6 +46,7 @@ class RunicArmasaurTriggeredAbility extends TriggeredAbilityImpl {
RunicArmasaurTriggeredAbility() {
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), true);
+ setTriggerPhrase("Whenever an opponent activates an ability of a creature or land that isn't a mana ability, ");
}
private RunicArmasaurTriggeredAbility(final RunicArmasaurTriggeredAbility ability) {
@@ -77,8 +78,4 @@ class RunicArmasaurTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
- public String getRule() {
- return "Whenever an opponent activates an ability of a creature or a land that is not a mana ability, you may draw a card.";
- }
}
diff --git a/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java b/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java
index 1f622dc48b1..e3eea006854 100644
--- a/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java
+++ b/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java
@@ -14,9 +14,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
-import mage.filter.common.FilterUntappedCreature;
+import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.TappedPredicate;
@@ -29,11 +28,13 @@ import java.util.UUID;
*/
public final class SarythTheVipersFang extends CardImpl {
- private static final FilterPermanent filterTapped = new FilterControlledCreaturePermanent("tapped creatures");
+ private static final FilterPermanent filterTapped = new FilterCreaturePermanent("tapped creatures");
+ private static final FilterPermanent filterUntapped = new FilterCreaturePermanent("untapped creatures");
private static final FilterPermanent filterAbility = new FilterControlledPermanent("another target creature or land you control");
static {
filterTapped.add(TappedPredicate.TAPPED);
+ filterUntapped.add(TappedPredicate.UNTAPPED);
filterAbility.add(Predicates.or(
CardType.CREATURE.getPredicate(),
CardType.LAND.getPredicate()
@@ -51,13 +52,13 @@ public final class SarythTheVipersFang extends CardImpl {
this.toughness = new MageInt(4);
// Other tapped creatures you control have deathtouch.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ this.addAbility(new SimpleStaticAbility(
new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filterTapped, true)
));
// Other untapped creatures you control have hexproof.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
- new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures"), true)
+ this.addAbility(new SimpleStaticAbility(
+ new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filterUntapped, true)
));
// {1}, {T}: Untap another target creature or land you control.
diff --git a/Mage.Sets/src/mage/cards/s/Scaldkin.java b/Mage.Sets/src/mage/cards/s/Scaldkin.java
index f6172d8ad28..c774f73f01d 100644
--- a/Mage.Sets/src/mage/cards/s/Scaldkin.java
+++ b/Mage.Sets/src/mage/cards/s/Scaldkin.java
@@ -32,7 +32,7 @@ public final class Scaldkin extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// {2}{R}, Sacrifice Scaldkin: Scaldkin deals 2 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{2}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
index 0772dff0170..17d4a194423 100644
--- a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
+++ b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -26,7 +25,7 @@ public final class ScrollOfOrigins extends CardImpl {
// {2}, {tap}: Draw a card if you have seven or more cards in hand.
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2),
new CardsInHandCondition(ComparisonType.MORE_THAN, 6),
- "Draw a card if you have seven or more cards in hand.");
+ "{2}, {T}: Draw a card if you have seven or more cards in hand.");
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SealOfFire.java b/Mage.Sets/src/mage/cards/s/SealOfFire.java
index 7eb61c3930a..448448a5fe4 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfFire.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfFire.java
@@ -23,7 +23,7 @@ public final class SealOfFire extends CardImpl {
// Sacrifice Seal of Fire: Seal of Fire deals 2 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new SacrificeSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
index 88a30cfe3f7..9271565faa9 100644
--- a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
+++ b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.HashSet;
@@ -8,7 +7,7 @@ import mage.MageObject;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
-import mage.abilities.common.EntersBattlefieldAbility;
+import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
@@ -35,7 +34,7 @@ public final class SealOfTheGuildpact extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// As Seal of the Guildpact enters the battlefield, choose two colors.
- this.addAbility(new EntersBattlefieldAbility(new SealOfTheGuildpactChooseColorEffect()));
+ this.addAbility(new AsEntersBattlefieldAbility(new SealOfTheGuildpactChooseColorEffect()));
// Each spell you cast costs {1} less to cast for each of the chosen colors it is.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SealOfTheGuildpactCostReductionEffect()));
diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java b/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java
index e7b7734ac4d..3c6987114f0 100644
--- a/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java
+++ b/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java
@@ -30,7 +30,7 @@ public final class SelesnyaEulogist extends CardImpl {
// {2}{G}: Exile target creature card from a graveyard, then populate.
Ability ability = new SimpleActivatedAbility(
- new ExileTargetEffect().setText("exile target creature card from a graveyard,"),
+ new ExileTargetEffect().setText("exile target creature card from a graveyard"),
new ManaCostsImpl<>("{2}{G}")
);
ability.addEffect(new PopulateEffect("then"));
diff --git a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
index b3c3ba7fafd..daa1321b874 100644
--- a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
+++ b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java
@@ -28,7 +28,7 @@ public final class SkaabRuinator extends CardImpl {
// As an additional cost to cast Skaab Ruinator, exile three creature cards from your graveyard.
this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(
- 3, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
+ 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD
)));
// Flying
diff --git a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
index 065640cdbcd..d61dc860a73 100644
--- a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
+++ b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java
@@ -28,7 +28,7 @@ public final class SpareFromEvil extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
// Creatures you control gain protection from non-Human creatures until end of turn.
- this.getSpellAbility().addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filterNonHuman), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
+ this.getSpellAbility().addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filterNonHuman), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
}
private SpareFromEvil(final SpareFromEvil card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
index b0fa53ae3bf..92758f0fc14 100644
--- a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
+++ b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java
@@ -34,7 +34,7 @@ public final class SpellheartChimera extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// Spellheart Chimera's power is equal to the number of instant and sorcery cards in your graveyard.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerSourceEffect(
- new CardsInControllerGraveyardCount(new FilterInstantOrSorceryCard("instant and sorcery cards in your graveyard")))));
+ new CardsInControllerGraveyardCount(new FilterInstantOrSorceryCard("instant and sorcery cards")))));
}
private SpellheartChimera(final SpellheartChimera card) {
diff --git a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
index 0f465c4a792..71968fe0135 100644
--- a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
+++ b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java
@@ -23,7 +23,8 @@ public final class StructuralCollapse extends CardImpl {
// Target player sacrifices an artifact and a land. Structural Collapse deals 2 damage to that player.
this.getSpellAbility().addEffect(new SacrificeEffect(new FilterArtifactPermanent(), 1, "Target player"));
- this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_LANDS, 1, "Target player"));
+ this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_LANDS, 1, "Target player")
+ .setText("and a land"));
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/s/Stupor.java b/Mage.Sets/src/mage/cards/s/Stupor.java
index d22f5d102a0..61f46a70616 100644
--- a/Mage.Sets/src/mage/cards/s/Stupor.java
+++ b/Mage.Sets/src/mage/cards/s/Stupor.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -20,7 +19,7 @@ public final class Stupor extends CardImpl {
// Target opponent discards a card at random, then discards a card.
this.getSpellAbility().addEffect(new DiscardTargetEffect(1, true));
- this.getSpellAbility().addEffect(new DiscardTargetEffect(1));
+ this.getSpellAbility().addEffect(new DiscardTargetEffect(1).setText(", then discards a card"));
this.getSpellAbility().addTarget(new TargetOpponent());
}
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
index 8ed58112222..7ccaf78bd07 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java
@@ -11,7 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
* @author nantuko
@@ -32,7 +32,7 @@ public final class ThrabenSentry extends CardImpl {
// Whenever another creature you control dies, you may transform Thraben Sentry.
this.addAbility(new TransformAbility());
- this.addAbility(new DiesCreatureTriggeredAbility(new TransformSourceEffect(), true, new FilterControlledCreaturePermanent()));
+ this.addAbility(new DiesCreatureTriggeredAbility(new TransformSourceEffect(), true, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
}
private ThrabenSentry(final ThrabenSentry card) {
diff --git a/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java b/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java
index 1cd818313af..563838fd3fb 100644
--- a/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java
+++ b/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java
@@ -57,7 +57,7 @@ class ThrakkusTheButcherEffect extends OneShotEffect {
ThrakkusTheButcherEffect() {
super(Outcome.Benefit);
- staticText = "double the power of each dragon you control until end of turn";
+ staticText = "double the power of each Dragon you control until end of turn";
}
private ThrakkusTheButcherEffect(final ThrakkusTheButcherEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/t/TickingGnomes.java b/Mage.Sets/src/mage/cards/t/TickingGnomes.java
index 882a7edabf6..e9cd153a227 100644
--- a/Mage.Sets/src/mage/cards/t/TickingGnomes.java
+++ b/Mage.Sets/src/mage/cards/t/TickingGnomes.java
@@ -31,7 +31,7 @@ public final class TickingGnomes extends CardImpl {
// Echo {3}
this.addAbility(new EchoAbility("{3}"));
// Sacrifice Ticking Gnomes: Ticking Gnomes deals 1 damage to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TinWingChimera.java b/Mage.Sets/src/mage/cards/t/TinWingChimera.java
index 5be3e3ece59..58354c79201 100644
--- a/Mage.Sets/src/mage/cards/t/TinWingChimera.java
+++ b/Mage.Sets/src/mage/cards/t/TinWingChimera.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import mage.MageInt;
@@ -26,7 +25,7 @@ import java.util.UUID;
*/
public final class TinWingChimera extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
static {
filter.add(SubType.CHIMERA.getPredicate());
@@ -44,7 +43,8 @@ public final class TinWingChimera extends CardImpl {
// Sacrifice Tin-Wing Chimera: Put a +2/+2 counter on target Chimera creature. It gains flying.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
- ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield)
+ .setText("It gains flying. (This effect lasts indefinitely.)"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/ToilTrouble.java b/Mage.Sets/src/mage/cards/t/ToilTrouble.java
index 49e8ce37f46..c1c2a83838a 100644
--- a/Mage.Sets/src/mage/cards/t/ToilTrouble.java
+++ b/Mage.Sets/src/mage/cards/t/ToilTrouble.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -22,7 +21,7 @@ public final class ToilTrouble extends SplitCard {
// Target player draws two cards and loses 2 life.
getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to draw two cards and lose 2 life"));
getLeftHalfCard().getSpellAbility().addEffect(new DrawCardTargetEffect(2));
- getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2));
+ getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life"));
// Trouble
// Trouble deals damage to target player equal to the number of cards in that player's hand.
diff --git a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
index 299422a0517..e8456cb1317 100644
--- a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
+++ b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java
@@ -27,7 +27,7 @@ public final class TraitorousBlood extends CardImpl {
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).setText("It gains trample"));
- this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("and hast until end of turn"));
+ this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("and haste until end of turn"));
}
private TraitorousBlood(final TraitorousBlood card) {
diff --git a/Mage.Sets/src/mage/cards/t/TriadOfFates.java b/Mage.Sets/src/mage/cards/t/TriadOfFates.java
index 3b9723adec2..64fc33c8a14 100644
--- a/Mage.Sets/src/mage/cards/t/TriadOfFates.java
+++ b/Mage.Sets/src/mage/cards/t/TriadOfFates.java
@@ -13,8 +13,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -28,11 +28,9 @@ import java.util.UUID;
*/
public final class TriadOfFates extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filterCounter = new FilterCreaturePermanent("creature that has a fate counter on it");
static {
- filter.add(AnotherPredicate.instance);
filterCounter.add(CounterType.FATE.getPredicate());
}
@@ -48,7 +46,7 @@ public final class TriadOfFates extends CardImpl {
// {1}, {T}: Put a fate counter on another target creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.FATE.createInstance()), new ManaCostsImpl<>("{1}"));
ability.addCost(new TapSourceCost());
- Target target = new TargetCreaturePermanent(filter);
+ Target target = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE);
ability.addTarget(target);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
index 153e40b5871..86aa5cfae08 100644
--- a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
+++ b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -17,14 +16,16 @@ import mage.filter.StaticFilters;
*/
public final class TriumphOfTheHordes extends CardImpl {
-
public TriumphOfTheHordes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
- this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
- this.getSpellAbility().addEffect(new GainAbilityControlledEffect(InfectAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
+ this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn)
+ .setText("Until end of turn, creatures you control get +1/+1"));
+ this.getSpellAbility().addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(),
+ Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES).setText("and gain trample"));
+ this.getSpellAbility().addEffect(new GainAbilityControlledEffect(InfectAbility.getInstance(),
+ Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES).setText("and infect"));
}
private TriumphOfTheHordes(final TriumphOfTheHordes card) {
diff --git a/Mage.Sets/src/mage/cards/u/UndercityPlague.java b/Mage.Sets/src/mage/cards/u/UndercityPlague.java
index cea2bd85f70..2b7525204d5 100644
--- a/Mage.Sets/src/mage/cards/u/UndercityPlague.java
+++ b/Mage.Sets/src/mage/cards/u/UndercityPlague.java
@@ -25,8 +25,9 @@ public final class UndercityPlague extends CardImpl {
// Target player loses 1 life, discards a card, then sacrifices a permanent.
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1));
- this.getSpellAbility().addEffect(new DiscardTargetEffect(1));
- this.getSpellAbility().addEffect(new SacrificeEffect(new FilterPermanent(),1,"then that player"));
+ this.getSpellAbility().addEffect(new DiscardTargetEffect(1).setText(", discards a card"));
+ this.getSpellAbility().addEffect(new SacrificeEffect(new FilterPermanent(),1,"then that player")
+ .setText(", then sacrifices a permanent"));
// Cipher (Then you may exile this spell card encoded on a creature you control. Whenever that creature deals combat damage to a player, its controller may cast a copy of the encoded card without paying its mana cost.)
this.getSpellAbility().addEffect(new CipherEffect());
diff --git a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
index 584f15bff2b..137aae472a5 100644
--- a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
+++ b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java
@@ -22,10 +22,10 @@ public final class UrzasGuilt extends CardImpl {
// Each player draws two cards, then discards three cards, then loses 4 life.
this.getSpellAbility().addEffect(new DrawCardAllEffect(2));
Effect effect = new DiscardEachPlayerEffect(3, false);
- effect.setText("then discards three cards,");
+ effect.setText(", then discards three cards");
this.getSpellAbility().addEffect(effect);
effect = new LoseLifeAllPlayersEffect(4);
- effect.setText("then loses 4 life");
+ effect.setText(", then loses 4 life");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/v/VaultSkyward.java b/Mage.Sets/src/mage/cards/v/VaultSkyward.java
index 35b2c2e6f45..b19d83e7bc5 100644
--- a/Mage.Sets/src/mage/cards/v/VaultSkyward.java
+++ b/Mage.Sets/src/mage/cards/v/VaultSkyward.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.v;
import java.util.UUID;
@@ -22,7 +20,7 @@ public final class VaultSkyward extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new UntapTargetEffect());
+ this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
index 2add95c6a0b..e216ee649e1 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java
@@ -33,7 +33,7 @@ public final class VedalkenAnatomist extends CardImpl {
this.toughness = new MageInt(2);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.M1M1.createInstance()), new ManaCostsImpl<>("{2}{U}"));
- ability.addEffect(new MayTapOrUntapTargetEffect());
+ ability.addEffect(new MayTapOrUntapTargetEffect().setText("You may tap or untap that creature"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/v/VeilOfBirds.java b/Mage.Sets/src/mage/cards/v/VeilOfBirds.java
index 765e6569ee1..6cf073bbfe3 100644
--- a/Mage.Sets/src/mage/cards/v/VeilOfBirds.java
+++ b/Mage.Sets/src/mage/cards/v/VeilOfBirds.java
@@ -32,7 +32,7 @@ public final class VeilOfBirds extends CardImpl {
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeilOfBirdsToken(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
- "Whenever an opponent casts a spell, if Veil of Birds is an enchantment, Veil of Birds becomes a 1/1 Bird creature with flying."));
+ "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 1/1 Bird creature with flying."));
}
private VeilOfBirds(final VeilOfBirds card) {
diff --git a/Mage.Sets/src/mage/cards/v/VeiledApparition.java b/Mage.Sets/src/mage/cards/v/VeiledApparition.java
index 2d5d062ef1b..8fe3329f472 100644
--- a/Mage.Sets/src/mage/cards/v/VeiledApparition.java
+++ b/Mage.Sets/src/mage/cards/v/VeiledApparition.java
@@ -38,7 +38,7 @@ public final class VeiledApparition extends CardImpl {
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeilApparitionToken(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
- "Whenever an opponent casts a spell, if Veiled Apparition is an enchantment, Veiled Apparition becomes a 3/3 Illusion creature with flying and \"At the beginning of your upkeep, sacrifice Veiled Apparition unless you pay {1}{U}."));
+ "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 3/3 Illusion creature with flying and \"At the beginning of your upkeep, sacrifice Veiled Apparition unless you pay {1}{U}."));
}
diff --git a/Mage.Sets/src/mage/cards/v/VeiledSentry.java b/Mage.Sets/src/mage/cards/v/VeiledSentry.java
index 134182b7075..2eb916af549 100644
--- a/Mage.Sets/src/mage/cards/v/VeiledSentry.java
+++ b/Mage.Sets/src/mage/cards/v/VeiledSentry.java
@@ -29,7 +29,7 @@ public final class VeiledSentry extends CardImpl {
// When an opponent casts a spell, if Veiled Sentry is an enchantment, Veiled Sentry becomes an Illusion creature with power and toughness each equal to that spell's converted mana cost.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new SpellCastOpponentTriggeredAbility(new VeiledSentryEffect(), false),
- condition, "Whenever an opponent casts a spell, if {this} is an enchantment, " +
+ condition, "When an opponent casts a spell, if {this} is an enchantment, " +
"{this} becomes an Illusion creature with power and toughness equal to that spell's mana value."
));
}
diff --git a/Mage.Sets/src/mage/cards/v/VeiledSerpent.java b/Mage.Sets/src/mage/cards/v/VeiledSerpent.java
index f0a7335de66..e30338bdc53 100644
--- a/Mage.Sets/src/mage/cards/v/VeiledSerpent.java
+++ b/Mage.Sets/src/mage/cards/v/VeiledSerpent.java
@@ -35,7 +35,7 @@ public final class VeiledSerpent extends CardImpl {
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeiledSerpentToken(), null, Duration.WhileOnBattlefield),
new FilterSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
- "Whenever an opponent casts a spell, if Veiled Serpent is an enchantment, Veiled Serpent becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island."));
+ "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island."));
// Cycling {2}
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
diff --git a/Mage.Sets/src/mage/cards/v/VipersKiss.java b/Mage.Sets/src/mage/cards/v/VipersKiss.java
index cbdc8ac4a32..1f212419970 100644
--- a/Mage.Sets/src/mage/cards/v/VipersKiss.java
+++ b/Mage.Sets/src/mage/cards/v/VipersKiss.java
@@ -1,4 +1,3 @@
-
package mage.cards.v;
import java.util.UUID;
@@ -15,7 +14,6 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
-import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -37,9 +35,9 @@ public final class VipersKiss extends CardImpl {
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
// Enchanted creature gets -1/-1 and its activated abilities can't be activated.
- ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(-1,-1, Duration.WhileOnBattlefield));
+ ability = new SimpleStaticAbility(new BoostEnchantedEffect(-1,-1, Duration.WhileOnBattlefield));
Effect effect = new CantActivateAbilitiesAttachedEffect();
- effect.setText("and its activated abilities can't be activated");
+ effect.setText(", and its activated abilities can't be activated");
ability.addEffect(effect);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/v/VulshokReplica.java b/Mage.Sets/src/mage/cards/v/VulshokReplica.java
index d4a9a3fa41c..7247b9d8b0d 100644
--- a/Mage.Sets/src/mage/cards/v/VulshokReplica.java
+++ b/Mage.Sets/src/mage/cards/v/VulshokReplica.java
@@ -1,4 +1,3 @@
-
package mage.cards.v;
import java.util.UUID;
@@ -26,7 +25,7 @@ public final class VulshokReplica extends CardImpl {
this.subtype.add(SubType.BERSERKER);
this.power = new MageInt(3);
this.toughness = new MageInt(1);
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new ManaCostsImpl<>("{1}{R}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new ManaCostsImpl<>("{1}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
index fc9263b7b59..0c139d308ef 100644
--- a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
+++ b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java
@@ -32,7 +32,7 @@ public final class WarTorchGoblin extends CardImpl {
this.toughness = new MageInt(1);
// {R}, Sacrifice War-Torch Goblin: War-Torch Goblin deals 2 damage to target blocking creature.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ColoredManaCost(ColoredManaSymbol.R));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ColoredManaCost(ColoredManaSymbol.R));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature()));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/w/Warmth.java b/Mage.Sets/src/mage/cards/w/Warmth.java
index 0915db7ce27..a7d309d9d06 100644
--- a/Mage.Sets/src/mage/cards/w/Warmth.java
+++ b/Mage.Sets/src/mage/cards/w/Warmth.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class Warmth extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("red spell");
+ private static final FilterSpell filter = new FilterSpell("a red spell");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
diff --git a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
index 73a51806bb6..846fe83be09 100644
--- a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java
@@ -49,9 +49,9 @@ public final class WatchersOfTheDead extends CardImpl {
class WatchersOfTheDeadEffect extends OneShotEffect {
- public WatchersOfTheDeadEffect() {
+ WatchersOfTheDeadEffect() {
super(Outcome.Benefit);
- this.staticText = "Each opponent chooses 2 cards in their graveyard and exiles the rest";
+ this.staticText = "Each opponent chooses two cards in their graveyard and exiles the rest";
}
private WatchersOfTheDeadEffect(final WatchersOfTheDeadEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/w/Web.java b/Mage.Sets/src/mage/cards/w/Web.java
index 3734f104797..07eef3c18db 100644
--- a/Mage.Sets/src/mage/cards/w/Web.java
+++ b/Mage.Sets/src/mage/cards/w/Web.java
@@ -1,4 +1,3 @@
-
package mage.cards.w;
import java.util.UUID;
@@ -26,7 +25,6 @@ public final class Web extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -34,8 +32,9 @@ public final class Web extends CardImpl {
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
// Enchanted creature gets +0/+2 and has reach.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(0, 2, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA)));
+ Ability ability2 = new SimpleStaticAbility(new BoostEnchantedEffect(0, 2, Duration.WhileOnBattlefield));
+ ability2.addEffect(new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA).setText("and has reach"));
+ this.addAbility(ability2);
}
private Web(final Web card) {
diff --git a/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java
index 702d4ab1a16..3bf89758443 100644
--- a/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java
@@ -13,7 +13,7 @@ public class SourcePhaseInTriggeredAbility extends TriggeredAbilityImpl {
public SourcePhaseInTriggeredAbility(Effect effect, boolean optional) {
super(Zone.BATTLEFIELD, effect, optional);
- setTriggerPhrase("When {this} phases in, ");
+ setTriggerPhrase("Whenever {this} phases in, ");
}
protected SourcePhaseInTriggeredAbility(final SourcePhaseInTriggeredAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java
index 82037f02383..5aeacfbb538 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java
@@ -1,4 +1,3 @@
-
package mage.abilities.effects.common;
import mage.abilities.Ability;
@@ -85,7 +84,10 @@ public class ExileFromZoneTargetEffect extends OneShotEffect {
@Override
public String getText(Mode mode) {
- return "target " + (mode.getTargets().isEmpty() ? "player" : mode.getTargets().get(0).getTargetName())
+ if (staticText != null && !staticText.isEmpty()) {
+ return staticText;
+ }
+ return getTargetPointer().describeTargets(mode.getTargets(), "that player")
+ " exiles " + CardUtil.numberToText(amount, "a") + ' ' + filter.getMessage()
+ " from their " + zone.toString().toLowerCase();
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java
index 5595d0ae0de..dc836388364 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java
@@ -45,14 +45,9 @@ public class MayTapOrUntapTargetEffect extends OneShotEffect {
@Override
public String getText(Mode mode) {
- if (!staticText.isEmpty()) {
+ if (staticText != null && !staticText.isEmpty()) {
return staticText;
}
- if (mode.getTargets().isEmpty()) {
- return "you may tap or untap it";
- } else {
- String targetName = mode.getTargets().get(0).getTargetName();
- return "you may tap or untap " + (targetName.contains("target") ? "" : "target ") + targetName;
- }
+ return "you may tap or untap " + getTargetPointer().describeTargets(mode.getTargets(), "it");
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java
index 48df79794b9..16bbc2acaeb 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java
@@ -9,6 +9,7 @@ import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
import mage.game.Game;
import mage.players.Player;
+import mage.util.CardUtil;
/**
* @author spjspj
@@ -56,7 +57,7 @@ public class RollDiceEffect extends OneShotEffect {
if (!staticText.isEmpty()) {
return staticText;
}
- return "Roll a " + numSides + " sided die";
+ return "Roll a " + CardUtil.numberToText(numSides) + "-sided die";
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java
index afc603bea65..f800e4cfa9e 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java
@@ -1,4 +1,3 @@
-
package mage.abilities.effects.common.continuous;
import mage.MageObject;
@@ -13,6 +12,7 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.players.Player;
+import mage.util.CardUtil;
/**
* @author LoneFox
@@ -65,6 +65,7 @@ public class GainProtectionFromColorAllEffect extends GainAbilityAllEffect {
return staticText;
}
- return "Choose a color. " + filter.getMessage() + " gain protection from the chosen color " + duration.toString();
+ return "Choose a color. " + CardUtil.getTextWithFirstCharUpperCase(filter.getMessage())
+ + " gain protection from the chosen color " + duration.toString();
}
}
diff --git a/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java b/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java
deleted file mode 100644
index 97422cb080b..00000000000
--- a/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-package mage.filter.common;
-
-import mage.filter.predicate.permanent.TappedPredicate;
-
-/**
- * @author noxx
- */
-public class FilterUntappedCreature extends FilterCreaturePermanent {
-
- public FilterUntappedCreature() {
- this("untapped creature");
- }
-
- public FilterUntappedCreature(String name) {
- super(name);
- this.add(TappedPredicate.UNTAPPED);
- }
-
- protected FilterUntappedCreature(final FilterUntappedCreature filter) {
- super(filter);
- }
-
- @Override
- public FilterUntappedCreature copy() {
- return new FilterUntappedCreature(this);
- }
-}