fix bug where every player state change except for Exhausted did not end
parent
d99c28aeaf
commit
3e830fac90
|
@ -22,27 +22,40 @@ public class MagicChangePlayerStateAction extends MagicAction {
|
||||||
@Override
|
@Override
|
||||||
public void doAction(final MagicGame game) {
|
public void doAction(final MagicGame game) {
|
||||||
if (player.hasState(state)) {
|
if (player.hasState(state)) {
|
||||||
return;
|
// do nothing
|
||||||
}
|
} else if (state == MagicPlayerState.Exhausted) {
|
||||||
game.doAction(new MagicAddStaticAction(new MagicStatic(MagicLayer.Player) {
|
// no duration, manually removed
|
||||||
@Override
|
game.doAction(new MagicAddStaticAction(new MagicStatic(MagicLayer.Player) {
|
||||||
public void modPlayer(
|
@Override
|
||||||
final MagicPermanent source,
|
public void modPlayer(
|
||||||
final MagicPlayer aPlayer) {
|
final MagicPermanent source,
|
||||||
if (player.getId() == aPlayer.getId()) {
|
final MagicPlayer aPlayer) {
|
||||||
//remove Exhausted state during Untap as MagicUntapPhase stores a copy of the state at begin step
|
if (player.getId() == aPlayer.getId()) {
|
||||||
if (state == MagicPlayerState.Exhausted && aPlayer.getGame().isPhase(MagicPhaseType.Untap)) {
|
// remove Exhausted state during Untap as MagicUntapPhase
|
||||||
game.addDelayedAction(new MagicRemoveStaticAction(this));
|
// stores a copy of the state at begin step of untap phase
|
||||||
return;
|
if (aPlayer.getGame().isPhase(MagicPhaseType.Untap)) {
|
||||||
} else {
|
game.addDelayedAction(new MagicRemoveStaticAction(this));
|
||||||
|
} else {
|
||||||
|
aPlayer.setState(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
// until end of turn
|
||||||
|
game.doAction(new MagicAddStaticAction(new MagicStatic(MagicLayer.Player, MagicStatic.UntilEOT) {
|
||||||
|
@Override
|
||||||
|
public void modPlayer(
|
||||||
|
final MagicPermanent source,
|
||||||
|
final MagicPlayer aPlayer) {
|
||||||
|
if (player.getId() == aPlayer.getId()) {
|
||||||
aPlayer.setState(state);
|
aPlayer.setState(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}));
|
||||||
}));
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void undoAction(final MagicGame game) {
|
public void undoAction(final MagicGame game) {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue