From c3dc45202462eb35a9b5e1f211e0bd3c5021eb95 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 7 Dec 2021 18:23:50 -0500 Subject: [PATCH] Core/PlayerAI: apply some movement related corrections Port From (https://github.com/TrinityCore/TrinityCore/commit/6814b4d32b283c3a1b676d2f13953894a9f1ff7a) --- Source/Game/AI/PlayerAI/PlayerAI.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Source/Game/AI/PlayerAI/PlayerAI.cs b/Source/Game/AI/PlayerAI/PlayerAI.cs index 3b7d1ada6..961c9cc18 100644 --- a/Source/Game/AI/PlayerAI/PlayerAI.cs +++ b/Source/Game/AI/PlayerAI/PlayerAI.cs @@ -1278,8 +1278,10 @@ namespace Game.AI _isFollowing = true; me.AttackStop(); me.CastStop(); - me.StopMoving(); - me.GetMotionMaster().Clear(); + + if (me.HasUnitState(UnitState.Chase)) + me.GetMotionMaster().Remove(MovementGeneratorType.Chase); + me.GetMotionMaster().MoveFollow(charmer, SharedConst.PetFollowDist, SharedConst.PetFollowAngle); } return; @@ -1343,8 +1345,10 @@ namespace Game.AI _isFollowing = true; me.AttackStop(); me.CastStop(); - me.StopMoving(); - me.GetMotionMaster().Clear(); + + if (me.HasUnitState(UnitState.Chase)) + me.GetMotionMaster().Remove(MovementGeneratorType.Chase); + me.GetMotionMaster().MoveFollow(charmer, SharedConst.PetFollowDist, SharedConst.PetFollowAngle); } } @@ -1355,17 +1359,16 @@ namespace Game.AI { me.CastStop(); me.AttackStop(); - me.StopMoving(); - me.GetMotionMaster().Clear(); - me.GetMotionMaster().MovePoint(0, me.GetPosition(), false); // force re-sync of current position for all clients + + if (me.GetMotionMaster().Size() <= 1) // if there is no current movement (we dont want to erase/overwrite any existing stuff) + me.GetMotionMaster().MovePoint(0, me.GetPosition(), false); // force re-sync of current position for all clients } else { me.CastStop(); me.AttackStop(); - // @todo only voluntary movement (don't cancel stuff like death grip or charge mid-animation) - me.GetMotionMaster().Clear(); - me.StopMoving(); + + me.GetMotionMaster().Clear(MovementGeneratorPriority.Normal); } base.OnCharmed(isNew);