]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Allow specifying how often to generate the particles. Also randomize them for gibs...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Thu, 25 Aug 2011 15:57:38 +0000 (18:57 +0300)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Thu, 25 Aug 2011 15:57:38 +0000 (18:57 +0300)
defaultXonotic.cfg
qcsrc/client/autocvars.qh
qcsrc/client/damage.qc

index 99fa2fb870f71f82f5ca458ef0c512e862afdd8f..4d28f23ed8a9621ea48c6cd9ac7945600c2d96bc 100644 (file)
@@ -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"
 
index 915de339d6332c6cd19c0bb2df3a5119608db921..ac12dd8d9af39e09d3b5e762f886050526039690 100644 (file)
@@ -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;
index 5d2d50551ba7311152759c7a00e53b2561551ce7..99e8dca6339c94e433043b7e7b6215459320ff2c 100644 (file)
@@ -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;
 }