From 29e2447f8f419a9d9a7e0549a797f5c90e078a1c Mon Sep 17 00:00:00 2001 From: ek12 <44677937+erkz12@users.noreply.github.com> Date: Thu, 4 Jul 2024 01:26:30 +0200 Subject: [PATCH] Fix for a bug causing walking to be activated by overlapping CC on Vmangos servers. The modern client sends the falling flag in every MOVE_SPLINE_DONE packet and this can trigger the movement rooted condition in the vmangos anticheat if the player is rooted at the end of the spline movement. Simply removing the flag should fix the issue and since the 1.12 doesn't seem to use the falling flag in the spline done packets, it shouldn't cause any problems. --- HermesProxy/World/Server/PacketHandlers/MovementHandler.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/HermesProxy/World/Server/PacketHandlers/MovementHandler.cs b/HermesProxy/World/Server/PacketHandlers/MovementHandler.cs index b7cef6e1..00864b83 100644 --- a/HermesProxy/World/Server/PacketHandlers/MovementHandler.cs +++ b/HermesProxy/World/Server/PacketHandlers/MovementHandler.cs @@ -179,6 +179,10 @@ void HandleMoveSplineDone(MoveSplineDone movement) WorldPacket packet = new WorldPacket(Opcode.CMSG_MOVE_SPLINE_DONE); if (LegacyVersion.AddedInVersion(ClientVersionBuild.V3_2_0_10192)) packet.WritePackedGuid(movement.Guid.To64()); + // The modern client sends the falling flag in every spline done packet, while the 1.12 client never sends it. + // Sending the falling flag when the player is rooted triggers the vmangos anticheat. + if (LegacyVersion.RemovedInVersion(ClientVersionBuild.V2_0_1_6180)) + movement.MoveInfo.Flags &= ~(uint)MovementFlagModern.Falling; movement.MoveInfo.WriteMovementInfoLegacy(packet); packet.WriteInt32(movement.SplineID); if (LegacyVersion.RemovedInVersion(ClientVersionBuild.V2_0_1_6180))