[ECL] Implement Wildvine Pummeler and Rime Chill (#14241)

* [ECL] Implement Wildvine Pummeler

* [ECL] Implement Rime Chill
This commit is contained in:
Muz 2026-01-13 11:04:01 -06:00 committed by GitHub
parent c0adc48831
commit 47c6c32e16
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 118 additions and 0 deletions

View file

@ -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("<br>"));
}
private RimeChill(final RimeChill card) {
super(card);
}
@Override
public RimeChill copy() {
return new RimeChill(this);
}
}

View file

@ -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);
}
}

View file

@ -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));