Implemented Finale of Revelation

This commit is contained in:
Evan Kranzler 2019-04-16 19:07:57 -04:00
parent dad325d3d6
commit dffff3b357
2 changed files with 80 additions and 0 deletions

View file

@ -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;
}
}

View file

@ -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));