magarena/src/magic/model/event/MagicSpellCastEvent.java

42 lines
1.4 KiB
Java

package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicType;
import magic.model.stack.MagicCardOnStack;
import magic.model.stack.MagicItemOnStack;
import magic.model.trigger.MagicTriggerType;
import magic.model.trigger.ThisSpellIsCastTrigger;
public class MagicSpellCastEvent extends MagicEvent {
public MagicSpellCastEvent(final MagicItemOnStack itemOnStack) {
super(
itemOnStack.getEvent().getSource(),
itemOnStack,
EVENT_ACTION,
""
);
}
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> {
final MagicItemOnStack itemOnStack = event.getRefItemOnStack();
// execute spell is cast triggers
for (final ThisSpellIsCastTrigger trigger : itemOnStack.getCardDefinition().getSpellIsCastTriggers()) {
game.executeTrigger(
trigger,
MagicPermanent.NONE,
itemOnStack.getSource(),
(MagicCardOnStack)itemOnStack
);
}
// execute other spell is cast triggers
game.executeTrigger(MagicTriggerType.WhenOtherSpellIsCast,itemOnStack);
itemOnStack.getController().incSpellsCast();
if (!itemOnStack.hasType(MagicType.Creature)){
itemOnStack.getController().incNonCreatureSpellsCast();
}
};
}