WowLegacyCore / HermesProxy

A World of Warcraft connection Proxy for VMaNGOS & CMaNGOS.
GNU General Public License v3.0
312 stars 102 forks source link

Fix for bug causing walking to be activated when cc ends, on vmangos servers with anticheat enabled. #372

Closed erkz12 closed 3 months ago

erkz12 commented 3 months ago

If a spline movement ends when the player is rooted, the modern client sends a CMSG_MOVE_SPLINE_DONE packet with a movement flag "Falling" and a flag "PendingRoot" that doesn't have an equivalent on the vmangos server. The server then gets packet with the flag "Falling", without the "Root" movement flag and this triggers the anti-cheat which restores the previous flags that include "WalkMode" for auras with the confuse mechanic (like Blind, Scatter Shot or Polymorph). Other ways cause this effect, but those are most likely caused by an issue in the anti-cheat code and they happen on both the vanilla client and the modern client with HermesProxy.

This pull request changes the handler for the CMSG_MOVE_SPLINE_DONE packet, so that it doesn't send the packet directly but waits a short time and takes the movement flags from a packet with opcode CMSG_MOVE_FALL_LAND that is usually sent immediately after it. If the CMSG_MOVE_FALL_LAND pakcet doesn't come after a short time, the CMSG_MOVE_SPLINE_DONE is sent unmodified.