Core/Groups: Fixes groups staying linked with players.

This commit is contained in:
Hondacrx
2025-09-02 22:43:56 -04:00
parent 6531cd9dc1
commit 3d23a9f162
34 changed files with 385 additions and 402 deletions
+3 -3
View File
@@ -592,10 +592,10 @@ namespace Game.AI
_allySet.Add(me.GetGUID());
if (group != null) // add group
{
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player target = refe.GetSource();
if (target == null || !target.IsInMap(owner) || !group.SameSubGroup(owner.ToPlayer(), target))
Player target = groupRef.GetSource();
if (!target.IsInMap(owner) || !group.SameSubGroup(owner.ToPlayer(), target))
continue;
if (target.GetGUID() == owner.GetGUID())
@@ -83,12 +83,11 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member != null)
if (member.IsInMap(player))
member.FailQuest(_escortQuest.Id);
if (member.IsInMap(player))
member.FailQuest(_escortQuest.Id);
}
}
else
@@ -150,12 +149,11 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member != null)
if (me.IsWithinDistInMap(member, GetMaxPlayerDistance()))
return true;
if (me.IsWithinDistInMap(member, GetMaxPlayerDistance()))
return true;
}
}
else if (me.IsWithinDistInMap(player, GetMaxPlayerDistance()))
@@ -52,12 +52,11 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member != null)
if (member.IsInMap(player))
member.FailQuest(_questForFollow);
if (member.IsInMap(player))
member.FailQuest(_questForFollow);
}
}
else
@@ -109,12 +108,9 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null && (maxRangeExceeded || questAbandoned); groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member == null)
continue;
if (maxRangeExceeded && me.IsWithinDistInMap(member, 100.0f))
maxRangeExceeded = false;
@@ -253,10 +249,10 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member != null && me.IsWithinDistInMap(member, 100.0f) && member.IsAlive())
if (me.IsWithinDistInMap(member, 100.0f) && member.IsAlive())
{
Log.outDebug(LogFilter.Scripts, $"FollowerAI::GetLeaderForFollower: GetLeader changed and returned new leader. ({me.GetGUID()})");
_leaderGUID = member.GetGUID();
+2 -2
View File
@@ -227,7 +227,7 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player groupGuy = groupRef.GetSource();
if (!groupGuy.IsInMap(player))
@@ -333,7 +333,7 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player groupGuy = groupRef.GetSource();
if (groupGuy.IsInMap(player) && me.GetDistance(groupGuy) <= checkDist)
+3 -4
View File
@@ -2889,12 +2889,11 @@ namespace Game.AI
Group group = player.GetGroup();
if (group != null)
{
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.Next())
foreach (GroupReference groupRef in group.GetMembers())
{
Player member = groupRef.GetSource();
if (member != null)
if (member.IsInMap(player))
targets.Add(member);
if (member.IsInMap(player))
targets.Add(member);
}
}
// We still add the player to the list if there is no group. If we do