From d61dc0bb63ce5d1f3edb90daf5faad480394de5b Mon Sep 17 00:00:00 2001 From: Muz Date: Sat, 10 Jan 2026 16:14:43 -0600 Subject: [PATCH] [ECL] Implement Rimefire Torque (#14228) --- .../src/mage/cards/r/RimefireTorque.java | 68 +++++++++++++++++++ Mage.Sets/src/mage/sets/LorwynEclipsed.java | 2 + 2 files changed, 70 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RimefireTorque.java diff --git a/Mage.Sets/src/mage/cards/r/RimefireTorque.java b/Mage.Sets/src/mage/cards/r/RimefireTorque.java new file mode 100644 index 00000000000..9b2e8bc9f5a --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RimefireTorque.java @@ -0,0 +1,68 @@ +package mage.cards.r; + +import java.util.UUID; + +import mage.abilities.common.AsEntersBattlefieldAbility; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.delayed.CopyNextSpellDelayedTriggeredAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.ChooseCreatureTypeEffect; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ChosenSubtypePredicate; + +/** + * + * @author muz + */ +public final class RimefireTorque extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("a permanent you control of the chosen type"); + + static { + filter.add(ChosenSubtypePredicate.TRUE); + } + + public RimefireTorque(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{U}"); + + // As this artifact enters, choose a creature type. + this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.Benefit))); + + // Whenever a permanent you control of the chosen type enters, put a charge counter on this artifact. + this.addAbility( + new EntersBattlefieldAllTriggeredAbility( + Zone.BATTLEFIELD, + new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), + filter, + false + ) + ); + + // {T}, Remove three charge counters from this artifact: When you next cast an instant or sorcery spell this turn, copy it. You may choose new targets for the copy. + SimpleActivatedAbility ability = new SimpleActivatedAbility( + new CreateDelayedTriggeredAbilityEffect(new CopyNextSpellDelayedTriggeredAbility()), + new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(3)) + ); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + private RimefireTorque(final RimefireTorque card) { + super(card); + } + + @Override + public RimefireTorque copy() { + return new RimefireTorque(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsed.java b/Mage.Sets/src/mage/sets/LorwynEclipsed.java index 21d124427a9..dee4bd2e8e0 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsed.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsed.java @@ -255,6 +255,8 @@ public final class LorwynEclipsed extends ExpansionSet { cards.add(new SetCardInfo("Requiting Hex", 116, Rarity.UNCOMMON, mage.cards.r.RequitingHex.class)); cards.add(new SetCardInfo("Rhys, the Evermore", 32, Rarity.RARE, mage.cards.r.RhysTheEvermore.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rhys, the Evermore", 354, Rarity.RARE, mage.cards.r.RhysTheEvermore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rimefire Torque", 358, Rarity.RARE, mage.cards.r.RimefireTorque.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rimefire Torque", 65, Rarity.RARE, mage.cards.r.RimefireTorque.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rimekin Recluse", 66, Rarity.UNCOMMON, mage.cards.r.RimekinRecluse.class)); cards.add(new SetCardInfo("Riverguard's Reflexes", 33, Rarity.COMMON, mage.cards.r.RiverguardsReflexes.class)); cards.add(new SetCardInfo("Rooftop Percher", 2, Rarity.COMMON, mage.cards.r.RooftopPercher.class));