From 90bf2d93ba374d52c86822d83d0eed8e417ffa5f Mon Sep 17 00:00:00 2001 From: Spp Date: Wed, 24 Nov 2010 15:37:03 +0100 Subject: Core/Dungeon Finder: Do not allow to join Queue if someone in party is using Battleground/Arena System Core/Dungeon Finder: Minor code style fix --HG-- branch : trunk --- src/server/game/DungeonFinding/LFGMgr.cpp | 34 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 876522ee9eb..7d31608b1a9 100755 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -408,24 +408,26 @@ void LFGMgr::Update(uint32 diff) role = ROLE_NONE; for (LfgRolesMap::const_iterator itPlayer = queue->roles.begin(); itPlayer != queue->roles.end(); ++itPlayer) role |= itPlayer->second; + role &= ~ROLE_LEADER; - waitTime = -1; - if (role & ROLE_TANK) + switch(role) { - if (role & ROLE_HEALER || role & ROLE_DAMAGE) - waitTime = m_WaitTimeAvg; - else + case ROLE_NONE: // Should not happen - just in case + waitTime = -1; + break; + case ROLE_TANK: waitTime = m_WaitTimeTank; - } - else if (role & ROLE_HEALER) - { - if (role & ROLE_DAMAGE) - waitTime = m_WaitTimeAvg; - else + break; + case ROLE_HEALER: waitTime = m_WaitTimeHealer; + break; + case ROLE_DAMAGE: + waitTime = m_WaitTimeDps; + break; + default: + waitTime = m_WaitTimeAvg; + break; } - else if (role & ROLE_DAMAGE) - waitTime = m_WaitTimeDps; for (LfgRolesMap::const_iterator itPlayer = queue->roles.begin(); itPlayer != queue->roles.end(); ++itPlayer) if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itPlayer->first)) @@ -533,7 +535,7 @@ void LFGMgr::Join(Player* plr) else // Check if all dungeons are valid { LfgType type = LFG_TYPE_NONE; - for (LfgDungeonSet::const_iterator it = dungeons->begin(); it != dungeons->end(); ++it) + for (LfgDungeonSet::const_iterator it = dungeons->begin(); it != dungeons->end() && result == LFG_JOIN_OK; ++it) { type = GetDungeonType(*it); switch(type) @@ -578,6 +580,8 @@ void LFGMgr::Join(Player* plr) result = LFG_JOIN_PARTY_DESERTER; else if (plrg->HasAura(LFG_SPELL_DUNGEON_COOLDOWN)) result = LFG_JOIN_PARTY_RANDOM_COOLDOWN; + else if (plrg->InBattleground() || plrg->InArena() || plrg->InBattlegroundQueue()) + result = LFG_JOIN_USING_BG_SYSTEM; ++memberCount; } } @@ -1455,7 +1459,7 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap &groles, bool removeLeaderFlag /*= true damage++; } } - return (tank + healer + damage) == groles.size(); + return (tank + healer + damage) == uint8(groles.size()); } /// -- cgit v1.2.3