Core/Groups: Fixes groups staying linked with players.
This commit is contained in:
@@ -86,7 +86,7 @@ namespace Game
|
||||
|
||||
GroupJoinBattlegroundResult err = GroupJoinBattlegroundResult.None;
|
||||
|
||||
Group grp = _player.GetGroup();
|
||||
Group group = _player.GetGroup();
|
||||
|
||||
Team getQueueTeam()
|
||||
{
|
||||
@@ -105,7 +105,7 @@ namespace Game
|
||||
|
||||
BattlefieldStatusFailed battlefieldStatusFailed;
|
||||
// check queue conditions
|
||||
if (grp == null)
|
||||
if (group == null)
|
||||
{
|
||||
if (GetPlayer().IsUsingLfg())
|
||||
{
|
||||
@@ -177,12 +177,12 @@ namespace Game
|
||||
}
|
||||
else
|
||||
{
|
||||
if (grp.GetLeaderGUID() != GetPlayer().GetGUID())
|
||||
if (group.GetLeaderGUID() != GetPlayer().GetGUID())
|
||||
return;
|
||||
|
||||
ObjectGuid errorGuid;
|
||||
err = grp.CanJoinBattlegroundQueue(bgTemplate, bgQueueTypeId, 0, bgTemplate.GetMaxPlayersPerTeam(), false, 0, out errorGuid);
|
||||
isPremade = (grp.GetMembersCount() >= bgTemplate.GetMinPlayersPerTeam());
|
||||
err = group.CanJoinBattlegroundQueue(bgTemplate, bgQueueTypeId, 0, bgTemplate.GetMaxPlayersPerTeam(), false, 0, out errorGuid);
|
||||
isPremade = (group.GetMembersCount() >= bgTemplate.GetMinPlayersPerTeam());
|
||||
|
||||
BattlegroundQueue bgQueue = Global.BattlegroundMgr.GetBattlegroundQueue(bgQueueTypeId);
|
||||
GroupQueueInfo ginfo = null;
|
||||
@@ -191,16 +191,13 @@ namespace Game
|
||||
if (err == 0)
|
||||
{
|
||||
Log.outDebug(LogFilter.Battleground, "Battleground: the following players are joining as group:");
|
||||
ginfo = bgQueue.AddGroup(GetPlayer(), grp, getQueueTeam(), bracketEntry, isPremade, 0, 0);
|
||||
ginfo = bgQueue.AddGroup(GetPlayer(), group, getQueueTeam(), bracketEntry, isPremade, 0, 0);
|
||||
avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry.GetBracketId());
|
||||
}
|
||||
|
||||
for (GroupReference refe = grp.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player member = refe.GetSource();
|
||||
if (member == null)
|
||||
continue; // this should never happen
|
||||
|
||||
Player member = groupRef.GetSource();
|
||||
if (err != 0)
|
||||
{
|
||||
BattlefieldStatusFailed battlefieldStatus;
|
||||
@@ -510,11 +507,11 @@ namespace Game
|
||||
if (bracketEntry == null)
|
||||
return;
|
||||
|
||||
Group grp = GetPlayer().GetGroup();
|
||||
Group group = GetPlayer().GetGroup();
|
||||
// no group found, error
|
||||
if (grp == null)
|
||||
if (group == null)
|
||||
return;
|
||||
if (grp.GetLeaderGUID() != GetPlayer().GetGUID())
|
||||
if (group.GetLeaderGUID() != GetPlayer().GetGUID())
|
||||
return;
|
||||
|
||||
uint ateamId = GetPlayer().GetArenaTeamId(packet.TeamSizeIndex);
|
||||
@@ -525,7 +522,7 @@ namespace Game
|
||||
|
||||
// get the team rating for queuing
|
||||
uint arenaRating = at.GetRating();
|
||||
uint matchmakerRating = at.GetAverageMMR(grp);
|
||||
uint matchmakerRating = at.GetAverageMMR(group);
|
||||
// the arenateam id must match for everyone in the group
|
||||
|
||||
if (arenaRating <= 0)
|
||||
@@ -537,21 +534,18 @@ namespace Game
|
||||
GroupQueueInfo ginfo = null;
|
||||
|
||||
ObjectGuid errorGuid;
|
||||
var err = grp.CanJoinBattlegroundQueue(bgTemplate, bgQueueTypeId, (uint)arenatype, (uint)arenatype, true, packet.TeamSizeIndex, out errorGuid);
|
||||
var err = group.CanJoinBattlegroundQueue(bgTemplate, bgQueueTypeId, (uint)arenatype, (uint)arenatype, true, packet.TeamSizeIndex, out errorGuid);
|
||||
if (err == 0)
|
||||
{
|
||||
Log.outDebug(LogFilter.Battleground, "Battleground: arena team id {0}, leader {1} queued with matchmaker rating {2} for type {3}", GetPlayer().GetArenaTeamId(packet.TeamSizeIndex), GetPlayer().GetName(), matchmakerRating, arenatype);
|
||||
|
||||
ginfo = bgQueue.AddGroup(GetPlayer(), grp, _player.GetTeam(), bracketEntry, false, arenaRating, matchmakerRating, ateamId);
|
||||
ginfo = bgQueue.AddGroup(GetPlayer(), group, _player.GetTeam(), bracketEntry, false, arenaRating, matchmakerRating, ateamId);
|
||||
avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry.GetBracketId());
|
||||
}
|
||||
|
||||
for (GroupReference refe = grp.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player member = refe.GetSource();
|
||||
if (member == null)
|
||||
continue;
|
||||
|
||||
Player member = groupRef.GetSource();
|
||||
if (err != 0)
|
||||
{
|
||||
BattlefieldStatusFailed battlefieldStatus;
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace Game
|
||||
if (group == null)
|
||||
return;
|
||||
|
||||
if (packet.PartyIndex != 0 && group.GetGroupCategory() != (GroupCategory)packet.PartyIndex)
|
||||
if (packet.PartyIndex.HasValue && group.GetGroupCategory() != (GroupCategory)packet.PartyIndex)
|
||||
return;
|
||||
|
||||
if (packet.Accept)
|
||||
@@ -702,9 +702,9 @@ namespace Game
|
||||
broadcastPingUnit.SpellOverrideNameID = pingUnit.SpellOverrideNameID;
|
||||
broadcastPingUnit.Write();
|
||||
|
||||
for (GroupReference itr = group.GetFirstMember(); itr != null; itr = itr.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player member = itr.GetSource();
|
||||
Player member = groupRef.GetSource();
|
||||
if (_player == member || !_player.IsInMap(member))
|
||||
continue;
|
||||
|
||||
@@ -732,9 +732,9 @@ namespace Game
|
||||
broadcastPingWorldPoint.PingDuration = pingWorldPoint.PingDuration;
|
||||
broadcastPingWorldPoint.Write();
|
||||
|
||||
for (GroupReference itr = group.GetFirstMember(); itr != null; itr = itr.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player member = itr.GetSource();
|
||||
Player member = groupRef.GetSource();
|
||||
if (_player == member || !_player.IsInMap(member))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -205,12 +205,9 @@ namespace Game
|
||||
LfgPartyInfo lfgPartyInfo = new();
|
||||
|
||||
// Get the Locked dungeons of the other party members
|
||||
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player plrg = refe.GetSource();
|
||||
if (plrg == null)
|
||||
continue;
|
||||
|
||||
Player plrg = groupRef.GetSource();
|
||||
ObjectGuid pguid = plrg.GetGUID();
|
||||
if (pguid == guid)
|
||||
continue;
|
||||
|
||||
@@ -99,12 +99,9 @@ namespace Game
|
||||
Group group = player.GetGroup();
|
||||
|
||||
List<Player> playersNear = new();
|
||||
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player member = refe.GetSource();
|
||||
if (member == null)
|
||||
continue;
|
||||
|
||||
Player member = groupRef.GetSource();
|
||||
if (!loot.HasAllowedLooter(member.GetGUID()))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -126,11 +126,10 @@ namespace Game
|
||||
var group = _player.GetGroup();
|
||||
if (group != null)
|
||||
{
|
||||
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player player = refe.GetSource();
|
||||
|
||||
if (player == null || player == _player || !player.IsInMap(_player)) // not self and in same map
|
||||
Player player = groupRef.GetSource();
|
||||
if (player == _player || !player.IsInMap(_player)) // not self and in same map
|
||||
continue;
|
||||
|
||||
if (player.CanTakeQuest(quest, true))
|
||||
@@ -551,11 +550,10 @@ namespace Game
|
||||
return;
|
||||
}
|
||||
|
||||
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
|
||||
foreach (GroupReference groupRef in group.GetMembers())
|
||||
{
|
||||
Player receiver = refe.GetSource();
|
||||
|
||||
if (receiver == null || receiver == sender)
|
||||
Player receiver = groupRef.GetSource();
|
||||
if (receiver == sender)
|
||||
continue;
|
||||
|
||||
if (!receiver.GetPlayerSharingQuest().IsEmpty())
|
||||
|
||||
Reference in New Issue
Block a user