aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MovementHandler.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
index 8023f98c93d..62ee55b903b 100755
--- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
@@ -523,13 +523,29 @@ void WorldSession::HandleMoveKnockBackAck(WorldPacket & recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_KNOCK_BACK_ACK");
- uint64 guid; // guid - unused
+ uint64 guid;
recv_data.readPackGUID(guid);
+ if (_player->m_mover->GetGUID() != guid)
+ return;
+
recv_data.read_skip<uint32>(); // unk
MovementInfo movementInfo;
ReadMovementInfo(recv_data, &movementInfo);
+ _player->m_movementInfo = movementInfo;
+
+ WorldPacket data(MSG_MOVE_KNOCK_BACK, 66);
+ data.appendPackGUID(guid);
+ _player->BuildMovementPacket(&data);
+
+ // knockback specific info
+ data << movementInfo.j_sinAngle;
+ data << movementInfo.j_cosAngle;
+ data << movementInfo.j_xyspeed;
+ data << movementInfo.j_zspeed;
+
+ _player->SendMessageToSet(&data, false);
}
void WorldSession::HandleMoveHoverAck(WorldPacket& recv_data)