aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 33f7e257a28..ccc8c38ba1a 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -373,7 +373,12 @@ public:
if (oldToNewStateDelta < 0)
oldToNewStateDelta += pauseTimesCount + 1;
- if (oldToNewStateDelta < newToOldStateDelta)
+ // this additional check is neccessary because client doesn't check dynamic flags on progress update
+ // instead it multiplies progress from dynamicflags field by -1 and then compares that against 0
+ // when calculating path progress while we simply check the flag if (!_owner.HasDynamicFlag(GO_DYNFLAG_LO_INVERTED_MOVEMENT))
+ bool isAtStartOfPath = _stateChangeProgress == 0;
+
+ if (oldToNewStateDelta < newToOldStateDelta && !isAtStartOfPath)
_owner.SetDynamicFlag(GO_DYNFLAG_LO_INVERTED_MOVEMENT);
else
_owner.RemoveDynamicFlag(GO_DYNFLAG_LO_INVERTED_MOVEMENT);