diff options
author | Spp <none@none> | 2010-11-24 15:37:03 +0100 |
---|---|---|
committer | Spp <none@none> | 2010-11-24 15:37:03 +0100 |
commit | 90bf2d93ba374d52c86822d83d0eed8e417ffa5f (patch) | |
tree | a10f39f65e92b979cc7c5c00f14c036bce098360 | |
parent | 04c23ae7de7f0a59c7d11907cf7bd1502786c967 (diff) |
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
-rwxr-xr-x | src/server/game/DungeonFinding/LFGMgr.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
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()); } /// <summary> |