Core/AI: couple movement related corrections in FollowerAI
Port From (https://github.com/TrinityCore/TrinityCore/commit/bda32dfbd13a880287e408a221e5d0a7f97de5d5)
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user