From 62b7bb553f6269293a67bffcc153bf10e0341a6c Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 17 Jan 2021 10:39:00 -0500 Subject: [PATCH] [KHM] Implemented Return Upon the Tide --- .../src/mage/cards/r/ReturnUponTheTide.java | 82 +++++++++++++++++++ Mage.Sets/src/mage/sets/Kaldheim.java | 1 + 2 files changed, 83 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/ReturnUponTheTide.java diff --git a/Mage.Sets/src/mage/cards/r/ReturnUponTheTide.java b/Mage.Sets/src/mage/cards/r/ReturnUponTheTide.java new file mode 100644 index 00000000000..2d400c528e9 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/ReturnUponTheTide.java @@ -0,0 +1,82 @@ +package mage.cards.r; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.ForetellAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.ElfToken; +import mage.players.Player; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ReturnUponTheTide extends CardImpl { + + public ReturnUponTheTide(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); + + // Return target creature card from your graveyard to the battlefield. If it's an Elf, create two 1/1 green Elf Warrior creature tokens. + this.getSpellAbility().addEffect(new ReturnUponTheTideEffect()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); + + // Foretell {3}{B} + this.addAbility(new ForetellAbility(this, "{3}{B}")); + } + + private ReturnUponTheTide(final ReturnUponTheTide card) { + super(card); + } + + @Override + public ReturnUponTheTide copy() { + return new ReturnUponTheTide(this); + } +} + +class ReturnUponTheTideEffect extends OneShotEffect { + + ReturnUponTheTideEffect() { + super(Outcome.Benefit); + staticText = "Return target creature card from your graveyard to the battlefield. " + + "If it's an Elf, create two 1/1 green Elf Warrior creature tokens."; + } + + private ReturnUponTheTideEffect(final ReturnUponTheTideEffect effect) { + super(effect); + } + + @Override + public ReturnUponTheTideEffect copy() { + return new ReturnUponTheTideEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Card card = game.getCard(source.getFirstTarget()); + if (player == null || card == null) { + return false; + } + player.moveCards(card, Zone.BATTLEFIELD, source, game); + Permanent permanent = game.getPermanent(card.getId()); + if (permanent == null) { + return false; + } + if (permanent.hasSubtype(SubType.ELF, game)) { + new ElfToken().putOntoBattlefield(2, game, source, player.getId()); + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/Kaldheim.java b/Mage.Sets/src/mage/sets/Kaldheim.java index 45bacf5895e..500af335b3f 100644 --- a/Mage.Sets/src/mage/sets/Kaldheim.java +++ b/Mage.Sets/src/mage/sets/Kaldheim.java @@ -210,6 +210,7 @@ public final class Kaldheim extends ExpansionSet { cards.add(new SetCardInfo("Reckless Crew", 148, Rarity.RARE, mage.cards.r.RecklessCrew.class)); cards.add(new SetCardInfo("Renegade Reaper", 386, Rarity.UNCOMMON, mage.cards.r.RenegadeReaper.class)); cards.add(new SetCardInfo("Replicating Ring", 244, Rarity.UNCOMMON, mage.cards.r.ReplicatingRing.class)); + cards.add(new SetCardInfo("Return Upon the Tide", 106, Rarity.UNCOMMON, mage.cards.r.ReturnUponTheTide.class)); cards.add(new SetCardInfo("Revitalize", 23, Rarity.COMMON, mage.cards.r.Revitalize.class)); cards.add(new SetCardInfo("Rimewood Falls", 266, Rarity.COMMON, mage.cards.r.RimewoodFalls.class)); cards.add(new SetCardInfo("Rise of the Dread Marn", 107, Rarity.RARE, mage.cards.r.RiseOfTheDreadMarn.class));