From 47c6c32e16c11eb3d800466aa70552e5dde32eaa Mon Sep 17 00:00:00 2001 From: Muz Date: Tue, 13 Jan 2026 11:04:01 -0600 Subject: [PATCH] [ECL] Implement Wildvine Pummeler and Rime Chill (#14241) * [ECL] Implement Wildvine Pummeler * [ECL] Implement Rime Chill --- Mage.Sets/src/mage/cards/r/RimeChill.java | 59 +++++++++++++++++++ .../src/mage/cards/w/WildvinePummeler.java | 57 ++++++++++++++++++ Mage.Sets/src/mage/sets/LorwynEclipsed.java | 2 + 3 files changed, 118 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RimeChill.java create mode 100644 Mage.Sets/src/mage/cards/w/WildvinePummeler.java diff --git a/Mage.Sets/src/mage/cards/r/RimeChill.java b/Mage.Sets/src/mage/cards/r/RimeChill.java new file mode 100644 index 00000000000..24b2819419e --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RimeChill.java @@ -0,0 +1,59 @@ +package mage.cards.r; + +import java.util.UUID; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.ColorsAmongControlledPermanentsCount; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author muz + */ +public final class RimeChill extends CardImpl { + + public RimeChill(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{6}{U}"); + + // Vivid -- This spell costs {1} less to cast for each color among permanents you control. + Ability vividAbility = new SimpleStaticAbility( + Zone.ALL, + new SpellCostReductionForEachSourceEffect(1, ColorsAmongControlledPermanentsCount.ALL_PERMANENTS) + ); + vividAbility.setRuleAtTheTop(true); + vividAbility.setAbilityWord(AbilityWord.VIVID); + vividAbility.addHint(ColorsAmongControlledPermanentsCount.ALL_PERMANENTS.getHint()); + this.addAbility(vividAbility); + + // Tap up to two target creatures. Put a stun counter on each of them. + this.getSpellAbility().addEffect(new TapTargetEffect()); + this.getSpellAbility().addEffect( + new AddCountersTargetEffect(CounterType.STUN.createInstance()) + .setText("put a stun counter on each of them") + ); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); + + // Draw a card. + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); + } + + private RimeChill(final RimeChill card) { + super(card); + } + + @Override + public RimeChill copy() { + return new RimeChill(this); + } +} diff --git a/Mage.Sets/src/mage/cards/w/WildvinePummeler.java b/Mage.Sets/src/mage/cards/w/WildvinePummeler.java new file mode 100644 index 00000000000..d8b6d9063b9 --- /dev/null +++ b/Mage.Sets/src/mage/cards/w/WildvinePummeler.java @@ -0,0 +1,57 @@ +package mage.cards.w; + +import java.util.UUID; +import mage.MageInt; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.ColorsAmongControlledPermanentsCount; +import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; +import mage.abilities.keyword.ReachAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; +import mage.constants.CardType; + +/** + * + * @author muz + */ +public final class WildvinePummeler extends CardImpl { + + public WildvinePummeler(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}"); + + this.subtype.add(SubType.GIANT); + this.subtype.add(SubType.BERSERKER); + this.power = new MageInt(6); + this.toughness = new MageInt(5); + + // Vivid -- This spell costs {1} less to cast for each color among permanents you control. + Ability ability = new SimpleStaticAbility( + Zone.ALL, + new SpellCostReductionForEachSourceEffect(1, ColorsAmongControlledPermanentsCount.ALL_PERMANENTS) + ); + ability.setRuleAtTheTop(true); + ability.setAbilityWord(AbilityWord.VIVID); + ability.addHint(ColorsAmongControlledPermanentsCount.ALL_PERMANENTS.getHint()); + this.addAbility(ability); + + // Reach + this.addAbility(ReachAbility.getInstance()); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + } + + private WildvinePummeler(final WildvinePummeler card) { + super(card); + } + + @Override + public WildvinePummeler copy() { + return new WildvinePummeler(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsed.java b/Mage.Sets/src/mage/sets/LorwynEclipsed.java index 93d3359ce5a..67d2f225ef7 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsed.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsed.java @@ -270,6 +270,7 @@ 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("Rime Chill", 64, Rarity.UNCOMMON, mage.cards.r.RimeChill.class)); 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)); @@ -365,6 +366,7 @@ public final class LorwynEclipsed extends ExpansionSet { cards.add(new SetCardInfo("Warren Torchmaster", 163, Rarity.UNCOMMON, mage.cards.w.WarrenTorchmaster.class)); cards.add(new SetCardInfo("Wary Farmer", 251, Rarity.COMMON, mage.cards.w.WaryFarmer.class)); cards.add(new SetCardInfo("Wild Unraveling", 84, Rarity.COMMON, mage.cards.w.WildUnraveling.class)); + cards.add(new SetCardInfo("Wildvine Pummeler", 203, Rarity.COMMON, mage.cards.w.WildvinePummeler.class)); cards.add(new SetCardInfo("Winnowing", 355, Rarity.RARE, mage.cards.w.Winnowing.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Winnowing", 382, Rarity.MYTHIC, mage.cards.w.Winnowing.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Winnowing", 392, Rarity.MYTHIC, mage.cards.w.Winnowing.class, NON_FULL_USE_VARIOUS));