From be73926ab36b9776dab1fdfb8ebcb3bbe99b8735 Mon Sep 17 00:00:00 2001 From: Spp Date: Thu, 9 Dec 2010 19:13:11 +0100 Subject: Core/Dungeon Finder: Fix incorrect Lfg state after multiple actions. - Clear state after get out DF system - Fix player not getting reward after finish a random dungeon - Remove OnDisband Hook, it's already handled by OnRemoveMember --HG-- branch : trunk --- src/server/game/DungeonFinding/LFGScripts.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) (limited to 'src/server/game/DungeonFinding/LFGScripts.cpp') 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) -- cgit v1.2.3