From cd5bbe96f1fdae103edf551b26ac79edaf4f3a0f Mon Sep 17 00:00:00 2001 From: theelk801 Date: Thu, 7 Mar 2024 10:12:46 -0500 Subject: [PATCH] [MKC] Implement Showstopping Surprise --- .../mage/cards/s/ShowstoppingSurprise.java | 80 +++++++++++++++++++ .../sets/MurdersAtKarlovManorCommander.java | 1 + 2 files changed, 81 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/ShowstoppingSurprise.java diff --git a/Mage.Sets/src/mage/cards/s/ShowstoppingSurprise.java b/Mage.Sets/src/mage/cards/s/ShowstoppingSurprise.java new file mode 100644 index 00000000000..c39f7e48dc6 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/ShowstoppingSurprise.java @@ -0,0 +1,80 @@ +package mage.cards.s; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ShowstoppingSurprise extends CardImpl { + + public ShowstoppingSurprise(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}"); + + // Choose target creature you control. Turn it face up if it's face down. Then it deals damage equal to its power to each other creature. + this.getSpellAbility().addEffect(new ShowstoppingSurpriseEffect()); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); + } + + private ShowstoppingSurprise(final ShowstoppingSurprise card) { + super(card); + } + + @Override + public ShowstoppingSurprise copy() { + return new ShowstoppingSurprise(this); + } +} + +class ShowstoppingSurpriseEffect extends OneShotEffect { + + ShowstoppingSurpriseEffect() { + super(Outcome.Benefit); + staticText = "choose target creature you control. Turn it face up if it's face down. " + + "Then it deals damage equal to its power to each other creature"; + } + + private ShowstoppingSurpriseEffect(final ShowstoppingSurpriseEffect effect) { + super(effect); + } + + @Override + public ShowstoppingSurpriseEffect copy() { + return new ShowstoppingSurpriseEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (permanent == null) { + return false; + } + if (permanent.isFaceDown(game)) { + permanent.turnFaceUp(source, game, source.getControllerId()); + game.applyEffects(); + } + int power = permanent.getPower().getValue(); + if (power < 1) { + return true; + } + for (Permanent creature : game.getBattlefield().getActivePermanents( + StaticFilters.FILTER_PERMANENT_CREATURE, + source.getControllerId(), source, game + )) { + if (!creature.getId().equals(permanent.getId())) { + creature.damage(power, permanent.getId(), source, game); + } + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java b/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java index f695d8c49a9..1dee3c679a5 100644 --- a/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java +++ b/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java @@ -239,6 +239,7 @@ public final class MurdersAtKarlovManorCommander extends ExpansionSet { cards.add(new SetCardInfo("Sheltered Thicket", 291, Rarity.RARE, mage.cards.s.ShelteredThicket.class)); cards.add(new SetCardInfo("Shimmer Dragon", 117, Rarity.RARE, mage.cards.s.ShimmerDragon.class)); cards.add(new SetCardInfo("Shiny Impetus", 161, Rarity.UNCOMMON, mage.cards.s.ShinyImpetus.class)); + cards.add(new SetCardInfo("Showstopping Surprise", 35, Rarity.RARE, mage.cards.s.ShowstoppingSurprise.class)); cards.add(new SetCardInfo("Shriekmaw", 139, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class)); cards.add(new SetCardInfo("Shrine of the Forsaken Gods", 292, Rarity.RARE, mage.cards.s.ShrineOfTheForsakenGods.class)); cards.add(new SetCardInfo("Sidar Kondo of Jamuraa", 219, Rarity.MYTHIC, mage.cards.s.SidarKondoOfJamuraa.class));