use ChangeState for SetBlockersAction
parent
4076301597
commit
ec71eb4f5a
|
@ -3,6 +3,7 @@ package magic.model.action;
|
||||||
import magic.model.MagicGame;
|
import magic.model.MagicGame;
|
||||||
import magic.model.MagicPermanent;
|
import magic.model.MagicPermanent;
|
||||||
import magic.model.MagicPermanentState;
|
import magic.model.MagicPermanentState;
|
||||||
|
import magic.model.trigger.MagicTriggerType;
|
||||||
|
|
||||||
public class SetBlockerAction extends MagicAction {
|
public class SetBlockerAction extends MagicAction {
|
||||||
|
|
||||||
|
@ -19,10 +20,11 @@ public class SetBlockerAction extends MagicAction {
|
||||||
public void doAction(final MagicGame game) {
|
public void doAction(final MagicGame game) {
|
||||||
attacker.addBlockingCreature(blocker);
|
attacker.addBlockingCreature(blocker);
|
||||||
blocker.setBlockedCreature(attacker);
|
blocker.setBlockedCreature(attacker);
|
||||||
blocker.setState(MagicPermanentState.Blocking);
|
game.doAction(ChangeStateAction.Set(blocker,MagicPermanentState.Blocking));
|
||||||
unblocked=!attacker.hasState(MagicPermanentState.Blocked);
|
unblocked=!attacker.hasState(MagicPermanentState.Blocked);
|
||||||
if (unblocked) {
|
if (unblocked) {
|
||||||
attacker.setState(MagicPermanentState.Blocked);
|
game.doAction(ChangeStateAction.Set(attacker, MagicPermanentState.Blocked));
|
||||||
|
game.executeTrigger(MagicTriggerType.WhenBecomesBlocked, attacker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,9 +32,9 @@ public class SetBlockerAction extends MagicAction {
|
||||||
public void undoAction(final MagicGame game) {
|
public void undoAction(final MagicGame game) {
|
||||||
attacker.removeBlockingCreature(blocker);
|
attacker.removeBlockingCreature(blocker);
|
||||||
blocker.setBlockedCreature(MagicPermanent.NONE);
|
blocker.setBlockedCreature(MagicPermanent.NONE);
|
||||||
blocker.clearState(MagicPermanentState.Blocking);
|
game.doAction(ChangeStateAction.Clear(blocker, MagicPermanentState.Blocking));
|
||||||
if (unblocked) {
|
if (unblocked) {
|
||||||
attacker.clearState(MagicPermanentState.Blocked);
|
game.doAction(ChangeStateAction.Clear(attacker, MagicPermanentState.Blocked));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue