From ff4470e681e184aeadaa6661b9a28a593ba9801f Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 9 Dec 2025 17:05:26 -0500 Subject: [PATCH] [MSH] Implement The Coming of Galactus --- .../src/mage/cards/t/TheComingOfGalactus.java | 49 +++++++++++++++++++ .../src/mage/sets/MarvelSuperHeroes.java | 2 + .../game/permanent/token/GalactusToken.java | 44 +++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/TheComingOfGalactus.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/GalactusToken.java diff --git a/Mage.Sets/src/mage/cards/t/TheComingOfGalactus.java b/Mage.Sets/src/mage/cards/t/TheComingOfGalactus.java new file mode 100644 index 00000000000..c3069cb8c3b --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TheComingOfGalactus.java @@ -0,0 +1,49 @@ +package mage.cards.t; + +import mage.abilities.common.SagaAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SagaChapter; +import mage.constants.SubType; +import mage.game.permanent.token.GalactusToken; +import mage.target.common.TargetNonlandPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TheComingOfGalactus extends CardImpl { + + public TheComingOfGalactus(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}{G}"); + + this.subtype.add(SubType.SAGA); + + // (As this Saga enters and after your draw step, add a lore counter. Sacrifice after IV.) + SagaAbility sagaAbility = new SagaAbility(this, SagaChapter.CHAPTER_IV); + + // I -- Destroy up to one target nonland permanent. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, new DestroyTargetEffect(), new TargetNonlandPermanent(0, 1)); + + // II, III -- Each opponent loses 2 life. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_III, new LoseLifeOpponentsEffect(2)); + + // IV -- Create Galactus, a legendary 16/16 black Elder Alien creature token with flying, trample, and "Whenever Galactus attacks, destroy target land." + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_IV, new CreateTokenEffect(new GalactusToken())); + this.addAbility(sagaAbility); + } + + private TheComingOfGalactus(final TheComingOfGalactus card) { + super(card); + } + + @Override + public TheComingOfGalactus copy() { + return new TheComingOfGalactus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java index 6be49e2124f..99e5fdc20ea 100644 --- a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java +++ b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java @@ -26,5 +26,7 @@ public final class MarvelSuperHeroes extends ExpansionSet { cards.add(new SetCardInfo("Moon Girl and Devil Dinosaur", 223, Rarity.RARE, mage.cards.m.MoonGirlAndDevilDinosaur.class)); cards.add(new SetCardInfo("Quicksilver, Brash Blur", 148, Rarity.RARE, mage.cards.q.QuicksilverBrashBlur.class)); cards.add(new SetCardInfo("Super-Skrull", 115, Rarity.RARE, mage.cards.s.SuperSkrull.class)); + cards.add(new SetCardInfo("The Coming of Galactus", 212, Rarity.MYTHIC, mage.cards.t.TheComingOfGalactus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Coming of Galactus", 307, Rarity.MYTHIC, mage.cards.t.TheComingOfGalactus.class, NON_FULL_USE_VARIOUS)); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/GalactusToken.java b/Mage/src/main/java/mage/game/permanent/token/GalactusToken.java new file mode 100644 index 00000000000..b1c5ad47449 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/GalactusToken.java @@ -0,0 +1,44 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.target.common.TargetLandPermanent; + +/** + * @author TheElk801 + */ +public final class GalactusToken extends TokenImpl { + + public GalactusToken() { + super("Galactus", "Galactus, a legendary 16/16 black Elder Alien creature token with flying, trample, and \"Whenever Galactus attacks, destroy target land.\""); + supertype.add(SuperType.LEGENDARY); + cardType.add(CardType.CREATURE); + subtype.add(SubType.ELDER); + subtype.add(SubType.ALIEN); + + color.setBlack(true); + power = new MageInt(16); + toughness = new MageInt(16); + + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(TrampleAbility.getInstance()); + Ability ability = new AttacksTriggeredAbility(new DestroyTargetEffect()); + ability.addTarget(new TargetLandPermanent()); + this.addAbility(ability); + } + + private GalactusToken(final GalactusToken token) { + super(token); + } + + public GalactusToken copy() { + return new GalactusToken(this); + } +}