From e4b7ffb499be8f44c7858aa22fe0e0231bed35ca Mon Sep 17 00:00:00 2001 From: theelk801 Date: Mon, 17 Apr 2023 09:28:38 -0400 Subject: [PATCH] [MOM] Implement Render Inert --- Mage.Sets/src/mage/cards/r/RenderInert.java | 88 +++++++++++++++++++ .../src/mage/sets/MarchOfTheMachine.java | 1 + 2 files changed, 89 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RenderInert.java diff --git a/Mage.Sets/src/mage/cards/r/RenderInert.java b/Mage.Sets/src/mage/cards/r/RenderInert.java new file mode 100644 index 00000000000..7a366c9129c --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RenderInert.java @@ -0,0 +1,88 @@ +package mage.cards.r; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RenderInert extends CardImpl { + + public RenderInert(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); + + // Remove up to five counters from target permanent. + this.getSpellAbility().addEffect(new RenderInertEffect()); + this.getSpellAbility().addTarget(new TargetPermanent()); + + // Draw a card. + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); + } + + private RenderInert(final RenderInert card) { + super(card); + } + + @Override + public RenderInert copy() { + return new RenderInert(this); + } +} + +class RenderInertEffect extends OneShotEffect { + + RenderInertEffect() { + super(Outcome.Benefit); + staticText = "remove up to five counters from target permanent"; + } + + private RenderInertEffect(final RenderInertEffect effect) { + super(effect); + } + + @Override + public RenderInertEffect copy() { + return new RenderInertEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (controller == null || permanent == null) { + return false; + } + int toRemove = 5; + int removed = 0; + String[] counterNames = permanent.getCounters(game).keySet().toArray(new String[0]); + for (String counterName : counterNames) { + if (controller.chooseUse(Outcome.Neutral, "Remove " + counterName + " counters?", source, game)) { + if (permanent.getCounters(game).get(counterName).getCount() == 1 || (toRemove - removed == 1)) { + permanent.removeCounters(counterName, 1, source, game); + removed++; + } else { + int amount = controller.getAmount(1, Math.min(permanent.getCounters(game).get(counterName).getCount(), toRemove - removed), "How many?", game); + if (amount > 0) { + removed += amount; + permanent.removeCounters(counterName, amount, source, game); + } + } + } + if (removed >= toRemove) { + break; + } + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java index 646d9cca310..4d24493faca 100644 --- a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java +++ b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java @@ -271,6 +271,7 @@ public final class MarchOfTheMachine extends ExpansionSet { cards.add(new SetCardInfo("Redcap Heelslasher", 161, Rarity.COMMON, mage.cards.r.RedcapHeelslasher.class)); cards.add(new SetCardInfo("Referee Squad", 327, Rarity.UNCOMMON, mage.cards.r.RefereeSquad.class)); cards.add(new SetCardInfo("Refraction Elemental", 146, Rarity.RARE, mage.cards.r.RefractionElemental.class)); + cards.add(new SetCardInfo("Render Inert", 123, Rarity.UNCOMMON, mage.cards.r.RenderInert.class)); cards.add(new SetCardInfo("Rona, Herald of Invasion", 75, Rarity.RARE, mage.cards.r.RonaHeraldOfInvasion.class)); cards.add(new SetCardInfo("Rona, Tolarian Obliterator", 75, Rarity.RARE, mage.cards.r.RonaTolarianObliterator.class)); cards.add(new SetCardInfo("Rooftop Saboteurs", 62, Rarity.UNCOMMON, mage.cards.r.RooftopSaboteurs.class));