From d9e1cf40c0def77f5c1613bc25b405d30766f6e3 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 30 Jan 2022 13:48:00 +0100 Subject: [PATCH] =?UTF-8?q?fix(Core/DungeonFinder):=20Fixed=20joining=20to?= =?UTF-8?q?=20LFG=20dungeon=20if=20there=20is=20alr=E2=80=A6=20(#10062)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Core/DungeonFinder): Fixed joining to LFG dungeon if there is already a LFG group inside it.iterator Fixes #9824 * Buildfix. --- src/server/game/DungeonFinding/LFGGroupData.cpp | 16 ++++++++++++++-- src/server/game/DungeonFinding/LFGGroupData.h | 1 + src/server/game/DungeonFinding/LFGQueue.cpp | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/server/game/DungeonFinding/LFGGroupData.cpp b/src/server/game/DungeonFinding/LFGGroupData.cpp index c6fb1ce7a..eed5cef24 100644 --- a/src/server/game/DungeonFinding/LFGGroupData.cpp +++ b/src/server/game/DungeonFinding/LFGGroupData.cpp @@ -22,7 +22,7 @@ namespace lfg { LfgGroupData::LfgGroupData(): m_State(LFG_STATE_NONE), m_OldState(LFG_STATE_NONE), - m_Dungeon(0), m_KicksLeft(sWorld->getIntConfig(CONFIG_LFG_MAX_KICK_COUNT)) + m_Dungeon(0), _isLFGGroup(false), m_KicksLeft(sWorld->getIntConfig(CONFIG_LFG_MAX_KICK_COUNT)) { } LfgGroupData::~LfgGroupData() @@ -30,11 +30,23 @@ namespace lfg bool LfgGroupData::IsLfgGroup() { - return m_OldState != LFG_STATE_NONE; + return _isLFGGroup; } void LfgGroupData::SetState(LfgState state) { + switch (state) + { + case LFG_STATE_DUNGEON: + _isLFGGroup = true; + break; + case LFG_STATE_FINISHED_DUNGEON: + _isLFGGroup = false; + break; + default: + break; + } + switch (state) { case LFG_STATE_NONE: diff --git a/src/server/game/DungeonFinding/LFGGroupData.h b/src/server/game/DungeonFinding/LFGGroupData.h index f90e1fa6b..4afe3066c 100644 --- a/src/server/game/DungeonFinding/LFGGroupData.h +++ b/src/server/game/DungeonFinding/LFGGroupData.h @@ -68,6 +68,7 @@ namespace lfg LfgGuidSet m_Players; ///< Players in group // Dungeon uint32 m_Dungeon; ///< Dungeon entry + bool _isLFGGroup; // Vote Kick uint8 m_KicksLeft; ///< Number of kicks left }; diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index b02d491da..c8fea1191 100644 --- a/src/server/game/DungeonFinding/LFGQueue.cpp +++ b/src/server/game/DungeonFinding/LFGQueue.cpp @@ -407,7 +407,7 @@ namespace lfg } proposal.queues = strGuids; - proposal.isNew = numLfgGroups != 1 || sLFGMgr->GetOldState(proposal.group) != LFG_STATE_DUNGEON; + proposal.isNew = numLfgGroups != 1; if (!sLFGMgr->AllQueued(check)) // can't create proposal return LFG_COMPATIBILITY_PENDING;