package magic.model.event; import magic.model.MagicGame; import magic.model.MagicManaCost; import magic.model.MagicPermanent; import magic.model.MagicSource; import magic.model.action.SacrificeAction; import magic.model.choice.MagicTargetChoice; import magic.model.target.MagicSacrificeTargetPicker; import magic.model.target.MagicTargetFilterFactory; public class MagicEmergeCostEvent extends MagicEvent { public MagicEmergeCostEvent(final MagicSource source, final MagicManaCost manaCost) { super( source, source.getController(), new MagicTargetChoice( MagicTargetFilterFactory.CREATURE_YOU_CONTROL_FOR_EMERGE(manaCost), "a creature you control" ), MagicSacrificeTargetPicker.create(), EVENT_ACTION(manaCost), "Sacrifice a creature you control$." ); } public static final MagicEventAction EVENT_ACTION(final MagicManaCost manaCost) { return (final MagicGame game, final MagicEvent event) -> event.processTargetPermanent(game, (final MagicPermanent permanent) -> { game.doAction(new SacrificeAction(permanent)); game.addFirstEvent(new MagicPayManaCostEvent(event.getSource(), manaCost.reduce(permanent.getConvertedCost()))); }); } }