Core/LFG: Order group members before creating LFG group (leader > tank > healer > dps).
Port From (https://github.com/TrinityCore/TrinityCore/commit/fff5a32a13ae896ecd4288838f6678ce484f7e23)
This commit is contained in:
@@ -867,20 +867,42 @@ namespace Game.DungeonFinding
|
||||
void MakeNewGroup(LfgProposal proposal)
|
||||
{
|
||||
List<ObjectGuid> players = new();
|
||||
List<ObjectGuid> tankPlayers = new();
|
||||
List<ObjectGuid> healPlayers = new();
|
||||
List<ObjectGuid> dpsPlayers = new();
|
||||
List<ObjectGuid> playersToTeleport = new();
|
||||
|
||||
foreach (var it in proposal.players)
|
||||
{
|
||||
ObjectGuid guid = it.Key;
|
||||
if (guid == proposal.leader)
|
||||
players.Insert(0, guid);
|
||||
else
|
||||
players.Add(guid);
|
||||
|
||||
else
|
||||
{
|
||||
switch (it.Value.role & ~LfgRoles.Leader)
|
||||
{
|
||||
case LfgRoles.Tank:
|
||||
tankPlayers.Add(guid);
|
||||
break;
|
||||
case LfgRoles.Healer:
|
||||
healPlayers.Add(guid);
|
||||
break;
|
||||
case LfgRoles.Damage:
|
||||
dpsPlayers.Add(guid);
|
||||
break;
|
||||
default:
|
||||
Cypher.Assert(false, $"Invalid LFG role {it.Value.role}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (proposal.isNew || GetGroup(guid) != proposal.group)
|
||||
playersToTeleport.Add(guid);
|
||||
}
|
||||
|
||||
players.AddRange(tankPlayers);
|
||||
players.AddRange(healPlayers);
|
||||
players.AddRange(dpsPlayers);
|
||||
|
||||
// Set the dungeon difficulty
|
||||
LFGDungeonData dungeon = GetLFGDungeon(proposal.dungeonId);
|
||||
Cypher.Assert(dungeon != null);
|
||||
|
||||
Reference in New Issue
Block a user