diff --git a/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java b/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java new file mode 100644 index 00000000000..8b230e3aca5 --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FinaleOfRevelation.java @@ -0,0 +1,79 @@ +package mage.cards.f; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.ExileSpellEffect; +import mage.abilities.effects.common.UntapLandsEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.game.Game; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FinaleOfRevelation extends CardImpl { + + public FinaleOfRevelation(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}"); + + // Draw X cards. If X is 10 or more, instead shuffle your graveyard into your library, draw X cards, untap up to five lands, and you have no maximum hand size for the rest of the game. + this.getSpellAbility().addEffect(new FinaleOfRevelationEffect()); + + // Exile Finale of Revelation. + this.getSpellAbility().addEffect(ExileSpellEffect.getInstance()); + } + + private FinaleOfRevelation(final FinaleOfRevelation card) { + super(card); + } + + @Override + public FinaleOfRevelation copy() { + return new FinaleOfRevelation(this); + } +} + +class FinaleOfRevelationEffect extends OneShotEffect { + + FinaleOfRevelationEffect() { + super(Outcome.Benefit); + staticText = "Draw X cards. If X is 10 or more, instead shuffle your graveyard into your library, " + + "draw X cards, untap up to five lands, and you have no maximum hand size for the rest of the game."; + } + + private FinaleOfRevelationEffect(final FinaleOfRevelationEffect effect) { + super(effect); + } + + @Override + public FinaleOfRevelationEffect copy() { + return new FinaleOfRevelationEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + int xValue = source.getManaCostsToPay().getX(); + if (xValue <= 10) { + } + player.putCardsOnTopOfLibrary(player.getGraveyard(), game, source, false); + player.shuffleLibrary(source, game); + player.drawCards(xValue, game); + new UntapLandsEffect(5).apply(game, source); + game.addEffect(new MaximumHandSizeControllerEffect( + Integer.MAX_VALUE, Duration.EndOfGame, + MaximumHandSizeControllerEffect.HandSizeModification.SET + ), source); + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WarOfTheSpark.java b/Mage.Sets/src/mage/sets/WarOfTheSpark.java index 86249abfe0a..8556cc40fbe 100644 --- a/Mage.Sets/src/mage/sets/WarOfTheSpark.java +++ b/Mage.Sets/src/mage/sets/WarOfTheSpark.java @@ -85,6 +85,7 @@ public final class WarOfTheSpark extends ExpansionSet { cards.add(new SetCardInfo("Evolution Sage", 159, Rarity.UNCOMMON, mage.cards.e.EvolutionSage.class)); cards.add(new SetCardInfo("Fblthp, the Lost", 50, Rarity.RARE, mage.cards.f.FblthpTheLost.class)); cards.add(new SetCardInfo("Feather, the Redeemed", 197, Rarity.RARE, mage.cards.f.FeatherTheRedeemed.class)); + cards.add(new SetCardInfo("Finale of Revelation", 51, Rarity.MYTHIC, mage.cards.f.FinaleOfRevelation.class)); cards.add(new SetCardInfo("Firemind Vessel", 237, Rarity.UNCOMMON, mage.cards.f.FiremindVessel.class)); cards.add(new SetCardInfo("Flux Channeler", 52, Rarity.UNCOMMON, mage.cards.f.FluxChanneler.class)); cards.add(new SetCardInfo("Forced Landing", 161, Rarity.COMMON, mage.cards.f.ForcedLanding.class));