From 1d9ebb5a9bb3a583fbc473951caff7cbd80f14c4 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 24 May 2021 20:52:30 -0400 Subject: [PATCH] [MH2] Implemented Prismatic Ending --- .../src/mage/cards/p/PrismaticEnding.java | 68 +++++++++++++++++++ Mage.Sets/src/mage/sets/ModernHorizons2.java | 1 + 2 files changed, 69 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/p/PrismaticEnding.java diff --git a/Mage.Sets/src/mage/cards/p/PrismaticEnding.java b/Mage.Sets/src/mage/cards/p/PrismaticEnding.java new file mode 100644 index 00000000000..70f67bb7bde --- /dev/null +++ b/Mage.Sets/src/mage/cards/p/PrismaticEnding.java @@ -0,0 +1,68 @@ +package mage.cards.p; + +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.ColorsOfManaSpentToCastCount; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetNonlandPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class PrismaticEnding extends CardImpl { + + public PrismaticEnding(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{W}"); + + // Converge — Exile target nonland permanent if its mana value is less than or equal to the number of colors of mana spent to cast this spell. + this.getSpellAbility().addEffect(new PrismaticEndingEffect()); + this.getSpellAbility().addTarget(new TargetNonlandPermanent()); + } + + private PrismaticEnding(final PrismaticEnding card) { + super(card); + } + + @Override + public PrismaticEnding copy() { + return new PrismaticEnding(this); + } +} + +class PrismaticEndingEffect extends OneShotEffect { + + PrismaticEndingEffect() { + super(Outcome.Benefit); + staticText = "Converge — Exile target nonland permanent if its mana value " + + "is less than or equal to the number of colors of mana spent to cast this spell"; + } + + private PrismaticEndingEffect(final PrismaticEndingEffect effect) { + super(effect); + } + + @Override + public PrismaticEndingEffect copy() { + return new PrismaticEndingEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Permanent permanent = game.getPermanent(source.getFirstTarget()); + int colors = ColorsOfManaSpentToCastCount.getInstance().calculate(game, source, this); + return player != null + && permanent != null + && permanent.getManaValue() <= colors + && player.moveCards(permanent, Zone.EXILED, source, game); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizons2.java b/Mage.Sets/src/mage/sets/ModernHorizons2.java index 034e8b55eaf..8a67b32271a 100644 --- a/Mage.Sets/src/mage/sets/ModernHorizons2.java +++ b/Mage.Sets/src/mage/sets/ModernHorizons2.java @@ -44,6 +44,7 @@ public final class ModernHorizons2 extends ExpansionSet { cards.add(new SetCardInfo("Misty Rainforest", 250, Rarity.RARE, mage.cards.m.MistyRainforest.class)); cards.add(new SetCardInfo("Mountain", 487, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", 481, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Prismatic Ending", 25, Rarity.UNCOMMON, mage.cards.p.PrismaticEnding.class)); cards.add(new SetCardInfo("Profane Tutor", 97, Rarity.RARE, mage.cards.p.ProfaneTutor.class)); cards.add(new SetCardInfo("Rishadan Dockhand", 59, Rarity.RARE, mage.cards.r.RishadanDockhand.class)); cards.add(new SetCardInfo("Sanctum Prelate", 491, Rarity.MYTHIC, mage.cards.s.SanctumPrelate.class));