Core/AI: couple movement related corrections in FollowerAI

Port From (https://github.com/TrinityCore/TrinityCore/commit/bda32dfbd13a880287e408a221e5d0a7f97de5d5)
This commit is contained in:
hondacrx
2021-12-07 17:54:31 -05:00
parent 998e53913f
commit 3943eac5e2
+11 -23
View File
@@ -134,27 +134,25 @@ namespace Game.AI
public override void EnterEvadeMode(EvadeReason why) public override void EnterEvadeMode(EvadeReason why)
{ {
if (!me.IsAlive())
return;
me.RemoveAllAuras(); me.RemoveAllAuras();
me.GetThreatManager().ClearAllThreat(); me.GetThreatManager().ClearAllThreat();
me.CombatStop(true); me.CombatStop(true);
me.SetLootRecipient(null); me.SetLootRecipient(null);
me.SetCannotReachTarget(false);
me.DoNotReacquireTarget();
if (HasFollowState(FollowState.Inprogress)) if (HasFollowState(FollowState.Inprogress))
{ {
Log.outDebug(LogFilter.Scripts, "FollowerAI left combat, returning to CombatStartPosition."); Log.outDebug(LogFilter.Scripts, "FollowerAI left combat, returning to CombatStartPosition.");
if (me.GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Chase) if (me.HasUnitState(UnitState.Chase))
{ me.GetMotionMaster().Remove(MovementGeneratorType.Chase);
float fPosX, fPosY, fPosZ;
me.GetPosition(out fPosX, out fPosY, out fPosZ);
me.GetMotionMaster().MovePoint(0xFFFFFF, fPosX, fPosY, fPosZ);
}
} }
else else
{ me.GetMotionMaster().MoveTargetedHome();
if (me.GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Chase)
me.GetMotionMaster().MoveTargetedHome();
}
Reset(); Reset();
} }
@@ -252,12 +250,8 @@ namespace Game.AI
_questForFollow = quest; _questForFollow = quest;
if (me.GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Waypoint) me.GetMotionMaster().Clear(MovementGeneratorPriority.Normal);
{ me.PauseMovement();
me.GetMotionMaster().Clear();
me.GetMotionMaster().MoveIdle();
Log.outDebug(LogFilter.Scripts, "FollowerAI start with WAYPOINT_MOTION_TYPE, set to MoveIdle.");
}
me.SetNpcFlags(NPCFlags.None); me.SetNpcFlags(NPCFlags.None);
me.SetNpcFlags2(NPCFlags2.None); me.SetNpcFlags2(NPCFlags2.None);
@@ -294,13 +288,7 @@ namespace Game.AI
public void SetFollowComplete(bool withEndEvent = false) public void SetFollowComplete(bool withEndEvent = false)
{ {
if (me.HasUnitState(UnitState.Follow)) if (me.HasUnitState(UnitState.Follow))
{ me.GetMotionMaster().Remove(MovementGeneratorType.Follow);
me.ClearUnitState(UnitState.Follow);
me.StopMoving();
me.GetMotionMaster().Clear();
me.GetMotionMaster().MoveIdle();
}
if (withEndEvent) if (withEndEvent)
AddFollowState(FollowState.PostEvent); AddFollowState(FollowState.PostEvent);