From b8642a2abff7ffafb68ebd6f834f876e83e7f95e Mon Sep 17 00:00:00 2001 From: terencehill Date: Mon, 16 Nov 2020 10:34:09 +0100 Subject: [PATCH] Don't spawn casings from the 1st person weapon model if it's invisible; it fixes #2491 --- qcsrc/common/effects/qc/casings.qc | 9 +++++++-- qcsrc/server/client.qh | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/qcsrc/common/effects/qc/casings.qc b/qcsrc/common/effects/qc/casings.qc index 5b0b6d8e3..0e04984d6 100644 --- a/qcsrc/common/effects/qc/casings.qc +++ b/qcsrc/common/effects/qc/casings.qc @@ -12,20 +12,25 @@ REGISTER_NET_TEMP(casings) #if defined(SVQC) .bool cvar_cl_casings; +.bool cvar_r_drawviewmodel; #elif defined(CSQC) bool cvar_cl_casings; +bool cvar_r_drawviewmodel; #endif REPLICATE(cvar_cl_casings, bool, "cl_casings"); +REPLICATE(cvar_r_drawviewmodel, bool, "r_drawviewmodel"); #ifdef SVQC void SpawnCasing(vector vel, float randomvel, vector ang, vector avel, float randomavel, int casingtype, entity casingowner, .entity weaponentity) { - entity wep = casingowner.(weaponentity); - vector org = casingowner.origin + casingowner.view_ofs + wep.spawnorigin.x * v_forward - wep.spawnorigin.y * v_right + wep.spawnorigin.z * v_up; + vector org = casingowner.(weaponentity).spawnorigin; + org = casingowner.origin + casingowner.view_ofs + org.x * v_forward - org.y * v_right + org.z * v_up; FOREACH_CLIENT(true, { if (!(CS(it).cvar_cl_casings)) continue; + if (it == casingowner && !(CS(it).cvar_r_drawviewmodel)) + continue; msg_entity = it; if (!sound_allowed(MSG_ONE, it)) diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index 563fdba1b..efe336d1f 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -214,6 +214,7 @@ CLASS(Client, Object) ATTRIB(Client, cvar_g_xonoticversion, string, this.cvar_g_xonoticversion); ATTRIB(Client, autoswitch, bool, this.autoswitch); ATTRIB(Client, cvar_cl_casings, bool, this.cvar_cl_casings); + ATTRIB(Client, cvar_r_drawviewmodel, bool, this.cvar_r_drawviewmodel); ATTRIB(Client, cvar_cl_dodging_timeout, float, this.cvar_cl_dodging_timeout); ATTRIB(Client, cvar_cl_dodging, float, this.cvar_cl_dodging); ATTRIB(Client, cvar_cl_multijump, bool, this.cvar_cl_multijump); -- 2.39.2