From c7f65031a167a0b71de6635f1ef1734f7b0620cd Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 6 Feb 2022 16:07:58 -0500 Subject: [PATCH] [NEO] Implemented March of Swirling Mist --- .../src/mage/cards/m/MarchOfSwirlingMist.java | 58 +++++++++++++++++++ .../src/mage/sets/KamigawaNeonDynasty.java | 1 + .../effects/common/PhaseOutTargetEffect.java | 2 +- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/m/MarchOfSwirlingMist.java diff --git a/Mage.Sets/src/mage/cards/m/MarchOfSwirlingMist.java b/Mage.Sets/src/mage/cards/m/MarchOfSwirlingMist.java new file mode 100644 index 00000000000..b4d67607625 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MarchOfSwirlingMist.java @@ -0,0 +1,58 @@ +package mage.cards.m; + +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.effects.CostsLessForExiledCardsEffect; +import mage.abilities.effects.common.PhaseOutTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; +import mage.game.Game; +import mage.target.common.TargetCreaturePermanent; +import mage.target.targetadjustment.TargetAdjuster; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class MarchOfSwirlingMist extends CardImpl { + + private static final FilterCard filter = new FilterCard("blue cards from your hand"); + + static { + filter.add(new ColorPredicate(ObjectColor.BLUE)); + } + + public MarchOfSwirlingMist(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}"); + + // As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way. + CostsLessForExiledCardsEffect.addCostAndEffect(this, filter); + + // Up to X target creatures phase out. + this.getSpellAbility().addEffect(new PhaseOutTargetEffect().setText("up to X target creatures phase out")); + this.getSpellAbility().setTargetAdjuster(MarchOfSwirlingMistAdjuster.instance); + } + + private MarchOfSwirlingMist(final MarchOfSwirlingMist card) { + super(card); + } + + @Override + public MarchOfSwirlingMist copy() { + return new MarchOfSwirlingMist(this); + } +} + +enum MarchOfSwirlingMistAdjuster implements TargetAdjuster { + instance; + + @Override + public void adjustTargets(Ability ability, Game game) { + ability.getTargets().clear(); + ability.addTarget(new TargetCreaturePermanent(0, ability.getManaCostsToPay().getX())); + } +} diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 5c01ee0b9b3..0d910cc56ef 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -163,6 +163,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet { cards.add(new SetCardInfo("Lucky Offering", 27, Rarity.COMMON, mage.cards.l.LuckyOffering.class)); cards.add(new SetCardInfo("Malicious Malfunction", 110, Rarity.UNCOMMON, mage.cards.m.MaliciousMalfunction.class)); cards.add(new SetCardInfo("March of Otherworldly Light", 28, Rarity.RARE, mage.cards.m.MarchOfOtherworldlyLight.class)); + cards.add(new SetCardInfo("March of Swirling Mist", 61, Rarity.RARE, mage.cards.m.MarchOfSwirlingMist.class)); cards.add(new SetCardInfo("Master's Rebuke", 202, Rarity.COMMON, mage.cards.m.MastersRebuke.class)); cards.add(new SetCardInfo("Mech Hangar", 270, Rarity.UNCOMMON, mage.cards.m.MechHangar.class)); cards.add(new SetCardInfo("Memory of Toshiro", 108, Rarity.UNCOMMON, mage.cards.m.MemoryOfToshiro.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/PhaseOutTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PhaseOutTargetEffect.java index 7d062fd4570..5874c34a81c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/PhaseOutTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/PhaseOutTargetEffect.java @@ -64,7 +64,7 @@ public class PhaseOutTargetEffect extends OneShotEffect { @Override public String getText(Mode mode) { if (staticText != null && !staticText.isEmpty()) { - return staticText + " phases out"; + return staticText; } StringBuilder sb = new StringBuilder();