From fcbf22380e3a3f0f42cafa60aa51aec43c1f9ba4 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Sat, 29 Mar 2025 01:16:21 +0000 Subject: [PATCH] [TDM] Implement Teeming Dragonstorm --- .../src/mage/cards/t/TeemingDragonstorm.java | 41 +++++++++++++++++++ .../src/mage/sets/TarkirDragonstorm.java | 2 + .../game/permanent/token/Soldier22Token.java | 29 +++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/TeemingDragonstorm.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/Soldier22Token.java diff --git a/Mage.Sets/src/mage/cards/t/TeemingDragonstorm.java b/Mage.Sets/src/mage/cards/t/TeemingDragonstorm.java new file mode 100644 index 00000000000..0683450554e --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TeemingDragonstorm.java @@ -0,0 +1,41 @@ +package mage.cards.t; + +import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.ReturnToHandSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.game.permanent.token.Soldier22Token; + +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class TeemingDragonstorm extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent(SubType.DRAGON, "a Dragon"); + + public TeemingDragonstorm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}"); + + // When this enchantment enters, create two 2/2 white Soldier creature tokens. + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new Soldier22Token(), 2), false)); + + // When a Dragon you control enters, return this enchantment to its owner's hand. + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new ReturnToHandSourceEffect(), filter)); + } + + private TeemingDragonstorm (final TeemingDragonstorm card) { + super(card); + } + + @Override + public TeemingDragonstorm copy() { + return new TeemingDragonstorm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java index 0afdfafe8bc..1178deda0d8 100644 --- a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java +++ b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java @@ -150,6 +150,8 @@ public final class TarkirDragonstorm extends ExpansionSet { cards.add(new SetCardInfo("Sunset Strikemaster", 126, Rarity.UNCOMMON, mage.cards.s.SunsetStrikemaster.class)); cards.add(new SetCardInfo("Swamp", 281, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Swiftwater Cliffs", 268, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class)); + cards.add(new SetCardInfo("Teeming Dragonstorm", 30, Rarity.UNCOMMON, mage.cards.t.TeemingDragonstorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teeming Dragonstorm", 293, Rarity.UNCOMMON, mage.cards.t.TeemingDragonstorm.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tempest Hawk", 31, Rarity.COMMON, mage.cards.t.TempestHawk.class)); cards.add(new SetCardInfo("Temur Devotee", 61, Rarity.COMMON, mage.cards.t.TemurDevotee.class)); cards.add(new SetCardInfo("Temur Monument", 248, Rarity.UNCOMMON, mage.cards.t.TemurMonument.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/Soldier22Token.java b/Mage/src/main/java/mage/game/permanent/token/Soldier22Token.java new file mode 100644 index 00000000000..0ddf938b3c1 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/Soldier22Token.java @@ -0,0 +1,29 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author PurpleCrowbar + */ +public final class Soldier22Token extends TokenImpl { + + public Soldier22Token() { + super("Soldier Token", "2/2 white Soldier creature token"); + cardType.add(CardType.CREATURE); + color.setWhite(true); + subtype.add(SubType.SOLDIER); + power = new MageInt(2); + toughness = new MageInt(2); + } + + private Soldier22Token(final Soldier22Token token) { + super(token); + } + + @Override + public Soldier22Token copy() { + return new Soldier22Token(this); + } +}