[VOW] Implemented Henrika Domnathi / Henrika, Infernal Seer

This commit is contained in:
Evan Kranzler 2021-11-06 19:18:34 -04:00
parent e9d185a039
commit 79592acfd9
4 changed files with 141 additions and 8 deletions

View file

@ -0,0 +1,63 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.SacrificeAllEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class HenrikaDomnathi extends CardImpl {
public HenrikaDomnathi(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.VAMPIRE);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
this.secondSideCardClazz = mage.cards.h.HenrikaInfernalSeer.class;
// Flying
this.addAbility(FlyingAbility.getInstance());
// At the beginning of combat on your turn, choose one that hasn't been chosen
// Each player sacrifices a creature.
Ability ability = new BeginningOfCombatTriggeredAbility(new SacrificeAllEffect(
1, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
), TargetController.YOU, false);
ability.getModes().setEachModeOnlyOnce(true);
// You draw a card and you lose 1 life.
Mode mode = new Mode(new DrawCardSourceControllerEffect(1).setText("you draw a card"));
mode.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
// Transform Henrika Domnathi.
ability.addEffect(new TransformSourceEffect());
this.addAbility(ability);
}
private HenrikaDomnathi(final HenrikaDomnathi card) {
super(card);
}
@Override
public HenrikaDomnathi copy() {
return new HenrikaDomnathi(this);
}
}

View file

@ -0,0 +1,69 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AbilityPredicate;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class HenrikaInfernalSeer extends CardImpl {
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("creature you control with flying, deathtouch, and/or lifelink");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(Predicates.or(
new AbilityPredicate(FlyingAbility.class),
new AbilityPredicate(DeathtouchAbility.class),
new AbilityPredicate(LifelinkAbility.class)
));
}
public HenrikaInfernalSeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.VAMPIRE);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
this.color.setBlack(true);
this.nightCard = true;
// Flying
this.addAbility(FlyingAbility.getInstance());
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// {1}{B}{B}: Each creature you control with flying, deathtouch, and/or lifelink gets +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostAllEffect(
0, 1, Duration.EndOfTurn, filter, false
), new ManaCostsImpl<>("{1}{B}{B}")));
}
private HenrikaInfernalSeer(final HenrikaInfernalSeer card) {
super(card);
}
@Override
public HenrikaInfernalSeer copy() {
return new HenrikaInfernalSeer(this);
}
}

View file

@ -1,26 +1,25 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.abilities.effects.common.SacrificeAllEffect; import mage.abilities.effects.common.SacrificeAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
*
* @author jonubuu * @author jonubuu
*/ */
public final class InnocentBlood extends CardImpl { public final class InnocentBlood extends CardImpl {
public InnocentBlood(UUID ownerId, CardSetInfo setInfo) { public InnocentBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
// Each player sacrifices a creature. // Each player sacrifices a creature.
this.getSpellAbility().addEffect(new SacrificeAllEffect(1, new FilterControlledCreaturePermanent("creature"))); this.getSpellAbility().addEffect(new SacrificeAllEffect(
1, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
));
} }
private InnocentBlood(final InnocentBlood card) { private InnocentBlood(final InnocentBlood card) {

View file

@ -141,6 +141,8 @@ public final class InnistradCrimsonVow extends ExpansionSet {
cards.add(new SetCardInfo("Hallowed Haunting", 17, Rarity.MYTHIC, mage.cards.h.HallowedHaunting.class)); cards.add(new SetCardInfo("Hallowed Haunting", 17, Rarity.MYTHIC, mage.cards.h.HallowedHaunting.class));
cards.add(new SetCardInfo("Hamlet Vanguard", 201, Rarity.RARE, mage.cards.h.HamletVanguard.class)); cards.add(new SetCardInfo("Hamlet Vanguard", 201, Rarity.RARE, mage.cards.h.HamletVanguard.class));
cards.add(new SetCardInfo("Headless Rider", 118, Rarity.RARE, mage.cards.h.HeadlessRider.class)); cards.add(new SetCardInfo("Headless Rider", 118, Rarity.RARE, mage.cards.h.HeadlessRider.class));
cards.add(new SetCardInfo("Henrika Domnathi", 119, Rarity.MYTHIC, mage.cards.h.HenrikaDomnathi.class));
cards.add(new SetCardInfo("Henrika, Infernal Seer", 119, Rarity.MYTHIC, mage.cards.h.HenrikaInfernalSeer.class));
cards.add(new SetCardInfo("Hero's Downfall", 120, Rarity.UNCOMMON, mage.cards.h.HerosDownfall.class)); cards.add(new SetCardInfo("Hero's Downfall", 120, Rarity.UNCOMMON, mage.cards.h.HerosDownfall.class));
cards.add(new SetCardInfo("Heron of Hope", 18, Rarity.COMMON, mage.cards.h.HeronOfHope.class)); cards.add(new SetCardInfo("Heron of Hope", 18, Rarity.COMMON, mage.cards.h.HeronOfHope.class));
cards.add(new SetCardInfo("Hollowhenge Huntmaster", 187, Rarity.MYTHIC, mage.cards.h.HollowhengeHuntmaster.class)); cards.add(new SetCardInfo("Hollowhenge Huntmaster", 187, Rarity.MYTHIC, mage.cards.h.HollowhengeHuntmaster.class));