choice to exert should not go on the stack, for #1092
parent
558852b8eb
commit
61e4d939a5
|
@ -1034,8 +1034,8 @@ public enum MagicAbility {
|
|||
ExertTrigger("You may exert SN as it attacks. When you do, " + ARG.EFFECT, 10) {
|
||||
@Override
|
||||
protected void addAbilityImpl(final MagicAbilityStore card, final Matcher arg) {
|
||||
final MagicSourceEvent sourceEvent = MagicRuleEventAction.create("You may exert SN. If you do, " + ARG.effect(arg));
|
||||
card.add(ThisAttacksTrigger.create(sourceEvent));
|
||||
final MagicSourceEvent sourceEvent = MagicRuleEventAction.create(ARG.effect(arg));
|
||||
card.add(ThisAttacksTrigger.exert(sourceEvent));
|
||||
}
|
||||
},
|
||||
CreatureBlocksEffect("When(ever)? " + ARG.WORDRUN + " blocks, " + ARG.EFFECT, 10) {
|
||||
|
|
|
@ -5,6 +5,7 @@ public enum MagicPermanentState {
|
|||
Tapped("tapped", "{T}"),
|
||||
Summoned("summoned", "{n}"),
|
||||
DoesNotUntapDuringNext("doesn't untap during its controller's next untap step", "{s}"),
|
||||
Exerted("exerted", ""),
|
||||
Regenerated("regenerated", "{r}"),
|
||||
CannotBeRegenerated("can't be regenerated", "{~r}"),
|
||||
Attacking("attacking", "{c}"),
|
||||
|
|
|
@ -15,9 +15,14 @@ public class MagicExertEvent extends MagicEvent {
|
|||
);
|
||||
}
|
||||
|
||||
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) ->
|
||||
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> {
|
||||
game.doAction(ChangeStateAction.Set(
|
||||
event.getPermanent(),
|
||||
MagicPermanentState.Exerted
|
||||
));
|
||||
game.doAction(ChangeStateAction.Set(
|
||||
event.getPermanent(),
|
||||
MagicPermanentState.DoesNotUntapDuringNext
|
||||
));
|
||||
};
|
||||
}
|
||||
|
|
|
@ -4,6 +4,9 @@ import magic.model.MagicGame;
|
|||
import magic.model.MagicPermanent;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSourceEvent;
|
||||
import magic.model.event.MagicExertEvent;
|
||||
import magic.model.choice.MagicMayChoice;
|
||||
import magic.model.action.EnqueueTriggerAction;
|
||||
|
||||
public abstract class ThisAttacksTrigger extends AttacksTrigger {
|
||||
public ThisAttacksTrigger(final int priority) {
|
||||
|
@ -25,4 +28,25 @@ public abstract class ThisAttacksTrigger extends AttacksTrigger {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static ThisAttacksTrigger exert(final MagicSourceEvent sourceEvent) {
|
||||
return new ThisAttacksTrigger(MagicTrigger.REPLACEMENT) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent attacker) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
new MagicMayChoice("Exert " + permanent + "?"),
|
||||
this,
|
||||
"PN may$ exert SN as it attacks."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
game.addEvent(new MagicExertEvent(event.getPermanent()));
|
||||
game.doAction(new EnqueueTriggerAction(sourceEvent.getTriggerEvent(event.getPermanent())));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue