]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/damage.qc
Merge branch 'master' into terencehill/arena_and_ca_fixes
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / damage.qc
index 57d4c5c0e7da66651f4280e8abdadabea0d6e072..5910dba3e41d13f4cf4636e34cf1983de9b9f5ef 100644 (file)
@@ -32,15 +32,14 @@ void Ent_DamageInfo(float isNew)
        
        for(self = findradius(w_org, rad + MAX_DAMAGEEXTRARADIUS); self; self = self.chain)
        {
-               vector p = NearestPointOnBox(self, w_org);
-               if(vlen(p - w_org) > rad + self.damageextraradius)
-                       continue;
-
+               vector nearest = NearestPointOnBox(self, w_org);
                if(rad)
                {
-                       thisdmg = vlen(self.origin - w_org) / rad;
+                       thisdmg = ((vlen (nearest - w_org) - bound(MIN_DAMAGEEXTRARADIUS, self.damageextraradius, MAX_DAMAGEEXTRARADIUS)) / rad);
                        if(thisdmg >= 1)
-                               thisdmg = 1;
+                               continue;
+                       if(thisdmg < 0)
+                               thisdmg = 0;
                        if(dmg)
                        {
                                thisdmg = dmg + (edge - dmg) * thisdmg;
@@ -54,6 +53,9 @@ void Ent_DamageInfo(float isNew)
                }
                else
                {
+                       if(vlen(nearest - w_org) > bound(MIN_DAMAGEEXTRARADIUS, self.damageextraradius, MAX_DAMAGEEXTRARADIUS))
+                               continue;
+
                        thisdmg = dmg;
                        thisforce = forcemul * force;
                }