Core/Misc: Fix various crashes, also related to multithreading

Port From (https://github.com/TrinityCore/TrinityCore/commit/ad008c43b75080ec59aa973f1e2e4424332c34a4)
This commit is contained in:
hondacrx
2019-08-16 22:03:02 -04:00
parent 653a9bb035
commit d3bce6a75c
19 changed files with 174 additions and 117 deletions
+4 -4
View File
@@ -271,14 +271,14 @@ namespace Game.AI
{
for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.next())
{
Player Target = refe.GetSource();
if (!Target || !group.SameSubGroup(owner.ToPlayer(), Target))
Player target = refe.GetSource();
if (!target || !target.IsInMap(owner) || !group.SameSubGroup(owner.ToPlayer(), target))
continue;
if (Target.GetGUID() == owner.GetGUID())
if (target.GetGUID() == owner.GetGUID())
continue;
m_AllySet.Add(Target.GetGUID());
m_AllySet.Add(target.GetGUID());
}
}
else //remove group
@@ -115,7 +115,8 @@ namespace Game.AI
{
Player member = groupRef.GetSource();
if (member)
member.FailQuest(m_pQuestForEscort.Id);
if (member.IsInMap(player))
member.FailQuest(m_pQuestForEscort.Id);
}
}
else
@@ -153,7 +153,8 @@ namespace Game.AI
{
Player member = groupRef.GetSource();
if (member)
member.FailQuest(m_pQuestForFollow.Id);
if (member.IsInMap(player))
member.FailQuest(m_pQuestForFollow.Id);
}
}
else
@@ -343,8 +344,7 @@ namespace Game.AI
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.next())
{
Player member = groupRef.GetSource();
if (member && member.IsAlive() && me.IsWithinDistInMap(member, 100.0f))
if (member && me.IsWithinDistInMap(member, 100.0f) && member.IsAlive())
{
Log.outDebug(LogFilter.Scripts, "FollowerAI GetLeader changed and returned new leader.");
m_uiLeaderGUID = member.GetGUID();
+3 -2
View File
@@ -249,6 +249,8 @@ namespace Game.AI
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.next())
{
Player groupGuy = groupRef.GetSource();
if (!groupGuy.IsInMap(player))
continue;
if (!fail && groupGuy.IsAtGroupRewardDistance(me) && !groupGuy.GetCorpse())
groupGuy.AreaExploredOrEventHappens(mEscortQuestID);
@@ -402,8 +404,7 @@ namespace Game.AI
for (GroupReference groupRef = group.GetFirstMember(); groupRef != null; groupRef = groupRef.next())
{
Player groupGuy = groupRef.GetSource();
if (me.GetDistance(groupGuy) <= SMART_ESCORT_MAX_PLAYER_DIST)
if (groupGuy.IsInMap(player) && me.GetDistance(groupGuy) <= SMART_ESCORT_MAX_PLAYER_DIST)
return true;
}
}
+4 -2
View File
@@ -2614,7 +2614,8 @@ namespace Game.AI
{
Player member = groupRef.GetSource();
if (member)
l.Add(member);
if (member.IsInMap(player))
l.Add(member);
}
}
// We still add the player to the list if there is no group. If we do
@@ -2838,7 +2839,8 @@ namespace Game.AI
{
Player recipient = refe.GetSource();
if (recipient)
l.Add(recipient);
if (recipient.IsInMap(me))
l.Add(recipient);
}
}
else