fix(Core/Movement): followers match their target's motion speed (#25085)

Co-authored-by: killerwife <killerwife@gmail.com>
This commit is contained in:
sogladev
2026-03-16 13:11:24 +01:00
committed by GitHub
parent e8d98dfc34
commit 17ecef7a07
5 changed files with 52 additions and 36 deletions
@@ -995,6 +995,30 @@ std::string Object::GetDebugInfo() const
return sstr.str();
}
UnitMoveType MovementInfo::GetSpeedType(uint32 moveFlags)
{
if (moveFlags & MOVEMENTFLAG_FLYING)
{
if (moveFlags & MOVEMENTFLAG_BACKWARD)
return MOVE_FLIGHT_BACK;
return MOVE_FLIGHT;
}
else if (moveFlags & MOVEMENTFLAG_SWIMMING)
{
if (moveFlags & MOVEMENTFLAG_BACKWARD)
return MOVE_SWIM_BACK;
return MOVE_SWIM;
}
else if (moveFlags & MOVEMENTFLAG_WALKING)
return MOVE_WALK;
else if (moveFlags & MOVEMENTFLAG_BACKWARD)
return MOVE_RUN_BACK;
return MOVE_RUN;
}
void MovementInfo::OutDebug()
{
LOG_INFO("movement", "MOVEMENT INFO");
+4
View File
@@ -31,6 +31,7 @@
#include "ObjectGuid.h"
#include "Optional.h"
#include "Position.h"
#include "UnitDefines.h"
#include "UpdateData.h"
#include "UpdateMask.h"
#include "ObjectVisibilityContainer.h"
@@ -344,6 +345,9 @@ struct MovementInfo
void RemoveMovementFlag(uint32 flag) { flags &= ~flag; }
[[nodiscard]] bool HasMovementFlag(uint32 flag) const { return flags & flag; }
[[nodiscard]] UnitMoveType GetSpeedType() const { return GetSpeedType(flags); }
[[nodiscard]] static UnitMoveType GetSpeedType(uint32 moveFlags);
[[nodiscard]] uint16 GetExtraMovementFlags() const { return flags2; }
void AddExtraMovementFlag(uint16 flag) { flags2 |= flag; }
[[nodiscard]] bool HasExtraMovementFlag(uint16 flag) const { return flags2 & flag; }
@@ -15,6 +15,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ACORE_UNITDEFINES_H
#define ACORE_UNITDEFINES_H
#include "Define.h"
#include "EnumFlag.h"
@@ -487,3 +490,5 @@ enum SplineType
SPLINETYPE_FACING_TARGET = 3,
SPLINETYPE_FACING_ANGLE = 4
};
#endif // ACORE_UNITDEFINES_H