package magic.model.trigger;
import magic.model.MagicCounterType;
import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.action.ChangeCountersAction;
import magic.model.action.SacrificeAction;
import magic.model.choice.MagicMayChoice;
import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent;
import magic.model.target.MagicSacrificeTargetPicker;
public class DevourTrigger extends EntersBattlefieldTrigger {
private final int amount;
public DevourTrigger(final int aAmount) {
super(MagicTrigger.REPLACEMENT);
amount = aAmount;
}
@Override
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent perm, final MagicPayedCost payedCost) {
return new MagicEvent(
perm,
new MagicMayChoice(
"Sacrifice a creature to " + perm + "?",
MagicTargetChoice.ANOTHER_CREATURE_YOU_CONTROL
),
MagicSacrificeTargetPicker.create(),
this,
"You may$ sacrifice a creature$ to SN."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
if (event.isYes()) {
event.processTargetPermanent(game, (final MagicPermanent creature) -> {
final MagicPermanent permanent = event.getPermanent();
game.doAction(new SacrificeAction(creature));
game.doAction(new ChangeCountersAction(
permanent,
MagicCounterType.PlusOne,
amount
));
game.addEvent(executeTrigger(
game,
permanent,
MagicPayedCost.NO_COST
));
});
}
}
}