diff --git a/client/Client.cpp b/client/Client.cpp index 19f25437e..932471c31 100644 --- a/client/Client.cpp +++ b/client/Client.cpp @@ -321,7 +321,7 @@ void CClient::initMapHandler() void CClient::initPlayerInterfaces() { - for(auto & elem : CSH->si->playerInfos) + for(auto & elem : gs->scenarioOps->playerInfos) { PlayerColor color = elem.first; if(!vstd::contains(CSH->getAllClientPlayers(CSH->c->connectionID), color)) diff --git a/lib/rmg/CMapGenOptions.cpp b/lib/rmg/CMapGenOptions.cpp index 42d3b9319..4de95e678 100644 --- a/lib/rmg/CMapGenOptions.cpp +++ b/lib/rmg/CMapGenOptions.cpp @@ -71,8 +71,13 @@ void CMapGenOptions::setPlayerCount(si8 value) if (compOnlyPlayerCount > possibleCompPlayersCount) setCompOnlyPlayerCount(possibleCompPlayersCount); - if (getPlayerCount() != RANDOM_SIZE && getCompOnlyPlayerCount() != RANDOM_SIZE) - humanPlayersCount = getPlayerCount() - getCompOnlyPlayerCount(); + if (getPlayerCount() != RANDOM_SIZE) + { + if (getCompOnlyPlayerCount() != RANDOM_SIZE) + humanPlayersCount = getPlayerCount() - getCompOnlyPlayerCount(); + else + humanPlayersCount = getPlayerCount(); + } resetPlayersMap(); } @@ -167,7 +172,11 @@ void CMapGenOptions::resetPlayersMap() auto pc = PlayerColor(color); player.setColor(pc); auto playerType = EPlayerType::AI; - if ((getPlayerCount() != RANDOM_SIZE && color >= realPlayersCnt) + if (getPlayerCount() != RANDOM_SIZE && color < realPlayersCnt) + { + playerType = EPlayerType::HUMAN; + } + else if((getPlayerCount() != RANDOM_SIZE && color >= realPlayersCnt) || (compOnlyPlayerCount != RANDOM_SIZE && color >= (PlayerColor::PLAYER_LIMIT_I-compOnlyPlayerCount))) { playerType = EPlayerType::COMP_ONLY;