From 3db293252dc3740dcae8b7245fcb3f5daf579d5a Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 20 May 2025 15:22:15 -0400 Subject: [PATCH] [FIN] Implement Ambrosia Whiteheart --- .../src/mage/cards/a/AmbrosiaWhiteheart.java | 88 +++++++++++++++++++ Mage.Sets/src/mage/sets/FinalFantasy.java | 3 + Utils/mtg-cards-data.txt | 3 + 3 files changed, 94 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AmbrosiaWhiteheart.java diff --git a/Mage.Sets/src/mage/cards/a/AmbrosiaWhiteheart.java b/Mage.Sets/src/mage/cards/a/AmbrosiaWhiteheart.java new file mode 100644 index 00000000000..e9809e1eca7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AmbrosiaWhiteheart.java @@ -0,0 +1,88 @@ +package mage.cards.a; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.LandfallAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlashAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetImpl; +import mage.target.TargetPermanent; + +import java.util.Optional; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AmbrosiaWhiteheart extends CardImpl { + + public AmbrosiaWhiteheart(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.BIRD); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flash + this.addAbility(FlashAbility.getInstance()); + + // When Ambrosia Whiteheart enters, you may return another permanent you control to its owner's hand. + this.addAbility(new EntersBattlefieldTriggeredAbility(new AmbrosiaWhiteheartEffect())); + + // Landfall -- Whenever a land you control enters, Ambrosia Whiteheart gets +1/+0 until end of turn. + this.addAbility(new LandfallAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn))); + } + + private AmbrosiaWhiteheart(final AmbrosiaWhiteheart card) { + super(card); + } + + @Override + public AmbrosiaWhiteheart copy() { + return new AmbrosiaWhiteheart(this); + } +} + +class AmbrosiaWhiteheartEffect extends OneShotEffect { + + AmbrosiaWhiteheartEffect() { + super(Outcome.Benefit); + staticText = "you may return another permanent you control to its owner's hand"; + } + + private AmbrosiaWhiteheartEffect(final AmbrosiaWhiteheartEffect effect) { + super(effect); + } + + @Override + public AmbrosiaWhiteheartEffect copy() { + return new AmbrosiaWhiteheartEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + TargetPermanent target = new TargetPermanent( + 0, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_PERMANENT, true + ); + player.choose(outcome, target, source, game); + return Optional + .ofNullable(target) + .map(TargetImpl::getFirstTarget) + .map(game::getCard) + .map(card -> player.moveCards(card, Zone.HAND, source, game)) + .orElse(false); + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasy.java b/Mage.Sets/src/mage/sets/FinalFantasy.java index ac1ca8c486d..a2d6ce08bff 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasy.java +++ b/Mage.Sets/src/mage/sets/FinalFantasy.java @@ -31,6 +31,9 @@ public final class FinalFantasy extends ExpansionSet { cards.add(new SetCardInfo("Aerith Gainsborough", 423, Rarity.RARE, mage.cards.a.AerithGainsborough.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Aerith Gainsborough", 519, Rarity.RARE, mage.cards.a.AerithGainsborough.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Al Bhed Salvagers", 88, Rarity.UNCOMMON, mage.cards.a.AlBhedSalvagers.class)); + cards.add(new SetCardInfo("Ambrosia Whiteheart", 325, Rarity.UNCOMMON, mage.cards.a.AmbrosiaWhiteheart.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ambrosia Whiteheart", 424, Rarity.UNCOMMON, mage.cards.a.AmbrosiaWhiteheart.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ambrosia Whiteheart", 6, Rarity.UNCOMMON, mage.cards.a.AmbrosiaWhiteheart.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ardyn, the Usurper", 315, Rarity.RARE, mage.cards.a.ArdynTheUsurper.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ardyn, the Usurper", 379, Rarity.RARE, mage.cards.a.ArdynTheUsurper.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ardyn, the Usurper", 444, Rarity.RARE, mage.cards.a.ArdynTheUsurper.class, NON_FULL_USE_VARIOUS)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index f44ad91c041..79af091dd06 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57628,6 +57628,7 @@ Command Tower|Final Fantasy Commander|486|C||Land|||{T}: Add one mana of any col Summon: Bahamut|Final Fantasy|1|M|{9}|Enchantment Creature - Saga Dragon|9|9|(As this Saga enters and after your draw step, add a lore counter. Sacrifice after IV.)$I, II -- Destroy up to one target nonland permanent.$III -- Draw two cards.$IV -- Mega Flare -- This creature deals damage equal to the total mana value of other permanents you control to each opponent.$Flying| Ultima, Origin of Oblivion|Final Fantasy|2|R|{5}|Legendary Creature - God|4|4|Flying$Whenever Ultima attacks, put a blight counter on target land. For as long as that land has a blight counter on it, it loses all land types and abilities and has "{T}: Add {C}."$Whenever you tap a land for {C}, add an additional {C}.| Aerith Gainsborough|Final Fantasy|4|R|{2}{W}|Legendary Creature - Human Cleric|2|2|Lifelink$Whenever you gain life, put a +1/+1 counter on Aerith Gainsborough.$When Aerith Gainsborough dies, put X +1/+1 counters on each legendary creature you control, where X is the number of +1/+1 counters on Aerith Gainsborough.| +Ambrosia Whiteheart|Final Fantasy|6|U|{1}{W}|Legendary Creature - Bird|2|2|Flash$When Ambrosia Whiteheart enters, you may return another permanent you control to its owner's hand.$Landfall -- Whenever a land you control enters, Ambrosia Whiteheart gets +1/+0 until end of turn.| Auron's Inspiration|Final Fantasy|8|U|{2}{W}|Instant|||Attacking creatures get +2/+0 until end of turn.$Flashback {2}{W}{W}| Cloud, Midgar Mercenary|Final Fantasy|10|M|{W}{W}|Legendary Creature - Human Soldier Mercenary|2|1|When Cloud enters, search your library for an Equipment card, reveal it, put it into your hand, then shuffle.$As long as Cloud is equipped, if an ability of Cloud or an Equipment attached to it triggers, that ability triggers an additional time.| Cloudbound Moogle|Final Fantasy|11|C|{3}{W}{W}|Creature - Moogle|2|3|Flying$When this creature enters, put a +1/+1 counter on target creature.$Plainscycling {2}| @@ -57831,6 +57832,7 @@ Kefka, Ruler of Ruin|Final Fantasy|322|M||Legendary Creature - Avatar Wizard|5|7 Terra, Magical Adept|Final Fantasy|323|M|{1}{R}{G}|Legendary Creature - Human Wizard Warrior|4|2|When Terra enters, mill five cards. Put up to one enchantment card milled this way into your hand.$Trance -- {4}{R}{G}, {T}: Exile Terra, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.| Esper Terra|Final Fantasy|323|M||Legendary Enchantment Creature - Saga Wizard|6|6|(As this Saga enters and after your draw step, add a lore counter.)$I, II, III -- Create a token that's a copy of target nonlegendary enchantment you control. It gains haste. If it's a Saga, put up to three lore counters on it. Sacrifice it at the beginning of your next end step.$IV -- Add {W}{W}, {U}{U}, {B}{B}, {R}{R}, and {G}{G}. Exile Esper Terra, then return it to the battlefield.$Flying| Ultima, Origin of Oblivion|Final Fantasy|324|R|{5}|Legendary Creature - God|4|4|Flying$Whenever Ultima attacks, put a blight counter on target land. For as long as that land has a blight counter on it, it loses all land types and abilities and has "{T}: Add {C}."$Whenever you tap a land for {C}, add an additional {C}.| +Ambrosia Whiteheart|Final Fantasy|325|U|{1}{W}|Legendary Creature - Bird|2|2|Flash$When Ambrosia Whiteheart enters, you may return another permanent you control to its owner's hand.$Landfall -- Whenever a land you control enters, Ambrosia Whiteheart gets +1/+0 until end of turn.| Moogles' Valor|Final Fantasy|326|R|{3}{W}{W}|Instant|||For each creature you control, create a 1/2 white Moogle creature token with lifelink. Then creatures you control gain indestructible until end of turn.| Stiltzkin, Moogle Merchant|Final Fantasy|327|R|{W}|Legendary Creature - Moogle|1|2|Lifelink${2}, {T}: Target opponent gains control of another target permanent you control. If they do, you draw a card.| The Wind Crystal|Final Fantasy|330|R|{2}{W}{W}|Legendary Artifact|||White spells you cast cost {1} less to cast.$If you would gain life, you gain twice that much life instead.${4}{W}{W}, {T}: Creatures you control gain flying and lifelink until end of turn.| @@ -57910,6 +57912,7 @@ Cid, Timeless Artificer|Final Fantasy|420|U|{2}{W}{U}|Legendary Creature - Human Ultima, Origin of Oblivion|Final Fantasy|421|R|{5}|Legendary Creature - God|4|4|Flying$Whenever Ultima attacks, put a blight counter on target land. For as long as that land has a blight counter on it, it loses all land types and abilities and has "{T}: Add {C}."$Whenever you tap a land for {C}, add an additional {C}.| Adelbert Steiner|Final Fantasy|422|U|{1}{W}|Legendary Creature - Human Knight|2|1|Lifelink$Adelbert Steiner gets +1/+1 for each Equipment you control.| Aerith Gainsborough|Final Fantasy|423|R|{2}{W}|Legendary Creature - Human Cleric|2|2|Lifelink$Whenever you gain life, put a +1/+1 counter on Aerith Gainsborough.$When Aerith Gainsborough dies, put X +1/+1 counters on each legendary creature you control, where X is the number of +1/+1 counters on Aerith Gainsborough.| +Ambrosia Whiteheart|Final Fantasy|424|U|{1}{W}|Legendary Creature - Bird|2|2|Flash$When Ambrosia Whiteheart enters, you may return another permanent you control to its owner's hand.$Landfall -- Whenever a land you control enters, Ambrosia Whiteheart gets +1/+0 until end of turn.| Beatrix, Loyal General|Final Fantasy|426|R|{4}{W}{W}|Legendary Creature - Human Soldier|4|4|Vigilance$At the beginning of combat on your turn, you may attach any number of Equipment you control to target creature you control.| Cloud, Midgar Mercenary|Final Fantasy|427|M|{W}{W}|Legendary Creature - Human Soldier Mercenary|2|1|When Cloud enters, search your library for an Equipment card, reveal it, put it into your hand, then shuffle.$As long as Cloud is equipped, if an ability of Cloud or an Equipment attached to it triggers, that ability triggers an additional time.| Rosa, Resolute White Mage|Final Fantasy|431|R|{3}{W}|Legendary Creature - Human Noble Cleric|2|3|Reach$At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. It gains lifelink until end of turn.|