From a9fce4b05e3794c85ee7a85e7c87f61eb8fc77a8 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sat, 7 Oct 2023 05:25:35 +0200 Subject: [PATCH] [LCI] Implement Ghalta, Stampede Tyrant (#11270) --- .../mage/cards/g/GhaltaStampedeTyrant.java | 79 +++++++++++++++++++ .../src/mage/cards/l/LastMarchOfTheEnts.java | 4 +- .../src/mage/sets/LostCavernsOfIxalan.java | 1 + 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/g/GhaltaStampedeTyrant.java diff --git a/Mage.Sets/src/mage/cards/g/GhaltaStampedeTyrant.java b/Mage.Sets/src/mage/cards/g/GhaltaStampedeTyrant.java new file mode 100644 index 00000000000..f443af5f785 --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GhaltaStampedeTyrant.java @@ -0,0 +1,79 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.CardsImpl; +import mage.constants.*; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetCard; +import mage.target.common.TargetCardInHand; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class GhaltaStampedeTyrant extends CardImpl { + + public GhaltaStampedeTyrant(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}{G}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.ELDER); + this.subtype.add(SubType.DINOSAUR); + this.power = new MageInt(12); + this.toughness = new MageInt(12); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // When Ghalta, Stampede Tyrant enters the battlefield, put any number of creature cards from your hand onto the battlefield. + this.addAbility(new EntersBattlefieldTriggeredAbility(new GhaltaStampedeTyrantEffect())); + } + + private GhaltaStampedeTyrant(final GhaltaStampedeTyrant card) { + super(card); + } + + @Override + public GhaltaStampedeTyrant copy() { + return new GhaltaStampedeTyrant(this); + } +} + +// Very similar to Last March of the End +class GhaltaStampedeTyrantEffect extends OneShotEffect { + + GhaltaStampedeTyrantEffect() { + super(Outcome.PutCreatureInPlay); + staticText = "put any number of creature cards from your hand onto the battlefield"; + } + + private GhaltaStampedeTyrantEffect(final GhaltaStampedeTyrantEffect effect) { + super(effect); + } + + @Override + public GhaltaStampedeTyrantEffect copy() { + return new GhaltaStampedeTyrantEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + TargetCard target = new TargetCardInHand(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES); + player.choose(outcome, target, source, game); + player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/l/LastMarchOfTheEnts.java b/Mage.Sets/src/mage/cards/l/LastMarchOfTheEnts.java index 7766b2678c8..b13c0c85eb7 100644 --- a/Mage.Sets/src/mage/cards/l/LastMarchOfTheEnts.java +++ b/Mage.Sets/src/mage/cards/l/LastMarchOfTheEnts.java @@ -50,7 +50,7 @@ public final class LastMarchOfTheEnts extends CardImpl { class LastMarchOfTheEntsEffect extends OneShotEffect { LastMarchOfTheEntsEffect() { - super(Outcome.Benefit); + super(Outcome.PutCreatureInPlay); staticText = ", then put any number of creature cards from your hand onto the battlefield"; } @@ -70,7 +70,7 @@ class LastMarchOfTheEntsEffect extends OneShotEffect { return false; } TargetCard target = new TargetCardInHand(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES); - player.choose(Outcome.PutCreatureInPlay, target, source, game); + player.choose(outcome, target, source, game); player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); return true; } diff --git a/Mage.Sets/src/mage/sets/LostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/LostCavernsOfIxalan.java index aef16fa9f04..e881808755f 100644 --- a/Mage.Sets/src/mage/sets/LostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/LostCavernsOfIxalan.java @@ -23,6 +23,7 @@ public final class LostCavernsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Cavern of Souls", 269, Rarity.MYTHIC, mage.cards.c.CavernOfSouls.class)); cards.add(new SetCardInfo("Forest", 291, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); + cards.add(new SetCardInfo("Ghalta, Stampede Tyrant", 185, Rarity.MYTHIC, mage.cards.g.GhaltaStampedeTyrant.class)); cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mountain", 290, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));