diff options
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 7 |
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); |