diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index 10db310de..799189bb8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -21,7 +21,7 @@ public class GameState { private Map> _inPlay = new HashMap>(); private String _currentPlayerId; - private Phase _currentPhase; + private Phase _currentPhase = Phase.GAME_SETUP; private int _twilightPool; private int _moveCount; @@ -73,6 +73,7 @@ public class GameState { if (_losers.size() + 1 == _playerOrder.getAllPlayers().size()) { List allPlayers = new LinkedList(_playerOrder.getAllPlayers()); allPlayers.removeAll(_losers); + _winnerPlayerId = allPlayers.get(0); return allPlayers.get(0); } return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java index 240173082..4a35f6407 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java @@ -122,20 +122,23 @@ public class DefaultLotroGame implements LotroGame { @Override public void checkWinLoseConditions() { - // Ring-bearer death - if (!Filters.canSpot(getGameState(), getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER))) { - playerLost(getGameState().getCurrentPlayerId()); - } - // Ring-bearer corruption - PhysicalCard ringBearer = Filters.findFirstActive(getGameState(), getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)); - int ringBearerResistance = ringBearer.getBlueprint().getResistance(); - if (getGameState().getBurdens() >= ringBearerResistance) { - playerLost(getGameState().getCurrentPlayerId()); - } - // Fellowship in regroup at the last site - if (getGameState().getCurrentPhase() == Phase.REGROUP - && getGameState().getCurrentSiteNumber() == 9) { - playerWon(getGameState().getCurrentPlayerId()); + GameState gameState = getGameState(); + if (gameState != null && gameState.getCurrentPhase() != Phase.GAME_SETUP) { + // Ring-bearer death + if (!Filters.canSpot(gameState, getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER))) { + playerLost(getGameState().getCurrentPlayerId()); + } + // Ring-bearer corruption + PhysicalCard ringBearer = Filters.findFirstActive(getGameState(), getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)); + int ringBearerResistance = ringBearer.getBlueprint().getResistance(); + if (getGameState().getBurdens() >= ringBearerResistance) { + playerLost(getGameState().getCurrentPlayerId()); + } + // Fellowship in regroup at the last site + if (getGameState().getCurrentPhase() == Phase.REGROUP + && getGameState().getCurrentSiteNumber() == 9) { + playerWon(getGameState().getCurrentPlayerId()); + } } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/FirstPlayerPlaysSiteGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/FirstPlayerPlaysSiteGameProcess.java index 2b78a10af..65f573e6f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/FirstPlayerPlaysSiteGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/FirstPlayerPlaysSiteGameProcess.java @@ -1,6 +1,5 @@ package com.gempukku.lotro.logic.timing.processes.pregame; -import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -23,7 +22,6 @@ public class FirstPlayerPlaysSiteGameProcess implements GameProcess { public void process() { GameState gameState = _game.getGameState(); PhysicalCard firstSite = Filters.filter(gameState.getAdventureDeck(gameState.getCurrentPlayerId()), gameState, _game.getModifiersQuerying(), Filters.siteNumber(1)).get(0); - gameState.setCurrentPhase(Phase.GAME_SETUP); gameState.removeCardFromZone(firstSite); gameState.addCardToZone(firstSite, Zone.ADVENTURE_PATH);