void WorldSession::HandleMoveKnockBackAck(WorldPacket& recv_data) { DEBUG_LOG("CMSG_MOVE_KNOCK_BACK_ACK"); Unit* mover = _player->GetMover(); Player* plMover = mover->GetTypeId() == TYPEID_PLAYER ? (Player*)mover : NULL; // ignore, waiting processing in WorldSession::HandleMoveWorldportAckOpcode and WorldSession::HandleMoveTeleportAck if (plMover && plMover->IsBeingTeleported()) { recv_data.rpos(recv_data.wpos()); // prevent warnings spam return; } ObjectGuid guid; MovementInfo movementInfo; recv_data >> guid.ReadAsPacked(); recv_data >> Unused<uint32>(); // knockback packets counter recv_data >> movementInfo; if (!VerifyMovementInfo(movementInfo, guid)) return; HandleMoverRelocation(movementInfo); WorldPacket data(MSG_MOVE_KNOCK_BACK, recv_data.size() + 15); data << mover->GetPackGUID(); data << movementInfo; data << movementInfo.GetJumpInfo().sinAngle; data << movementInfo.GetJumpInfo().cosAngle; data << movementInfo.GetJumpInfo().xyspeed; data << movementInfo.GetJumpInfo().velocity; mover->SendMessageToSetExcept(&data, _player); }