[FIN] Implement Louisoix's Sacrifice

This commit is contained in:
theelk801 2025-05-26 21:39:26 -04:00 committed by Failure
parent 32f7584033
commit bdd3c3e17c
2 changed files with 64 additions and 0 deletions

View file

@ -0,0 +1,63 @@
package mage.cards.l;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CounterTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.FilterStackObject;
import mage.filter.StaticFilters;
import mage.filter.predicate.Predicate;
import mage.game.Game;
import mage.game.stack.Spell;
import mage.game.stack.StackObject;
import mage.target.TargetStackObject;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class LouisoixsSacrifice extends CardImpl {
private static final FilterStackObject filter
= new FilterStackObject("activated ability, triggered ability, or noncreature spell");
static {
filter.add(LouisoixsSacrificePredicate.instance);
}
public LouisoixsSacrifice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
// As an additional cost to cast this spell, sacrifice a legendary creature or pay {2}.
this.getSpellAbility().addCost(new CompositeCost(
new SacrificeTargetCost(StaticFilters.FILTER_CREATURE_LEGENDARY),
new GenericManaCost(2), "sacrifice a legendary creature or pay {2}"
));
// Counter target activated ability, triggered ability, or noncreature spell.
this.getSpellAbility().addEffect(new CounterTargetEffect());
this.getSpellAbility().addTarget(new TargetStackObject(filter));
}
private LouisoixsSacrifice(final LouisoixsSacrifice card) {
super(card);
}
@Override
public LouisoixsSacrifice copy() {
return new LouisoixsSacrifice(this);
}
}
enum LouisoixsSacrificePredicate implements Predicate<StackObject> {
instance;
@Override
public boolean apply(StackObject input, Game game) {
return !(input instanceof Spell) || !input.isCreature(game);
}
}

View file

@ -274,6 +274,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Lion Heart", 261, Rarity.UNCOMMON, mage.cards.l.LionHeart.class));
cards.add(new SetCardInfo("Locke Cole", 234, Rarity.UNCOMMON, mage.cards.l.LockeCole.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Locke Cole", 499, Rarity.UNCOMMON, mage.cards.l.LockeCole.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Louisoix's Sacrifice", 59, Rarity.RARE, mage.cards.l.LouisoixsSacrifice.class));
cards.add(new SetCardInfo("Machinist's Arsenal", 23, Rarity.RARE, mage.cards.m.MachinistsArsenal.class));
cards.add(new SetCardInfo("Magitek Armor", 24, Rarity.UNCOMMON, mage.cards.m.MagitekArmor.class));
cards.add(new SetCardInfo("Magitek Infantry", 25, Rarity.COMMON, mage.cards.m.MagitekInfantry.class));