]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Allow multiple damage effects on the same player, but limit the number of damages...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 4 Jan 2012 15:46:31 +0000 (17:46 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 4 Jan 2012 15:46:31 +0000 (17:46 +0200)
defaultXonotic.cfg
qcsrc/client/autocvars.qh
qcsrc/client/damage.qc

index c9e968c31f12d4817d973cf6ce3136d306fbee1c..2d240fd751e89dbf1abda704c7ec89dacf42df97 100644 (file)
@@ -368,6 +368,7 @@ 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_player_limit 3 "how many damages to show on a player at once"
 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"
index 17c01b576c4b6d9637d141ca6099dd9379bce711..70e0cfd6fbf69d1ed39b8df6256a6b44b34e1038 100644 (file)
@@ -374,6 +374,7 @@ var float autocvar_cl_eventchase_speed = 1.3;
 float autocvar_cl_lerpexcess;
 string autocvar__togglezoom;
 float autocvar_cl_damageeffect_player;
+float autocvar_cl_damageeffect_player_limit;
 float autocvar_cl_damageeffect_gibs;
 float autocvar_cl_damageeffect_gibs_randomize;
 float autocvar_cl_damageeffect_lifetime;
index cef57328503bc1b1dd6c4d57447acae9c3430b9c..e60cc363648a89a653553a6cdb4098375aa64caa 100644 (file)
@@ -290,7 +290,7 @@ void DamageEffect_Think()
 
 void DamageEffect(vector hitorg, float dmg, float type, float specnum, float entnumber)
 {
-       float life;
+       float life, i;
        string specstr, effectnum;
        entity e;
 
@@ -301,6 +301,15 @@ void DamageEffect(vector hitorg, float dmg, float type, float specnum, float ent
        if(self.model == "" || !self.model)
                return;
 
+       // if we reached our damage count limit for this player, return
+       for(e = world; (e = find(e, classname, "damageeffect")); )
+       {
+               if(e.team == entnumber)
+                       i += 1;
+       }
+       if(i >= autocvar_cl_damageeffect_player_limit)
+               return;
+
        specstr = species_prefix(specnum);
        life = bound(0, dmg * autocvar_cl_damageeffect_lifetime, autocvar_cl_damageeffect_lifetime_max);
 
@@ -315,19 +324,7 @@ void DamageEffect(vector hitorg, float dmg, float type, float specnum, float ent
                effectnum = substring(effectnum, 0, strlen(effectnum) - 1); // remove the _ symbol at the end of the species name
        }
 
-       // if the player already has a damage effect, update it instead of spawning a new one
-       entity head;
-       for(head = world; (head = find(head, classname, "damageeffect")); )
-       {
-               if(head.team == entnumber)
-               {
-                       head.dmgpartnum = particleeffectnum(effectnum);
-                       head.lifetime += life;
-                       return;
-               }
-       }
-
-       float i, closest;
+       float closest;
        for(i = 1; gettaginfo(self, i); i++)
        {
                // go through all tags on the player model, choose the one closest to the damage origin