aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSpp <none@none>2010-11-28 00:43:21 +0100
committerSpp <none@none>2010-11-28 00:43:21 +0100
commitc2791232c3d3fe50a1658c729711750dcf7c643d (patch)
tree59c671a948a1c24d6c72c6feff809deb65a913ea /src
parent9bb043d5b53d5a26e6b4bc97da127cb17f95f102 (diff)
Core/Dungeon Finder: After a proposal success only teleport new players
--HG-- branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.cpp8
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>