implemented and tested Finale of Devastation.

This commit is contained in:
antonig@sas.upenn.edu 2019-04-19 02:42:30 -04:00
parent 3fc9856f6f
commit fcf3fb672b
4 changed files with 259 additions and 0 deletions

View file

@ -0,0 +1,80 @@
package mage.cards.f;
import java.util.UUID;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.abilities.Ability;
import mage.constants.Outcome;
import mage.game.Game;
import mage.filter.FilterCard;
import mage.filter.common.FilterCreaturePermanent;
import mage.constants.CardType;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.abilities.effects.common.search.SearchLibraryGraveyardWithLessCMCPutIntoPlay;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.constants.Duration;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.HasteAbility;
/**
*
* @author antoni-g
*/
public final class FinaleOfDevastation extends CardImpl {
private static final FilterCard filter = new FilterCard("creature");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
}
public FinaleOfDevastation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}{G}");
// Search your library and/or graveyard for a creature card with converted mana cost X or less and put it onto the battlefield. If you search your library this way, shuffle it.
this.getSpellAbility().addEffect(new SearchLibraryGraveyardWithLessCMCPutIntoPlay(filter));
// If X is 10 or more, creatures you control get +X/+X and gain haste until end of turn.
this.getSpellAbility().addEffect(new FinaleOfDevastationEffect());
}
private FinaleOfDevastation(final FinaleOfDevastation card) {
super(card);
}
@Override
public FinaleOfDevastation copy() {
return new FinaleOfDevastation(this);
}
}
class FinaleOfDevastationEffect extends OneShotEffect {
FinaleOfDevastationEffect() {
super(Outcome.Benefit);
staticText = "If X is 10 or more, creatures you control get +X/+X and gain haste until end of turn.";
}
private FinaleOfDevastationEffect(final FinaleOfDevastationEffect effect) {
super(effect);
}
@Override
public FinaleOfDevastationEffect copy() {
return new FinaleOfDevastationEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
int xValue = source.getManaCostsToPay().getX();
if (xValue >= 10) {
ContinuousEffect effect1 = new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn);
game.addEffect(effect1, source);
ContinuousEffect effect2 = new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent());
game.addEffect(effect2, source);
}
return true;
}
}

View file

@ -89,6 +89,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 Devastation", 160, Rarity.MYTHIC, mage.cards.f.FinaleOfDevastation.class));
cards.add(new SetCardInfo("Finale of Glory", 12, Rarity.MYTHIC, mage.cards.f.FinaleOfGlory.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));