From 82ff5665ee979a3944ec75c967bb4bcecb010b2e Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 7 Feb 2022 18:56:10 -0500 Subject: [PATCH] [NEO] Implemented Spinning Wheel Kick --- .../src/mage/cards/s/SpinningWheelKick.java | 88 +++++++++++++++++++ .../src/mage/sets/KamigawaNeonDynasty.java | 1 + 2 files changed, 89 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/SpinningWheelKick.java diff --git a/Mage.Sets/src/mage/cards/s/SpinningWheelKick.java b/Mage.Sets/src/mage/cards/s/SpinningWheelKick.java new file mode 100644 index 00000000000..c4dedd9b9db --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SpinningWheelKick.java @@ -0,0 +1,88 @@ +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.TargetPermanent; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.targetadjustment.TargetAdjuster; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SpinningWheelKick extends CardImpl { + + public SpinningWheelKick(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{G}{G}"); + + // Target creature you control deals damage equal to its power to each of X target creatures and/or planeswalkers. + this.getSpellAbility().addEffect(new SpinningWheelKickEffect()); + this.getSpellAbility().setTargetAdjuster(SpinningWheelKickAdjuster.instance); + } + + private SpinningWheelKick(final SpinningWheelKick card) { + super(card); + } + + @Override + public SpinningWheelKick copy() { + return new SpinningWheelKick(this); + } +} + +enum SpinningWheelKickAdjuster implements TargetAdjuster { + instance; + + @Override + public void adjustTargets(Ability ability, Game game) { + ability.getTargets().clear(); + ability.addTarget(new TargetControlledCreaturePermanent()); + ability.addTarget(new TargetPermanent( + ability.getManaCostsToPay().getX(), + StaticFilters.FILTER_PERMANENT_CREATURE_OR_PLANESWALKER + )); + } +} + +class SpinningWheelKickEffect extends OneShotEffect { + + SpinningWheelKickEffect() { + super(Outcome.Benefit); + staticText = "target creature you control deals damage equal " + + "to its power to each of X target creatures and/or planeswalkers"; + this.setTargetPointer(new SecondTargetPointer()); + } + + private SpinningWheelKickEffect(final SpinningWheelKickEffect effect) { + super(effect); + } + + @Override + public SpinningWheelKickEffect copy() { + return new SpinningWheelKickEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent creature = game.getPermanent(source.getFirstTarget()); + if (creature == null) { + return false; + } + for (UUID targetId : getTargetPointer().getTargets(game, source)) { + Permanent permanent = game.getPermanent(targetId); + if (permanent != null) { + permanent.damage(creature.getPower().getValue(), creature.getId(), source, game); + } + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 2e0fa86215b..1451ebd5246 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -255,6 +255,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet { cards.add(new SetCardInfo("Sokenzan, Crucible of Defiance", 276, Rarity.RARE, mage.cards.s.SokenzanCrucibleOfDefiance.class)); cards.add(new SetCardInfo("Soul Transfer", 122, Rarity.RARE, mage.cards.s.SoulTransfer.class)); cards.add(new SetCardInfo("Spell Pierce", 80, Rarity.COMMON, mage.cards.s.SpellPierce.class)); + cards.add(new SetCardInfo("Spinning Wheel Kick", 207, Rarity.UNCOMMON, mage.cards.s.SpinningWheelKick.class)); cards.add(new SetCardInfo("Spirit-Sister's Call", 237, Rarity.MYTHIC, mage.cards.s.SpiritSistersCall.class)); cards.add(new SetCardInfo("Spirited Companion", 38, Rarity.COMMON, mage.cards.s.SpiritedCompanion.class)); cards.add(new SetCardInfo("Spring-Leaf Avenger", 208, Rarity.RARE, mage.cards.s.SpringLeafAvenger.class));