package magic.model.event;
import java.util.Arrays;
import magic.model.MagicCard;
import magic.model.MagicCardDefinition;
import magic.model.MagicCardDefinitionInit;
import magic.model.MagicColor;
import magic.model.MagicSubType;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicManaCost;
import magic.model.MagicPayedCost;
import magic.model.action.MagicPlayMod;
import magic.model.action.PlayTokenAction;
import magic.model.condition.MagicCondition;
public class MagicEmbalmActivation extends MagicCardAbilityActivation {
private static final MagicCondition[] COND = new MagicCondition[]{ MagicCondition.SORCERY_CONDITION };
private static final MagicActivationHints HINT = new MagicActivationHints(MagicTiming.Token);
private static final MagicCardDefinitionInit EMBALMED = (MagicCardDefinition it) -> {
it.setColors("w");
it.setCost(MagicManaCost.NONE);
it.addSubType(MagicSubType.Zombie);
};
final MagicManaCost cost;
public MagicEmbalmActivation(final MagicManaCost aCost) {
super(
COND,
HINT,
"Embalm"
);
cost = aCost;
}
@Override
public void change(final MagicCardDefinition cdef) {
cdef.addGraveyardAct(this);
}
@Override
public Iterable<? extends MagicEvent> getCostEvent(final MagicCard source) {
return Arrays.asList(
new MagicPayManaCostEvent(source, cost),
new MagicExileSelfEvent(source, MagicLocationType.Graveyard)
);
}
@Override
public MagicEvent getCardEvent(final MagicCard source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
this,
"PN creates a token that's a copy of SN, except it's white, it has no mana cost, and it's a Zombie in addition to its other types."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
game.doAction(new PlayTokenAction(
event.getPlayer(),
MagicCardDefinition.token(
event.getCard(),
EMBALMED
)
));
}
}