From: Rudolf Polzer Date: Wed, 4 Jan 2012 12:34:09 +0000 (+0100) Subject: add a field .damageextraradius to DamageInfo entities to be able to tune how much... X-Git-Tag: xonotic-v0.6.0~188^2~32 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e1f5688a2d0b36249850a8d8ab4707da5796f1df;p=xonotic%2Fxonotic-data.pk3dir.git add a field .damageextraradius to DamageInfo entities to be able to tune how much an entity "attracts" damage --- diff --git a/qcsrc/client/Defs.qc b/qcsrc/client/Defs.qc index 901380c1b..ee721353a 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -238,6 +238,8 @@ float servertime, serverprevtime, serverdeltatime; float ticrate; .float damageforcescale; +#define MAX_DAMAGEEXTRARADIUS 16 +.float damageextraradius; .void(float thisdmg, float hittype, vector org, vector thisforce) event_damage; // only for Porto diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 51029396a..57d4c5c0e 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -30,13 +30,17 @@ void Ent_DamageInfo(float isNew) else forcemul = 1; - for(self = findradius(w_org, rad); self; self = self.chain) + 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; + if(rad) { thisdmg = vlen(self.origin - w_org) / rad; if(thisdmg >= 1) - continue; + thisdmg = 1; if(dmg) { thisdmg = dmg + (edge - dmg) * thisdmg;