From d30736de38165d3a128bd4861d9db67ece65e187 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Thu, 7 Jul 2016 22:26:25 -0500 Subject: [PATCH] [EMN] Added Mind's Dilation, Splendid Reclamation, and Bedlam Reveler. Fixed some card translations. --- .../mage/sets/eldritchmoon/BedlamReveler.java | 127 ++++++++++++ .../sets/eldritchmoon/EternalScourge.java | 4 +- .../mage/sets/eldritchmoon/MindsDilation.java | 193 ++++++++++++++++++ ...{SelflessSoul.java => SelflessSpirit.java} | 12 +- .../eldritchmoon/SplendidReclamation.java | 91 +++++++++ Utils/mtg-cards-data.txt | 7 +- 6 files changed, 423 insertions(+), 11 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/BedlamReveler.java create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/MindsDilation.java rename Mage.Sets/src/mage/sets/eldritchmoon/{SelflessSoul.java => SelflessSpirit.java} (90%) create mode 100644 Mage.Sets/src/mage/sets/eldritchmoon/SplendidReclamation.java diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/BedlamReveler.java b/Mage.Sets/src/mage/sets/eldritchmoon/BedlamReveler.java new file mode 100644 index 00000000000..f64393f2da5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/BedlamReveler.java @@ -0,0 +1,127 @@ +/* + * 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.SpellAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.cost.CostModificationEffectImpl; +import mage.abilities.effects.common.discard.DiscardHandControllerEffect; +import mage.abilities.keyword.ProwessAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.CostModificationType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterInstantOrSorceryCard; +import mage.game.Game; +import mage.players.Player; +import mage.util.CardUtil; + +/** + * + * @author fireshoes + */ +public class BedlamReveler extends CardImpl { + + public BedlamReveler(UUID ownerId) { + super(ownerId, 118, "Bedlam Reveler", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{R}{R}"); + this.expansionSetCode = "EMN"; + this.subtype.add("Devil"); + this.subtype.add("Horror"); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // Bedlam Reveler costs {1} less to cast for each instant or sorcery card in your graveyard. + Ability ability = new SimpleStaticAbility(Zone.ALL, new BedlamRevelerCostReductionEffect()); + ability.setRuleAtTheTop(true); + this.addAbility(ability); + + // Prowess + this.addAbility(new ProwessAbility()); + + // When Bedlam Reveler enters the battlefield, discard your hand, then draw three cards. + ability = new EntersBattlefieldTriggeredAbility(new DiscardHandControllerEffect()); + Effect effect = new DrawCardSourceControllerEffect(3); + effect.setText("then draw three cards"); + ability.addEffect(effect); + this.addAbility(ability); + } + + public BedlamReveler(final BedlamReveler card) { + super(card); + } + + @Override + public BedlamReveler copy() { + return new BedlamReveler(this); + } +} + +class BedlamRevelerCostReductionEffect extends CostModificationEffectImpl { + + BedlamRevelerCostReductionEffect() { + super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST); + staticText = "{this} costs {1} less to cast for each instant or sorcery card in your graveyard"; + } + + BedlamRevelerCostReductionEffect(BedlamRevelerCostReductionEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source, Ability abilityToModify) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + int reductionAmount = player.getGraveyard().count(new FilterInstantOrSorceryCard(), game); + CardUtil.reduceCost(abilityToModify, reductionAmount); + return true; + } + return false; + } + + @Override + public boolean applies(Ability abilityToModify, Ability source, Game game) { + if ((abilityToModify instanceof SpellAbility) && abilityToModify.getSourceId().equals(source.getSourceId())) { + return game.getCard(abilityToModify.getSourceId()) != null; + } + return false; + } + + @Override + public BedlamRevelerCostReductionEffect copy() { + return new BedlamRevelerCostReductionEffect(this); + } +} diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/EternalScourge.java b/Mage.Sets/src/mage/sets/eldritchmoon/EternalScourge.java index 9a3ab333606..96f65b847cc 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/EternalScourge.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/EternalScourge.java @@ -63,7 +63,7 @@ public class EternalScourge extends CardImpl { // You may cast Eternal Scourge from exile. this.addAbility(new SimpleStaticAbility(Zone.EXILED, new EternalScourgePlayEffect())); - // When Eternal Scourge becomes the target of a spell or ability an opponent controls, exile it. + // When Eternal Scourge becomes the target of a spell or ability an opponent controls, exile Eternal Scourge. this.addAbility(new EternalScourgeAbility()); } @@ -139,6 +139,6 @@ class EternalScourgeAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever {this} becomes the target of a spell or ability an opponent controls, exile it."; + return "Whenever {this} becomes the target of a spell or ability an opponent controls, exile {this}."; } } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/MindsDilation.java b/Mage.Sets/src/mage/sets/eldritchmoon/MindsDilation.java new file mode 100644 index 00000000000..ca777a1c688 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/MindsDilation.java @@ -0,0 +1,193 @@ +/* + * 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.List; +import java.util.UUID; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SpellCastOpponentTriggeredAbility; +import mage.abilities.effects.AsThoughEffectImpl; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.constants.AsThoughEffectType; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.FilterSpell; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.stack.Spell; +import mage.players.Player; +import mage.target.targetpointer.FixedTarget; +import mage.watchers.common.SpellsCastWatcher; + +/** + * + * @author fireshoes + */ +public class MindsDilation extends CardImpl { + + public MindsDilation(UUID ownerId) { + super(ownerId, 70, "Mind's Dilation", Rarity.MYTHIC, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{U}"); + this.expansionSetCode = "EMN"; + + // Whenever an opponent casts his or her first spell each turn, that player exiles the top card of his or her library. If it's a nonland card, + // you may cast it without paying its mana cost. + Ability ability = new MindsDilationTriggeredAbility(new MindsDilationEffect(), false); + this.addAbility(ability, new SpellsCastWatcher()); + } + + public MindsDilation(final MindsDilation card) { + super(card); + } + + @Override + public MindsDilation copy() { + return new MindsDilation(this); + } +} + +class MindsDilationTriggeredAbility extends SpellCastOpponentTriggeredAbility { + + public MindsDilationTriggeredAbility(Effect effect, boolean optional) { + super(Zone.BATTLEFIELD, effect, new FilterSpell(), optional); + } + + public MindsDilationTriggeredAbility(SpellCastOpponentTriggeredAbility ability) { + super(ability); + } + + @Override + public SpellCastOpponentTriggeredAbility copy() { + return new MindsDilationTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (super.checkTrigger(event, game)) { + SpellsCastWatcher watcher = (SpellsCastWatcher) game.getState().getWatchers().get(SpellsCastWatcher.class.getName()); + if (watcher != null) { + List spells = watcher.getSpellsCastThisTurn(event.getPlayerId()); + if (spells != null && spells.size() == 1) { + for (Effect effect : getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getPlayerId())); + } + return true; + } + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever an opponent casts his or her first spell each turn, that player exiles the top card of his or her library." + + " If it's a nonland card, you may cast it without paying its mana cost"; + } +} + +class MindsDilationEffect extends OneShotEffect { + + MindsDilationEffect() { + super(Outcome.Benefit); + this.staticText = "that player exiles the top card of his or her library. If it's a nonland card, you may cast it without paying its mana cost."; + } + + MindsDilationEffect(final MindsDilationEffect effect) { + super(effect); + } + + @Override + public MindsDilationEffect copy() { + return new MindsDilationEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + MageObject sourceObject = source.getSourceObject(game); + Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); + if (controller != null && sourceObject != null && opponent != null) { + if (opponent.getLibrary().size() > 0) { + Card card = opponent.getLibrary().removeFromTop(game); + if (card != null) { + opponent.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true); + ContinuousEffect effect = new MindsDilationCastFromExileEffect(); + effect.setTargetPointer(new FixedTarget(card.getId())); + game.addEffect(effect, source); + } + } + return true; + } + return false; + } +} + +class MindsDilationCastFromExileEffect extends AsThoughEffectImpl { + + MindsDilationCastFromExileEffect() { + super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfTurn, Outcome.Benefit); + staticText = "If it's a nonland card, you may cast it without paying its mana cost"; + } + + MindsDilationCastFromExileEffect(final MindsDilationCastFromExileEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public MindsDilationCastFromExileEffect copy() { + return new MindsDilationCastFromExileEffect(this); + } + + @Override + public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) { + UUID targetId = getTargetPointer().getFirst(game, source); + Player controller = game.getPlayer(source.getControllerId()); + if (targetId != null && controller != null) { + Card card = game.getCard(targetId); + if (card != null && !card.getCardType().contains(CardType.LAND) && game.getState().getZone(targetId) == Zone.EXILED) { + if (controller.chooseUse(outcome, "Cast " + card.getLogName() + "?", source, game)) { + controller.cast(card.getSpellAbility(), game, true); + } + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSoul.java b/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java similarity index 90% rename from Mage.Sets/src/mage/sets/eldritchmoon/SelflessSoul.java rename to Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java index ac77c10b812..ba0bf0e7c5e 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSoul.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SelflessSpirit.java @@ -45,9 +45,9 @@ import mage.filter.common.FilterControlledCreaturePermanent; * * @author fireshoes */ -public class SelflessSoul extends CardImpl { +public class SelflessSpirit extends CardImpl { - public SelflessSoul(UUID ownerId) { + public SelflessSpirit(UUID ownerId) { super(ownerId, 40, "Selfless Soul", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.expansionSetCode = "EMN"; this.subtype.add("Spirit"); @@ -57,17 +57,17 @@ public class SelflessSoul extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - // Sacrifice Selfless Soul: Creatures you control gain indestructible until end of turn. + // Sacrifice Selfless Spirit: Creatures you control gain indestructible until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("creatures you control")), new SacrificeSourceCost())); } - public SelflessSoul(final SelflessSoul card) { + public SelflessSpirit(final SelflessSpirit card) { super(card); } @Override - public SelflessSoul copy() { - return new SelflessSoul(this); + public SelflessSpirit copy() { + return new SelflessSpirit(this); } } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/SplendidReclamation.java b/Mage.Sets/src/mage/sets/eldritchmoon/SplendidReclamation.java new file mode 100644 index 00000000000..8e951eba930 --- /dev/null +++ b/Mage.Sets/src/mage/sets/eldritchmoon/SplendidReclamation.java @@ -0,0 +1,91 @@ +/* + * 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.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterLandCard; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author fireshoes + */ +public class SplendidReclamation extends CardImpl { + + public SplendidReclamation(UUID ownerId) { + super(ownerId, 171, "Splendid Reclamation", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{3}{G}"); + this.expansionSetCode = "EMN"; + + // Return all land cards from your graveyard to the battlefield tapped. + this.getSpellAbility().addEffect(new ReplenishEffect()); + } + + public SplendidReclamation(final SplendidReclamation card) { + super(card); + } + + @Override + public SplendidReclamation copy() { + return new SplendidReclamation(this); + } +} + +class ReplenishEffect extends OneShotEffect { + + ReplenishEffect() { + super(Outcome.PutCardInPlay); + this.staticText = "Return all land cards from your graveyard to the battlefield tapped"; + } + + ReplenishEffect(final ReplenishEffect effect) { + super(effect); + } + + @Override + public ReplenishEffect copy() { + return new ReplenishEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + return controller.moveCards(controller.getGraveyard().getCards(new FilterLandCard(), source.getSourceId(), + source.getControllerId(), game), Zone.BATTLEFIELD, source, game, true, false, false, null); + } + return false; + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 732e9630992..d916f18be0d 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57299,7 +57299,7 @@ Decimator of the Provinces|Eldritch Moon|2|M|{10}|Creature - Eldrazi Boar|7|7|Em Distended Mindbender|Eldritch Moon|3|R|{8}|Creature - Eldrazi Insect|5|5|Emerge {5}{B}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)$When you cast Distended Mindbender, target opponent reveals his or her hand. You choose from it a nonland card with converted mana cost 3 or less and a card with converted mana cost 4 or greater. That player discards those cards.| Elder Deep-Fiend|Eldritch Moon|5|R|{8}|Creature - Eldrazi Octopus|5|6|Flash$Emerge {5}{U}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost)$When you cast Elder Deep-Fiend, tap up to four target permanents.| Emrakul, the Promised End|Eldritch Moon|6|M|{13}|Legendary Creature - Eldrazi|13|13|Emrakul, the Promised End costs {1} less to cast for each card type among cards in your graveyard.$When you cast Emrakul, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn.$Flying, trample, protection from instants| -Eternal Scourge|Eldritch Moon|7|R|{3}|Creature - Eldrazi Horror|3|3|You may cast Eternal Scourge from exile.$When Eternal Scourge becomes the target of a spell or ability an opponent controls, exile it.| +Eternal Scourge|Eldritch Moon|7|R|{3}|Creature - Eldrazi Horror|3|3|You may cast Eternal Scourge from exile.$When Eternal Scourge becomes the target of a spell or ability an opponent controls, exile Eternal Scourge.| Lashweed Lurker|Eldritch Moon|9|U|{8}|Creature - Eldrazi Horror|5|4|Emerge {5}{G}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)$When you cast Lashweed Lurker, you may put target nonland permanent on top of its owner's library.| Wretched Gryff|Eldritch Moon|12|C|{7}|Creature - Eldrazi Hippogriff|3|4|Emerge {5}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)$When you cast Wretched Gryff, draw a card.$Flying| Blessed Alliance|Eldritch Moon|13|U|{1}{W}|Instant|||Escalate {2} (Pay this cost for each mode chosen beyond the first.)$Choose one or more &mdash Target player gains 4 life. Untap up to two target creatures. Target opponent sacrifices an attacking creature.| @@ -57316,7 +57316,7 @@ Long Road Home|Eldritch Moon|34|U|{1}{W}|Instant|||Exile target creature. At the 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.| 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 Soul|Eldritch Moon|40|R|{1}{W}|Creature - Spirit|2|1|Flying$Sacrifice Selfless Soul: Creatures you control gain indestructible until end of turn.| +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.| Sigarda's Aid|Eldritch Moon|41|R|{W}|Enchantment|||You may cast Aura and Equipment spells as though they had flash.$Whenever an Equipment enters the battlefield under your control, you may attach it to target creature you control.| Subjugator Angel|Eldritch Moon|45|U|{4}{W}{W}|Creature - Angel|4|3|Flying$When Subjugator Angel enters the battlefield, tap all creatures your opponents control.| Thalia, Heretic Cathar|Eldritch Moon|46|R|{2}{W}|Legendary Creature - Human Soldier|3|2|First strike$Creatures and nonbasic lands your opponents control enter the battlefield tapped.| @@ -57333,6 +57333,7 @@ Grisly Anglerfish|Eldritch Moon|63|U||Creature - Eldrazi Fish|4|5|{6}: Creatures Identity Thief|Eldritch Moon|64|R|{2}{U}{U}|Creature - Shapeshifter|0|3|Whenever Identity Thief attacks, you may exile another target non-token creature. If you do, Identity Thief becomes a copy of that creature until end of turn. Return the exiled card to the battlefield under its owner's control at the beginning of the next end step.| Imprisoned in the Moon|Eldritch Moon|65|R|{2}{U}|Enchantment - Aura|||Enchant creature, land, or planeswalker$Enchanted permanent is a colorless land with "{T}: Add {C} to your mana pool" and loses all other card types and abilities.| 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.| +Light of the Moon|Eldritch Moon|68|U|{2}{U}|Enchantment|||Whenever an opponent casts a spell, sacrifice Light of the Moon and counter that spell.| Mausoleum Wanderer|Eldritch Moon|69|R|{U}|Creature - Spirit|1|1|Flying$Whenever another Spirit enters the battlefield under your control, Mausoleum Wanderer gets +1/+1 until end of turn.$Sacrifice Mausoleum Wanderer: Counter target instant or sorcery spell unless its controller pays {X}, where X is Mausoleum Wanderer's power.| Mind's Dilation|Eldritch Moon|70|M|{5}{U}{U}|Enchantment|||Whenever an opponent casts his or her first spell each turn, that player exiles the top card of his or her library. If it's a nonland card, you may cast it without paying its mana cost.| 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.| @@ -57361,7 +57362,7 @@ Abolisher of Bloodlines|Eldritch Moon|111|R||Creature - Eldrazi Vampire|6|5|Flyi Wailing Ghoul|Eldritch Moon|112|C|{1}{B}|Creature - Zombie|1|3|When Wailing Ghoul enters the battlefield, put the top two cards of your library into your graveyard.| Whispers of Emrakul|Eldritch Moon|114|U|{1}{B}|Sorcery|||Target opponent discards a card at random.$Delirium — If there are four or more card types among cards in your graveyard, that player discards two cards at random instead.| Assembled Alphas|Eldritch Moon|117|R|{5}{R}|Creature - Wolf|5|5|Whenever Assembled Alphas blocks or becomes blocked by a creature, Assembled Alphas deals 3 damage to that creature and 3 damage to that creature's controller.| -Chaos Reveler|Eldritch Moon|118|R|{6}{R}{R}|Creature - Devil Horror|3|4|Chaos Reveler costs {1} less to cast for each instant or sorcery card in your graveyard.$Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)$When Chaos Reveler enters the battlefield, discard your hand, then draw three cards.| +Bedlam Reveler|Eldritch Moon|118|R|{6}{R}{R}|Creature - Devil Horror|3|4|Bedlam Reveler costs {1} less to cast for each instant or sorcery card in your graveyard.$Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)$When Bedlam Reveler enters the battlefield, discard your hand, then draw three cards.| Collective Defiance|Eldritch Moon|123|R|{1}{R}{R}|Sorcery|||Escalate {1} (Pay this cost for each mode chosen beyond the first.)$Choose one or more — Target player discards all cards in his or her hand, then draws that many cards.; Collective Defiance deals 4 damage to target creature.; Collective Defiance deals 3 damage to target opponent.| Falkenrath Reaver|Eldritch Moon|127|C|{1}{R}|Creature - Vampire|2|2|| Galvanic Bombardment|Eldritch Moon|129|C|{R}|Instant|||Galvanic Bombardment deals X damage to target creature, where X is 2 plus the number of cards named Galvanic Bombardment in your graveyard.|