From 53f3dc3cc5a5f68d3d9e6588dd5ea65234a3e5fc Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sat, 14 Jan 2023 13:33:50 -0500 Subject: [PATCH] [ONE] Implement Evolved Spinoderm --- .../src/mage/cards/e/EvolvedSpinoderm.java | 78 +++++++++++++++++++ .../src/mage/sets/PhyrexiaAllWillBeOne.java | 1 + 2 files changed, 79 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java diff --git a/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java b/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java new file mode 100644 index 00000000000..376269a7ca1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java @@ -0,0 +1,78 @@ +package mage.cards.e; + +import java.util.UUID; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentHasCounterCondition; +import mage.abilities.condition.common.SourceHasCounterCondition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; +import mage.abilities.keyword.HexproofAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.constants.SubType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.TargetController; +import mage.counters.CounterType; + +/** + * @author TheElk801 + */ +public final class EvolvedSpinoderm extends CardImpl { + + private static final Condition condition1 = new SourceHasCounterCondition(CounterType.OIL, 3); + private static final Condition condition2 = new SourceHasCounterCondition(CounterType.OIL, 0, 0); + + public EvolvedSpinoderm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); + + this.subtype.add(SubType.PHYREXIAN); + this.subtype.add(SubType.BEAST); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Evolved Spinoderm enters the battlefield with four oil counters on it. + this.addAbility(new EntersBattlefieldAbility( + new AddCountersSourceEffect(CounterType.OIL.createInstance(4)), + "with four oil counters on it" + )); + + // Evolved Spinoderm has trample as long as it was two or fewer oil counters on it, Otherwise, it has hexproof. + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new GainAbilitySourceEffect(HexproofAbility.getInstance()), + new GainAbilitySourceEffect(TrampleAbility.getInstance()), + condition1, "{this} has trample as long as it was two " + + "or fewer oil counters on it, Otherwise, it has hexproof" + ))); + + // At the beginning of your upkeep, remove an oil counter from Evolved Spinoderm. Then if it has no oil counters on it, sacrifice it. + Ability ability = new BeginningOfUpkeepTriggeredAbility( + new RemoveCounterSourceEffect(CounterType.OIL.createInstance()), + TargetController.YOU, false + ); + ability.addEffect(new ConditionalOneShotEffect( + new SacrificeSourceEffect(), condition2, + "Then if it has no oil counters on it, sacrifice it" + )); + this.addAbility(ability); + } + + private EvolvedSpinoderm(final EvolvedSpinoderm card) { + super(card); + } + + @Override + public EvolvedSpinoderm copy() { + return new EvolvedSpinoderm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java index c8d3a7953cc..8b52911e44a 100644 --- a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java +++ b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java @@ -25,6 +25,7 @@ public final class PhyrexiaAllWillBeOne extends ExpansionSet { cards.add(new SetCardInfo("Blue Sun's Twilight", 43, Rarity.RARE, mage.cards.b.BlueSunsTwilight.class)); cards.add(new SetCardInfo("Copperline Gorge", 249, Rarity.RARE, mage.cards.c.CopperlineGorge.class)); cards.add(new SetCardInfo("Dragonwing Glider", 126, Rarity.RARE, mage.cards.d.DragonwingGlider.class)); + cards.add(new SetCardInfo("Evolved Spinoderm", 166, Rarity.RARE, mage.cards.e.EvolvedSpinoderm.class)); cards.add(new SetCardInfo("Forest", 276, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 273, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mirrex", 254, Rarity.RARE, mage.cards.m.Mirrex.class));