From 6655f6128a9b56f9609b3d48964827ae6fd325ef Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Thu, 25 Aug 2011 18:57:38 +0300 Subject: [PATCH] Allow specifying how often to generate the particles. Also randomize them for gibs, so gibs don't all generate effects at the same time and look ugly. --- defaultXonotic.cfg | 3 ++- qcsrc/client/autocvars.qh | 1 + qcsrc/client/damage.qc | 23 ++++++++++++++++------- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 99fa2fb87..4d28f23ed 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -359,7 +359,8 @@ set g_telefrags_avoid 1 "when teleporters have a random destination, avoid telep set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed" set cl_damageeffect_player 0.05 "enable weapon damage effects on players, value specifies how often to show the effect" -set cl_damageeffect_gibs 0.0125 "enable weapon damage effects on gibs, value specifies how often to show the effect" +set cl_damageeffect_gibs 0.125 "enable weapon damage effects on gibs, value specifies how often to show the effect" +set cl_damageeffect_gibs_randomize 0.5 "probability for effects to show on gibs each tick, used so gibs don't generate particles at the same time and look ugly" set cl_damageeffect_lifetime 0.04 "how much a damage effect lasts, multiplied by damage amount" set cl_damageeffect_lifetime_max 5 "maximum amount of lifetime a damage effect may have at a time" diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 915de339d..ac12dd8d9 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -364,3 +364,4 @@ float autocvar_cl_lerpexcess; string autocvar__togglezoom; float autocvar_cl_damageeffect_player; float autocvar_cl_damageeffect_gibs; +float autocvar_cl_damageeffect_gibs_randomize; diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 5d2d50551..99e8dca63 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -235,8 +235,10 @@ void DamageInfo_Precache() (get_weaponinfo(i)).weapon_func(WR_PRECACHE); } -.entity dmgeffect; -.float partnum; +// damage effect + +.entity dmgent; +.float dmgpartnum, dmgtime; void Ent_DamageEffect_Think() { @@ -245,6 +247,8 @@ void Ent_DamageEffect_Think() float foundgib; entity entcs; + if(self.dmgtime > time) + return; entcs = entcs_receiver[self.team]; if(!entcs) return; @@ -257,7 +261,11 @@ void Ent_DamageEffect_Think() if(head.team == self.team) { if(autocvar_cl_damageeffect_gibs) - pointparticles(self.partnum, head.origin, '0 0 0', 1); + { + if(autocvar_cl_damageeffect_gibs_randomize < random()) + pointparticles(self.dmgpartnum, head.origin, '0 0 0', 1); + self.dmgtime = time + autocvar_cl_damageeffect_gibs; + } foundgib = TRUE; } } @@ -268,7 +276,8 @@ void Ent_DamageEffect_Think() return; // if we aren't in third person mode, hide own damage effect // Now apply the effect to actual players - pointparticles(self.partnum, entcs.origin, '0 0 0', 1); + pointparticles(self.dmgpartnum, entcs.origin, '0 0 0', 1); + self.dmgtime = time + autocvar_cl_damageeffect_player; } void Ent_DamageEffect() @@ -304,7 +313,7 @@ void Ent_DamageEffect() // if the player already has a damage effect, replace it with the new one entity head; - for(head = world; (head = find(head, classname, "dmgeffect")); ) + for(head = world; (head = find(head, classname, "dmgent")); ) { if(head.team == entnumber - 1) { @@ -315,9 +324,9 @@ void Ent_DamageEffect() entity e; e = spawn(); - e.classname = "dmgeffect"; + e.classname = "dmgent"; e.team = entnumber - 1; - e.partnum = particleeffectnum(effectnum); + e.dmgpartnum = particleeffectnum(effectnum); e.think = Ent_DamageEffect_Think; e.nextthink = time; } -- 2.39.2