package magic.model.event;
import java.util.Arrays;
import magic.model.MagicCard;
import magic.model.MagicCardDefinition;
import magic.model.MagicCounterType;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicManaCost;
import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.action.ChangeCountersAction;
import magic.model.choice.MagicTargetChoice;
import magic.model.condition.MagicCondition;
import magic.model.target.MagicPumpTargetPicker;
public class MagicScavengeActivation extends MagicCardAbilityActivation {
private static final MagicCondition[] COND = new MagicCondition[]{ MagicCondition.SORCERY_CONDITION };
private static final MagicActivationHints HINT = new MagicActivationHints(MagicTiming.Pump,true);
final MagicManaCost cost;
final int power;
public MagicScavengeActivation(final MagicCardDefinition aCdef, final MagicManaCost aCost) {
super(
COND,
HINT,
"Scavenge"
);
cost = aCost;
power = aCdef.getCardPower();
}
@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,
MagicTargetChoice.POS_TARGET_CREATURE,
MagicPumpTargetPicker.create(),
power,
this,
"Put RN +1/+1 counters on target creature$."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
event.processTargetPermanent(game, (final MagicPermanent perm) ->
game.doAction(new ChangeCountersAction(
perm,
MagicCounterType.PlusOne,
event.getRefInt()
))
);
}
}