diff options
-rw-r--r-- | src/game/MapManager.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp index 66fa5632d56..476426b8106 100644 --- a/src/game/MapManager.cpp +++ b/src/game/MapManager.cpp @@ -252,15 +252,19 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player) //Instance is full if (boundedMap) { - Map::PlayerList const &players = boundedMap->GetPlayers(); - uint8 count = 0; - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - ++count; - if (count == player->GetDifficulty() ? instance->maxPlayersHeroic : instance->maxPlayers) + int8 maxPlayers = (player->GetDifficulty() == DIFFICULTY_HEROIC) ? instance->maxPlayersHeroic : instance->maxPlayers; + if (maxPlayers != -1) //-1: unlimited access { - sLog.outDebug("MAP: Player '%s' can't enter instance '%s' because it's full.", player->GetName(), mapName); - player->SendTransferAborted(mapid, TRANSFER_ABORT_MAX_PLAYERS); - return(false); + Map::PlayerList const &players = boundedMap->GetPlayers(); + uint8 count = 0; + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + ++count; + if (count >= maxPlayers) + { + sLog.outDebug("MAP: Player '%s' can't enter instance '%s' because it's full.", player->GetName(), mapName); + player->SendTransferAborted(mapid, TRANSFER_ABORT_MAX_PLAYERS); + return(false); + } } } } |