package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.MagicSource;
import magic.model.action.AddTriggerAction;
import magic.model.action.ChangeCardDestinationAction;
import magic.model.action.MoveCardAction;
import magic.model.choice.MagicMayChoice;
import magic.model.choice.MagicTargetChoice;
import magic.model.trigger.DamageIsDealtTrigger;
public class MagicCipherEvent extends MagicEvent {
public MagicCipherEvent(final MagicSource source,final MagicPlayer player) {
super(
source,
player,
new MagicMayChoice(
"Exile " + source + " encoded on a creature you control?",
MagicTargetChoice.A_CREATURE_YOU_CONTROL
),
EVENT_ACTION,
"PN may$ exile SN encoded on a creature$ you control."
);
}
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> {
if (event.isYes()) {
game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Exile));
event.processTargetPermanent(game, (final MagicPermanent creatureToEncode) ->
game.doAction(new AddTriggerAction(
creatureToEncode,
DamageIsDealtTrigger.Cipher(event.getCardOnStack().getCardDefinition())
))
);
} else {
game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Graveyard));
}
game.doAction(new MoveCardAction(event.getCardOnStack()));
};
}