#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))
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);