diff options
-rwxr-xr-x | src/server/game/DungeonFinding/LFGMgr.cpp | 8 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGScripts.cpp | 19 |
2 files changed, 8 insertions, 19 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 2f7435d6a81..b54bf636110 100755 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -278,8 +278,12 @@ void LFGMgr::Update(uint32 diff) lowGuid = itPlayers->first; if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itPlayers->first)) { + plr->SetLfgState(LFG_STATE_PROPOSAL); if (plr->GetGroup()) + { + plr->GetGroup()->SetLfgState(LFG_STATE_PROPOSAL); plr->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_PROPOSAL_BEGIN, plr->GetLfgDungeons(), plr->GetLfgComment()); + } else plr->GetSession()->SendLfgUpdatePlayer(LFG_UPDATETYPE_PROPOSAL_BEGIN, plr->GetLfgDungeons(), plr->GetLfgComment()); plr->GetSession()->SendLfgUpdateProposal(m_lfgProposalId, pProposal); @@ -585,6 +589,7 @@ void LFGMgr::Join(Player* plr, uint8 roles, LfgDungeonSet& dungeons, std::string dungeons.insert(rDungeonId); } + grp->SetLfgState(LFG_STATE_ROLECHECK); // Send update to player for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -1055,7 +1060,7 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh } } - if (pRoleCheck->result == LFG_ROLECHECK_FINISHED && pRoleCheck->dungeons.size()) + if (pRoleCheck->result == LFG_ROLECHECK_FINISHED) { grp->SetLfgState(LFG_STATE_QUEUED); LfgQueueInfo* pqInfo = new LfgQueueInfo(); @@ -1375,6 +1380,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept) break; } grp->SetLfgRoles(plr->GetGUID(), pProposal->players[plr->GetGUIDLow()]->role); + plr->SetLfgState(LFG_STATE_DUNGEON); } // Set the dungeon difficulty diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index 465cf7047a3..d9f81435e93 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -89,6 +89,7 @@ void LFGScripts::OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method, // Update internal kick cooldown of kicked */ + plr->ClearLfgState(); plr->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER); if (plr->GetMap()->IsDungeon()) // Teleport player out the dungeon sLFGMgr.TeleportPlayer(plr, true); @@ -100,24 +101,6 @@ void LFGScripts::OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method, void LFGScripts::OnDisband(Group* group) { - uint64 gguid = group->GetGUID(); - if (!gguid) - return; - - sLog.outDebug("LFGScripts::OnDisband [" UI64FMTD "]", gguid); - if (group->GetLfgState() == LFG_STATE_QUEUED) - sLFGMgr.Leave(NULL, group); - - for (GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) - { - if (Player *plrg = itr->getSource()) - { - plrg->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_GROUP_DISBAND); - plrg->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER); - if (plrg->GetMap()->IsDungeon()) // Teleport player out the dungeon - sLFGMgr.TeleportPlayer(plrg, true); - } - } } void LFGScripts::OnChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid) |