From 5adea646966bb35c55a3daac9b123534f9df70e3 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 7 Nov 2021 08:59:17 -0500 Subject: [PATCH] [VOW] Implemented Wolfkin Outcast / Wedding Crasher --- .../src/mage/cards/w/WeddingCrasher.java | 57 ++++++++++++++++ .../src/mage/cards/w/WolfkinOutcast.java | 67 +++++++++++++++++++ .../src/mage/sets/InnistradCrimsonVow.java | 2 + 3 files changed, 126 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/w/WeddingCrasher.java create mode 100644 Mage.Sets/src/mage/cards/w/WolfkinOutcast.java diff --git a/Mage.Sets/src/mage/cards/w/WeddingCrasher.java b/Mage.Sets/src/mage/cards/w/WeddingCrasher.java new file mode 100644 index 00000000000..4dfe68c8dee --- /dev/null +++ b/Mage.Sets/src/mage/cards/w/WeddingCrasher.java @@ -0,0 +1,57 @@ +package mage.cards.w; + +import mage.MageInt; +import mage.abilities.common.DiesThisOrAnotherCreatureTriggeredAbility; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.NightboundAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class WeddingCrasher extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent("Wolf or Werewolf you control"); + + static { + filter.add(Predicates.or( + SubType.WOLF.getPredicate(), + SubType.WEREWOLF.getPredicate() + )); + } + + public WeddingCrasher(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); + + this.subtype.add(SubType.WEREWOLF); + this.power = new MageInt(6); + this.toughness = new MageInt(5); + this.color.setGreen(true); + this.nightCard = true; + + // Whenever Wedding Crasher or another Wolf or Werewolf you control dies, draw a card. + this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility( + new DrawCardSourceControllerEffect(1), false, filter + )); + + // Nightbound + this.addAbility(new NightboundAbility()); + } + + private WeddingCrasher(final WeddingCrasher card) { + super(card); + } + + @Override + public WeddingCrasher copy() { + return new WeddingCrasher(this); + } +} diff --git a/Mage.Sets/src/mage/cards/w/WolfkinOutcast.java b/Mage.Sets/src/mage/cards/w/WolfkinOutcast.java new file mode 100644 index 00000000000..21595ce0f23 --- /dev/null +++ b/Mage.Sets/src/mage/cards/w/WolfkinOutcast.java @@ -0,0 +1,67 @@ +package mage.cards.w; + +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; +import mage.abilities.keyword.DayboundAbility; +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 mage.filter.predicate.Predicates; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class WolfkinOutcast extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent("you control a Wolf or Werewolf"); + + static { + filter.add(Predicates.or( + SubType.WOLF.getPredicate(), + SubType.WEREWOLF.getPredicate() + )); + } + + private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + private static final Hint hint = new ConditionHint( + condition, "You control a Wolf or Werewolf" + ); + + public WolfkinOutcast(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WEREWOLF); + this.power = new MageInt(5); + this.toughness = new MageInt(4); + this.secondSideCardClazz = mage.cards.w.WeddingCrasher.class; + + // This spell costs {2} less to cast if you control a Wolf or Werewolf. + this.addAbility(new SimpleStaticAbility( + Zone.ALL, new SpellCostReductionSourceEffect(2, condition).setCanWorksOnStackOnly(true) + ).setRuleAtTheTop(true)); + + // Daybound + this.addAbility(new DayboundAbility()); + } + + private WolfkinOutcast(final WolfkinOutcast card) { + super(card); + } + + @Override + public WolfkinOutcast copy() { + return new WolfkinOutcast(this); + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index 626bd753fa3..ac71a22490b 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -276,6 +276,7 @@ public final class InnistradCrimsonVow extends ExpansionSet { cards.add(new SetCardInfo("Weary Prisoner", 184, Rarity.COMMON, mage.cards.w.WearyPrisoner.class)); cards.add(new SetCardInfo("Weaver of Blossoms", 226, Rarity.COMMON, mage.cards.w.WeaverOfBlossoms.class)); cards.add(new SetCardInfo("Wedding Announcement", 45, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class)); + cards.add(new SetCardInfo("Wedding Crasher", 229, Rarity.UNCOMMON, mage.cards.w.WeddingCrasher.class)); cards.add(new SetCardInfo("Wedding Festivity", 45, Rarity.RARE, mage.cards.w.WeddingFestivity.class)); cards.add(new SetCardInfo("Wedding Invitation", 260, Rarity.COMMON, mage.cards.w.WeddingInvitation.class)); cards.add(new SetCardInfo("Wedding Security", 138, Rarity.UNCOMMON, mage.cards.w.WeddingSecurity.class)); @@ -283,6 +284,7 @@ public final class InnistradCrimsonVow extends ExpansionSet { cards.add(new SetCardInfo("Whispering Wizard", 88, Rarity.UNCOMMON, mage.cards.w.WhisperingWizard.class)); cards.add(new SetCardInfo("Winged Portent", 89, Rarity.RARE, mage.cards.w.WingedPortent.class)); cards.add(new SetCardInfo("Witch's Web", 227, Rarity.COMMON, mage.cards.w.WitchsWeb.class)); + cards.add(new SetCardInfo("Wolfkin Outcast", 229, Rarity.UNCOMMON, mage.cards.w.WolfkinOutcast.class)); cards.add(new SetCardInfo("Wrathful Jailbreaker", 184, Rarity.COMMON, mage.cards.w.WrathfulJailbreaker.class)); cards.add(new SetCardInfo("Wretched Throng", 91, Rarity.COMMON, mage.cards.w.WretchedThrong.class));