Core/AI: No longer override chase movement with follow movement if the creature engages before JustAppeared has had a chance to fire.

Port From (https://github.com/TrinityCore/TrinityCore/commit/a4c2c0fb1d1b9fae832ecc52aa68fe3fb8d1ca52)
This commit is contained in:
hondacrx
2022-01-01 17:08:13 -05:00
parent 942feb2c3e
commit 077cdc5d23
2 changed files with 19 additions and 11 deletions
+11 -8
View File
@@ -186,17 +186,20 @@ namespace Game.AI
// Called when creature appears in the world (spawn, respawn, grid load etc...) // Called when creature appears in the world (spawn, respawn, grid load etc...)
public virtual void JustAppeared() public virtual void JustAppeared()
{ {
TempSummon summon = me.ToTempSummon(); if (!IsEngaged())
if (summon != null)
{ {
// Only apply this to specific types of summons TempSummon summon = me.ToTempSummon();
if (!summon.GetVehicle() && ShouldFollowOnSpawn(summon.m_Properties)) if (summon != null)
{ {
Unit owner = summon.GetCharmerOrOwner(); // Only apply this to specific types of summons
if (owner != null) if (!summon.GetVehicle() && ShouldFollowOnSpawn(summon.m_Properties))
{ {
summon.GetMotionMaster().Clear(); Unit owner = summon.GetCharmerOrOwner();
summon.GetMotionMaster().MoveFollow(owner, SharedConst.PetFollowDist, summon.GetFollowAngle()); if (owner != null)
{
summon.GetMotionMaster().Clear();
summon.GetMotionMaster().MoveFollow(owner, SharedConst.PetFollowDist, summon.GetFollowAngle());
}
} }
} }
} }
+8 -3
View File
@@ -59,9 +59,14 @@ namespace Game.Combat
if (cWho.IsPet() || cWho.IsTotem() || cWho.IsTrigger()) if (cWho.IsPet() || cWho.IsTotem() || cWho.IsTrigger())
return false; return false;
// summons cannot have a threat list, unless they are controlled by a creature // summons cannot have a threat list if they were summoned by a player
if (cWho.HasUnitTypeMask(UnitTypeMask.Minion | UnitTypeMask.Guardian) && !cWho.GetOwnerGUID().IsCreature()) if (cWho.HasUnitTypeMask(UnitTypeMask.Minion | UnitTypeMask.Guardian))
return false; {
TempSummon tWho = cWho.ToTempSummon();
if (tWho != null)
if (tWho.GetSummonerGUID().IsPlayer())
return false;
}
return true; return true;
} }