From c3f7619fbfe23440e32c2d3c6a9b7ae3eb3ad33d Mon Sep 17 00:00:00 2001 From: theelk801 Date: Mon, 3 Feb 2025 19:43:06 -0500 Subject: [PATCH] [DFT] Implement Samut, the Driving Force --- .../mage/cards/s/SamutTheDrivingForce.java | 74 +++++++++++++++++++ Mage.Sets/src/mage/sets/Aetherdrift.java | 1 + 2 files changed, 75 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java diff --git a/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java b/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java new file mode 100644 index 00000000000..519c461d755 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java @@ -0,0 +1,74 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.ControllerSpeedCount; +import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.StartYourEnginesAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.common.FilterNoncreatureCard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SamutTheDrivingForce extends CardImpl { + + private static final FilterCard filter = new FilterNoncreatureCard("noncreature spells"); + + public SamutTheDrivingForce(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}{W}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARRIOR); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + + // First strike + this.addAbility(FirstStrikeAbility.getInstance()); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // Start your engines! + this.addAbility(new StartYourEnginesAbility()); + + // Other creatures you control get +X/+0, where X is your speed. + this.addAbility(new SimpleStaticAbility(new BoostControlledEffect( + ControllerSpeedCount.instance, StaticValue.get(0), Duration.WhileOnBattlefield, + StaticFilters.FILTER_PERMANENT_CREATURES, true + ))); + + // Noncreature spells you cast cost {X} less to cast, where X is your speed. + this.addAbility(new SimpleStaticAbility( + new SpellsCostReductionControllerEffect(filter, ControllerSpeedCount.instance) + )); + } + + private SamutTheDrivingForce(final SamutTheDrivingForce card) { + super(card); + } + + @Override + public SamutTheDrivingForce copy() { + return new SamutTheDrivingForce(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index 9e8e3f9ca8e..fa7560ee0b2 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -186,6 +186,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Sab-Sunen, Luxa Embodied", 221, Rarity.MYTHIC, mage.cards.s.SabSunenLuxaEmbodied.class)); cards.add(new SetCardInfo("Sabotage Strategist", 59, Rarity.UNCOMMON, mage.cards.s.SabotageStrategist.class)); cards.add(new SetCardInfo("Salvation Engine", 27, Rarity.MYTHIC, mage.cards.s.SalvationEngine.class)); + cards.add(new SetCardInfo("Samut, the Driving Force", 222, Rarity.RARE, mage.cards.s.SamutTheDrivingForce.class)); cards.add(new SetCardInfo("Scoured Barrens", 263, Rarity.COMMON, mage.cards.s.ScouredBarrens.class)); cards.add(new SetCardInfo("Scrap Compactor", 242, Rarity.COMMON, mage.cards.s.ScrapCompactor.class)); cards.add(new SetCardInfo("Scrounging Skyray", 60, Rarity.UNCOMMON, mage.cards.s.ScroungingSkyray.class));