From 436a0fd2ed9d833131771e9e75593c7bd05d0ddf Mon Sep 17 00:00:00 2001 From: theelk801 Date: Fri, 31 Jan 2025 10:05:18 -0500 Subject: [PATCH] [DFT] Implement Gastal Thrillroller --- .../src/mage/cards/g/GastalThrillroller.java | 67 +++++++++++++++++++ Mage.Sets/src/mage/sets/Aetherdrift.java | 1 + ...ourceFromGraveyardToBattlefieldEffect.java | 2 +- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/g/GastalThrillroller.java diff --git a/Mage.Sets/src/mage/cards/g/GastalThrillroller.java b/Mage.Sets/src/mage/cards/g/GastalThrillroller.java new file mode 100644 index 00000000000..3b8467276b3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GastalThrillroller.java @@ -0,0 +1,67 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; +import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect; +import mage.abilities.keyword.CrewAbility; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GastalThrillroller extends CardImpl { + + public GastalThrillroller(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{R}"); + + this.subtype.add(SubType.VEHICLE); + this.power = new MageInt(4); + this.toughness = new MageInt(2); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // When this Vehicle enters, it becomes an artifact creature until end of turn. + this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCardTypeSourceEffect( + Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE + ).setText("it becomes an artifact creature until end of turn"))); + + // Crew 2 + this.addAbility(new CrewAbility(2)); + + // {2}{R}, Discard a card: Return this card from your graveyard to the battlefield with a finality counter on it. Activate only as a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility( + new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect( + CounterType.FINALITY.createInstance(), false + ), new ManaCostsImpl<>("{2}{R}") + ); + ability.addCost(new DiscardCardCost()); + this.addAbility(ability); + } + + private GastalThrillroller(final GastalThrillroller card) { + super(card); + } + + @Override + public GastalThrillroller copy() { + return new GastalThrillroller(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index 91a327c8a35..77597a780e2 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -74,6 +74,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Forest", 289, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Foul Roads", 255, Rarity.UNCOMMON, mage.cards.f.FoulRoads.class)); cards.add(new SetCardInfo("Fuel the Flames", 126, Rarity.UNCOMMON, mage.cards.f.FuelTheFlames.class)); + cards.add(new SetCardInfo("Gastal Thrillroller", 129, Rarity.RARE, mage.cards.g.GastalThrillroller.class)); cards.add(new SetCardInfo("Gilded Ghoda", 130, Rarity.COMMON, mage.cards.g.GildedGhoda.class)); cards.add(new SetCardInfo("Gloryheath Lynx", 14, Rarity.UNCOMMON, mage.cards.g.GloryheathLynx.class)); cards.add(new SetCardInfo("Greasewrench Goblin", 132, Rarity.UNCOMMON, mage.cards.g.GreasewrenchGoblin.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java index bd9bae362c5..3b3290a8d70 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java @@ -96,7 +96,7 @@ public class ReturnSourceFromGraveyardToBattlefieldEffect extends OneShotEffect } private String setText() { - StringBuilder sb = new StringBuilder("return {this} from your graveyard to the battlefield"); + StringBuilder sb = new StringBuilder("return this card from your graveyard to the battlefield"); if (tapped) { sb.append(" tapped"); }