diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/BlessedAlliance.java b/Mage.Sets/src/mage/sets/eldritchmoon/BlessedAlliance.java index 7ead378ed9b..b5407e76350 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/BlessedAlliance.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/BlessedAlliance.java @@ -1,87 +1,103 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.sets.eldritchmoon; - -import java.util.UUID; -import mage.abilities.Mode; -import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.effects.common.GainLifeTargetEffect; -import mage.abilities.effects.common.SacrificeEffect; -import mage.abilities.effects.common.UntapTargetEffect; -import mage.abilities.keyword.EscalateAbility; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.filter.common.FilterAttackingCreature; -import mage.target.TargetPlayer; -import mage.target.common.TargetCreaturePermanent; -import mage.target.common.TargetOpponent; - -/** - * - * @author emerald000 - */ -public class BlessedAlliance extends CardImpl { - - public BlessedAlliance(UUID ownerId) { - super(ownerId, 13, "Blessed Alliance", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{W}"); - this.expansionSetCode = "EMN"; - - // Escalate {2} - this.addAbility(new EscalateAbility(new GenericManaCost(2))); - - // Choose one or more — - this.getSpellAbility().getModes().setMinModes(1); - this.getSpellAbility().getModes().setMaxModes(3); - - // Target player gains 4 life. - this.getSpellAbility().addEffect(new GainLifeTargetEffect(4)); - this.getSpellAbility().addTarget(new TargetPlayer()); - - // Untap up to two target creatures. - Mode mode = new Mode(); - mode.getEffects().add(new UntapTargetEffect()); - mode.getTargets().add(new TargetCreaturePermanent(0, 2)); - this.getSpellAbility().addMode(mode); - - // Target opponent sacrifices an attacking creature. - mode = new Mode(); - mode.getEffects().add(new SacrificeEffect(new FilterAttackingCreature(), 1, "Target player")); - mode.getTargets().add(new TargetOpponent()); - this.getSpellAbility().addMode(mode); - } - - public BlessedAlliance(final BlessedAlliance card) { - super(card); - } - - @Override - public BlessedAlliance copy() { - return new BlessedAlliance(this); - } -} +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.eldritchmoon; + +import java.util.UUID; +import mage.abilities.Mode; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.GainLifeTargetEffect; +import mage.abilities.effects.common.SacrificeEffect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.keyword.EscalateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.filter.FilterPlayer; +import mage.filter.common.FilterAttackingCreature; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.other.PlayerPredicate; +import mage.target.TargetPlayer; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author emerald000 + */ +public class BlessedAlliance extends CardImpl { + + private static final FilterPlayer filterSacrifice = new FilterPlayer("opponent to sacrifice an attacking creature"); + private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creatures to untap"); + private static final FilterPlayer filterGainLife = new FilterPlayer("player to gain life"); + + static { + filterSacrifice.add(new PlayerPredicate(TargetController.OPPONENT)); + } + + public BlessedAlliance(UUID ownerId) { + super(ownerId, 13, "Blessed Alliance", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{W}"); + this.expansionSetCode = "EMN"; + + // Escalate {2} + this.addAbility(new EscalateAbility(new GenericManaCost(2))); + + // Choose one or more — + this.getSpellAbility().getModes().setMinModes(1); + this.getSpellAbility().getModes().setMaxModes(3); + + // Target player gains 4 life. + Effect effect = new GainLifeTargetEffect(4); + effect.setText("Target player gains 4 life"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetPlayer(1, 1, false, filterGainLife)); + + // Untap up to two target creatures. + Mode mode = new Mode(); + effect = new UntapTargetEffect(); + effect.setText("Untap up to two target creatures"); + mode.getEffects().add(effect); + mode.getTargets().add(new TargetCreaturePermanent(0, 2, filterCreature, false)); + this.getSpellAbility().addMode(mode); + + // Target opponent sacrifices an attacking creature. + mode = new Mode(); + mode.getEffects().add(new SacrificeEffect(new FilterAttackingCreature(), 1, "Target opponent")); + mode.getTargets().add(new TargetPlayer(1, 1, false, filterSacrifice)); + this.getSpellAbility().addMode(mode); + } + + public BlessedAlliance(final BlessedAlliance card) { + super(card); + } + + @Override + public BlessedAlliance copy() { + return new BlessedAlliance(this); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/BrunaTheFadingLight.java b/Mage.Sets/src/mage/sets/eldritchmoon/BrunaTheFadingLight.java index 2a106a1ed0f..db7c264d80f 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/BrunaTheFadingLight.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/BrunaTheFadingLight.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.InfoEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; @@ -70,7 +71,9 @@ public class BrunaTheFadingLight extends CardImpl { this.toughness = new MageInt(7); // When you cast Bruna, the Fading Light, you may return target Angel or Human creature card from your graveyard to the battlefield. - Ability ability = new CastSourceTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), true); + Effect effect = new ReturnFromGraveyardToBattlefieldTargetEffect(); + effect.setText("you may return target Angel or Human creature card from your graveyard to the battlefield"); + Ability ability = new CastSourceTriggeredAbility(effect, true); ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveEffort.java b/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveEffort.java index d514ff1d9ef..74b98245437 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveEffort.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveEffort.java @@ -30,6 +30,7 @@ package mage.sets.eldritchmoon; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.Mode; +import mage.abilities.costs.Cost; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -77,7 +78,9 @@ public class CollectiveEffort extends CardImpl { this.expansionSetCode = "EMN"; // Escalate — Tap an untapped creature you control. - this.addAbility(new EscalateAbility(new TapTargetCost(new TargetControlledCreaturePermanent(filterUntapped)))); + Cost cost = new TapTargetCost(new TargetControlledCreaturePermanent(filterUntapped)); + cost.setText("— Tap an untapped creature you control"); + this.addAbility(new EscalateAbility(cost)); // Choose one or more — this.getSpellAbility().getModes().setMinModes(1); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/DrogskolShieldmate.java b/Mage.Sets/src/mage/sets/eldritchmoon/DrogskolShieldmate.java index 3e6696aebfa..bd7153a5a1c 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/DrogskolShieldmate.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/DrogskolShieldmate.java @@ -56,7 +56,8 @@ public class DrogskolShieldmate extends CardImpl { this.addAbility(FlashAbility.getInstance()); // When Drogskol Shieldmate enters the battlefield, other creatures you control get +0/+1 until end of turn. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BoostControlledEffect(0, 1, Duration.EndOfTurn, new FilterCreaturePermanent(), true), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility( + new BoostControlledEffect(0, 1, Duration.EndOfTurn, new FilterCreaturePermanent("creatures"), true), false)); } public DrogskolShieldmate(final DrogskolShieldmate card) { diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/ElderDeepFiend.java b/Mage.Sets/src/mage/sets/eldritchmoon/ElderDeepFiend.java index 53c665fa8ad..30734208e6a 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/ElderDeepFiend.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/ElderDeepFiend.java @@ -1,78 +1,78 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.sets.eldritchmoon; - -import java.util.UUID; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.CastSourceTriggeredAbility; -import mage.abilities.effects.common.TapTargetEffect; -import mage.abilities.keyword.EmergeAbility; -import mage.abilities.keyword.FlashAbility; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.filter.FilterPermanent; -import mage.target.TargetPermanent; - -/** - * - * @author emerald000 - */ -public class ElderDeepFiend extends CardImpl { - - public ElderDeepFiend(UUID ownerId) { - super(ownerId, 5, "Elder Deep-Fiend", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{8}"); - this.expansionSetCode = "EMN"; - this.subtype.add("Eldrazi"); - this.subtype.add("Octopus"); - this.power = new MageInt(5); - this.toughness = new MageInt(6); - - // Flash - this.addAbility(FlashAbility.getInstance()); - - // Emerge {5}{U}{U} - this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{5}{U}{U}"))); - - // 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("permanents to tap"), false)); - this.addAbility(ability); - } - - public ElderDeepFiend(final ElderDeepFiend card) { - super(card); - } - - @Override - public ElderDeepFiend copy() { - return new ElderDeepFiend(this); - } -} +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.eldritchmoon; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CastSourceTriggeredAbility; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.keyword.EmergeAbility; +import mage.abilities.keyword.FlashAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.FilterPermanent; +import mage.target.TargetPermanent; + +/** + * + * @author emerald000 + */ +public class ElderDeepFiend extends CardImpl { + + public ElderDeepFiend(UUID ownerId) { + super(ownerId, 5, "Elder Deep-Fiend", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{8}"); + this.expansionSetCode = "EMN"; + this.subtype.add("Eldrazi"); + this.subtype.add("Octopus"); + this.power = new MageInt(5); + this.toughness = new MageInt(6); + + // Flash + this.addAbility(FlashAbility.getInstance()); + + // Emerge {5}{U}{U} + this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{5}{U}{U}"))); + + // 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)); + this.addAbility(ability); + } + + public ElderDeepFiend(final ElderDeepFiend card) { + super(card); + } + + @Override + public ElderDeepFiend copy() { + return new ElderDeepFiend(this); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/IroncladSlayer.java b/Mage.Sets/src/mage/sets/eldritchmoon/IroncladSlayer.java index e4d6f191a10..ff8b5a19265 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/IroncladSlayer.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/IroncladSlayer.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.constants.CardType; @@ -46,7 +47,7 @@ import mage.target.common.TargetCardInYourGraveyard; */ public class IroncladSlayer extends CardImpl { - private final static FilterCard filter = new FilterCard("Aura or Equipment card"); + private final static FilterCard filter = new FilterCard("Aura or Equipment card from your graveyard"); static { filter.add(Predicates.or(new SubtypePredicate("Aura"), new SubtypePredicate("Equipment"))); @@ -61,7 +62,9 @@ public class IroncladSlayer extends CardImpl { this.toughness = new MageInt(2); // When Ironclad Slayer enters the battlefield, you may return target Aura or Equipment card from your graveyard to your hand. - Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); + Effect effect = new ReturnToHandTargetEffect(); + effect.setText("you may return target Aura or Equipment card from your graveyard to your hand"); + Ability ability = new EntersBattlefieldTriggeredAbility(effect, true); ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/KessigProwler.java b/Mage.Sets/src/mage/sets/eldritchmoon/KessigProwler.java index 360a2c17f31..c20bf3e8122 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/KessigProwler.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/KessigProwler.java @@ -53,7 +53,7 @@ public class KessigProwler extends CardImpl { this.toughness = new MageInt(1); this.canTransform = true; - this.secondSideCard = new SinousPredator(ownerId); + this.secondSideCard = new SinuousPredator(ownerId); // {4}{G}: Transform Kessig Prowler. this.addAbility(new TransformAbility()); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/Providence.java b/Mage.Sets/src/mage/sets/eldritchmoon/Providence.java index 72d8302ab85..6f45af01a41 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/Providence.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/Providence.java @@ -45,13 +45,13 @@ import mage.game.events.GameEvent.EventType; */ public class Providence extends CardImpl { - private static String abilityText = "at the beginning of your first upkeep, your life total becomes 26"; + private static String abilityText = "at the beginning of the first upkeep, your life total becomes 26"; public Providence(UUID ownerId) { super(ownerId, 37, "Providence", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{5}{W}{W}"); this.expansionSetCode = "EMN"; - // You may reveal this card from your opening hand. If you do, at the beginning of your first upkeep, your life total becomes 26. + // You may reveal this card from your opening hand. If you do, at the beginning of the first upkeep, your life total becomes 26. Ability ability = new ChancellorAbility(new ProvidenceDelayedTriggeredAbility(), abilityText); ability.setRuleAtTheTop(true); this.addAbility(ability); @@ -87,7 +87,7 @@ class ProvidenceDelayedTriggeredAbility extends DelayedTriggeredAbility { @Override public boolean checkTrigger(GameEvent event, Game game) { - return game.getActivePlayerId().equals(controllerId); + return true; } @Override diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java b/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java index ba0bf0e7c5e..4acceb3a32f 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java @@ -48,7 +48,7 @@ import mage.filter.common.FilterControlledCreaturePermanent; public class SelflessSpirit extends CardImpl { public SelflessSpirit(UUID ownerId) { - super(ownerId, 40, "Selfless Soul", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}"); + super(ownerId, 40, "Selfless Spirit", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.expansionSetCode = "EMN"; this.subtype.add("Spirit"); this.power = new MageInt(2); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SigardianPriest.java b/Mage.Sets/src/mage/sets/eldritchmoon/SigardianPriest.java index 63fbdac43af..3f4d5f1e635 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SigardianPriest.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SigardianPriest.java @@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent; */ public class SigardianPriest extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human sources"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature"); static { filter.add(Predicates.not(new SubtypePredicate("Human"))); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SinousPredator.java b/Mage.Sets/src/mage/sets/eldritchmoon/SinuousPredator.java similarity index 85% rename from Mage.Sets/src/mage/sets/eldritchmoon/SinousPredator.java rename to Mage.Sets/src/mage/sets/eldritchmoon/SinuousPredator.java index 473a9390c1e..7157361168f 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SinousPredator.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SinuousPredator.java @@ -40,10 +40,10 @@ import mage.constants.Zone; * * @author fireshoes */ -public class SinousPredator extends CardImpl { +public class SinuousPredator extends CardImpl { - public SinousPredator(UUID ownerId) { - super(ownerId, 163, "Sinous Predator", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, ""); + public SinuousPredator(UUID ownerId) { + super(ownerId, 163, "Sinuous Predator", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, ""); this.expansionSetCode = "EMN"; this.subtype.add("Eldrazi"); this.subtype.add("Werewolf"); @@ -53,16 +53,16 @@ public class SinousPredator extends CardImpl { // this card is the second face of double-faced card this.nightCard = true; - // Sinous Predator can't be blocked by more than one creature. + // Sinuous Predator can't be blocked by more than one creature. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByMoreThanOneSourceEffect())); } - public SinousPredator(final SinousPredator card) { + public SinuousPredator(final SinuousPredator card) { super(card); } @Override - public SinousPredator copy() { - return new SinousPredator(this); + public SinuousPredator copy() { + return new SinuousPredator(this); } } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SpectralReserves.java b/Mage.Sets/src/mage/sets/eldritchmoon/SpectralReserves.java index 45420b38a09..74bb0bf40f5 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SpectralReserves.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SpectralReserves.java @@ -28,6 +28,7 @@ package mage.sets.eldritchmoon; import java.util.UUID; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; @@ -46,7 +47,9 @@ public class SpectralReserves extends CardImpl { this.expansionSetCode = "EMN"; // Put two 1/1 white Spirit creature tokens with flying onto the battlefield. You gain 2 life. - this.getSpellAbility().addEffect(new CreateTokenEffect(new SpiritWhiteToken("EMN"), 2)); + Effect effect = new CreateTokenEffect(new SpiritWhiteToken("EMN"), 2); + effect.setText("Put two 1/1 white Spirit creature tokens with flying onto the battlefield"); + this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(new GainLifeEffect(2)); } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SubjugatorAngel.java b/Mage.Sets/src/mage/sets/eldritchmoon/SubjugatorAngel.java index e28ab692e79..14c5e05ce15 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SubjugatorAngel.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SubjugatorAngel.java @@ -45,7 +45,7 @@ import mage.filter.predicate.permanent.ControllerPredicate; */ public class SubjugatorAngel extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents controller"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control"); static { filter.add(new ControllerPredicate(TargetController.OPPONENT)); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/ThaliasLancers.java b/Mage.Sets/src/mage/sets/eldritchmoon/ThaliasLancers.java index 0fec2c78c04..c2f35349976 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/ThaliasLancers.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/ThaliasLancers.java @@ -30,6 +30,7 @@ package mage.sets.eldritchmoon; import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; @@ -63,7 +64,9 @@ public class ThaliasLancers extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // When Thalia's Lancers enters the battlefield, you may search your library for a legendary card, reveal it, put it into your hand, then shuffle your library. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true), true)); + Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true); + effect.setText("you may search your library for a legendary card, reveal it, put it into your hand, then shuffle your library"); + this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true)); } public ThaliasLancers(final ThaliasLancers card) { diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/ThrabenStandardBearer.java b/Mage.Sets/src/mage/sets/eldritchmoon/ThrabenStandardBearer.java index 374751ad972..36746910871 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/ThrabenStandardBearer.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/ThrabenStandardBearer.java @@ -39,7 +39,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.Zone; -import mage.game.permanent.token.SoldierToken; +import mage.game.permanent.token.Token; /** * @@ -56,7 +56,7 @@ public class ThrabenStandardBearer extends CardImpl { this.toughness = new MageInt(1); // {1}{W}, {T}, Discard a card: Put a 1/1 white Human Soldier creature token onto the battlefield. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SoldierToken()), new ManaCostsImpl<>("{1}{W}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new HumanSoldierToken()), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); this.addAbility(ability); @@ -71,3 +71,16 @@ public class ThrabenStandardBearer extends CardImpl { return new ThrabenStandardBearer(this); } } + +class HumanSoldierToken extends Token { + + public HumanSoldierToken() { + super("Human Soldier", "1/1 white Human Soldier creature token"); + cardType.add(CardType.CREATURE); + subtype.add("Human"); + subtype.add("Soldier"); + color.setWhite(true); + power = new MageInt(1); + toughness = new MageInt(1); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/VexingScuttler.java b/Mage.Sets/src/mage/sets/eldritchmoon/VexingScuttler.java index cd9fd8642a4..7ce57d97ce6 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/VexingScuttler.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/VexingScuttler.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.EmergeAbility; @@ -47,7 +48,7 @@ import mage.target.common.TargetCardInYourGraveyard; * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) */ public class VexingScuttler extends CardImpl { - + private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { @@ -66,8 +67,11 @@ public class VexingScuttler extends CardImpl { // Emerge {6}{U} this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{6}{U}"))); + // When you cast Vexing Scuttler, you may return target instant or sorcery card from your graveyard to your hand. - Ability ability = new CastSourceTriggeredAbility(new ReturnToHandTargetEffect(), true); + Effect effect = new ReturnToHandTargetEffect(); + effect.setText("you may return target instant or sorcery card from your graveyard to your hand"); + Ability ability = new CastSourceTriggeredAbility(effect, true); ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index e643e3aa37c..3e94e53cfe8 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57258,7 +57258,7 @@ It That Rides as One|Eldritch Moon|33|U||Creature - Eldrazi Horror|4|4|First str Long Road Home|Eldritch Moon|34|U|{1}{W}|Instant|||Exile target creature. At the beginning of the next end step, return that card to the battlefield under its owner's control with a +1/+1 counter on it.| Lunarch Mantle|Eldritch Moon|35|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2 and has "{1}, Sacrifice a permanent: This creature gains flying until end of turn."| Peace of Mind|Eldritch Moon|36|U|{1}{W}|Enchantment|||{W}, Discard a card: You gain 3 life.| -Providence|Eldritch Moon|37|R|{5}{W}{W}|Sorcery|||You may reveal this card from your opening hand. If you do, at the beginning of your first upkeep, your life total becomes 26.$Your life total becomes 26.| +Providence|Eldritch Moon|37|R|{5}{W}{W}|Sorcery|||You may reveal this card from your opening hand. If you do, at the beginning of the first upkeep, your life total becomes 26.$Your life total becomes 26.| Repel the Abominable|Eldritch Moon|38|U|{1}{W}|Instant|||Prevent all damage that would be dealt this turn by non-Human sources.| Sanctifier of Souls|Eldritch Moon|39|R|{3}{W}|Creature - Human Cleric|2|3|Whenever another creature enters the battlefield under your control, Sanctifier of Souls gets +1/+1 until end of turn.${2}{W}, Exile a creature card from your graveyard: Put a 1/1 white Spirit creature token with flying onto the battlefield.| Selfless Spirit|Eldritch Moon|40|R|{1}{W}|Creature - Spirit|2|1|Flying$Sacrifice Selfless Spirit: Creatures you control gain indestructible until end of turn.|