From c2791232c3d3fe50a1658c729711750dcf7c643d Mon Sep 17 00:00:00 2001 From: Spp Date: Sun, 28 Nov 2010 00:43:21 +0100 Subject: [PATCH] Core/Dungeon Finder: After a proposal success only teleport new players --HG-- branch : trunk --- src/server/game/DungeonFinding/LFGMgr.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index aa68a07222..f5b4ccae8f 100755 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1500,6 +1500,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept) } LfgPlayerList players; + LfgPlayerList playersToTeleport; Player* plr; // check if all have answered and reorder players (leader first) @@ -1514,6 +1515,10 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept) players.push_front(plr); else players.push_back(plr); + + // Only teleport new players + if (!plr->GetGroup() || plr->GetGroup()->isLfgDungeonComplete()) + playersToTeleport.push_back(plr); } if (itPlayers->second->accept != LFG_ANSWER_AGREE) // No answer (-1) or not accepted (0) @@ -1621,7 +1626,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept) RemoveFromQueue(*it); // Teleport Player - for (LfgPlayerList::const_iterator it = players.begin(); it != players.end(); ++it) + for (LfgPlayerList::const_iterator it = playersToTeleport.begin(); it != playersToTeleport.end(); ++it) TeleportPlayer(*it, false); // Update group info @@ -1635,6 +1640,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept) m_Proposals.erase(itProposal); } players.clear(); + playersToTeleport.clear(); } ///