]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Allow cvar to specify whether effects should show only on players, or both players...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 4 Jan 2012 22:31:21 +0000 (00:31 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 4 Jan 2012 22:31:21 +0000 (00:31 +0200)
defaultXonotic.cfg
qcsrc/client/autocvars.qh
qcsrc/client/damage.qc

index acdff456a4497428702aa6f54be2ca9001497786..4e80ab99ad144b9d1609d838edb8676c213ea2b2 100644 (file)
@@ -367,11 +367,12 @@ set g_telefrags_teamplay 1 "never telefrag team mates"
 set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen"
 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 0.05 "enable weapon damage effects on players, value specifies how often to show the effect"
-set cl_damageeffect_limit 3 "how many damages to show on a player at once"
+set cl_damageeffect 2 "enable weapon damage effects. 1 enables effects on players, 2 on players and objects"
+set cl_damageeffect_ticrate 0.05 "particles spawn rate"
+set cl_damageeffect_limit 3 "how many damages to show on a player at once (objects are limited to one effect)"
 set cl_damageeffect_lifetime 0.1 "how much a damage effect lasts, multiplied by damage amount"
-set cl_damageeffect_lifetime_min 2 "minimum amount of life a damage effect may have"
-set cl_damageeffect_lifetime_max 6 "maximum amount of life a damage effect may have"
+set cl_damageeffect_lifetime_min 2 "minimum lifetime a damage effect may have"
+set cl_damageeffect_lifetime_max 6 "maximum lifetime a damage effect may have"
 
 set g_respawn_ghosts 1 "if 1 dead bodies become ghosts and float away when the player respawns"
 set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rotate"
index 0087c5096f474416c618ab3ec964c484847abc31..0e3d171bf9eb5990cfc0c79a6b6b837f5261ea33 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;
+float autocvar_cl_damageeffect_ticrate;
 float autocvar_cl_damageeffect_limit;
 float autocvar_cl_damageeffect_lifetime;
 float autocvar_cl_damageeffect_lifetime_min;
index 56ea9a445171aad05fde9e6663e4fc21feef1647..336b93330d998ee4eb6ead323ece1f6d81c161f8 100644 (file)
@@ -255,35 +255,35 @@ void DamageEffect_Think()
        }
        if(self.dmgtime > time)
                return;
-       if(!autocvar_cl_damageeffect)
-               return; // don't show effects on the invisible dead body if gibs exist
        if(self.team == player_localentnum - 1 && !autocvar_chase_active)
                return; // if we aren't in third person mode, hide own damage effect
 
        // Now apply the effect to the player
        org = gettaginfo(self, 0);
        pointparticles(self.dmgpartnum, org, '0 0 0', 1);
-       self.dmgtime = time + autocvar_cl_damageeffect;
+       self.dmgtime = time + autocvar_cl_damageeffect_ticrate;
 }
 
 void DamageEffect(vector hitorg, float dmg, float type, float specnum, float entnumber)
 {
+       // particle effects for players and objects damaged by weapons (eg: flames coming out of victims shot with rockets)
+
        float life, i;
        string specstr, effectnum;
        entity e;
 
-       if(!autocvar_cl_damageeffect || autocvar_cl_gentle || autocvar_cl_gentle_damage)
+       if(autocvar_cl_gentle || autocvar_cl_gentle_damage)
                return;
        if(self.model == "" || !self.model || !self.drawmask)
                return;
 
-       // return if we reached our damage effect count limit
+       // return if we reached our damage effect limit
        for(e = world; (e = find(e, classname, "damageeffect")); )
                if(e.team == entnumber)
                        i += 1;
-       if(self.isplayermodel && i >= autocvar_cl_damageeffect_limit)
+       if(autocvar_cl_damageeffect < 1 || (self.isplayermodel && i >= autocvar_cl_damageeffect_limit))
                return; // allow multiple damage effects on players
-       if(!self.isplayermodel && i)
+       if(autocvar_cl_damageeffect < 2 || (!self.isplayermodel && i))
                return; // allow a single damage effect on objects
 
        specstr = species_prefix(specnum);
@@ -315,14 +315,14 @@ void DamageEffect(vector hitorg, float dmg, float type, float specnum, float ent
                        if(!closest || vlen(hitorg - gettaginfo(self, tagnum)) <= vlen(hitorg - gettaginfo(self, closest)))
                                closest = tagnum;
                }
-               gettaginfo(self, closest); // set gettaginfo_name
+               gettaginfo(self, closest); // set gettaginfo_name to bone
        }
        else
-               gettaginfo(self, 0);
+               gettaginfo(self, 0); // set gettaginfo_name to origin
 
        e = spawn();
-       setmodel(e, "models/null.md3");
-       setattachment(e, self, gettaginfo_name);
+       setmodel(e, "models/null.md3"); // necessary to attach and read origin
+       setattachment(e, self, gettaginfo_name); // attach to the given bone
        e.owner = self;
        e.team = entnumber;
        e.lifetime = time + life;