From fd53f3886a36160707ff673ddbcf2ce7a5a662f7 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Wed, 7 Jan 2026 23:08:44 +0000 Subject: [PATCH] [ECC] Implement The Reaper, King No More --- .../src/mage/cards/t/TheReaperKingNoMore.java | 109 ++++++++++++++++++ .../mage/sets/LorwynEclipsedCommander.java | 1 + 2 files changed, 110 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/TheReaperKingNoMore.java diff --git a/Mage.Sets/src/mage/cards/t/TheReaperKingNoMore.java b/Mage.Sets/src/mage/cards/t/TheReaperKingNoMore.java new file mode 100644 index 00000000000..ff4e19c17a7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TheReaperKingNoMore.java @@ -0,0 +1,109 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.ZoneChangeEvent; +import mage.game.permanent.Permanent; +import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class TheReaperKingNoMore extends CardImpl { + + public TheReaperKingNoMore (UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE} ,"{2/B}{2/R}{2/G}"); + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.SCARECROW); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // When The Reaper enters, put a -1/-1 counter on each of up to two target creatures. + Ability ability = new EntersBattlefieldTriggeredAbility( + new AddCountersTargetEffect(CounterType.M1M1.createInstance()) + ); + ability.addTarget(new TargetCreaturePermanent(0, 2)); + this.addAbility(ability); + + // Whenever a creature an opponent controls with a -1/-1 counter on it dies, you may put that card onto the battlefield under your control. Do this only once each turn. + this.addAbility(new TheReaperKingNoMoreTriggeredAbility()); + } + + private TheReaperKingNoMore(final TheReaperKingNoMore card) { + super(card); + } + + @Override + public TheReaperKingNoMore copy() { + return new TheReaperKingNoMore(this); + } +} + +class TheReaperKingNoMoreTriggeredAbility extends TriggeredAbilityImpl { + + public TheReaperKingNoMoreTriggeredAbility() { + super(Zone.BATTLEFIELD, new ReturnToBattlefieldUnderYourControlTargetEffect(), true); + setLeavesTheBattlefieldTrigger(true); + setDoOnlyOnceEachTurn(true); + } + + private TheReaperKingNoMoreTriggeredAbility(final TheReaperKingNoMoreTriggeredAbility ability) { + super(ability); + } + + @Override + public TheReaperKingNoMoreTriggeredAbility copy() { + return new TheReaperKingNoMoreTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.isDiesEvent()) { + Permanent permanent = zEvent.getTarget(); + if (permanent != null + && permanent.getCounters(game).containsKey(CounterType.M1M1) + && game.getOpponents(controllerId).contains(permanent.getControllerId())) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getTargetId(), game.getState().getZoneChangeCounter(event.getTargetId()))); + } + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever a creature an opponent controls with a -1/-1 counter on it dies, you may put that card onto " + + "the battlefield under your control. Do this only once each turn."; + } + + @Override + public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) { + return TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, sourceObject, event, game); + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java b/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java index a01d03807ef..750ed661a39 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java @@ -152,6 +152,7 @@ public final class LorwynEclipsedCommander extends ExpansionSet { cards.add(new SetCardInfo("Soul Snuffers", 87, Rarity.UNCOMMON, mage.cards.s.SoulSnuffers.class)); cards.add(new SetCardInfo("Terminate", 134, Rarity.COMMON, mage.cards.t.Terminate.class)); cards.add(new SetCardInfo("Terramorphic Expanse", 169, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class)); + cards.add(new SetCardInfo("The Reaper, King No More", 4, Rarity.MYTHIC, mage.cards.t.TheReaperKingNoMore.class)); cards.add(new SetCardInfo("The Scorpion God", 133, Rarity.MYTHIC, mage.cards.t.TheScorpionGod.class)); cards.add(new SetCardInfo("Thriving Bluff", 170, Rarity.COMMON, mage.cards.t.ThrivingBluff.class)); cards.add(new SetCardInfo("Thriving Grove", 171, Rarity.COMMON, mage.cards.t.ThrivingGrove.class));