aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.cpp8
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp19
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)