cvar_t cl_sound_ric1 = {0, "cl_sound_ric1", "weapons/ric1.wav", "sound to play with 5% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
cvar_t cl_sound_ric2 = {0, "cl_sound_ric2", "weapons/ric2.wav", "sound to play with 5% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
cvar_t cl_sound_ric3 = {0, "cl_sound_ric3", "weapons/ric3.wav", "sound to play with 10% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
+
+#define RIC_GUNSHOT 1
+#define RIC_GUNSHOTQUAD 2
cvar_t cl_sound_ric_gunshot = {0, "cl_sound_ric_gunshot", "0", "specifies if and when the related cl_sound_ric and cl_sound_tink sounds apply to TE_GUNSHOT/TE_GUNSHOTQUAD, 0 = no sound, 1 = TE_GUNSHOT, 2 = TE_GUNSHOTQUAD, 3 = TE_GUNSHOT and TE_GUNSHOTQUAD"};
cvar_t cl_sound_r_exp3 = {0, "cl_sound_r_exp3", "weapons/r_exp3.wav", "sound to play during TE_EXPLOSION and related effects (empty cvar disables sound)"};
cvar_t cl_serverextension_download = {0, "cl_serverextension_download", "0", "indicates whether the server supports the download command"};
// touch all of the precached models that are still loaded so we can free
// anything that isn't needed
- Mod_ClearUsed();
+ if (!sv.active)
+ Mod_ClearUsed();
for (i = 1;i < MAX_MODELS && cl.model_name[i][0];i++)
Mod_FindName(cl.model_name[i]);
// precache any models used by the client (this also marks them used)
// touch all of the precached models that are still loaded so we can free
// anything that isn't needed
- Mod_ClearUsed();
+ if (!sv.active)
+ Mod_ClearUsed();
for (i = 1;i < nummodels;i++)
Mod_FindName(cl.model_name[i]);
// precache any models used by the client (this also marks them used)
ent->render.framelerp = 1;
// reset various persistent stuff
ent->persistent.muzzleflash = 0;
- VectorCopy(ent->state_current.origin, ent->persistent.trail_origin);
+ ent->persistent.trail_allowed = false;
}
else if (DotProduct(odelta, odelta) > 1000*1000 || (cl.fixangle[0] && !cl.fixangle[1]))
{
VectorCopy(ent->state_current.angles, ent->persistent.oldangles);
VectorCopy(ent->state_current.origin, ent->persistent.neworigin);
VectorCopy(ent->state_current.angles, ent->persistent.newangles);
+ ent->persistent.trail_allowed = false;
}
else if (ent->state_current.flags & RENDER_STEP)
{
VectorSet(pos2, pos[0] + radius, pos[1] + radius, pos[2] + radius);
VectorSet(pos, pos[0] - radius, pos[1] - radius, pos[2] - radius);
CL_ParticleEffect(EFFECT_TE_GUNSHOT, radius, pos, pos2, vec3_origin, vec3_origin, NULL, 0);
- if(cl_sound_ric_gunshot.integer == 1 || cl_sound_ric_gunshot.integer == 3)
+ if(cl_sound_ric_gunshot.integer & RIC_GUNSHOT)
{
if (rand() % 5)
S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);
MSG_ReadVector(pos, cls.protocol);
CL_FindNonSolidLocation(pos, pos, 4);
CL_ParticleEffect(EFFECT_TE_GUNSHOT, 1, pos, pos, vec3_origin, vec3_origin, NULL, 0);
- if(cl_sound_ric_gunshot.integer == 1 || cl_sound_ric_gunshot.integer == 3)
+ if(cl_sound_ric_gunshot.integer & RIC_GUNSHOT)
{
if (rand() % 5)
S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);
MSG_ReadVector(pos, cls.protocol);
CL_FindNonSolidLocation(pos, pos, 4);
CL_ParticleEffect(EFFECT_TE_GUNSHOTQUAD, 1, pos, pos, vec3_origin, vec3_origin, NULL, 0);
- if(cl_sound_ric_gunshot.integer >= 2)
+ if(cl_sound_ric_gunshot.integer & RIC_GUNSHOTQUAD)
{
if (rand() % 5)
S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);