diff options
author | Spp <none@none> | 2010-11-28 00:43:21 +0100 |
---|---|---|
committer | Spp <none@none> | 2010-11-28 00:43:21 +0100 |
commit | c2791232c3d3fe50a1658c729711750dcf7c643d (patch) | |
tree | 59c671a948a1c24d6c72c6feff809deb65a913ea /src | |
parent | 9bb043d5b53d5a26e6b4bc97da127cb17f95f102 (diff) |
Core/Dungeon Finder: After a proposal success only teleport new players
--HG--
branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/DungeonFinding/LFGMgr.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index aa68a072225..f5b4ccae8fe 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(); } /// <summary> |