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)
|
void MakeNewGroup(LfgProposal proposal)
|
||||||
{
|
{
|
||||||
List<ObjectGuid> players = new();
|
List<ObjectGuid> players = new();
|
||||||
|
List<ObjectGuid> tankPlayers = new();
|
||||||
|
List<ObjectGuid> healPlayers = new();
|
||||||
|
List<ObjectGuid> dpsPlayers = new();
|
||||||
List<ObjectGuid> playersToTeleport = new();
|
List<ObjectGuid> playersToTeleport = new();
|
||||||
|
|
||||||
foreach (var it in proposal.players)
|
foreach (var it in proposal.players)
|
||||||
{
|
{
|
||||||
ObjectGuid guid = it.Key;
|
ObjectGuid guid = it.Key;
|
||||||
if (guid == proposal.leader)
|
if (guid == proposal.leader)
|
||||||
players.Insert(0, guid);
|
|
||||||
else
|
|
||||||
players.Add(guid);
|
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)
|
if (proposal.isNew || GetGroup(guid) != proposal.group)
|
||||||
playersToTeleport.Add(guid);
|
playersToTeleport.Add(guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
players.AddRange(tankPlayers);
|
||||||
|
players.AddRange(healPlayers);
|
||||||
|
players.AddRange(dpsPlayers);
|
||||||
|
|
||||||
// Set the dungeon difficulty
|
// Set the dungeon difficulty
|
||||||
LFGDungeonData dungeon = GetLFGDungeon(proposal.dungeonId);
|
LFGDungeonData dungeon = GetLFGDungeon(proposal.dungeonId);
|
||||||
Cypher.Assert(dungeon != null);
|
Cypher.Assert(dungeon != null);
|
||||||
|
|||||||
Reference in New Issue
Block a user