- if (!cl.movecmd[0].impulse && (!cl_netimmediatebuttons.integer || cl.movecmd[0].buttons == cl.movecmd[1].buttons))
- {
- // don't choke the connection with packets (obey rate limit)
- if ((cls.protocol == PROTOCOL_QUAKEWORLD || cls.signon == SIGNONS) && !NetConn_CanSend(cls.netcon) && !cl.islocalgame)
- return;
- // don't send too often (cl_netfps)
- if (realtime < cl.lastpackettime + packettime)
- return;
- }
+ important = (cl.cmd.impulse || (cl_netimmediatebuttons.integer && cl.cmd.buttons != cl.movecmd[1].buttons));
+ // don't send too often (cl_netfps)
+ if (!important && realtime < cl.lastpackettime + packettime)
+ return;
+ // don't choke the connection with packets (obey rate limit)
+ // it is important that this check be last, because it adds a new
+ // frame to the shownetgraph output and any cancelation after this
+ // will produce a nasty spike-like look to the netgraph
+ // we also still send if it is important
+ if (!NetConn_CanSend(cls.netcon) && !important)
+ return;