diff --git a/engine/client/cl_ents.c b/engine/client/cl_ents.c index 3fd336874..bbb7bdf6a 100644 --- a/engine/client/cl_ents.c +++ b/engine/client/cl_ents.c @@ -1727,6 +1727,8 @@ void CL_LinkPacketEntities (void) dlight_t *dl; vec3_t angles; qboolean nolerp; + static int flickertime; + static int flicker; float servertime; @@ -1751,6 +1753,10 @@ void CL_LinkPacketEntities (void) servertime = realtime; */ + i = servertime*20; + if (flickertime != i) + flicker = rand(); + autorotate = anglemod(100*servertime); #ifdef CSQC_DAT @@ -1825,7 +1831,7 @@ void CL_LinkPacketEntities (void) if (radius) { - radius += r_lightflicker.value?(rand()&31):0; + radius += r_lightflicker.value?((flicker + state->number)&31):0; CL_NewDlightRGB(state->number, state->origin, radius, 0.1, colour[0], colour[1], colour[2]); } } @@ -2664,6 +2670,8 @@ void CL_LinkPlayers (void) vec3_t angles; qboolean predictplayers; model_t *model; + static int flickertime; + static int flicker; if (!cl.worldmodel || cl.worldmodel->needload) return; @@ -2751,13 +2759,23 @@ void CL_LinkPlayers (void) vec3_t org; VectorCopy(state->origin, org); for (pnum = 0; pnum < cl.splitclients; pnum++) - VectorCopy(cl.simorg[pnum], org); + if (cl.playernum[pnum] == j) + VectorCopy(cl.simorg[pnum], org); if (model) { org[2] += model->mins[2]; org[2] += 32; } - radius += r_lightflicker.value?(rand()&31):0; + if (r_lightflicker.value) + { + pnum = realtime*20; + if (flickertime != pnum) + { + flickertime = pnum; + flicker = rand(); + } + radius += (flicker+j)&31; + } CL_NewDlightRGB(j+1, org, radius, 0.1, colour[0], colour[1], colour[2])->flags &= ~LFLAG_ALLOW_FLASH; } } diff --git a/engine/client/client.h b/engine/client/client.h index 69979b08b..4eaabce55 100644 --- a/engine/client/client.h +++ b/engine/client/client.h @@ -624,7 +624,6 @@ typedef struct char q2statusbar[1024]; char q2layout[1024]; int parse_entities; - int surpressCount; float lerpfrac; vec3_t predicted_origin; vec3_t predicted_angles; diff --git a/engine/client/clq2_ents.c b/engine/client/clq2_ents.c index c2cdd320f..9bc9b262f 100644 --- a/engine/client/clq2_ents.c +++ b/engine/client/clq2_ents.c @@ -1153,6 +1153,7 @@ void CLQ2_ParseFrame (void) int cmd; int len; q2frame_t *old; + int i,j; memset (&cl.q2frame, 0, sizeof(cl.q2frame)); @@ -1164,7 +1165,10 @@ void CLQ2_ParseFrame (void) cl.q2frame.deltaframe = MSG_ReadLong (); cl.q2frame.servertime = cl.q2frame.serverframe*100; - cl.surpressCount = MSG_ReadByte (); + i = MSG_ReadByte (); + + for (j=0 ; jkick_angles[i], ps->kick_angles[i], lerp); + r_refdef.viewangles[i] += v_gunkick_q2.value * LerpAngle (ops->kick_angles[i], ps->kick_angles[i], lerp); VectorCopy(r_refdef.vieworg, cl.simorg[0]); VectorCopy(r_refdef.viewangles, cl.simangles[0]); diff --git a/engine/client/pr_csqc.c b/engine/client/pr_csqc.c index 5cc2a91d0..aba392c9a 100644 --- a/engine/client/pr_csqc.c +++ b/engine/client/pr_csqc.c @@ -115,6 +115,9 @@ typedef enum VF_AFOV = 203, //aproximate fov (match what the engine would normally use for the fov cvar). p0=fov, p1=zoom } viewflags; +/*FIXME: this should be changed*/ +#define CSQC_API_VERSION 1.0f + #define CSQCRF_VIEWMODEL 1 //Not drawn in mirrors #define CSQCRF_EXTERNALMODEL 2 //drawn ONLY in mirrors #define CSQCRF_DEPTHHACK 4 //fun depthhack @@ -5311,7 +5314,7 @@ qboolean CSQC_Init (unsigned int checksum) if (csqcg.init_function) { void *pr_globals = PR_globals(csqcprogs, PR_CURRENT); - G_FLOAT(OFS_PARM0) = 1.0; //api version + G_FLOAT(OFS_PARM0) = CSQC_API_VERSION; //api version (((string_t *)pr_globals)[OFS_PARM1] = PR_TempString(csqcprogs, FULLENGINENAME)); G_FLOAT(OFS_PARM2) = version_number(); PR_ExecuteProgram(csqcprogs, csqcg.init_function); diff --git a/engine/client/view.c b/engine/client/view.c index 12d4b4aed..4055938bd 100644 --- a/engine/client/view.c +++ b/engine/client/view.c @@ -91,6 +91,7 @@ cvar_t v_suitcshift = SCVAR("v_suitcshift", "1"); cvar_t v_ringcshift = SCVAR("v_ringcshift", "1"); cvar_t v_pentcshift = SCVAR("v_pentcshift", "1"); cvar_t v_gunkick = SCVAR("v_gunkick", "0"); +cvar_t v_gunkick_q2 = SCVAR("v_gunkick_q2", "1"); cvar_t v_viewheight = SCVAR("v_viewheight", "0"); @@ -1533,6 +1534,7 @@ void V_Init (void) Cvar_Register (&v_ringcshift, VIEWVARS); Cvar_Register (&v_pentcshift, VIEWVARS); Cvar_Register (&v_gunkick, VIEWVARS); + Cvar_Register (&v_gunkick_q2, VIEWVARS); Cvar_Register (&v_bonusflash, VIEWVARS);