diff --git a/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java b/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
index aa7c4ab7b14..1cde0a968c6 100644
--- a/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
+++ b/Mage.Sets/src/mage/cards/a/AbolisherOfBloodlines.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import mage.MageInt;
@@ -35,7 +34,7 @@ public final class AbolisherOfBloodlines extends CardImpl {
// When this creature transforms into Abolisher of Bloodlines, target opponent sacrifices three creatures.
Ability ability = new TransformIntoSourceTriggeredAbility(new SacrificeEffect(
- StaticFilters.FILTER_PERMANENT_CREATURE, 3, "target opponent"
+ StaticFilters.FILTER_PERMANENT_CREATURES, 3, "target opponent"
));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AccordersShield.java b/Mage.Sets/src/mage/cards/a/AccordersShield.java
index 4ce1e800b6e..8a900333b85 100644
--- a/Mage.Sets/src/mage/cards/a/AccordersShield.java
+++ b/Mage.Sets/src/mage/cards/a/AccordersShield.java
@@ -22,6 +22,7 @@ public final class AccordersShield extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
this.subtype.add(SubType.EQUIPMENT);
+ // Equipped creature gets +0/+3 and has vigilance.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(0, 3));
ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and has vigilance"));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/a/AerialManeuver.java b/Mage.Sets/src/mage/cards/a/AerialManeuver.java
index 624c8f31c22..5d9339ff158 100644
--- a/Mage.Sets/src/mage/cards/a/AerialManeuver.java
+++ b/Mage.Sets/src/mage/cards/a/AerialManeuver.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -21,11 +20,13 @@ public final class AerialManeuver extends CardImpl {
public AerialManeuver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
-
// Target creature gets +1/+1 and gains flying and first strike until end of turn.
- getSpellAbility().addEffect(new BoostTargetEffect(1,1, Duration.EndOfTurn));
- getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
- getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn));
+ getSpellAbility().addEffect(new BoostTargetEffect(1,1, Duration.EndOfTurn)
+ .setText("target creature gets +1/+1"));
+ getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)
+ .setText("and gains flying"));
+ getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn)
+ .setText("and first strike until end of turn"));
getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java b/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
index 6baa5ba7e8a..d79be3355e5 100644
--- a/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
+++ b/Mage.Sets/src/mage/cards/a/ArashinWarBeast.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -58,7 +57,7 @@ class ArashinWarBeastTriggeredAbility extends TriggeredAbilityImpl {
public ArashinWarBeastTriggeredAbility(Effect effect, boolean optional) {
super(Zone.BATTLEFIELD, effect, optional);
this.usedForCombatDamageStep = false;
- setTriggerPhrase("Whenever {this} deals combat damage to one or more blockers, ");
+ setTriggerPhrase("Whenever {this} deals combat damage to one or more blocking creatures, ");
}
private ArashinWarBeastTriggeredAbility(final ArashinWarBeastTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java b/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
index 52eb873b831..8fda073bba3 100644
--- a/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
+++ b/Mage.Sets/src/mage/cards/a/ArchangelOfStrife.java
@@ -3,7 +3,7 @@ package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-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.continuous.BoostAllEffect;
@@ -34,7 +34,7 @@ public final class ArchangelOfStrife extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// As Archangel of Strife enters the battlefield, each player chooses war or peace.
- this.addAbility(new EntersBattlefieldAbility(new ArchangelOfStrifeChooseEffect(), "As Archangel of Strife enters the battlefield, each player chooses war or peace."));
+ this.addAbility(new AsEntersBattlefieldAbility(new ArchangelOfStrifeChooseEffect()));
// Creatures controlled by players who chose war get +3/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ArchangelOfStrifeWarEffect()));
diff --git a/Mage.Sets/src/mage/cards/a/ArmedDangerous.java b/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
index 603ad583e14..0f651dcda19 100644
--- a/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
+++ b/Mage.Sets/src/mage/cards/a/ArmedDangerous.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -20,8 +19,10 @@ public final class ArmedDangerous extends SplitCard {
// Armed
// Target creature gets +1/+1 and gains double strike until end of turn.
- getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn));
- getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
+ getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn)
+ .setText("target creature gets +1/+1"));
+ getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn)
+ .setText("and gains double strike until end of turn"));
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+1/+1 and double strike"));
// Dangerous
diff --git a/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java b/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
index 1e706f176dd..3e88033b7fa 100644
--- a/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
+++ b/Mage.Sets/src/mage/cards/b/BeastcallerSavant.java
@@ -27,8 +27,8 @@ public final class BeastcallerSavant extends CardImpl {
// Haste
this.addAbility(HasteAbility.getInstance());
- // {T}: Add one mana of any color. Spend this mana only to cast creature spells.
- this.addAbility(new ConditionalAnyColorManaAbility(1, new ConditionalSpellManaBuilder(new FilterCreatureSpell("creature spells"))));
+ // {T}: Add one mana of any color. Spend this mana only to cast a creature spell.
+ this.addAbility(new ConditionalAnyColorManaAbility(1, new ConditionalSpellManaBuilder(new FilterCreatureSpell("a creature spell"))));
}
private BeastcallerSavant(final BeastcallerSavant card) {
diff --git a/Mage.Sets/src/mage/cards/b/BlessedReversal.java b/Mage.Sets/src/mage/cards/b/BlessedReversal.java
index 1e10778066f..f549f737b88 100644
--- a/Mage.Sets/src/mage/cards/b/BlessedReversal.java
+++ b/Mage.Sets/src/mage/cards/b/BlessedReversal.java
@@ -17,9 +17,9 @@ public final class BlessedReversal extends CardImpl {
public BlessedReversal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
-
// You gain 3 life for each creature attacking you.
- this.getSpellAbility().addEffect(new GainLifeEffect(new MultipliedValue(CreaturesAttackingYouCount.instance, 3)));
+ this.getSpellAbility().addEffect(new GainLifeEffect(new MultipliedValue(CreaturesAttackingYouCount.instance, 3))
+ .setText("you gain 3 life for each creature attacking you"));
this.getSpellAbility().addHint(CreaturesAttackingYouCount.getHint());
}
diff --git a/Mage.Sets/src/mage/cards/b/BoosterTutor.java b/Mage.Sets/src/mage/cards/b/BoosterTutor.java
index 8bf0b3b1f23..2e19a1c3e24 100644
--- a/Mage.Sets/src/mage/cards/b/BoosterTutor.java
+++ b/Mage.Sets/src/mage/cards/b/BoosterTutor.java
@@ -49,7 +49,7 @@ class BoosterTutorEffect extends OneShotEffect {
public BoosterTutorEffect() {
super(Outcome.DestroyPermanent);
- this.staticText = "Open a sealed Magic booster pack, reveal the cards, and put one of those cards into your hand";
+ this.staticText = "Open a sealed Magic booster pack, reveal the cards, and put one of them into your hand";
}
private BoosterTutorEffect(final BoosterTutorEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
index dff2fc07825..180f201dbe0 100644
--- a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
+++ b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java
@@ -37,7 +37,7 @@ public final class BushiTenderfoot extends CardImpl {
this.flipCard = true;
this.flipCardName = "Kenzo the Hardhearted";
- // When that creature is put into a graveyard this turn, flip Initiate of Blood.
+ // When a creature dealt damage by Bushi Tenderfoot this turn dies, flip Bushi Tenderfoot.
Effect effect = new FlipSourceEffect(new KenzoTheHardhearted());
effect.setText("flip {this}");
this.addAbility(new DealtDamageAndDiedTriggeredAbility(effect));
diff --git a/Mage.Sets/src/mage/cards/c/CatharsShield.java b/Mage.Sets/src/mage/cards/c/CatharsShield.java
index 662b8af5fdb..f76118aa700 100644
--- a/Mage.Sets/src/mage/cards/c/CatharsShield.java
+++ b/Mage.Sets/src/mage/cards/c/CatharsShield.java
@@ -1,7 +1,8 @@
-
package mage.cards.c;
import java.util.UUID;
+
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
@@ -14,7 +15,6 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
-import mage.constants.Zone;
import mage.target.common.TargetControlledCreaturePermanent;
/**
@@ -28,8 +28,9 @@ public final class CatharsShield extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +0/+3 and has vigilance.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(0, 3)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT)));
+ Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(0, 3));
+ ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and has vigilance"));
+ this.addAbility(ability);
// Equip {3}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3), new TargetControlledCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java b/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
index 4302b2ebf94..4904612301f 100644
--- a/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
+++ b/Mage.Sets/src/mage/cards/c/ConcordantCrossroads.java
@@ -1,4 +1,3 @@
-
package mage.cards.c;
import java.util.UUID;
@@ -25,7 +24,7 @@ public final class ConcordantCrossroads extends CardImpl {
// All creatures have haste.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
- new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES)));
+ new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_ALL_CREATURES)));
}
private ConcordantCrossroads(final ConcordantCrossroads card) {
diff --git a/Mage.Sets/src/mage/cards/c/CrushDissent.java b/Mage.Sets/src/mage/cards/c/CrushDissent.java
index 5399cdf1d96..5fddd1c19f9 100644
--- a/Mage.Sets/src/mage/cards/c/CrushDissent.java
+++ b/Mage.Sets/src/mage/cards/c/CrushDissent.java
@@ -24,7 +24,7 @@ public final class CrushDissent extends CardImpl {
this.getSpellAbility().addTarget(new TargetSpell());
// Amass 2.
- this.getSpellAbility().addEffect(new AmassEffect(2, SubType.ZOMBIE));
+ this.getSpellAbility().addEffect(new AmassEffect(2, SubType.ZOMBIE).concatBy("
"));
}
private CrushDissent(final CrushDissent card) {
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java b/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
index 6995a92e38b..be30e2e1772 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfStalkedPrey.java
@@ -92,7 +92,7 @@ class CurseOfStalkedPreyTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a creature deals combat damage to enchanted player, put a +1/+1 counter on that creature";
+ return "Whenever a creature deals combat damage to enchanted player, put a +1/+1 counter on that creature.";
}
}
diff --git a/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java b/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
index da0a122dbf3..2ec6354e9e4 100644
--- a/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
+++ b/Mage.Sets/src/mage/cards/c/CurseOfTheNightlyHunt.java
@@ -1,4 +1,3 @@
-
package mage.cards.c;
import mage.abilities.Ability;
@@ -33,7 +32,7 @@ public final class CurseOfTheNightlyHunt extends CardImpl {
this.addAbility(new EnchantAbility(auraTarget));
// Creatures enchanted player controls attack each turn if able.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CurseOfTheNightlyHuntEffect()));
+ this.addAbility(new SimpleStaticAbility(new CurseOfTheNightlyHuntEffect()));
}
@@ -49,9 +48,9 @@ public final class CurseOfTheNightlyHunt extends CardImpl {
class CurseOfTheNightlyHuntEffect extends RequirementEffect {
- public CurseOfTheNightlyHuntEffect() {
+ CurseOfTheNightlyHuntEffect() {
super(Duration.WhileOnBattlefield);
- staticText = "Creatures enchanted player controls attack each turn if able";
+ staticText = "Creatures enchanted player controls attack each combat if able";
}
private CurseOfTheNightlyHuntEffect(final CurseOfTheNightlyHuntEffect effect) {
@@ -66,12 +65,7 @@ class CurseOfTheNightlyHuntEffect extends RequirementEffect {
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
Permanent enchantment = game.getPermanent(source.getSourceId());
- if (enchantment != null && enchantment.getAttachedTo() != null) {
- if (permanent.isControlledBy(enchantment.getAttachedTo())) {
- return true;
- }
- }
- return false;
+ return enchantment != null && enchantment.getAttachedTo() != null && (permanent.isControlledBy(enchantment.getAttachedTo()));
}
@Override
diff --git a/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java b/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
index 888bc71677d..765adc528d9 100644
--- a/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
+++ b/Mage.Sets/src/mage/cards/d/DaggerOfTheWorthy.java
@@ -1,4 +1,3 @@
-
package mage.cards.d;
import java.util.UUID;
@@ -15,7 +14,6 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
-import mage.constants.Zone;
/**
*
@@ -29,9 +27,10 @@ public final class DaggerOfTheWorthy extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+0 and has afflict 1. (Whenever it becomes blocked, defending player loses 1 life.)
- Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2,0));
- ability.addEffect(new GainAbilityAttachedEffect(new AfflictAbility(1), AttachmentType.EQUIPMENT));
- addAbility(ability);
+ Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2,0));
+ ability.addEffect(new GainAbilityAttachedEffect(new AfflictAbility(1), AttachmentType.EQUIPMENT)
+ .setText("and has afflict 1"));
+ this.addAbility(ability);
// Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
diff --git a/Mage.Sets/src/mage/cards/d/DeepGnomeTerramancer.java b/Mage.Sets/src/mage/cards/d/DeepGnomeTerramancer.java
index 6d6a13fdcb9..e7b0b815321 100644
--- a/Mage.Sets/src/mage/cards/d/DeepGnomeTerramancer.java
+++ b/Mage.Sets/src/mage/cards/d/DeepGnomeTerramancer.java
@@ -35,7 +35,7 @@ public final class DeepGnomeTerramancer extends CardImpl {
// Whenever one or more lands enter the battlefield under an opponent's control
// without being played, you may search your library for a Plains card, put it
// onto the battlefield tapped, then shuffle. Do this only once each turn.
- this.addAbility(new DeepGnomeTerramancerTriggeredAbility().setDoOnlyOnceEachTurn(true), new PlayLandWatcher());
+ this.addAbility(new DeepGnomeTerramancerTriggeredAbility().setDoOnlyOnceEachTurn(true).withFlavorWord("Mold Earth"), new PlayLandWatcher());
}
private DeepGnomeTerramancer(final DeepGnomeTerramancer card) {
diff --git a/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java b/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
index 8a4426a0903..6dc2a5c9f8e 100644
--- a/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
+++ b/Mage.Sets/src/mage/cards/e/ElderDeepFiend.java
@@ -1,4 +1,3 @@
-
package mage.cards.e;
import java.util.UUID;
@@ -13,7 +12,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
/**
@@ -37,7 +36,7 @@ public final class ElderDeepFiend extends CardImpl {
// When you cast Elder Deep-Fiend, tap up to four target permanents.
Ability ability = new CastSourceTriggeredAbility(new TapTargetEffect());
- ability.addTarget(new TargetPermanent(0, 4, new FilterPermanent("permanent"), false));
+ ability.addTarget(new TargetPermanent(0, 4, StaticFilters.FILTER_PERMANENTS, false));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
index 92067311450..7fb5898057e 100644
--- a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
+++ b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java
@@ -31,7 +31,7 @@ public final class ExpendableTroops extends CardImpl {
this.toughness = new MageInt(1);
// {tap}, Sacrifice Expendable Troops: Expendable Troops deals 2 damage to target attacking or blocking creature.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/e/ExposeEvil.java b/Mage.Sets/src/mage/cards/e/ExposeEvil.java
index 531307723aa..348c0c6fda1 100644
--- a/Mage.Sets/src/mage/cards/e/ExposeEvil.java
+++ b/Mage.Sets/src/mage/cards/e/ExposeEvil.java
@@ -23,7 +23,7 @@ public final class ExposeEvil extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
// Investigate (Create a colorless Clue artifact token with \"{2}, Sacrifice this artifact: Draw a card.\")
- this.getSpellAbility().addEffect(new InvestigateEffect());
+ this.getSpellAbility().addEffect(new InvestigateEffect().concatBy("
"));
}
private ExposeEvil(final ExposeEvil card) {
diff --git a/Mage.Sets/src/mage/cards/f/FacelessButcher.java b/Mage.Sets/src/mage/cards/f/FacelessButcher.java
index de40203235e..e8b83462d7b 100644
--- a/Mage.Sets/src/mage/cards/f/FacelessButcher.java
+++ b/Mage.Sets/src/mage/cards/f/FacelessButcher.java
@@ -11,8 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -23,12 +22,6 @@ import java.util.UUID;
*/
public final class FacelessButcher extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature other than Faceless Butcher");
-
- static {
- filter.add(AnotherPredicate.instance);
- }
-
public FacelessButcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.subtype.add(SubType.NIGHTMARE);
@@ -38,7 +31,7 @@ public final class FacelessButcher extends CardImpl {
// When Faceless Butcher enters the battlefield, exile target creature other than Faceless Butcher.
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), false);
- ability.addTarget(new TargetPermanent(filter));
+ ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
this.addAbility(ability);
// When Faceless Butcher leaves the battlefield, return the exiled card to the battlefield under its owner's control.
diff --git a/Mage.Sets/src/mage/cards/f/FateForetold.java b/Mage.Sets/src/mage/cards/f/FateForetold.java
index c21a2b2e062..7fedebc716a 100644
--- a/Mage.Sets/src/mage/cards/f/FateForetold.java
+++ b/Mage.Sets/src/mage/cards/f/FateForetold.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -7,10 +6,12 @@ import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.target.TargetPermanent;
@@ -36,7 +37,8 @@ public final class FateForetold extends CardImpl {
// When Fate Foretold enters the battlefield, draw a card.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1),false));
// When enchanted creature dies, its controller draws a card.
- this.addAbility(new DiesAttachedTriggeredAbility(new DrawCardSourceControllerEffect(1),"enchanted creature", false));
+ this.addAbility(new DiesAttachedTriggeredAbility(new DrawCardTargetEffect(1).setText("its controller draws a card"),
+ "enchanted creature", false, true, SetTargetPointer.ATTACHED_TO_CONTROLLER));
}
private FateForetold(final FateForetold card) {
diff --git a/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java b/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java
index 2c4da25a158..5f426c9c2cd 100644
--- a/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java
+++ b/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java
@@ -27,7 +27,7 @@ public final class FinaleOfRevelation extends CardImpl {
this.getSpellAbility().addEffect(new FinaleOfRevelationEffect());
// Exile Finale of Revelation.
- this.getSpellAbility().addEffect(new ExileSpellEffect());
+ this.getSpellAbility().addEffect(new ExileSpellEffect().concatBy("
"));
}
private FinaleOfRevelation(final FinaleOfRevelation card) {
@@ -80,4 +80,4 @@ class FinaleOfRevelationEffect extends OneShotEffect {
return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/f/FlamecastWheel.java b/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
index 3e7f2cb633a..57077e8e98b 100644
--- a/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
+++ b/Mage.Sets/src/mage/cards/f/FlamecastWheel.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -24,7 +23,7 @@ public final class FlamecastWheel extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
// {5}, {T}, Sacrifice Flamecast Wheel: Flamecast Wheel deals 3 damage to target creature.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new GenericManaCost(5));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new GenericManaCost(5));
ability.addTarget(new TargetCreaturePermanent());
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/f/FolkMedicine.java b/Mage.Sets/src/mage/cards/f/FolkMedicine.java
index d362afdad3a..13a192371c2 100644
--- a/Mage.Sets/src/mage/cards/f/FolkMedicine.java
+++ b/Mage.Sets/src/mage/cards/f/FolkMedicine.java
@@ -8,7 +8,6 @@ import mage.abilities.keyword.FlashbackAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.TimingRule;
import mage.filter.StaticFilters;
import java.util.UUID;
@@ -23,7 +22,8 @@ public final class FolkMedicine extends CardImpl {
// You gain 1 life for each creature you control.
DynamicValue amount = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE);
- this.getSpellAbility().addEffect(new GainLifeEffect(amount));
+ this.getSpellAbility().addEffect(new GainLifeEffect(amount)
+ .setText("you gain 1 life for each creature you control"));
// Flashback {1}{W}
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{1}{W}")));
}
diff --git a/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java b/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
index 09fa752f2c0..65bed1e8405 100644
--- a/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
+++ b/Mage.Sets/src/mage/cards/g/GiftOfOrzhova.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -36,8 +35,10 @@ public final class GiftOfOrzhova extends CardImpl {
// Enchanted creature gets +1/+1 and has flying and lifelink.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield));
- ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield));
- ability.addEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield));
+ ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield)
+ .setText("and has flying"));
+ ability.addEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield)
+ .setText("and lifelink"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java b/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
index 25e189bfd74..b753ad7aa23 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinLegionnaire.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -29,13 +28,16 @@ public final class GoblinLegionnaire extends CardImpl {
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.SOLDIER);
-
this.power = new MageInt(2);
this.toughness = new MageInt(2);
- Ability firstAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ColoredManaCost(ColoredManaSymbol.R));
+
+ // {R}, Sacrifice Goblin Legionnaire: It deals 2 damage to any target.
+ Ability firstAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ColoredManaCost(ColoredManaSymbol.R));
firstAbility.addCost(new SacrificeSourceCost());
firstAbility.addTarget(new TargetAnyTarget());
this.addAbility(firstAbility);
+
+ // {W}, Sacrifice Goblin Legionnaire: Prevent the next 2 damage that would be dealt to any target this turn.
Ability secondAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new ColoredManaCost(ColoredManaSymbol.W));
secondAbility.addCost(new SacrificeSourceCost());
secondAbility.addTarget(new TargetAnyTarget());
diff --git a/Mage.Sets/src/mage/cards/g/GoneMissing.java b/Mage.Sets/src/mage/cards/g/GoneMissing.java
index 5b62d7195a8..c06c2f42a31 100644
--- a/Mage.Sets/src/mage/cards/g/GoneMissing.java
+++ b/Mage.Sets/src/mage/cards/g/GoneMissing.java
@@ -23,7 +23,7 @@ public final class GoneMissing extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent());
// Investigate.
- this.getSpellAbility().addEffect(new InvestigateEffect());
+ this.getSpellAbility().addEffect(new InvestigateEffect().concatBy("
"));
}
private GoneMissing(final GoneMissing card) {
diff --git a/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java b/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java
index cce7e7ae953..d0bf6e8db2b 100644
--- a/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java
+++ b/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java
@@ -34,7 +34,7 @@ public final class GutTrueSoulZealot extends CardImpl {
this.addAbility(new AttacksWithCreaturesTriggeredAbility(new DoIfCostPaid(
new CreateTokenEffect(
new SkeletonMenaceToken(), 1, true, true
- ).withAdditionalRules(" (It can't be blocked except by two or more creatures.)"),
+ ).withAdditionalRules(". (It can't be blocked except by two or more creatures.)"),
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ARTIFACT_OR_OTHER_CREATURE)
), 1));
diff --git a/Mage.Sets/src/mage/cards/h/HannasCustody.java b/Mage.Sets/src/mage/cards/h/HannasCustody.java
index 15e6b739e05..9bfcb9f7017 100644
--- a/Mage.Sets/src/mage/cards/h/HannasCustody.java
+++ b/Mage.Sets/src/mage/cards/h/HannasCustody.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.UUID;
@@ -9,7 +8,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.filter.FilterPermanent;
/**
@@ -18,7 +16,7 @@ import mage.filter.FilterPermanent;
*/
public final class HannasCustody extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("artifacts");
+ private static final FilterPermanent filter = new FilterPermanent("all artifacts");
static {
filter.add(CardType.ARTIFACT.getPredicate());
@@ -27,7 +25,7 @@ public final class HannasCustody extends CardImpl {
public HannasCustody(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filter, false)));
+ this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filter, false)));
}
private HannasCustody(final HannasCustody card) {
diff --git a/Mage.Sets/src/mage/cards/h/HomicidalBrute.java b/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
index 81a6622f783..8fbe94b9423 100644
--- a/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
+++ b/Mage.Sets/src/mage/cards/h/HomicidalBrute.java
@@ -82,7 +82,7 @@ class HomicidalBruteTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "At the beginning of your end step, if {this} didn't attack this turn, tap {this}, then transform it";
+ return "At the beginning of your end step, if {this} didn't attack this turn, tap {this}, then transform it.";
}
}
@@ -101,4 +101,4 @@ class HomicidalBruteWatcher extends Watcher {
condition = true;
}
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/h/HotSoup.java b/Mage.Sets/src/mage/cards/h/HotSoup.java
index c7c158cb462..3f1bc1d2141 100644
--- a/Mage.Sets/src/mage/cards/h/HotSoup.java
+++ b/Mage.Sets/src/mage/cards/h/HotSoup.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.Objects;
@@ -18,7 +17,6 @@ import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
@@ -55,7 +53,7 @@ public final class HotSoup extends CardImpl {
class HotSoupTriggeredAbility extends TriggeredAbilityImpl {
HotSoupTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DestroyTargetEffect(), false);
+ super(Zone.BATTLEFIELD, new DestroyTargetEffect().setText("destroy it"), false);
setTriggerPhrase("Whenever equipped creature is dealt damage, ");
}
diff --git a/Mage.Sets/src/mage/cards/i/IndrikUmbra.java b/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
index 0a1c667dc7d..cc791d8f268 100644
--- a/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
+++ b/Mage.Sets/src/mage/cards/i/IndrikUmbra.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import java.util.UUID;
@@ -42,8 +41,10 @@ public final class IndrikUmbra extends CardImpl {
// Enchanted creature gets +4/+4 and has first strike, and all creatures able to block it do so.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(4, 4, Duration.WhileOnBattlefield));
- ability.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA));
- ability.addEffect(new MustBeBlockedByAllAttachedEffect(AttachmentType.AURA));
+ ability.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA)
+ .setText("and has first strike"));
+ ability.addEffect(new MustBeBlockedByAllAttachedEffect(AttachmentType.AURA)
+ .setText(", and all creatures able to block it do so"));
this.addAbility(ability);
// Totem armor
diff --git a/Mage.Sets/src/mage/cards/i/IrenicussVileDuplication.java b/Mage.Sets/src/mage/cards/i/IrenicussVileDuplication.java
index 85eba01913d..296567e3728 100644
--- a/Mage.Sets/src/mage/cards/i/IrenicussVileDuplication.java
+++ b/Mage.Sets/src/mage/cards/i/IrenicussVileDuplication.java
@@ -22,7 +22,7 @@ public final class IrenicussVileDuplication extends CardImpl {
.addAdditionalAbilities(FlyingAbility.getInstance())
.setIsntLegendary(true)
.setText("create a token that's a copy of target creature you control, " +
- "except the token has flying and isn't legendary if that creature is legendary"));
+ "except the token has flying and it isn't legendary"));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java b/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
index 085ddd232e0..49b3aa72aee 100644
--- a/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
+++ b/Mage.Sets/src/mage/cards/j/JohnnyComboPlayer.java
@@ -1,4 +1,3 @@
-
package mage.cards.j;
import java.util.UUID;
@@ -12,7 +11,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
-import mage.filter.FilterCard;
+import mage.filter.StaticFilters;
import mage.target.common.TargetCardInLibrary;
/**
@@ -30,7 +29,8 @@ public final class JohnnyComboPlayer extends CardImpl {
this.toughness = new MageInt(1);
// {4}: Search your library for a card, put that card into your hand, then shuffle your library.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterCard("a card")), false), new ManaCostsImpl<>("{4}")));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(
+ new TargetCardInLibrary(StaticFilters.FILTER_CARD_A), false, true), new ManaCostsImpl<>("{4}")));
}
private JohnnyComboPlayer(final JohnnyComboPlayer card) {
diff --git a/Mage.Sets/src/mage/cards/j/JoyousRespite.java b/Mage.Sets/src/mage/cards/j/JoyousRespite.java
index f6398e74d95..9067a4de1c8 100644
--- a/Mage.Sets/src/mage/cards/j/JoyousRespite.java
+++ b/Mage.Sets/src/mage/cards/j/JoyousRespite.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.j;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
@@ -27,7 +25,8 @@ public final class JoyousRespite extends CardImpl {
// You gain 1 life for each land you control.
- this.getSpellAbility().addEffect(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter)));
+ this.getSpellAbility().addEffect(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter))
+ .setText("you gain 1 life for each land you control"));
}
private JoyousRespite(final JoyousRespite card) {
diff --git a/Mage.Sets/src/mage/cards/k/Kudzu.java b/Mage.Sets/src/mage/cards/k/Kudzu.java
index 598de1294cb..771379b3509 100644
--- a/Mage.Sets/src/mage/cards/k/Kudzu.java
+++ b/Mage.Sets/src/mage/cards/k/Kudzu.java
@@ -39,7 +39,8 @@ public final class Kudzu extends CardImpl {
this.addAbility(ability);
// When enchanted land becomes tapped, destroy it. That land's controller attaches Kudzu to a land of their choice.
- this.addAbility(new BecomesTappedAttachedTriggeredAbility(new KudzuEffect(), "enchanted land"));
+ this.addAbility(new BecomesTappedAttachedTriggeredAbility(new KudzuEffect(), "enchanted land")
+ .setTriggerPhrase("When enchanted land becomes tapped, "));
}
diff --git a/Mage.Sets/src/mage/cards/l/LandsEdge.java b/Mage.Sets/src/mage/cards/l/LandsEdge.java
index fbb9951d734..3100ebed8ec 100644
--- a/Mage.Sets/src/mage/cards/l/LandsEdge.java
+++ b/Mage.Sets/src/mage/cards/l/LandsEdge.java
@@ -1,4 +1,3 @@
-
package mage.cards.l;
import java.util.List;
@@ -54,7 +53,7 @@ class LandsEdgeEffect extends OneShotEffect {
public LandsEdgeEffect() {
super(Outcome.Neutral);
- staticText = "If the discarded card was a land card, {this} deals 2 damage to target player";
+ staticText = "If the discarded card was a land card, {this} deals 2 damage to target player or planeswalker";
}
private LandsEdgeEffect(final LandsEdgeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/l/LunarForce.java b/Mage.Sets/src/mage/cards/l/LunarForce.java
index 58c71fea93e..a2c8280df49 100644
--- a/Mage.Sets/src/mage/cards/l/LunarForce.java
+++ b/Mage.Sets/src/mage/cards/l/LunarForce.java
@@ -1,4 +1,3 @@
-
package mage.cards.l;
import java.util.UUID;
@@ -12,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SetTargetPointer;
import mage.constants.Zone;
-import mage.filter.FilterSpell;
import mage.filter.StaticFilters;
/**
diff --git a/Mage.Sets/src/mage/cards/m/MadcapSkills.java b/Mage.Sets/src/mage/cards/m/MadcapSkills.java
index 9e25c220b48..10f37737c8e 100644
--- a/Mage.Sets/src/mage/cards/m/MadcapSkills.java
+++ b/Mage.Sets/src/mage/cards/m/MadcapSkills.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -15,7 +14,6 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
-import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -29,7 +27,6 @@ public final class MadcapSkills extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -38,8 +35,10 @@ public final class MadcapSkills extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +3/+0 and and has menace. (It can't be blocked except by two or more creatures.)
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 0)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(false), AttachmentType.AURA)));
+ Ability staticAbility = new SimpleStaticAbility(new BoostEnchantedEffect(3, 0));
+ staticAbility.addEffect(new GainAbilityAttachedEffect(new MenaceAbility(false), AttachmentType.AURA)
+ .setText("and has menace"));
+ this.addAbility(staticAbility);
}
private MadcapSkills(final MadcapSkills card) {
diff --git a/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java b/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
index 7fb14846a22..7f99b3944dd 100644
--- a/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/m/MasteryOfTheUnseen.java
@@ -25,7 +25,8 @@ public final class MasteryOfTheUnseen extends CardImpl {
// Whenever a permanent you control is turned face up, you gain 1 life for each creature you control.
this.addAbility(new TurnedFaceUpAllTriggeredAbility(
- new GainLifeEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE)),
+ new GainLifeEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE))
+ .setText("you gain 1 life for each creature you control"),
new FilterControlledPermanent("a permanent you control")));
// {3}{W}: Manifest the top card of your library.
diff --git a/Mage.Sets/src/mage/cards/n/NoDachi.java b/Mage.Sets/src/mage/cards/n/NoDachi.java
index 96274e1a429..ad15ef07450 100644
--- a/Mage.Sets/src/mage/cards/n/NoDachi.java
+++ b/Mage.Sets/src/mage/cards/n/NoDachi.java
@@ -1,8 +1,8 @@
-
-
package mage.cards.n;
import java.util.UUID;
+
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
@@ -21,9 +21,15 @@ public final class NoDachi extends CardImpl {
public NoDachi (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
this.subtype.add(SubType.EQUIPMENT);
+
+ // Equipped creature gets +2/+0 and has first strike.
+ Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 0));
+ ability.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT)
+ .setText("and has first strike"));
+ this.addAbility(ability);
+
+ // Equip {3}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 0)));
}
private NoDachi(final NoDachi card) {
diff --git a/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java b/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
index 8a3abefa028..5c6311f38c1 100644
--- a/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
+++ b/Mage.Sets/src/mage/cards/o/ObeliskOfUndoing.java
@@ -1,4 +1,3 @@
-
package mage.cards.o;
import java.util.UUID;
@@ -22,7 +21,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class ObeliskOfUndoing extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent();
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent you both own and control");
static {
filter.add(TargetController.YOU.getOwnerPredicate());
diff --git a/Mage.Sets/src/mage/cards/o/OniPossession.java b/Mage.Sets/src/mage/cards/o/OniPossession.java
index bfeb658bb19..e4f82aecb41 100644
--- a/Mage.Sets/src/mage/cards/o/OniPossession.java
+++ b/Mage.Sets/src/mage/cards/o/OniPossession.java
@@ -1,4 +1,3 @@
-
package mage.cards.o;
import mage.abilities.Ability;
@@ -41,10 +40,12 @@ public final class OniPossession extends CardImpl {
new SacrificeControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT, 1, ""), TargetController.YOU, false);
this.addAbility(ability2);
// Enchanted creature gets +3/+3 and has trample.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)));
+ Ability staticAbility = new SimpleStaticAbility(new BoostEnchantedEffect(3, 3));
+ staticAbility.addEffect(new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)
+ .setText("and has trample"));
+ this.addAbility(staticAbility);
// Enchanted creature is a Demon Spirit.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetCardSubtypeAttachedEffect(Duration.WhileOnBattlefield, AttachmentType.AURA, SubType.DEMON, SubType.SPIRIT)));
+ this.addAbility(new SimpleStaticAbility(new SetCardSubtypeAttachedEffect(Duration.WhileOnBattlefield, AttachmentType.AURA, SubType.DEMON, SubType.SPIRIT)));
}
private OniPossession(final OniPossession card) {
diff --git a/Mage.Sets/src/mage/cards/o/OwlbearCub.java b/Mage.Sets/src/mage/cards/o/OwlbearCub.java
index 8517bf1ab55..eeb98af5694 100644
--- a/Mage.Sets/src/mage/cards/o/OwlbearCub.java
+++ b/Mage.Sets/src/mage/cards/o/OwlbearCub.java
@@ -92,7 +92,7 @@ class OwlbearCubEffect extends OneShotEffect {
super(Outcome.Benefit);
staticText = "look at the top eight cards of your library. You may put a creature card " +
"from among them onto the battlefield tapped and attacking that player. " +
- "Put the rest on the bottom of your library in random order";
+ "Put the rest on the bottom of your library in a random order";
}
private OwlbearCubEffect(final OwlbearCubEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/p/Paralyze.java b/Mage.Sets/src/mage/cards/p/Paralyze.java
index 84a2ee4700d..e6c447d0804 100644
--- a/Mage.Sets/src/mage/cards/p/Paralyze.java
+++ b/Mage.Sets/src/mage/cards/p/Paralyze.java
@@ -82,6 +82,6 @@ class ParalyzeEffect extends DoIfCostPaid {
@Override
public String getText(Mode mode) {
- return "that player may " + CardUtil.addCostVerb(cost.getText()) + ". If they do, " + executingEffects.getText(mode);
+ return "that player may " + CardUtil.addCostVerb(cost.getText()) + ". If the player does, untap the creature.";
}
}
diff --git a/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java b/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
index 1d4894d2005..af24341f57f 100644
--- a/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
+++ b/Mage.Sets/src/mage/cards/p/PeaceAndQuiet.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import mage.abilities.effects.common.DestroyTargetEffect;
@@ -19,10 +18,9 @@ public final class PeaceAndQuiet extends CardImpl {
public PeaceAndQuiet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
-
// Destroy two target enchantments.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
- this.getSpellAbility().addTarget(new TargetPermanent(2, StaticFilters.FILTER_PERMANENT_ENCHANTMENT));
+ this.getSpellAbility().addTarget(new TargetPermanent(2, StaticFilters.FILTER_PERMANENT_ENCHANTMENTS));
}
private PeaceAndQuiet(final PeaceAndQuiet card) {
diff --git a/Mage.Sets/src/mage/cards/p/PowerSurge.java b/Mage.Sets/src/mage/cards/p/PowerSurge.java
index 44bfbb0d201..c8173971c7a 100644
--- a/Mage.Sets/src/mage/cards/p/PowerSurge.java
+++ b/Mage.Sets/src/mage/cards/p/PowerSurge.java
@@ -1,7 +1,6 @@
package mage.cards.p;
import mage.abilities.Ability;
-import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@@ -41,9 +40,9 @@ public final class PowerSurge extends CardImpl {
class PowerSurgeDamageEffect extends OneShotEffect {
- public PowerSurgeDamageEffect() {
+ PowerSurgeDamageEffect() {
super(Outcome.Damage);
- this.staticText = "{this} deals X damage to that player where X is the number of untapped lands they controlled at the beginning of this turn";
+ this.staticText = "{this} deals X damage to that player, where X is the number of untapped lands they controlled at the beginning of this turn";
}
private PowerSurgeDamageEffect(final PowerSurgeDamageEffect copy) {
diff --git a/Mage.Sets/src/mage/cards/p/PrimalVisitation.java b/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
index fae90374664..eb601a9a28c 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalVisitation.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import java.util.UUID;
@@ -14,9 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
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;
@@ -39,8 +36,10 @@ public final class PrimalVisitation extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +3/+3 and has haste.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield)));
+ Ability staticAbility = new SimpleStaticAbility(new BoostEnchantedEffect(3, 3));
+ staticAbility.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.AURA)
+ .setText("and has haste"));
+ this.addAbility(staticAbility);
}
private PrimalVisitation(final PrimalVisitation card) {
diff --git a/Mage.Sets/src/mage/cards/p/ProtectTheNegotiators.java b/Mage.Sets/src/mage/cards/p/ProtectTheNegotiators.java
index f1408b24d5f..72a0ca87009 100644
--- a/Mage.Sets/src/mage/cards/p/ProtectTheNegotiators.java
+++ b/Mage.Sets/src/mage/cards/p/ProtectTheNegotiators.java
@@ -30,7 +30,7 @@ public final class ProtectTheNegotiators extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new CreateTokenEffect(new SoldierToken()),
KickedCondition.ONCE,
- "If this was spell was kicked, create a 1/1 white Soldier creature token."
+ "If this spell was kicked, create a 1/1 white Soldier creature token."
));
// Counter target spell unless its controller pays {1} for each creature you control.
diff --git a/Mage.Sets/src/mage/cards/r/RhysticShield.java b/Mage.Sets/src/mage/cards/r/RhysticShield.java
index 60b5b6a3580..2d2867931ea 100644
--- a/Mage.Sets/src/mage/cards/r/RhysticShield.java
+++ b/Mage.Sets/src/mage/cards/r/RhysticShield.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -22,8 +21,8 @@ public final class RhysticShield extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
// Creatures you control get +0/+1 until end of turn. They get an additional +0/+2 until end of turn unless any player pays {2}.
- this.getSpellAbility().addEffect(new BoostControlledEffect(0, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
- Effect effect = new DoUnlessAnyPlayerPaysEffect(new BoostControlledEffect(0, 2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), new ManaCostsImpl<>("{2}"));
+ this.getSpellAbility().addEffect(new BoostControlledEffect(0, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
+ Effect effect = new DoUnlessAnyPlayerPaysEffect(new BoostControlledEffect(0, 2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false), new ManaCostsImpl<>("{2}"));
effect.setText("They get an additional +0/+2 until end of turn unless any player pays {2}");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/r/RootbornDefenses.java b/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
index 941eabd4cef..999c3db1102 100644
--- a/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
+++ b/Mage.Sets/src/mage/cards/r/RootbornDefenses.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -10,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -27,8 +26,7 @@ public final class RootbornDefenses extends CardImpl {
// token you control. Damage and effects that say "destroy" don't destroy
// indestructible creatures.)
this.getSpellAbility().addEffect(new PopulateEffect());
- Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), false);
- effect.setText("Creatures you control are indestructible this turn");
+ Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES, false);
this.getSpellAbility().addEffect(effect);
}
@@ -42,4 +40,3 @@ public final class RootbornDefenses extends CardImpl {
return new RootbornDefenses(this);
}
}
-
diff --git a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
index 308d62ff59d..8a6d31fd1db 100644
--- a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
+++ b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java
@@ -43,7 +43,7 @@ public final class SaruliGatekeepers extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new GainLifeEffect(7)),
gatesCondition,
- "When {this} enters the battlefield, if you control two or more Gates, gain 7 life.")
+ "When {this} enters the battlefield, if you control two or more Gates, you gain 7 life.")
.addHint(new ConditionHint(gatesCondition, "You control two or more Gates")));
}
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java b/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
index 9f58b3db2b7..8f5410889e3 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfGeierReach.java
@@ -1,9 +1,9 @@
-
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
@@ -11,9 +11,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
-import mage.constants.TargetController;
-import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.common.FilterOpponentsCreaturePermanent;
/**
*
@@ -21,11 +20,8 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class ScourgeOfGeierReach extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("for each creature your opponents control");
-
- static {
- filter.add(TargetController.OPPONENT.getControllerPredicate());
- }
+ private static final FilterCreaturePermanent filter = new FilterOpponentsCreaturePermanent("creature your opponents control");
+ private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
public ScourgeOfGeierReach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
@@ -35,8 +31,7 @@ public final class ScourgeOfGeierReach extends CardImpl {
this.toughness = new MageInt(3);
// Scourge of Geier Reach gets +1/+1 for each creature your opponents control.
- PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(filter);
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(amount, amount, Duration.WhileOnBattlefield)));
+ this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield)));
}
private ScourgeOfGeierReach(final ScourgeOfGeierReach card) {
diff --git a/Mage.Sets/src/mage/cards/s/Simplify.java b/Mage.Sets/src/mage/cards/s/Simplify.java
index c578bd73451..b3d5f1cd93e 100644
--- a/Mage.Sets/src/mage/cards/s/Simplify.java
+++ b/Mage.Sets/src/mage/cards/s/Simplify.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -14,11 +13,13 @@ import mage.filter.common.FilterControlledEnchantmentPermanent;
*/
public final class Simplify extends CardImpl {
+ private static final FilterControlledEnchantmentPermanent filter = new FilterControlledEnchantmentPermanent("an enchantment");
+
public Simplify(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
// Each player sacrifices an enchantment.
- this.getSpellAbility().addEffect(new SacrificeAllEffect(1, new FilterControlledEnchantmentPermanent("enchantment")));
+ this.getSpellAbility().addEffect(new SacrificeAllEffect(1, filter));
}
private Simplify(final Simplify card) {
diff --git a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
index 3a1b1ced13d..a8fcc1fa548 100644
--- a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
+++ b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -34,7 +33,8 @@ public final class SkarrganSkybreaker extends CardImpl {
// Bloodthirst 3
this.addAbility(new BloodthirstAbility(3));
// {1}, Sacrifice Skarrgan Skybreaker: Skarrgan Skybreaker deals damage equal to its power to any target.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()), new GenericManaCost(1));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount())
+ .setText("It deals damage equal to its power to any target"), new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java b/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
index 774aa9bb894..0efec5787ea 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalGrimace.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -16,7 +15,6 @@ import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.target.TargetPermanent;
@@ -32,17 +30,19 @@ public final class SkeletalGrimace extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
+
// Enchanted creature gets +1/+1 and has "{B}: Regenerate this creature."
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
+ Ability staticAbility = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1));
Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl<>("{B}"));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA)));
+ staticAbility.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA)
+ .setText("and has \"{B}: Regenerate this creature.\""));
+ this.addAbility(staticAbility);
}
private SkeletalGrimace(final SkeletalGrimace card) {
diff --git a/Mage.Sets/src/mage/cards/s/SkillfulLunge.java b/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
index 2abc2a38cdb..d48ae46b293 100644
--- a/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
+++ b/Mage.Sets/src/mage/cards/s/SkillfulLunge.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -20,11 +19,12 @@ public final class SkillfulLunge extends CardImpl {
public SkillfulLunge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}");
-
// Target creature gets +2/+0 and gains first strike until end of turn.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn));
+ this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn)
+ .setText("target creature gets +2/+0"));
+ this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn)
+ .setText("and gains first strike until end of turn"));
}
private SkillfulLunge(final SkillfulLunge card) {
diff --git a/Mage.Sets/src/mage/cards/s/Skizzik.java b/Mage.Sets/src/mage/cards/s/Skizzik.java
index 57780fe754c..da59a47ac36 100644
--- a/Mage.Sets/src/mage/cards/s/Skizzik.java
+++ b/Mage.Sets/src/mage/cards/s/Skizzik.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -36,7 +35,8 @@ public final class Skizzik extends CardImpl {
this.addAbility(HasteAbility.getInstance());
// At the beginning of the end step, sacrifice Skizzik unless it was kicked.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
- new SacrificeSourceUnlessConditionEffect(KickedCondition.ONCE), TargetController.NEXT, false));
+ new SacrificeSourceUnlessConditionEffect(KickedCondition.ONCE)
+ .setText("if {this} wasn't kicked, sacrifice it"), TargetController.NEXT, false));
}
private Skizzik(final Skizzik card) {
diff --git a/Mage.Sets/src/mage/cards/s/SlightMalfunction.java b/Mage.Sets/src/mage/cards/s/SlightMalfunction.java
index f1c9c6aa6c1..193e512ba16 100644
--- a/Mage.Sets/src/mage/cards/s/SlightMalfunction.java
+++ b/Mage.Sets/src/mage/cards/s/SlightMalfunction.java
@@ -48,7 +48,7 @@ class SlightMalfunctionEffect extends OneShotEffect {
SlightMalfunctionEffect() {
super(Outcome.Benefit);
- staticText = "roll a six-side die. When you do, {this} deals 1 damage " +
+ staticText = "roll a six-sided die. When you do, {this} deals 1 damage " +
"to each of up to X target creatures, where X is the result";
}
diff --git a/Mage.Sets/src/mage/cards/s/SpectralFlight.java b/Mage.Sets/src/mage/cards/s/SpectralFlight.java
index 581021a8402..6b4385d32ce 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralFlight.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralFlight.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -25,7 +24,6 @@ public final class SpectralFlight extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
this.subtype.add(SubType.AURA);
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -34,8 +32,10 @@ public final class SpectralFlight extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +2/+2 and has flying.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)));
+ Ability boostAbility = new SimpleStaticAbility(new BoostEnchantedEffect(2, 2));
+ boostAbility.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)
+ .setText("and has flying"));
+ this.addAbility(boostAbility);
}
private SpectralFlight(final SpectralFlight card) {
diff --git a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
index a069526f751..28f86e07710 100644
--- a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
+++ b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -19,7 +18,7 @@ public final class SuccumbToTemptation extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}");
// You draw two cards and you lose 2 life.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, "you"));
Effect effect = new LoseLifeSourceControllerEffect(2);
effect.setText("and you lose 2 life");
this.getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/t/Tangle.java b/Mage.Sets/src/mage/cards/t/Tangle.java
index ae314ca183a..ded22eb382a 100644
--- a/Mage.Sets/src/mage/cards/t/Tangle.java
+++ b/Mage.Sets/src/mage/cards/t/Tangle.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.ArrayList;
@@ -33,7 +32,7 @@ public final class Tangle extends CardImpl {
// Prevent all combat damage that would be dealt this turn.
this.getSpellAbility().addEffect(new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true));
// Each attacking creature doesn't untap during its controller's next untap step.
- this.getSpellAbility().addEffect(new TangleEffect());
+ this.getSpellAbility().addEffect(new TangleEffect().concatBy("
"));
}
private Tangle(final Tangle card) {
diff --git a/Mage.Sets/src/mage/cards/t/TheFirstEruption.java b/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
index 76dadc336db..40ec0dbf407 100644
--- a/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
+++ b/Mage.Sets/src/mage/cards/t/TheFirstEruption.java
@@ -32,7 +32,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class TheFirstEruption extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature without flying");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
static {
filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/cards/t/TransgressTheMind.java b/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
index 7a4088d9385..4ccc73c803f 100644
--- a/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
+++ b/Mage.Sets/src/mage/cards/t/TransgressTheMind.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -33,7 +32,7 @@ public final class TransgressTheMind extends CardImpl {
// Target player reveals their hand. You may choose a card from it with converted mana cost 3 or greater and exile that card.
Effect effect = new ExileCardYouChooseTargetOpponentEffect(filter);
- effect.setText("Target player reveals their hand. You may choose a card from it with mana value 3 or greater and exile that card");
+ effect.setText("Target player reveals their hand. You choose a card from it with mana value 3 or greater and exile that card");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetPlayer());
}
diff --git a/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java b/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
index af703417c73..359ac3d71d2 100644
--- a/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
+++ b/Mage.Sets/src/mage/cards/v/VesuvanDoppelganger.java
@@ -56,7 +56,7 @@ public final class VesuvanDoppelganger extends CardImpl {
class VesuvanDoppelgangerCopyEffect extends OneShotEffect {
- private static final String rule2 = "At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color and it has this ability.";
+ private static final String rule2 = "At the beginning of your upkeep, you may have this creature become a copy of target creature, except it doesn't copy that creature's color and it has this ability.";
public VesuvanDoppelgangerCopyEffect() {
super(Outcome.Copy);
diff --git a/Mage.Sets/src/mage/cards/v/VeteranSoldier.java b/Mage.Sets/src/mage/cards/v/VeteranSoldier.java
index 175d5721a8b..ca484e147c4 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranSoldier.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranSoldier.java
@@ -46,7 +46,7 @@ class VeteranSoldierEffect extends OneShotEffect {
VeteranSoldierEffect() {
super(Outcome.Benefit);
- staticText = "for each opponent, create a 1/1 white Soldier creature token that's tapped and attacking that player";
+ staticText = "for each opponent, create a 1/1 white Soldier creature token that's tapped and attacking that opponent";
}
private VeteranSoldierEffect(final VeteranSoldierEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
index 20c29c29850..6e9c4cc3ccd 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
@@ -1,4 +1,3 @@
-
package mage.cards.w;
import java.util.UUID;
@@ -12,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterInstantOrSorcerySpell;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -31,7 +29,7 @@ public final class WeaverOfLightning extends CardImpl {
// Reach
this.addAbility(ReachAbility.getInstance());
// Whenever you cast an instant or sorcery spell, Weaver of Lightning deals 1 damage to target creature an opponent controls.
- Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(1), new FilterInstantOrSorcerySpell(), false);
+ Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(1), StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false);
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WormfangDrake.java b/Mage.Sets/src/mage/cards/w/WormfangDrake.java
index 64bde245c2d..c8130739fd9 100644
--- a/Mage.Sets/src/mage/cards/w/WormfangDrake.java
+++ b/Mage.Sets/src/mage/cards/w/WormfangDrake.java
@@ -43,7 +43,7 @@ public final class WormfangDrake extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(
new SacrificeSourceUnlessPaysEffect(new ExileTargetCost(new TargetControlledPermanent(filter))),
false
- ).withRuleTextReplacement(false));
+ ));
// When Wormfang Drake leaves the battlefield, return the exiled card to the battlefield under its owner's control.
this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false));
diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
index 47be846a6f9..178b8f94ded 100644
--- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
+++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
@@ -226,7 +226,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
}
}
if (replaceRuleText && triggerPhrase != null) {
- superRule = superRule.replaceFirst("^((?:you may )?sacrifice |put an? [^ ]+ counter on |return |transform )?\\{this\\}", "$1it");
+ superRule = superRule.replaceFirst("^((?:you may )?sacrifice |put an? [^ ]+ counter on |return |transform |untap )?\\{this\\}", "$1it");
}
sb.append(superRule);
if (triggersOnceEachTurn) {
diff --git a/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java
index 48b856f394d..e2903456db2 100644
--- a/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java
@@ -11,6 +11,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.target.targetpointer.FixedTarget;
+import mage.util.CardUtil;
public class DealtDamageAndDiedTriggeredAbility extends TriggeredAbilityImpl {
@@ -33,7 +34,7 @@ public class DealtDamageAndDiedTriggeredAbility extends TriggeredAbilityImpl {
super(Zone.ALL, effect, optional);
this.filter = filter;
this.setTargetPointer = setTargetPointer;
- setTriggerPhrase("Whenever a " + filter.getMessage() + " dealt damage by {this} this turn dies, ");
+ setTriggerPhrase(getWhen() + CardUtil.addArticle(filter.getMessage()) + " dealt damage by {this} this turn dies, ");
}
protected DealtDamageAndDiedTriggeredAbility(final DealtDamageAndDiedTriggeredAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java
index 2e23f21c72c..db019d5d7b4 100644
--- a/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java
@@ -103,7 +103,7 @@ public class SpellCastControllerTriggeredAbility extends TriggeredAbilityImpl {
}
private void makeTriggerPhrase() {
- String text = "Whenever you cast " + filter.getMessage();
+ String text = getWhen() + "you cast " + filter.getMessage();
switch (fromZone) {
case ALL:
diff --git a/Mage/src/main/java/mage/abilities/common/SpellCastOpponentTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SpellCastOpponentTriggeredAbility.java
index 9f9a2762cdb..3f041cfdfe5 100644
--- a/Mage/src/main/java/mage/abilities/common/SpellCastOpponentTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/SpellCastOpponentTriggeredAbility.java
@@ -61,7 +61,7 @@ public class SpellCastOpponentTriggeredAbility extends TriggeredAbilityImpl {
this.filter = filter;
this.setTargetPointer = setTargetPointer;
this.onlyFromNonHand = onlyFromNonHand;
- setTriggerPhrase("Whenever an opponent casts "
+ setTriggerPhrase(getWhen() + "an opponent casts "
+ filter.getMessage()
+ (onlyFromNonHand ? " from anywhere other than their hand" : "")
+ ", ");