From 43d210fcc453d1f17fe09b11713bbb2a1bf16033 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Fri, 31 Jan 2025 19:08:45 -0500 Subject: [PATCH] [DFT] Implement Leonin Surveyor --- .../src/mage/cards/l/LeoninSurveyor.java | 63 +++++++++++++++++++ Mage.Sets/src/mage/sets/Aetherdrift.java | 1 + 2 files changed, 64 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/l/LeoninSurveyor.java diff --git a/Mage.Sets/src/mage/cards/l/LeoninSurveyor.java b/Mage.Sets/src/mage/cards/l/LeoninSurveyor.java new file mode 100644 index 00000000000..a81c83e1c03 --- /dev/null +++ b/Mage.Sets/src/mage/cards/l/LeoninSurveyor.java @@ -0,0 +1,63 @@ +package mage.cards.l; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.MaxSpeedAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.MyTurnCondition; +import mage.abilities.costs.common.ExileSourceFromGraveCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.StartYourEnginesAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.Zone; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class LeoninSurveyor extends CardImpl { + + public LeoninSurveyor(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); + + this.subtype.add(SubType.CAT); + this.subtype.add(SubType.SCOUT); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Start your engines! + this.addAbility(new StartYourEnginesAbility()); + + // During your turn, this creature has first strike. + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield), + MyTurnCondition.instance, "during your turn, {this} has first strike." + ))); + + // Max speed -- {3}, Exile this card from your graveyard: Draw a card. + Ability ability = new SimpleActivatedAbility( + Zone.GRAVEYARD, new DrawCardSourceControllerEffect(1), new GenericManaCost(3) + ); + ability.addCost(new ExileSourceFromGraveCost()); + this.addAbility(new MaxSpeedAbility(ability)); + } + + private LeoninSurveyor(final LeoninSurveyor card) { + super(card); + } + + @Override + public LeoninSurveyor copy() { + return new LeoninSurveyor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index 543d519b594..6fcdb4cae78 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -107,6 +107,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Jungle Hollow", 256, Rarity.COMMON, mage.cards.j.JungleHollow.class)); cards.add(new SetCardInfo("Kalakscion, Hunger Tyrant", 93, Rarity.UNCOMMON, mage.cards.k.KalakscionHungerTyrant.class)); cards.add(new SetCardInfo("Lagorin, Soul of Alacria", 211, Rarity.UNCOMMON, mage.cards.l.LagorinSoulOfAlacria.class)); + cards.add(new SetCardInfo("Leonin Surveyor", 18, Rarity.COMMON, mage.cards.l.LeoninSurveyor.class)); cards.add(new SetCardInfo("Lightning Strike", 136, Rarity.COMMON, mage.cards.l.LightningStrike.class)); cards.add(new SetCardInfo("Lightshield Parry", 19, Rarity.COMMON, mage.cards.l.LightshieldParry.class)); cards.add(new SetCardInfo("Locust Spray", 95, Rarity.UNCOMMON, mage.cards.l.LocustSpray.class));