aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-09-05 21:18:52 +0200
committerjackpoz <giacomopoz@gmail.com>2015-09-05 21:18:52 +0200
commit42a71133fa32a1414dc52241c99430178b24422e (patch)
treef8b1f0c1d84d3d3c46af193905b7e5a06c709144
parent83b7b619b141f307786bd7ef4a560b8c12d63f29 (diff)
Core/Dungeon Finder: Fix groups queuing broken by 1e71aba2ee656a8407dec63a69d0879e16a070e2
Fix queuing in LFG with 5-men groups leaving the party in queue forever, caused by group GUID being added to list of party members.
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp12
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.h2
2 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index f4974e0938b..86b010a9ace 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -80,7 +80,7 @@ char const* GetCompatibleString(LfgCompatibility compatibles)
}
}
-std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check)
+std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) const
{
if (check.empty())
return "";
@@ -92,11 +92,13 @@ std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check)
GuidSet::const_iterator it = guids.begin();
o << it->GetRawValue();
- LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(*it);
+ LfgQueueDataContainer::const_iterator itQueue = QueueDataStore.find(*it);
if (itQueue != QueueDataStore.end())
{
// skip leader flag, log only dps/tank/healer
- o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER));
+ auto role = itQueue->second.roles.find(*it);
+ if (role != itQueue->second.roles.end())
+ o << ' ' << GetRolesString(itQueue->second.roles.at(*it) & uint8(~PLAYER_ROLE_LEADER));
}
for (++it; it != guids.end(); ++it)
@@ -106,7 +108,9 @@ std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check)
if (itQueue != QueueDataStore.end())
{
// skip leader flag, log only dps/tank/healer
- o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER));
+ auto role = itQueue->second.roles.find(*it);
+ if (role != itQueue->second.roles.end())
+ o << ' ' << GetRolesString(itQueue->second.roles.at(*it) & uint8(~PLAYER_ROLE_LEADER));
}
}
diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h
index 77683614d49..f72e9b4fd6d 100644
--- a/src/server/game/DungeonFinding/LFGQueue.h
+++ b/src/server/game/DungeonFinding/LFGQueue.h
@@ -88,7 +88,7 @@ class LFGQueue
public:
// Add/Remove from queue
- std::string GetDetailedMatchRoles(GuidList const& check);
+ std::string GetDetailedMatchRoles(GuidList const& check) const;
void AddToQueue(ObjectGuid guid);
void RemoveFromQueue(ObjectGuid guid);
void AddQueueData(ObjectGuid guid, time_t joinTime, LfgDungeonSet const& dungeons, LfgRolesMap const& rolesMap);