diff --git a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator .cpp b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator .cpp index e13dc1b125e..adb472f4de6 100644 --- a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator .cpp +++ b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator .cpp @@ -208,14 +208,16 @@ void ChaseMovementGenerator::LaunchMovement(Unit* owner, Unit* target, float cha float additionalRange = target->GetSpeed(moveType) * 0.5f; - target->MovePositionToFirstCollision(dest, additionalRange, _angle ? target->NormalizeOrientation(target->GetOrientation() - _angle->RelativeAngle + float(M_PI)) : target->GetRelativeAngle(owner) + float(M_PI)); + if (!owner->HasUnitState(UNIT_STATE_IGNORE_PATHFINDING)) + target->MovePositionToFirstCollision(dest, additionalRange, _angle ? target->NormalizeOrientation(target->GetOrientation() - _angle->RelativeAngle + float(M_PI)) : target->GetRelativeAngle(owner) + float(M_PI)); } - else + else if (!owner->HasUnitState(UNIT_STATE_IGNORE_PATHFINDING)) target->MovePositionToFirstCollision(dest, chaseRange, _angle ? target->NormalizeOrientation(target->GetOrientation() - _angle->RelativeAngle) : target->GetRelativeAngle(owner)); owner->UpdateAllowedPositionZ(dest.GetPositionX(), dest.GetPositionY(), dest.m_positionZ); Creature* creature = owner->ToCreature(); + Movement::MoveSplineInit init(owner); PathGenerator path(owner); bool success = path.CalculatePath(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), owner->CanFly()); @@ -228,7 +230,6 @@ void ChaseMovementGenerator::LaunchMovement(Unit* owner, Unit* target, float cha return; } - Movement::MoveSplineInit init(owner); init.MovebyPath(path.GetPath()); init.SetWalk(false); if (backward) diff --git a/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp index aa8deb01cd2..6fc9c48446b 100644 --- a/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp @@ -161,10 +161,13 @@ bool FollowMovementGenerator::Update(Unit* owner, uint32 diff) dest.m_positionY += std::sin(Position::NormalizeOrientation(target->GetOrientation() + offset)) * (velocity * 2); // Now we calculate out actual destination data - float relativeAngle = target->GetRelativeAngle(dest); - float distance = target->GetExactDist2d(dest); - dest = target->GetPosition(); - target->MovePositionToFirstCollision(dest, distance, relativeAngle); + if (!owner->HasUnitState(UNIT_STATE_IGNORE_PATHFINDING)) + { + float relativeAngle = target->GetRelativeAngle(dest); + float distance = target->GetExactDist2d(dest); + dest = target->GetPosition(); + target->MovePositionToFirstCollision(dest, distance, relativeAngle); + } Movement::MoveSplineInit init(owner); init.MoveTo(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ());