diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index ec0217fede2..7b1a38e9e12 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -233,7 +233,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements root = root.children.get(0); } logger.info("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); - if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue() == test.gameValue) { + if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue().hashCode() == test.gameValue) { /* // Try to fix horizon effect @@ -442,7 +442,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements logger.info("interrupted"); return GameStateEvaluator2.evaluate(playerId, game); } - node.setGameValue(game.getState().getValue()); + node.setGameValue(game.getState().getValue().hashCode()); SimulatedPlayer2 currentPlayer = (SimulatedPlayer2) game.getPlayer(game.getPlayerList().get()); //logger.info("simulating -- player " + currentPlayer.getName()); SimulationNode2 bestNode = null; diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java index 4a6205e574f..bf1beceb819 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java @@ -211,7 +211,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements root = root.children.get(0); } logger.debug("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); - if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue() == test.gameValue) { + if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue().hashCode() == test.gameValue) { logger.debug("simulating -- continuing previous action chain"); actions = new LinkedList(root.abilities); combat = root.combat; @@ -412,7 +412,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } - node.setGameValue(game.getState().getValue()); + node.setGameValue(game.getState().getValue().hashCode()); SimulatedPlayer currentPlayer = (SimulatedPlayer) game.getPlayer(game.getPlayerList().get()); boolean isSimulatedPlayer = currentPlayer.getId().equals(playerId); logger.debug(indent(node.depth) + "simulating priority -- player " + currentPlayer.getName()); diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index 14bdfcf795c..3f26d5d1b8f 100644 Binary files a/Mage.Server/plugins/mage-player-ai-ma.jar and b/Mage.Server/plugins/mage-player-ai-ma.jar differ diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index 056a4123475..bceeb93d65a 100644 Binary files a/Mage.Server/plugins/mage-player-aiminimax.jar and b/Mage.Server/plugins/mage-player-aiminimax.jar differ diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index 47db0a533cc..21ba5e3bcd4 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -157,13 +157,13 @@ public class GameState implements Serializable, Copyable { playerList.add(player.getId()); } - public int getValue() { + public String getValue() { StringBuilder sb = new StringBuilder(1024); sb.append(turnNum).append(turn.getPhaseType()).append(turn.getStepType()).append(activePlayerId).append(priorityPlayerId); for (Player player: players.values()) { - sb.append("player").append(player.getLife()).append(player.getHand()).append(player.getLibrary().getCardList()); + sb.append("player").append(player.getLife()).append("hand").append(player.getHand()).append("library").append(player.getLibrary().size()).append("graveyard").append(player.getGraveyard()); } for (UUID permanentId: battlefield.getAllPermanentIds()) { @@ -173,8 +173,12 @@ public class GameState implements Serializable, Copyable { for (StackObject spell: stack) { sb.append("spell").append(spell.getId()); } + + for (ExileZone zone: exile.getExileZones()) { + sb.append("exile").append(zone.getName()).append(zone); + } - return sb.toString().hashCode(); + return sb.toString(); } public Players getPlayers() {