From 1c0a4a7532f5b51061cdf2df5af588222201bef2 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Sun, 3 Jul 2016 10:19:40 -0500 Subject: [PATCH] [EMN] Added Collective Brutality, Borrowed Malevolence, and Turn Aside. --- .../eldritchmoon/BorrowedMalevolence.java | 86 +++++++++++++ .../eldritchmoon/CollectiveBrutality.java | 119 ++++++++++++++++++ .../src/mage/sets/eldritchmoon/TurnAside.java | 52 ++++++++ Utils/mtg-cards-data.txt | 3 +- 4 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/BorrowedMalevolence.java create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/CollectiveBrutality.java create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/TurnAside.java diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/BorrowedMalevolence.java b/Mage.Sets/src/mage/sets/eldritchmoon/BorrowedMalevolence.java new file mode 100644 index 00000000000..e5d3b9a3d06 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/BorrowedMalevolence.java @@ -0,0 +1,86 @@ +/* + * 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.continuous.BoostTargetEffect; +import mage.abilities.keyword.EscalateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class BorrowedMalevolence extends CardImpl { + + private static final FilterCreaturePermanent filterCreaturePlus = new FilterCreaturePermanent("creature to get +1/+1"); + private static final FilterCreaturePermanent filterCreatureMinus = new FilterCreaturePermanent("creature to get -1/-1"); + + public BorrowedMalevolence(UUID ownerId) { + super(ownerId, 82, "Borrowed Malevolence", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{B}"); + this.expansionSetCode = "EMN"; + + // Escalate {2} + this.addAbility(new EscalateAbility(new GenericManaCost(2))); + + // Choose one or both &mdash + this.getSpellAbility().getModes().setMinModes(1); + this.getSpellAbility().getModes().setMaxModes(2); + + // Target creature gets +1/+1 until end of turn. + Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn); + effect.setText("Target creature gets +1/+1 until end of turn"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterCreaturePlus)); + + // Target creature gets -1/-1 until end of turn. + Mode mode = new Mode(); + effect = new BoostTargetEffect(-1, -1, Duration.EndOfTurn); + effect.setText("Target creature gets -1/-1 until end of turn"); + mode.getEffects().add(effect); + mode.getTargets().add(new TargetCreaturePermanent(filterCreatureMinus)); + this.getSpellAbility().addMode(mode); + } + + public BorrowedMalevolence(final BorrowedMalevolence card) { + super(card); + } + + @Override + public BorrowedMalevolence copy() { + return new BorrowedMalevolence(this); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveBrutality.java b/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveBrutality.java new file mode 100644 index 00000000000..0d68f8baaf9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/CollectiveBrutality.java @@ -0,0 +1,119 @@ +/* + * 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.Cost; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetEffect; +import mage.abilities.keyword.EscalateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.filter.FilterCard; +import mage.filter.FilterPlayer; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.other.PlayerPredicate; +import mage.target.TargetPlayer; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class CollectiveBrutality extends CardImpl { + + private static final FilterCard filter = new FilterCard("instant or sorcery card"); + private static final FilterPlayer filterDiscard = new FilterPlayer("opponent to discard"); + private static final FilterCreaturePermanent filterCreatureMinus = new FilterCreaturePermanent("creature to get -2/-2"); + private static final FilterPlayer filterLoseLife = new FilterPlayer("opponent to lose life"); + + static { + filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); + filterDiscard.add(new PlayerPredicate(TargetController.OPPONENT)); + filterLoseLife.add(new PlayerPredicate(TargetController.OPPONENT)); + } + + public CollectiveBrutality(UUID ownerId) { + super(ownerId, 85, "Collective Brutality", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{1}{B}"); + this.expansionSetCode = "EMN"; + + // Escalate - Discard a card. + Cost cost = new DiscardCardCost(); + cost.setText("— Discard a card"); + this.addAbility(new EscalateAbility(cost)); + + // Choose one or more — + this.getSpellAbility().getModes().setMinModes(1); + this.getSpellAbility().getModes().setMaxModes(3); + + // Target opponent reveals his or her hand. You choose an instant or sorcery card from it. That player discards that card.; + Effect effect = new DiscardCardYouChooseTargetEffect(filter, TargetController.ANY); + effect.setText("Target opponent reveals his or her hand. You choose an instant or sorcery card from it. That player discards that card"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetPlayer(1, 1, false, filterDiscard)); + + // Target creature gets -2/-2 until end of turn.; + Mode mode = new Mode(); + effect = new BoostTargetEffect(-2, -2, Duration.EndOfTurn); + effect.setText("Target creature gets -2/-2 until end of turn"); + mode.getEffects().add(effect); + mode.getTargets().add(new TargetCreaturePermanent(filterCreatureMinus)); + this.getSpellAbility().addMode(mode); + + // Target opponent loses 2 life and you gain 2 life. + mode = new Mode(); + effect = new LoseLifeTargetEffect(2); + effect.setText("Target opponent loses 2 life"); + mode.getEffects().add(effect); + mode.getTargets().add(new TargetPlayer(1, 1, false, filterLoseLife)); + effect = new GainLifeEffect(2); + effect.setText("and you gain 2 life"); + mode.getEffects().add(effect); + this.getSpellAbility().addMode(mode); + } + + public CollectiveBrutality(final CollectiveBrutality card) { + super(card); + } + + @Override + public CollectiveBrutality copy() { + return new CollectiveBrutality(this); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/TurnAside.java b/Mage.Sets/src/mage/sets/eldritchmoon/TurnAside.java new file mode 100644 index 00000000000..d109f9335b0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/TurnAside.java @@ -0,0 +1,52 @@ +/* + * 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; + +/** + * + * @author fireshoes + */ +public class TurnAside extends mage.sets.scarsofmirrodin.TurnAside { + + public TurnAside(UUID ownerId) { + super(ownerId); + this.cardNumber = 78; + this.expansionSetCode = "EMN"; + } + + public TurnAside(final TurnAside card) { + super(card); + } + + @Override + public TurnAside copy() { + return new TurnAside(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 7ca1eef071a..3b093693cf5 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57325,11 +57325,12 @@ Identity Thief|Eldritch Moon|64|R|{2}{U}{U}|Creature - Shapeshifter|0|3|Whenever Ingenious Skaab|Eldritch Moon|66|C|{2}{U}|Creature - Zombie Horror|2|3|Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)${U}: Ingenious Skaab gets +1/-1 until end of turn.| Niblis of Frost|Eldritch Moon|72|R|{2}{U}{U}|Creature - Spirit|3|3|Flying$Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)$Whenever you cast an instant or sorcery spell, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.| Take Inventory|Eldritch Moon|76|C|{1}{U}|Sorcery|||Draw a card, then draw cards equal to the number of cards named Take Inventory in your graveyard.| +Turn Aside|Eldritch Moon|78|C|{U}|Instant|||Counter target spell that targets a permanent you control.| Unsubstantiate|Eldritch Moon|79|U|{1}{U}|Instant|||Return target spell or creature to its owner's hand.| Wharf Infiltrator|Eldritch Moon|80|R|{1}{U}|Creature - Human Horror|1|1|Skulk (This creature can't be blocked by creatures with greater power.)$Whenever Wharf Infiltrator deals combat damage to a player, you may draw a card. If you do, discard a card.$Whenever you discard a creature card, you may pay {2}. If you do, put a 3/2 colorless Eldrazi Horror creature token onto the battlefield.| Borrowed Malevolence|Eldritch Moon|82|C|{B}|Instant|||Escalate {2} (Pay this cost for each mode chosen beyond the first.)$Choose one or both &mdash Target creature gets +1/+1 until end of turn. Target creature gets -1/-1 until end of turn.| Cemetery Recruitment|Eldritch Moon|83|C|{1}{B}|Sorcery|||Return target creature card from your graveyard to your hand. If it's a Zombie card, draw a card.| -Collective Brutality|Eldritch Moon|85|R|{1}{B}|Sorcery|||Escalate - Discard a card. (Pay this cost for each mode chosen beyond the first.)$Choose one or more — Target opponent reveals his or her hand. You choose an instant or sorcery card from it. That player discards that card.; Target creature gets -2/-2 until end of turn.; Target opponent loses 2 life and you gain 2 life.| +Collective Brutality|Eldritch Moon|85|R|{1}{B}|Sorcery|||Escalate — Discard a card. (Pay this cost for each mode chosen beyond the first.)$Choose one or more — Target opponent reveals his or her hand. You choose an instant or sorcery card from it. That player discards that card.; Target creature gets -2/-2 until end of turn.; Target opponent loses 2 life and you gain 2 life.| Graf Rats|Eldritch Moon|91|C|{1}{B}|Creature - Rat|2|1|At the beginning of combat on your turn, if you both own and control Graf Rats and a creature named Midnight Scavengers, exile them, then meld them into Chittering Host.| Haunted Dead|Eldritch Moon|92|U|{3}{B}|Creature - Zombie|2|2|When Haunted Dead enters the battlefield, put a 1/1 white Spirit creature token with flying onto the battlefield.${1}{B}, Discard two cards: Return Haunted Dead from your graveyard to the battlefield tapped.| Midnight Scavengers|Eldritch Moon|96|C|{4}{B}|Creature - Human Rogue|3|3|When Midnight Scavengers enters the battlefield, you may return target creature card with converted mana cost 3 or less from your graveyard to your hand.$(Melds with Graf Rats.)|