From 62aad2bc25c3addc54e7ffacce5996b8c0f34cd8 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 6 Dec 2023 18:21:49 -0500 Subject: [PATCH] [MKM] Implement Curious Cadaver --- .../src/mage/cards/c/CuriousCadaver.java | 49 +++++++++++++++++++ .../src/mage/sets/MurdersAtKarlovManor.java | 1 + .../SacrificePermanentTriggeredAbility.java | 10 +++- 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/c/CuriousCadaver.java diff --git a/Mage.Sets/src/mage/cards/c/CuriousCadaver.java b/Mage.Sets/src/mage/cards/c/CuriousCadaver.java new file mode 100644 index 00000000000..82192240280 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/CuriousCadaver.java @@ -0,0 +1,49 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.common.SacrificePermanentTriggeredAbility; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class CuriousCadaver extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.CLUE, "a Clue"); + + public CuriousCadaver(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}"); + + this.subtype.add(SubType.ZOMBIE); + this.subtype.add(SubType.DETECTIVE); + this.power = new MageInt(3); + this.toughness = new MageInt(1); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // When you sacrifice a Clue, return Curious Cadaver from your graveyard to your hand. + this.addAbility(new SacrificePermanentTriggeredAbility( + Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), filter, false, false + )); + } + + private CuriousCadaver(final CuriousCadaver card) { + super(card); + } + + @Override + public CuriousCadaver copy() { + return new CuriousCadaver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java b/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java index 696748bf4be..e4fba98da4f 100644 --- a/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java +++ b/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java @@ -22,6 +22,7 @@ public final class MurdersAtKarlovManor extends ExpansionSet { this.hasBoosters = false; // temporary cards.add(new SetCardInfo("Benthic Criminologists", 40, Rarity.COMMON, mage.cards.b.BenthicCriminologists.class)); + cards.add(new SetCardInfo("Curious Cadaver", 194, Rarity.UNCOMMON, mage.cards.c.CuriousCadaver.class)); cards.add(new SetCardInfo("Deduce", 52, Rarity.COMMON, mage.cards.d.Deduce.class)); cards.add(new SetCardInfo("Fanatical Strength", 159, Rarity.COMMON, mage.cards.f.FanaticalStrength.class)); cards.add(new SetCardInfo("Forest", 276, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java index c82b3ab92f3..09ed0aa4cf8 100644 --- a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java @@ -32,8 +32,14 @@ public class SacrificePermanentTriggeredAbility extends TriggeredAbilityImpl { } public SacrificePermanentTriggeredAbility(Effect effect, FilterPermanent filter, boolean setTargetPointer, boolean optional) { - super(Zone.BATTLEFIELD, effect, optional); - setLeavesTheBattlefieldTrigger(true); + this(Zone.BATTLEFIELD, effect, filter, setTargetPointer, optional); + } + + public SacrificePermanentTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean setTargetPointer, boolean optional) { + super(zone, effect, optional); + if (Zone.BATTLEFIELD.match(zone)) { + setLeavesTheBattlefieldTrigger(true); + } this.filter = filter; this.setTargetPointer = setTargetPointer; setTriggerPhrase("Whenever you sacrifice " + CardUtil.addArticle(filter.getMessage()) + ", ");