From 2a4a266cff7e5c3cd8b3fa22366e20378ec170bd Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 6 Sep 2020 21:39:34 -0400 Subject: [PATCH] [ZNR] Implemented Valakut Awakening / Valakut Stoneforge --- .../src/mage/cards/v/ValakutAwakening.java | 79 +++++++++++++++++++ .../src/mage/cards/v/ValakutStoneforge.java | 37 +++++++++ Mage.Sets/src/mage/sets/ZendikarRising.java | 2 + 3 files changed, 118 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/v/ValakutAwakening.java create mode 100644 Mage.Sets/src/mage/cards/v/ValakutStoneforge.java diff --git a/Mage.Sets/src/mage/cards/v/ValakutAwakening.java b/Mage.Sets/src/mage/cards/v/ValakutAwakening.java new file mode 100644 index 00000000000..cf591f4a6aa --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/ValakutAwakening.java @@ -0,0 +1,79 @@ +package mage.cards.v; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetCard; +import mage.target.common.TargetCardInHand; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ValakutAwakening extends CardImpl { + + public ValakutAwakening(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); + + this.modalDFC = true; + this.secondSideCardClazz = mage.cards.v.ValakutStoneforge.class; + + // Put any number of cards from your hand on the bottom of your library, then draw that many cards plus one. + this.getSpellAbility().addEffect(new ValakutAwakeningEffect()); + } + + private ValakutAwakening(final ValakutAwakening card) { + super(card); + } + + @Override + public ValakutAwakening copy() { + return new ValakutAwakening(this); + } +} + +class ValakutAwakeningEffect extends OneShotEffect { + + ValakutAwakeningEffect() { + super(Outcome.Benefit); + staticText = "put any number of cards from your hand on the bottom of your library, " + + "then draw that many cards plus one"; + } + + private ValakutAwakeningEffect(final ValakutAwakeningEffect effect) { + super(effect); + } + + @Override + public ValakutAwakeningEffect copy() { + return new ValakutAwakeningEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + TargetCard targetCard = new TargetCardInHand( + 0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CARDS + ); + player.choose(outcome, player.getHand(), targetCard, game); + Cards cards = new CardsImpl(targetCard.getTargets()); + if (cards.isEmpty()) { + return false; + } + player.putCardsOnBottomOfLibrary(cards, game, source, true); + player.drawCards(cards.size() + 1, source.getSourceId(), game); + return true; + } +} diff --git a/Mage.Sets/src/mage/cards/v/ValakutStoneforge.java b/Mage.Sets/src/mage/cards/v/ValakutStoneforge.java new file mode 100644 index 00000000000..add770d138e --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/ValakutStoneforge.java @@ -0,0 +1,37 @@ +package mage.cards.v; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.RedManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ValakutStoneforge extends CardImpl { + + public ValakutStoneforge(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.modalDFC = true; + this.nightCard = true; + + // Valakut Stoneforge enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + + // {T}: Add {R}. + this.addAbility(new RedManaAbility()); + } + + private ValakutStoneforge(final ValakutStoneforge card) { + super(card); + } + + @Override + public ValakutStoneforge copy() { + return new ValakutStoneforge(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ZendikarRising.java b/Mage.Sets/src/mage/sets/ZendikarRising.java index e99b22a4113..c27f75f4d23 100644 --- a/Mage.Sets/src/mage/sets/ZendikarRising.java +++ b/Mage.Sets/src/mage/sets/ZendikarRising.java @@ -241,6 +241,8 @@ public final class ZendikarRising extends ExpansionSet { cards.add(new SetCardInfo("Umara Skyfalls", 86, Rarity.UNCOMMON, mage.cards.u.UmaraSkyfalls.class)); cards.add(new SetCardInfo("Umara Wizard", 86, Rarity.UNCOMMON, mage.cards.u.UmaraWizard.class)); cards.add(new SetCardInfo("Utility Knife", 256, Rarity.COMMON, mage.cards.u.UtilityKnife.class)); + cards.add(new SetCardInfo("Valakut Awakening", 174, Rarity.RARE, mage.cards.v.ValakutAwakening.class)); + cards.add(new SetCardInfo("Valakut Stoneforge", 174, Rarity.RARE, mage.cards.v.ValakutStoneforge.class)); cards.add(new SetCardInfo("Vastwood Surge", 217, Rarity.UNCOMMON, mage.cards.v.VastwoodSurge.class)); cards.add(new SetCardInfo("Veteran Adventurer", 218, Rarity.UNCOMMON, mage.cards.v.VeteranAdventurer.class)); cards.add(new SetCardInfo("Windrider Wizard", 87, Rarity.UNCOMMON, mage.cards.w.WindriderWizard.class));