diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-08-22 21:31:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-10-22 23:17:04 +0200 |
commit | fff5a32a13ae896ecd4288838f6678ce484f7e23 (patch) | |
tree | 428598c311522e0fed47997cfc62a5f39eb50531 /src/server/game/DungeonFinding/LFGMgr.cpp | |
parent | b6f28a7ebc2684d7514211201a344a6e510b7be5 (diff) |
Core/LFG: Order group members before creating LFG group (leader > tank > healer > dps). Closes #16244.
(cherry picked from commit dd54c8012321ecd40fc82f04cf0c98b201bc580e)
Diffstat (limited to 'src/server/game/DungeonFinding/LFGMgr.cpp')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index faeee1e4b67..0d35077cebd 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -917,21 +917,39 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles) */ void LFGMgr::MakeNewGroup(LfgProposal const& proposal) { - GuidList players; + GuidList players, tankPlayers, healPlayers, dpsPlayers; GuidList playersToTeleport; for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it) { ObjectGuid guid = it->first; if (guid == proposal.leader) - players.push_front(guid); - else players.push_back(guid); + else + switch (it->second.role & ~PLAYER_ROLE_LEADER) + { + case PLAYER_ROLE_TANK: + tankPlayers.push_back(guid); + break; + case PLAYER_ROLE_HEALER: + healPlayers.push_back(guid); + break; + case PLAYER_ROLE_DAMAGE: + dpsPlayers.push_back(guid); + break; + default: + ASSERT(false, "Invalid LFG role %u", it->second.role); + break; + } if (proposal.isNew || GetGroup(guid) != proposal.group) playersToTeleport.push_back(guid); } + players.splice(players.end(), tankPlayers); + players.splice(players.end(), healPlayers); + players.splice(players.end(), dpsPlayers); + // Set the dungeon difficulty LFGDungeonData const* dungeon = GetLFGDungeon(proposal.dungeonId); ASSERT(dungeon); |