[ONE] Implement Evolved Spinoderm

This commit is contained in:
theelk801 2023-01-14 13:33:50 -05:00
parent 7ca7ed52d4
commit 53f3dc3cc5
2 changed files with 79 additions and 0 deletions

View file

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

View file

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