diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 693d53197..6e604bb6f 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2959,6 +2959,11 @@ bool InstanceMap::AddPlayerToMap(Player* player) return false; } } + else if (player->GetSession()->PlayerLoading() && playerBind && playerBind->save != mapSave) + { + // Prevent "Convert to Raid" exploit to reset instances + return false; + } else { playerBind = sInstanceSaveMgr->PlayerBindToInstance(player->GetGUID(), mapSave, false, player); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 85bcb5972..617c106a6 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -665,11 +665,12 @@ void WorldSession::LogoutPlayer(bool save) _player->GetGroup()->SendUpdate(); _player->GetGroup()->ResetMaxEnchantingLevel(); - Map::PlayerList const& playerList = _player->GetMap()->GetPlayers(); - if (_player->GetMap()->IsDungeon() || _player->GetMap()->IsRaidOrHeroicDungeon()) + { + Map::PlayerList const &playerList = _player->GetMap()->GetPlayers(); if (playerList.IsEmpty()) _player->TeleportToEntryPoint(); + } } //! Broadcast a logout message to the player's friends