+
+ if ((val = GETEDICTFIELDVALUE(sv_player, eval_punchvector)))
+ {
+ len = VectorNormalizeLength (val->vector);
+
+ len -= 20*sv.frametime;
+ if (len < 0)
+ len = 0;
+ VectorScale (val->vector, len, val->vector);
+ }
+}
+
+/*
+===================
+SV_FreeMove
+===================
+*/
+void SV_FreeMove (void)
+{
+ int i;
+ float wishspeed;
+
+ AngleVectors (sv_player->v.v_angle, forward, right, up);
+
+ for (i = 0; i < 3; i++)
+ velocity[i] = forward[i] * cmd.forwardmove + right[i] * cmd.sidemove;
+
+ velocity[2] += cmd.upmove;
+
+ wishspeed = VectorLength (velocity);
+ if (wishspeed > sv_maxspeed.value)
+ {
+ VectorScale (velocity, sv_maxspeed.value / wishspeed, velocity);
+ wishspeed = sv_maxspeed.value;
+ }