mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
fixed priority bug
This commit is contained in:
parent
aa8bae1399
commit
65ed00328e
1 changed files with 31 additions and 25 deletions
|
|
@ -30,7 +30,6 @@ package mage.game;
|
||||||
|
|
||||||
import mage.game.stack.SpellStack;
|
import mage.game.stack.SpellStack;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.net.URLClassLoader;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
@ -301,34 +300,41 @@ public abstract class GameImpl implements Game, Serializable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playPriority(UUID activePlayerId) {
|
public void playPriority(UUID activePlayerId) {
|
||||||
|
state.getPlayers().resetPassed();
|
||||||
while (!isGameOver()) {
|
while (!isGameOver()) {
|
||||||
while (!isGameOver()) {
|
|
||||||
int stackSize = state.getStack().size();
|
|
||||||
state.getPlayers().resetPriority();
|
|
||||||
for (Player player: getPlayerList(activePlayerId)) {
|
for (Player player: getPlayerList(activePlayerId)) {
|
||||||
state.setPriorityPlayerId(player.getId());
|
state.setPriorityPlayerId(player.getId());
|
||||||
while (!player.isPassed() && !isGameOver()) {
|
while (!player.isPassed() && !isGameOver()) {
|
||||||
checkStateAndTriggered();
|
checkStateAndTriggered();
|
||||||
if (isGameOver())
|
if (isGameOver()) return;
|
||||||
return;
|
// resetPassed should be called if player performs any action
|
||||||
player.priority(this);
|
player.priority(this);
|
||||||
if (isGameOver())
|
if (isGameOver()) return;
|
||||||
return;
|
|
||||||
applyEffects();
|
applyEffects();
|
||||||
saveState();
|
saveState();
|
||||||
}
|
}
|
||||||
}
|
if (isGameOver()) return;
|
||||||
//no items have been added to the stack
|
if (allPassed()) {
|
||||||
if (isGameOver() || stackSize == state.getStack().size())
|
if (!state.getStack().isEmpty()) {
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (isGameOver() || state.getStack().isEmpty())
|
|
||||||
break;
|
|
||||||
//20091005 - 115.4
|
//20091005 - 115.4
|
||||||
state.getStack().resolve(this);
|
state.getStack().resolve(this);
|
||||||
applyEffects();
|
applyEffects();
|
||||||
|
state.getPlayers().resetPassed();
|
||||||
saveState();
|
saveState();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean allPassed() {
|
||||||
|
for (Player player: state.getPlayers().values()) {
|
||||||
|
if (!player.isPassed())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue