From 8fb4f504d9118cb1dcff7cf2ccf7e04d628091eb Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 9 Jul 2025 12:00:57 -0400 Subject: [PATCH] [EOE] Implement Kavaron, Memorial World --- .../mage/cards/k/KavaronMemorialWorld.java | 69 +++++++++++++++++++ Mage.Sets/src/mage/sets/EdgeOfEternities.java | 1 + Utils/mtg-cards-data.txt | 1 + 3 files changed, 71 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/k/KavaronMemorialWorld.java diff --git a/Mage.Sets/src/mage/cards/k/KavaronMemorialWorld.java b/Mage.Sets/src/mage/cards/k/KavaronMemorialWorld.java new file mode 100644 index 00000000000..a95a3961021 --- /dev/null +++ b/Mage.Sets/src/mage/cards/k/KavaronMemorialWorld.java @@ -0,0 +1,69 @@ +package mage.cards.k; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.StationAbility; +import mage.abilities.keyword.StationLevelAbility; +import mage.abilities.mana.RedManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.game.permanent.token.RobotToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class KavaronMemorialWorld extends CardImpl { + + public KavaronMemorialWorld(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.subtype.add(SubType.PLANET); + + // This land enters tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + + // {T}: Add {R}. + this.addAbility(new RedManaAbility()); + + // Station + this.addAbility(new StationAbility()); + + // STATION 12+ + // {1}{R}, {T}, Sacrifice a land: Create a 2/2 colorless Robot artifact creature token, then creatures you control get +1/+0 and gain haste until end of turn. + Ability ability = new SimpleActivatedAbility( + new CreateTokenEffect(new RobotToken()), new ManaCostsImpl<>("{1}{R}") + ); + ability.addCost(new TapSourceCost()); + ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_LAND)); + ability.addEffect(new BoostControlledEffect(1, 0, Duration.EndOfTurn) + .setText(", then creatures you control get +1/+0")); + ability.addEffect(new GainAbilityControlledEffect( + HasteAbility.getInstance(), Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_CREATURE + ).setText("and gain haste until end of turn")); + this.addAbility(new StationLevelAbility(12).withLevelAbility(ability)); + } + + private KavaronMemorialWorld(final KavaronMemorialWorld card) { + super(card); + } + + @Override + public KavaronMemorialWorld copy() { + return new KavaronMemorialWorld(this); + } +} diff --git a/Mage.Sets/src/mage/sets/EdgeOfEternities.java b/Mage.Sets/src/mage/sets/EdgeOfEternities.java index ed9085943dd..1f5f2138fbd 100644 --- a/Mage.Sets/src/mage/sets/EdgeOfEternities.java +++ b/Mage.Sets/src/mage/sets/EdgeOfEternities.java @@ -86,6 +86,7 @@ public final class EdgeOfEternities extends ExpansionSet { cards.add(new SetCardInfo("Island", 269, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 270, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 368, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS)); + cards.add(new SetCardInfo("Kavaron, Memorial World", 255, Rarity.MYTHIC, mage.cards.k.KavaronMemorialWorld.class)); cards.add(new SetCardInfo("Mechanozoa", 66, Rarity.COMMON, mage.cards.m.Mechanozoa.class)); cards.add(new SetCardInfo("Mountain", 265, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mountain", 273, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index cf7978a4673..7f702b1ed59 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -59180,6 +59180,7 @@ Adagia, Windswept Bastion|Edge of Eternities|250|M||Land - Planet|||This land en Breeding Pool|Edge of Eternities|251|R||Land - Forest Island|||({T}: Add {G} or {U}.)$As this land enters, you may pay 2 life. If you don't, it enters tapped.| Command Bridge|Edge of Eternities|252|C||Land|||This land enters tapped.$When this land enters, sacrifice it unless you tap an untapped permanent you control.${T}: Add one mana of any color.| Godless Shrine|Edge of Eternities|254|R||Land - Plains Swamp|||({T}: Add {W} or {B}.)$As this land enters, you may pay 2 life. If you don't, it enters tapped.| +Kavaron, Memorial World|Edge of Eternities|255|M||Land - Planet|||This land enters tapped.${T}: Add {R}.$Station$STATION 12+${1}{R}, {T}, Sacrifice a land: Create a 2/2 colorless Robot artifact creature token, then creatures you control get +1/+0 and gain haste until end of turn.| Sacred Foundry|Edge of Eternities|256|R||Land - Mountain Plains|||({T}: Add {R} or {W}.)$As this land enters, you may pay 2 life. If you don't, it enters tapped.| Stomping Ground|Edge of Eternities|258|R||Land - Mountain Forest|||({T}: Add {R} or {G}.)$As this land enters, you may pay 2 life. If you don't, it enters tapped.| Susur Secundi, Void Altar|Edge of Eternities|259|M||Land - Planet|||This land enters tapped.${T}: Add {B}.$Station$STATION 12+${1}{B},{T}, Pay 2 life, Sacrifice a creature: Draw cards equal to the sacrificed creature's power. Activate only as a sorcery.|