[VOW] Implemented Sanguine Statuette

This commit is contained in:
Evan Kranzler 2021-11-05 09:31:54 -04:00
parent 887e7a644e
commit 950aacd6fc
3 changed files with 62 additions and 1 deletions

View file

@ -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);
}
}

View file

@ -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));

View file

@ -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;