From 5fd4f8f2bd57e89ee7a8c474ff4193538b79cc8f Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sun, 20 Aug 2023 22:23:15 +0200 Subject: [PATCH] [WOE] Implement Return Triumphant (#10915) --- .../src/mage/cards/r/ReturnTriumphant.java | 85 +++++++++++++++++++ Mage.Sets/src/mage/sets/WildsOfEldraine.java | 1 + 2 files changed, 86 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/ReturnTriumphant.java diff --git a/Mage.Sets/src/mage/cards/r/ReturnTriumphant.java b/Mage.Sets/src/mage/cards/r/ReturnTriumphant.java new file mode 100644 index 00000000000..4f534e62ffb --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/ReturnTriumphant.java @@ -0,0 +1,85 @@ +package mage.cards.r; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateRoleAttachedTargetEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterCard; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCardInYourGraveyard; +import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class ReturnTriumphant extends CardImpl { + + private static final FilterCard filter = new FilterCreatureCard("creature card with mana value 3 or less from your graveyard"); + + static { + filter.add(new ManaValuePredicate(ComparisonType.OR_LESS, 3)); + } + + public ReturnTriumphant(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}"); + + // Return target creature card with mana value 3 or less from your graveyard to the battlefield. Create a Young Hero Role token attached to it. + this.getSpellAbility().addEffect(new ReturnTriumphantAbility()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter)); + } + + private ReturnTriumphant(final ReturnTriumphant card) { + super(card); + } + + @Override + public ReturnTriumphant copy() { + return new ReturnTriumphant(this); + } +} + +class ReturnTriumphantAbility extends OneShotEffect { + + ReturnTriumphantAbility() { + super(Outcome.PutCreatureInPlay); + staticText = "return target creature card with mana value 3 or less from your graveyard " + + "to the battlefield. Create a Young Hero Role token attached to it"; + } + + private ReturnTriumphantAbility(final ReturnTriumphantAbility effect) { + super(effect); + } + + @Override + public ReturnTriumphantAbility copy() { + return new ReturnTriumphantAbility(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Card card = game.getCard(source.getFirstTarget()); + if (player == null || card == null) { + return false; + } + player.moveCards(card, Zone.BATTLEFIELD, source, game); + Permanent permanent = game.getPermanent(card.getId()); + if (permanent == null) { + return false; + } + + return new CreateRoleAttachedTargetEffect(RoleType.YOUNG_HERO) + .setTargetPointer(new FixedTarget(permanent, game)) + .apply(game, source); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WildsOfEldraine.java b/Mage.Sets/src/mage/sets/WildsOfEldraine.java index 271962135af..2fe0c389beb 100644 --- a/Mage.Sets/src/mage/sets/WildsOfEldraine.java +++ b/Mage.Sets/src/mage/sets/WildsOfEldraine.java @@ -87,6 +87,7 @@ public final class WildsOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Restless Cottage", 258, Rarity.RARE, mage.cards.r.RestlessCottage.class)); cards.add(new SetCardInfo("Restless Fortress", 259, Rarity.RARE, mage.cards.r.RestlessFortress.class)); cards.add(new SetCardInfo("Restless Spire", 306, Rarity.RARE, mage.cards.r.RestlessSpire.class)); + cards.add(new SetCardInfo("Return Triumphant", 26, Rarity.COMMON, mage.cards.r.ReturnTriumphant.class)); cards.add(new SetCardInfo("Return from the Wilds", 181, Rarity.COMMON, mage.cards.r.ReturnFromTheWilds.class)); cards.add(new SetCardInfo("Rootrider Faun", 182, Rarity.COMMON, mage.cards.r.RootriderFaun.class)); cards.add(new SetCardInfo("Rowan's Grim Search", 104, Rarity.COMMON, mage.cards.r.RowansGrimSearch.class));