diff --git a/Mage.Sets/src/mage/cards/c/CallToGlory.java b/Mage.Sets/src/mage/cards/c/CallToGlory.java index af22470d17b..df3b8b866f1 100644 --- a/Mage.Sets/src/mage/cards/c/CallToGlory.java +++ b/Mage.Sets/src/mage/cards/c/CallToGlory.java @@ -17,7 +17,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class CallToGlory extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai creatures"); static { filter.add(SubType.SAMURAI.getPredicate()); @@ -26,8 +26,8 @@ public final class CallToGlory extends CardImpl { public CallToGlory(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); - //Untap all creatures you control. Samurai creatures you control get +1/+1 until end of turn. - this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)); + // Untap all creatures you control. Samurai creatures you control get +1/+1 until end of turn. + this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURES)); this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, false)); } diff --git a/Mage.Sets/src/mage/cards/c/CleansingNova.java b/Mage.Sets/src/mage/cards/c/CleansingNova.java index f4ac94234f4..659dd4e273f 100644 --- a/Mage.Sets/src/mage/cards/c/CleansingNova.java +++ b/Mage.Sets/src/mage/cards/c/CleansingNova.java @@ -7,7 +7,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; -import mage.filter.common.FilterArtifactOrEnchantmentPermanent; /** * @@ -15,9 +14,6 @@ import mage.filter.common.FilterArtifactOrEnchantmentPermanent; */ public final class CleansingNova extends CardImpl { - private static final FilterArtifactOrEnchantmentPermanent filter - = new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments"); - public CleansingNova(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}"); @@ -26,7 +22,7 @@ public final class CleansingNova extends CardImpl { this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES)); // • Destroy all artifacts and enchantments. - Mode mode = new Mode(new DestroyAllEffect(filter)); + Mode mode = new Mode(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS)); this.getSpellAbility().getModes().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/d/DismantlingWave.java b/Mage.Sets/src/mage/cards/d/DismantlingWave.java index 15a8aa2c71a..76bfe9f0e73 100644 --- a/Mage.Sets/src/mage/cards/d/DismantlingWave.java +++ b/Mage.Sets/src/mage/cards/d/DismantlingWave.java @@ -10,6 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -25,9 +26,6 @@ import java.util.UUID; */ public final class DismantlingWave extends CardImpl { - private static final FilterPermanent filter - = new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments"); - public DismantlingWave(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}"); @@ -41,7 +39,7 @@ public final class DismantlingWave extends CardImpl { this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{6}{W}{W}"))); // When you cycle Dismantling Wave, destroy all artifacts and enchantments. - this.addAbility(new CycleTriggeredAbility(new DestroyAllEffect(filter))); + this.addAbility(new CycleTriggeredAbility(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS))); } private DismantlingWave(final DismantlingWave card) { diff --git a/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java b/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java index 14f11546a26..90a71002093 100644 --- a/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java +++ b/Mage.Sets/src/mage/cards/e/EbonyOwlNetsuke.java @@ -10,7 +10,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.players.Player; import mage.target.targetpointer.FixedTarget; @@ -79,6 +78,6 @@ class EbonyOwlNetsukeTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "At the beginning of each opponent's upkeep, if that player has seven or more cards in hand, {this} deals 4 damage to that player"; + return "At the beginning of each opponent's upkeep, if that player has seven or more cards in hand, {this} deals 4 damage to that player."; } } diff --git a/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java b/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java index 588e9c89d95..b7db87f83c9 100644 --- a/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java +++ b/Mage.Sets/src/mage/cards/e/EnshrinedMemories.java @@ -19,7 +19,7 @@ public final class EnshrinedMemories extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}"); // Reveal the top X cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order. - this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.REGULAR, StaticFilters.FILTER_CARD_CREATURE, Zone.LIBRARY, true)); + this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.REGULAR, StaticFilters.FILTER_CARD_CREATURES, Zone.LIBRARY, true)); } private EnshrinedMemories(final EnshrinedMemories card) { diff --git a/Mage.Sets/src/mage/cards/f/FinalJudgment.java b/Mage.Sets/src/mage/cards/f/FinalJudgment.java index 32245038665..2e6fc733b03 100644 --- a/Mage.Sets/src/mage/cards/f/FinalJudgment.java +++ b/Mage.Sets/src/mage/cards/f/FinalJudgment.java @@ -6,7 +6,7 @@ import mage.abilities.effects.common.ExileAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.StaticFilters; /** * @@ -18,7 +18,7 @@ public final class FinalJudgment extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}"); // Exile all creatures. - this.getSpellAbility().addEffect(new ExileAllEffect(new FilterCreaturePermanent())); + this.getSpellAbility().addEffect(new ExileAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES)); } private FinalJudgment(final FinalJudgment card) { diff --git a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java index cf04c2a4cce..411bbd8a88a 100644 --- a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java +++ b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java @@ -44,7 +44,7 @@ class FlamesOfTheBloodHandReplacementEffect extends ReplacementEffectImpl { public FlamesOfTheBloodHandReplacementEffect() { super(Duration.EndOfTurn, Outcome.Benefit); - staticText = "If that player would gain life this turn, that player gains no life instead"; + staticText = "If that player or that planeswalker's controller would gain life this turn, that player gains no life instead"; } public FlamesOfTheBloodHandReplacementEffect(final FlamesOfTheBloodHandReplacementEffect effect) { diff --git a/Mage.Sets/src/mage/cards/f/FountainWatch.java b/Mage.Sets/src/mage/cards/f/FountainWatch.java index 621666b058e..c67faf31fdd 100644 --- a/Mage.Sets/src/mage/cards/f/FountainWatch.java +++ b/Mage.Sets/src/mage/cards/f/FountainWatch.java @@ -12,8 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; /** * @@ -21,14 +20,6 @@ import mage.filter.predicate.Predicates; */ public final class FountainWatch extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Artifacts and Enchantments"); - - static { - filter.add(Predicates.or( - CardType.ARTIFACT.getPredicate(), - CardType.ENCHANTMENT.getPredicate())); - } - public FountainWatch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); this.subtype.add(SubType.HUMAN); @@ -37,7 +28,7 @@ public final class FountainWatch extends CardImpl { this.toughness = new MageInt(4); // Artifacts and enchantments you control have shroud. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filter, false))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS, false))); } private FountainWatch(final FountainWatch card) { diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java index 7784a799888..325362f91e4 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java @@ -7,6 +7,7 @@ import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect; @@ -44,7 +45,9 @@ public final class GenjuOfTheFalls extends CardImpl { this.addAbility(ability2); // When enchanted Island is put into a graveyard, you may return Genju of the Falls from your graveyard to your hand. TargetPermanent auraTarget = new TargetLandPermanent(filter); - Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Island", true, false); + Effect effect = new ReturnToHandSourceEffect(false, true); + effect.setText("you may return {this} from your graveyard to your hand"); + Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Island", true, false); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java index f868b690fd5..01d40980f7a 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java @@ -8,6 +8,7 @@ import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect; @@ -45,7 +46,9 @@ public final class GenjuOfTheFens extends CardImpl { this.addAbility(ability2); // When enchanted Swamp is put into a graveyard, you may return Genju of the Fens from your graveyard to your hand. - Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Swamp", true, false); + Effect effect = new ReturnToHandSourceEffect(false, true); + effect.setText("you may return {this} from your graveyard to your hand"); + Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Swamp", true, false); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java index e7e17471f7e..872d5756874 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java @@ -51,7 +51,9 @@ public final class GenjuOfTheFields extends CardImpl { this.addAbility(ability2); // When enchanted Plains is put into a graveyard, you may return Genju of the Fields from your graveyard to your hand. - Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Plains", true, false); + Effect effect2 = new ReturnToHandSourceEffect(false, true); + effect2.setText("you may return {this} from your graveyard to your hand"); + Ability ability3 = new DiesAttachedTriggeredAbility(effect2, "enchanted Plains", true, false); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java index b5ca9492352..745bb0a55d3 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java @@ -7,6 +7,7 @@ import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect; @@ -42,7 +43,9 @@ public final class GenjuOfTheRealm extends CardImpl { this.addAbility(ability2); // When enchanted land is put into a graveyard, you may return Genju of the Realm from your graveyard to your hand. - Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted land", true, false); + Effect effect = new ReturnToHandSourceEffect(false, true); + effect.setText("you may return {this} from your graveyard to your hand"); + Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted land", true, false); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java index 3d6c2297d03..5dc497db8d4 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java @@ -7,6 +7,7 @@ import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect; @@ -43,7 +44,9 @@ public final class GenjuOfTheSpires extends CardImpl { this.addAbility(ability2); // When enchanted Mountain is put into a graveyard, you may return Genju of the Spires from your graveyard to your hand. - Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Mountain", true, false); + Effect effect = new ReturnToHandSourceEffect(false, true); + effect.setText("you may return {this} from your graveyard to your hand"); + Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Mountain", true, false); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/g/Glitterfang.java b/Mage.Sets/src/mage/cards/g/Glitterfang.java index b70d3e55c08..05de5398bc1 100644 --- a/Mage.Sets/src/mage/cards/g/Glitterfang.java +++ b/Mage.Sets/src/mage/cards/g/Glitterfang.java @@ -28,7 +28,7 @@ public final class Glitterfang extends CardImpl { // Haste this.addAbility(HasteAbility.getInstance()); // At the beginning of the end step, return Glitterfang to its owner's hand. - this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.ANY, false)); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.NEXT, false)); } private Glitterfang(final Glitterfang card) { diff --git a/Mage.Sets/src/mage/cards/h/HanabiBlast.java b/Mage.Sets/src/mage/cards/h/HanabiBlast.java index 3f1190fd347..d3e2b7103a8 100644 --- a/Mage.Sets/src/mage/cards/h/HanabiBlast.java +++ b/Mage.Sets/src/mage/cards/h/HanabiBlast.java @@ -23,7 +23,7 @@ public final class HanabiBlast extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addEffect(ReturnToHandSpellEffect.getInstance()); - this.getSpellAbility().addEffect(new DiscardControllerEffect(1, true)); + this.getSpellAbility().addEffect(new DiscardControllerEffect(1, true).concatBy(", then")); } public HanabiBlast (final HanabiBlast card) { diff --git a/Mage.Sets/src/mage/cards/h/HeedTheMists.java b/Mage.Sets/src/mage/cards/h/HeedTheMists.java index ff1e6d2b039..55e38c29539 100644 --- a/Mage.Sets/src/mage/cards/h/HeedTheMists.java +++ b/Mage.Sets/src/mage/cards/h/HeedTheMists.java @@ -40,7 +40,7 @@ public final class HeedTheMists extends CardImpl { public HeedTheMistsEffect() { super(Outcome.DrawCard); - staticText = "Mill a card, then draw cards equal to that card's mana value"; + staticText = "Mill a card, then draw cards equal to the milled card's mana value"; } public HeedTheMistsEffect(HeedTheMistsEffect effect) { @@ -49,7 +49,6 @@ public final class HeedTheMists extends CardImpl { @Override public boolean apply(Game game, Ability source) { - boolean result = false; Player controller = game.getPlayer(source.getControllerId()); int totalCMC = controller .millCards(1, source, game) diff --git a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java index aa6c6417ada..6df95a40d4b 100644 --- a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java +++ b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java @@ -23,9 +23,11 @@ import mage.target.common.TargetControlledCreaturePermanent; public final class IizukaTheRuthless extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai"); + private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Samurai creatures"); static { filter.add(SubType.SAMURAI.getPredicate()); + filter2.add(SubType.SAMURAI.getPredicate()); } public IizukaTheRuthless(UUID ownerId, CardSetInfo setInfo) { @@ -38,7 +40,7 @@ public final class IizukaTheRuthless extends CardImpl { this.toughness = new MageInt(3); this.addAbility(new BushidoAbility(2)); // {2}{R}, Sacrifice a Samurai: Samurai creatures you control gain double strike until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, filter, false), new ManaCostsImpl<>("{2}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, filter2, false), new ManaCostsImpl<>("{2}{R}")); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java b/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java index 45facca25b1..b3f780007cf 100644 --- a/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java +++ b/Mage.Sets/src/mage/cards/k/KalemnesCaptain.java @@ -11,22 +11,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; /** * * @author fireshoes */ public final class KalemnesCaptain extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments"); - - static { - filter.add(Predicates.or( - CardType.ARTIFACT.getPredicate(), - CardType.ENCHANTMENT.getPredicate())); - } public KalemnesCaptain(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); @@ -42,7 +33,7 @@ public final class KalemnesCaptain extends CardImpl { this.addAbility(new MonstrosityAbility("{5}{W}{W}", 3)); // When Kalemne's Captain becomes monstrous, exile all artifacts and enchantments. - this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new ExileAllEffect(filter))); + this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new ExileAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS))); } private KalemnesCaptain(final KalemnesCaptain card) { diff --git a/Mage.Sets/src/mage/cards/k/KondasBanner.java b/Mage.Sets/src/mage/cards/k/KondasBanner.java index d1eddfadd91..ba51c5d41cb 100644 --- a/Mage.Sets/src/mage/cards/k/KondasBanner.java +++ b/Mage.Sets/src/mage/cards/k/KondasBanner.java @@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public final class KondasBanner extends CardImpl { - private static final FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("legendary creatures"); + private static final FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("legendary creature"); static { legendaryFilter.add(SuperType.LEGENDARY.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/m/ManaSeism.java b/Mage.Sets/src/mage/cards/m/ManaSeism.java index 230e62de494..f49a13e3a5c 100644 --- a/Mage.Sets/src/mage/cards/m/ManaSeism.java +++ b/Mage.Sets/src/mage/cards/m/ManaSeism.java @@ -44,7 +44,7 @@ class ManaSeismEffect extends OneShotEffect { public ManaSeismEffect() { super(Outcome.Neutral); - staticText = "Sacrifice any number of lands. Add {C} for each land sacrificed this way"; + staticText = "Sacrifice any number of lands, then add that much {C}"; } public ManaSeismEffect(final ManaSeismEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java index 22a70481b99..f3dfbc10505 100644 --- a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java +++ b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java @@ -42,7 +42,7 @@ public final class MarkOfTheOni extends CardImpl { // At the beginning of the end step, if you control no Demons, sacrifice Mark of the Oni. this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new SacrificeSourceEffect(), - TargetController.ANY, + TargetController.NEXT, new PermanentsOnTheBattlefieldCondition( new FilterControlledCreaturePermanent(SubType.DEMON, "if you control no Demons"), ComparisonType.FEWER_THAN, 1), diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java b/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java index 5a7e3a75f36..5592bfee97b 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfCleansingFire.java @@ -48,10 +48,10 @@ public final class MyojinOfCleansingFire extends CardImpl { this.getSpellAbility().addWatcher(new CastFromHandWatcher()); // Myojin of Cleansing Fire enters the battlefield with a divinity counter on it if you cast it from your hand. - this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand")); - // Myojin of Cleansing Fire is indestructible as long as it has a divinity counter on it. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand")); + // Myojin of Cleansing Fire has indestructible as long as it has a divinity counter on it. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), - new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); + new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Cleansing Fire: Destroy all other creatures. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(filter), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()))); } diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java index 9d8d43a6102..0d357802861 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java @@ -42,10 +42,10 @@ public final class MyojinOfInfiniteRage extends CardImpl { this.getSpellAbility().addWatcher(new CastFromHandWatcher()); // Myojin of Infinite Rage enters the battlefield with a divinity counter on it if you cast it from your hand. - this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand")); - // Myojin of Infinite Rage is indestructible as long as it has a divinity counter on it. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand")); + // Myojin of Infinite Rage has indestructible as long as it has a divinity counter on it. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), - new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); + new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Infinite Rage: Destroy all lands. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(StaticFilters.FILTER_LANDS), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()))); } diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java b/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java index e8a64ee381a..129a2cd0217 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfLifesWeb.java @@ -43,11 +43,11 @@ public final class MyojinOfLifesWeb extends CardImpl { this.getSpellAbility().addWatcher(new CastFromHandWatcher()); // Myojin of Life's Web enters the battlefield with a divinity counter on it if you cast it from your hand. - this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand")); - // Myojin of Life's Web is indestructible as long as it has a divinity counter on it. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand")); + // Myojin of Life's Web has indestructible as long as it has a divinity counter on it. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), - new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); + new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Life's Web: Put any number of creature cards from your hand onto the battlefield. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfLifesWebPutCreatureOnBattlefieldEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())); diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java b/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java index 8b7d171f883..72d5f81c22e 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfNightsReach.java @@ -40,10 +40,10 @@ public final class MyojinOfNightsReach extends CardImpl { this.getSpellAbility().addWatcher(new CastFromHandWatcher()); // Myojin of Night's Reach enters the battlefield with a divinity counter on it if you cast it from your hand. - this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand")); - // Myojin of Night's Reach is indestructible as long as it has a divinity counter on it. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand")); + // Myojin of Night's Reach has indestructible as long as it has a divinity counter on it. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), - new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); + new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Night's Reach: Each opponent discards their hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfNightsReachEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java b/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java index e2881e92886..050b50bb2eb 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfSeeingWinds.java @@ -45,10 +45,10 @@ public final class MyojinOfSeeingWinds extends CardImpl { this.getSpellAbility().addWatcher(new CastFromHandWatcher()); // Myojin of Seeing Winds enters the battlefield with a divinity counter on it if you cast it from your hand. - this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand")); - // Myojin of Seeing Winds is indestructible as long as it has a divinity counter on it. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand")); + // Myojin of Seeing Winds has indestructible as long as it has a divinity counter on it. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), - new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); + new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Seeing Winds: Draw a card for each permanent you control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/n/NaturesWill.java b/Mage.Sets/src/mage/cards/n/NaturesWill.java index 5014d39fc58..c16573e9c86 100644 --- a/Mage.Sets/src/mage/cards/n/NaturesWill.java +++ b/Mage.Sets/src/mage/cards/n/NaturesWill.java @@ -11,8 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; /** * @@ -24,10 +23,10 @@ public final class NaturesWill extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}"); // Whenever one or more creatures you control deal combat damage to a player, tap all lands that player controls and untap all lands you control. - Effect tapAllEffect = new TapAllTargetPlayerControlsEffect(new FilterLandPermanent()); + Effect tapAllEffect = new TapAllTargetPlayerControlsEffect(StaticFilters.FILTER_LANDS); tapAllEffect.setText("tap all lands that player controls"); Ability ability = new DealCombatDamageControlledTriggeredAbility(Zone.BATTLEFIELD, tapAllEffect, true); - ability.addEffect(new UntapAllEffect(new FilterControlledLandPermanent())); + ability.addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_LANDS).concatBy("and")); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java b/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java index 4d9f58bf61c..6407cd9793c 100644 --- a/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java +++ b/Mage.Sets/src/mage/cards/p/PathOfAngersFlame.java @@ -21,7 +21,7 @@ public final class PathOfAngersFlame extends CardImpl { this.subtype.add(SubType.ARCANE); // Creatures you control get +2/+0 until end of turn. - this.getSpellAbility().addEffect(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false)); + this.getSpellAbility().addEffect(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false)); } private PathOfAngersFlame(final PathOfAngersFlame card) { diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java index 9a61d74429e..4ed2cbdfa11 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java @@ -35,7 +35,7 @@ public final class PatronOfTheAkki extends CardImpl { this.addAbility(new OfferingAbility(filter)); // Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn. - this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), false)); + this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false), false)); } private PatronOfTheAkki(final PatronOfTheAkki card) { diff --git a/Mage.Sets/src/mage/cards/p/Purify.java b/Mage.Sets/src/mage/cards/p/Purify.java index 70e9e9d0838..f71a0ddb5c6 100644 --- a/Mage.Sets/src/mage/cards/p/Purify.java +++ b/Mage.Sets/src/mage/cards/p/Purify.java @@ -6,8 +6,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; /** * @@ -15,20 +14,12 @@ import mage.filter.predicate.Predicates; */ public final class Purify extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments"); - - static { - filter.add(Predicates.or( - CardType.ARTIFACT.getPredicate(), - CardType.ENCHANTMENT.getPredicate())); - } - public Purify(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}"); // Destroy all artifacts and enchantments. - this.getSpellAbility().addEffect(new DestroyAllEffect(filter)); + this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS)); } private Purify(final Purify card) { diff --git a/Mage.Sets/src/mage/cards/r/ReduceToDreams.java b/Mage.Sets/src/mage/cards/r/ReduceToDreams.java index decb52c1766..be2131b9d71 100644 --- a/Mage.Sets/src/mage/cards/r/ReduceToDreams.java +++ b/Mage.Sets/src/mage/cards/r/ReduceToDreams.java @@ -19,7 +19,7 @@ public final class ReduceToDreams extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}"); // Return all artifacts and enchantments to their owners' hands. - this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT)); + this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS)); } private ReduceToDreams(final ReduceToDreams card) { diff --git a/Mage.Sets/src/mage/cards/r/RendFlesh.java b/Mage.Sets/src/mage/cards/r/RendFlesh.java index fc7dccdf2ee..8c4a95520b6 100644 --- a/Mage.Sets/src/mage/cards/r/RendFlesh.java +++ b/Mage.Sets/src/mage/cards/r/RendFlesh.java @@ -19,7 +19,7 @@ import java.util.UUID; */ public final class RendFlesh extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creature"); static { filter.add(Predicates.not(SubType.SPIRIT.getPredicate())); diff --git a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java index bfebdb63c21..2826ce3f699 100644 --- a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java +++ b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java @@ -20,7 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class SachiDaughterOfSeshiro extends CardImpl { - private static final FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snakes"); + private static final FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snake creatures"); private static final FilterPermanent shamanFilter = new FilterPermanent("Shamans"); static { diff --git a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java index f63281baa66..251e49d444c 100644 --- a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java +++ b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java @@ -52,7 +52,7 @@ public final class SekkiSeasonsGuide extends CardImpl { // Sacrifice eight Spirits: Return Sekki from your graveyard to the battlefield. this.addAbility(new SimpleActivatedAbility( Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(), + new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new SacrificeTargetCost(new TargetControlledPermanent(8, 8, filter, true)))); } diff --git a/Mage.Sets/src/mage/cards/s/Serenity.java b/Mage.Sets/src/mage/cards/s/Serenity.java index 50847fac3b3..ae237a58487 100644 --- a/Mage.Sets/src/mage/cards/s/Serenity.java +++ b/Mage.Sets/src/mage/cards/s/Serenity.java @@ -9,8 +9,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.game.events.GameEvent.EventType; /** @@ -19,18 +18,12 @@ import mage.game.events.GameEvent.EventType; */ public final class Serenity extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments"); - - static { - filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(), CardType.ENCHANTMENT.getPredicate())); - } - public Serenity(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); // At the beginning of your upkeep, destroy all artifacts and enchantments. They can't be regenerated. - Effect effect = new DestroyAllEffect(new FilterPermanent(filter), true); + Effect effect = new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS, true); Ability ability = new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", effect, false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java b/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java index 5aa4cf277d5..c7561f29c27 100644 --- a/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java +++ b/Mage.Sets/src/mage/cards/s/ShireiShizosCaretaker.java @@ -29,7 +29,7 @@ public final class ShireiShizosCaretaker extends CardImpl { } private static final String rule1 = "you may return that card to the battlefield " + - "t the beginning of the next end step if {this} is still on the battlefield"; + "at the beginning of the next end step if {this} is still on the battlefield"; private static final String rule2 = "Whenever a creature with power 1 or less " + "is put into your graveyard from the battlefield, "; diff --git a/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java b/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java index f7606b960b2..e35e315a831 100644 --- a/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java +++ b/Mage.Sets/src/mage/cards/s/ShizukoCallerOfAutumn.java @@ -32,7 +32,7 @@ public final class ShizukoCallerOfAutumn extends CardImpl { // At the beginning of each player's upkeep, that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end. Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(3), "that player", true); - effect.setText("that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end"); + effect.setText("that player adds {G}{G}{G}. Until end of turn, they don't lose this mana as steps and phases end"); this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY, false)); } diff --git a/Mage.Sets/src/mage/cards/s/SwallowingPlague.java b/Mage.Sets/src/mage/cards/s/SwallowingPlague.java index 32a6c926df6..0b069de4b8e 100644 --- a/Mage.Sets/src/mage/cards/s/SwallowingPlague.java +++ b/Mage.Sets/src/mage/cards/s/SwallowingPlague.java @@ -24,7 +24,7 @@ public final class SwallowingPlague extends CardImpl { this.subtype.add(SubType.ARCANE); this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR)); - this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR)); + this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR).concatBy("and")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java b/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java index e1bc3e05df1..b7e94c131d2 100644 --- a/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java +++ b/Mage.Sets/src/mage/cards/s/SwayOfTheStars.java @@ -50,7 +50,7 @@ class SwayOfTheStarsEffect extends OneShotEffect { public SwayOfTheStarsEffect() { super(Outcome.Neutral); - staticText = "Each player shuffles their hand, graveyard, and permanents they own into their library"; + staticText = "Each player shuffles their hand, graveyard, and all permanents they own into their library"; } public SwayOfTheStarsEffect(final SwayOfTheStarsEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java b/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java index 5cef7ea6b42..483220680e4 100644 --- a/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java +++ b/Mage.Sets/src/mage/cards/t/ThatWhichWasTaken.java @@ -48,9 +48,9 @@ public final class ThatWhichWasTaken extends CardImpl { ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); - // Each permanent with a divinity counter on it is indestructible. + // Each permanent with a divinity counter on it has indestructible. Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filterIndestructible, false); - effect.setText("Each permanent with a divinity counter on it is indestructible"); + effect.setText("Each permanent with a divinity counter on it has indestructible"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); @@ -65,5 +65,3 @@ public final class ThatWhichWasTaken extends CardImpl { return new ThatWhichWasTaken(this); } } - - diff --git a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java index 2dc0e3258ba..897274330f3 100644 --- a/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java +++ b/Mage.Sets/src/mage/cards/t/ToshiroUmezawa.java @@ -68,7 +68,7 @@ class ToshiroUmezawaEffect extends OneShotEffect { public ToshiroUmezawaEffect() { super(Outcome.Benefit); this.staticText = "you may cast target instant card from your graveyard. " - + "If that spell would be put into a graveyard this turn, exile it instead"; + + "If that spell would be put into a graveyard, exile it instead"; } public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TraprootKami.java b/Mage.Sets/src/mage/cards/t/TraprootKami.java index fa66699e9b5..5072056a82b 100644 --- a/Mage.Sets/src/mage/cards/t/TraprootKami.java +++ b/Mage.Sets/src/mage/cards/t/TraprootKami.java @@ -21,7 +21,7 @@ import mage.filter.FilterPermanent; */ public final class TraprootKami extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("the number of Forests on the battlefield"); + private static final FilterPermanent filter = new FilterPermanent("Forests on the battlefield"); static { filter.add(SubType.FOREST.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/u/UbaMask.java b/Mage.Sets/src/mage/cards/u/UbaMask.java index d51f4b92552..99b0222b6cf 100644 --- a/Mage.Sets/src/mage/cards/u/UbaMask.java +++ b/Mage.Sets/src/mage/cards/u/UbaMask.java @@ -92,7 +92,7 @@ class UbaMaskPlayEffect extends AsThoughEffectImpl { public UbaMaskPlayEffect() { super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit); - staticText = "Each player may play cards they exiled with {this} this turn"; + staticText = "Each player may play lands and cast spells from among cards they exiled with {this} this turn"; } public UbaMaskPlayEffect(final UbaMaskPlayEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java index dc65b6b7c0f..e705ba229c3 100644 --- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java @@ -207,6 +207,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge || ruleLow.startsWith("change") || ruleLow.startsWith("counter") || ruleLow.startsWith("destroy") + || ruleLow.startsWith("distribute") || ruleLow.startsWith("sacrifice") || ruleLow.startsWith("exchange") || ruleLow.startsWith("exile") diff --git a/Mage/src/main/java/mage/abilities/effects/common/PreventDamageToAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PreventDamageToAttachedEffect.java index b7e5f8503b5..16679da06b7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/PreventDamageToAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/PreventDamageToAttachedEffect.java @@ -8,6 +8,7 @@ import mage.game.Game; import mage.game.events.DamageEvent; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.util.CardUtil; /** * @@ -61,14 +62,14 @@ public class PreventDamageToAttachedEffect extends PreventionEffectImpl { sb.append("combat "); } sb.append("damage that would be dealt to "); - sb.append(attachmentType.verb()).append(" creature"); + sb.append(CardUtil.getTextWithFirstCharLowerCase(attachmentType.verb())).append(" creature"); } else { sb.append("If a source would deal "); if (onlyCombat) { sb.append("combat "); } sb.append("damage to "); - sb.append(attachmentType.verb()); + sb.append(CardUtil.getTextWithFirstCharLowerCase(attachmentType.verb())); sb.append(" creature, prevent ").append(amountToPrevent); sb.append(" of that damage"); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/SetPlayerLifeAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/SetPlayerLifeAllEffect.java index d3ce6830ff1..dc069d111c9 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/SetPlayerLifeAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/SetPlayerLifeAllEffect.java @@ -85,7 +85,7 @@ public class SetPlayerLifeAllEffect extends OneShotEffect { default: throw new UnsupportedOperationException("Not supported value for targetController"); } - sb.append(" 's life total becomes "); + sb.append("'s life total becomes "); sb.append(amount.toString()); return sb.toString(); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java index 56944abcb41..57bde59e597 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java @@ -69,7 +69,7 @@ public class ChampionAbility extends StaticAbility { case 1: SubType subType = subTypes.get(0); this.objectDescription = subType.getDescription(); - filter = new FilterControlledPermanent(subType, "another " + subType + " you control"); + filter = new FilterControlledPermanent(subType, "another " + subType); filter.add(AnotherPredicate.instance); break; case 2: diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index a0c79c4a049..9b7da804419 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -291,6 +291,11 @@ public final class StaticFilters { FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT.setLockedFilter(true); } + public static final FilterArtifactOrEnchantmentPermanent FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS = new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments"); + + static { + FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS.setLockedFilter(true); + } public static final FilterControlledPermanent FILTER_PERMANENT_CONTROLLED_ARTIFACT_OR_ENCHANTMENT = new FilterControlledPermanent("artifact or enchantment you control");