From 4591dbaef56ba06361620aa613d0127f7b5d4eaf Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sat, 1 Jun 2019 03:51:28 +0200 Subject: [PATCH] Core/LFG: fixed values sent in SMSG_LFG_UPDATE_STATUS when entering a dungeon --- src/server/game/DungeonFinding/LFGMgr.cpp | 8 +++----- src/server/game/Handlers/LFGHandler.cpp | 5 ++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index e91c54c0f13..39099ac8136 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1098,7 +1098,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept) time_t joinTime = time(nullptr); LFGQueue& queue = GetQueue(guid); - LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_GROUP_FOUND); + LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_GROUP_FOUND, GetSelectedDungeons(guid), GetComment(guid)); for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it) { ObjectGuid pguid = it->first; @@ -1111,16 +1111,13 @@ void LFGMgr::UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept) if (gguid) { waitTime = int32((joinTime - queue.GetJoinTime(gguid)) / IN_MILLISECONDS); - SendLfgUpdateStatus(pguid, updateData, false); + SendLfgUpdateStatus(pguid, updateData, true); } else { waitTime = int32((joinTime - queue.GetJoinTime(pguid)) / IN_MILLISECONDS); SendLfgUpdateStatus(pguid, updateData, false); } - updateData.updateType = LFG_UPDATETYPE_REMOVED_FROM_QUEUE; - SendLfgUpdateStatus(pguid, updateData, true); - SendLfgUpdateStatus(pguid, updateData, false); // Update timers uint8 role = GetRoles(pguid); @@ -1501,6 +1498,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const* rDungeonId = (*dungeons.begin()); SetState(guid, LFG_STATE_FINISHED_DUNGEON); + SendLfgUpdateStatus(guid, LfgUpdateData(LFG_UPDATETYPE_DUNGEON_FINISHED, GetSelectedDungeons(guid), GetComment(guid)), true); // Give rewards only if its a random dungeon LFGDungeonData const* dungeon = GetLFGDungeon(rDungeonId); diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp index 5d8e8396344..803f18e8c3a 100644 --- a/src/server/game/Handlers/LFGHandler.cpp +++ b/src/server/game/Handlers/LFGHandler.cpp @@ -308,13 +308,12 @@ void WorldSession::SendLfgUpdateStatus(lfg::LfgUpdateData const& updateData, boo queued = true; break; case lfg::LFG_UPDATETYPE_JOIN_RAIDBROWSER: - join = true; - break; case lfg::LFG_UPDATETYPE_PROPOSAL_BEGIN: join = true; break; case lfg::LFG_UPDATETYPE_UPDATE_STATUS: - join = updateData.state != lfg::LFG_STATE_ROLECHECK && updateData.state != lfg::LFG_STATE_NONE; + join = updateData.state != lfg::LFG_STATE_ROLECHECK && updateData.state != lfg::LFG_STATE_NONE && + updateData.state != lfg::LFG_STATE_DUNGEON && updateData.state != lfg::LFG_STATE_FINISHED_DUNGEON; queued = updateData.state == lfg::LFG_STATE_QUEUED || updateData.state == lfg::LFG_STATE_RAIDBROWSER; break; default: