From a19fd3465bed0aecaf038e78d23e1329ba43ba06 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Mon, 3 Feb 2025 11:44:18 -0500 Subject: [PATCH] [DFT] Implement Rise from the Wreck --- .../src/mage/cards/r/RiseFromTheWreck.java | 54 +++++++++++++++++++ Mage.Sets/src/mage/sets/Aetherdrift.java | 1 + 2 files changed, 55 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RiseFromTheWreck.java diff --git a/Mage.Sets/src/mage/cards/r/RiseFromTheWreck.java b/Mage.Sets/src/mage/cards/r/RiseFromTheWreck.java new file mode 100644 index 00000000000..e388e7f6066 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RiseFromTheWreck.java @@ -0,0 +1,54 @@ +package mage.cards.r; + +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.predicate.mageobject.NoAbilityPredicate; +import mage.target.common.TargetCardInYourGraveyard; +import mage.target.targetpointer.EachTargetPointer; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RiseFromTheWreck extends CardImpl { + + private static final FilterCard filter = new FilterCard("Mount card"); + private static final FilterCard filter2 = new FilterCard("Vehicle card"); + private static final FilterCard filter3 = new FilterCard("creature card with no abilities"); + + static { + filter.add(SubType.MOUNT.getPredicate()); + filter2.add(SubType.VEHICLE.getPredicate()); + filter3.add(NoAbilityPredicate.instance); + } + + public RiseFromTheWreck(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}"); + + // Return up to one target creature card, up to one target Mount card, up to one target Vehicle card, and up to one target creature card with no abilities from your graveyard to your hand. + this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect() + .setTargetPointer(new EachTargetPointer()) + .setText("return up to one target creature card, up to one target Mount card, " + + "up to one target Vehicle card, and up to one target creature card " + + "with no abilities from your graveyard to your hand")); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_CREATURE)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, filter)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, filter2)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, filter3)); + } + + private RiseFromTheWreck(final RiseFromTheWreck card) { + super(card); + } + + @Override + public RiseFromTheWreck copy() { + return new RiseFromTheWreck(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index eb2773ae51f..f7805ae7a70 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -168,6 +168,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Regal Imperiosaur", 177, Rarity.RARE, mage.cards.r.RegalImperiosaur.class)); cards.add(new SetCardInfo("Ride's End", 25, Rarity.COMMON, mage.cards.r.RidesEnd.class)); cards.add(new SetCardInfo("Ripclaw Wrangler", 101, Rarity.COMMON, mage.cards.r.RipclawWrangler.class)); + cards.add(new SetCardInfo("Rise from the Wreck", 178, Rarity.UNCOMMON, mage.cards.r.RiseFromTheWreck.class)); cards.add(new SetCardInfo("Risen Necroregent", 102, Rarity.UNCOMMON, mage.cards.r.RisenNecroregent.class)); cards.add(new SetCardInfo("Risky Shortcut", 103, Rarity.COMMON, mage.cards.r.RiskyShortcut.class)); cards.add(new SetCardInfo("Riverpyre Verge", 260, Rarity.RARE, mage.cards.r.RiverpyreVerge.class));