diff --git a/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java new file mode 100644 index 0000000000..333bacad6a --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java @@ -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); + } +} diff --git a/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java b/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java new file mode 100644 index 0000000000..184ebb0b4e --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HenrikaInfernalSeer.java @@ -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); + } +} diff --git a/Mage.Sets/src/mage/cards/i/InnocentBlood.java b/Mage.Sets/src/mage/cards/i/InnocentBlood.java index c240985170..c968a46028 100644 --- a/Mage.Sets/src/mage/cards/i/InnocentBlood.java +++ b/Mage.Sets/src/mage/cards/i/InnocentBlood.java @@ -1,26 +1,25 @@ - package mage.cards.i; -import java.util.UUID; import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * * @author jonubuu */ public final class InnocentBlood extends CardImpl { - 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. - 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) { diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index 445c67a84a..4a099c2613 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -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("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("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("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));