diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 0340cc57a..c8c253afe 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -551,11 +551,12 @@ namespace lfg /// Sends queue status to player static void SendLfgQueueStatus(ObjectGuid guid, LfgQueueStatusData const& data); + void SetDungeon(ObjectGuid guid, uint32 dungeon); + private: TeamId GetTeam(ObjectGuid guid); void RestoreState(ObjectGuid guid, char const* debugMsg); void ClearState(ObjectGuid guid, char const* debugMsg); - void SetDungeon(ObjectGuid guid, uint32 dungeon); void SetSelectedDungeons(ObjectGuid guid, LfgDungeonSet const& dungeons); void SetLockedDungeons(ObjectGuid guid, LfgLockMap const& lock); void DecreaseKicksLeft(ObjectGuid guid); diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index 73d1b05c1..772ee06a2 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -181,6 +181,7 @@ namespace lfg bool isLFG = group->isLFGGroup(); LfgState state = sLFGMgr->GetState(gguid); + uint32 dungeonId = sLFGMgr->GetDungeon(gguid, false); // If group is being formed after proposal success do nothing more if (state == LFG_STATE_PROPOSAL && method == GROUP_REMOVEMETHOD_DEFAULT) @@ -205,6 +206,15 @@ namespace lfg if (!isLFG) return; + if (state != LFG_STATE_FINISHED_DUNGEON && group) // Need more players to finish the dungeon + { + if (Player* leader = ObjectAccessor::FindConnectedPlayer(sLFGMgr->GetLeader(gguid))) + { + sLFGMgr->SetDungeon(gguid, dungeonId); + leader->GetSession()->SendLfgOfferContinue(sLFGMgr->GetDungeon(gguid, false)); + } + } + if (Player* player = ObjectAccessor::FindConnectedPlayer(guid)) { // xinef: fixed dungeon deserter @@ -224,10 +234,6 @@ namespace lfg player->TeleportToEntryPoint(); } } - - if (state != LFG_STATE_FINISHED_DUNGEON) // Need more players to finish the dungeon - if (Player* leader = ObjectAccessor::FindConnectedPlayer(sLFGMgr->GetLeader(gguid))) - leader->GetSession()->SendLfgOfferContinue(sLFGMgr->GetDungeon(gguid, false)); } void LFGGroupScript::OnDisband(Group* group)