From 950aacd6fc95fb2ace44d3c896f18075758305f5 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 5 Nov 2021 09:31:54 -0400 Subject: [PATCH] [VOW] Implemented Sanguine Statuette --- .../src/mage/cards/s/SanguineStatuette.java | 56 +++++++++++++++++++ .../src/mage/sets/InnistradCrimsonVow.java | 1 + .../SacrificePermanentTriggeredAbility.java | 6 +- 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/s/SanguineStatuette.java diff --git a/Mage.Sets/src/mage/cards/s/SanguineStatuette.java b/Mage.Sets/src/mage/cards/s/SanguineStatuette.java new file mode 100644 index 00000000000..e932a5869f7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SanguineStatuette.java @@ -0,0 +1,56 @@ +package mage.cards.s; + +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SacrificePermanentTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.game.permanent.token.BloodToken; +import mage.game.permanent.token.custom.CreatureToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SanguineStatuette extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.BLOOD, "a Blood token"); + + static { + filter.add(TokenPredicate.TRUE); + } + + public SanguineStatuette(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{R}"); + + // When Sanguine Statuette enters the battlefield, create a Blood token. + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BloodToken()))); + + // Whenever you sacrifice a Blood token, you may have Sanguine Statuette become a 3/3 Vampire artifact creature with haste until end of turn. + this.addAbility(new SacrificePermanentTriggeredAbility(new BecomesCreatureSourceEffect( + new CreatureToken(3, 3, "3/3 Vampire artifact creature with haste") + .withType(CardType.ARTIFACT) + .withSubType(SubType.VAMPIRE) + .withAbility(HasteAbility.getInstance()), + "", Duration.EndOfTurn + ), filter, false, true)); + } + + private SanguineStatuette(final SanguineStatuette card) { + super(card); + } + + @Override + public SanguineStatuette copy() { + return new SanguineStatuette(this); + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index 4e771af2766..c63cc54222d 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -153,6 +153,7 @@ public final class InnistradCrimsonVow extends ExpansionSet { cards.add(new SetCardInfo("Rot-Tide Gargantua", 129, Rarity.COMMON, mage.cards.r.RotTideGargantua.class)); cards.add(new SetCardInfo("Runebound Wolf", 176, Rarity.UNCOMMON, mage.cards.r.RuneboundWolf.class)); cards.add(new SetCardInfo("Sanctify", 33, Rarity.COMMON, mage.cards.s.Sanctify.class)); + cards.add(new SetCardInfo("Sanguine Statuette", 177, Rarity.UNCOMMON, mage.cards.s.SanguineStatuette.class)); cards.add(new SetCardInfo("Savage Packmate", 234, Rarity.UNCOMMON, mage.cards.s.SavagePackmate.class)); cards.add(new SetCardInfo("Sawblade Slinger", 217, Rarity.UNCOMMON, mage.cards.s.SawbladeSlinger.class)); cards.add(new SetCardInfo("Scattered Thoughts", 74, Rarity.COMMON, mage.cards.s.ScatteredThoughts.class)); diff --git a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java index 8747f3c093d..2a0925c3340 100644 --- a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java @@ -27,7 +27,11 @@ public class SacrificePermanentTriggeredAbility extends TriggeredAbilityImpl { } public SacrificePermanentTriggeredAbility(Effect effect, FilterPermanent filter, boolean setTargetPointer) { - super(Zone.BATTLEFIELD, effect); + this(effect, filter, setTargetPointer, false); + } + + public SacrificePermanentTriggeredAbility(Effect effect, FilterPermanent filter, boolean setTargetPointer, boolean optional) { + super(Zone.BATTLEFIELD, effect, optional); setLeavesTheBattlefieldTrigger(true); this.filter = filter; this.setTargetPointer = setTargetPointer;