From: Rudolf Polzer Date: Sat, 23 Oct 2010 16:36:46 +0000 (+0200) Subject: trigger_hurt, misc_laser: support "team" like trigger_push X-Git-Tag: xonotic-v0.1.0preview~234^2~10 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=2a10a37a7da4bc47b1d7f757991178cc22e7e5e6;p=xonotic%2Fxonotic-data.pk3dir.git trigger_hurt, misc_laser: support "team" like trigger_push --- diff --git a/qcsrc/server/g_triggers.qc b/qcsrc/server/g_triggers.qc index 8ded34fea..20372ec9e 100644 --- a/qcsrc/server/g_triggers.qc +++ b/qcsrc/server/g_triggers.qc @@ -416,6 +416,10 @@ void trigger_hurt_touch() if (self.active != ACTIVE_ACTIVE) return; + if(self.team) + if((self.spawnflags & 4 == 0) == (self.team != other.team)) + return; + // only do the EXACTTRIGGER_TOUCH checks when really needed (saves some cpu) if (other.iscreature) { @@ -1012,6 +1016,8 @@ void misc_laser_think() { vector o; entity oldself; + entity hitent; + vector hitloc; self.nextthink = time; @@ -1032,20 +1038,18 @@ void misc_laser_think() o = self.origin + v_forward * 32768; } - if(self.dmg) + if(self.dmg || self.enemy.target != "") { - if(self.dmg < 0) - FireRailgunBullet(self.origin, o, 100000, 0, 0, 0, 0, 0, DEATH_HURTTRIGGER); - else - FireRailgunBullet(self.origin, o, self.dmg * frametime, 0, 0, 0, 0, 0, DEATH_HURTTRIGGER); + traceline(self.origin, o, MOVE_NORMAL, self); } + hitent = trace_ent; + hitloc = trace_endpos; if(self.enemy.target != "") // DETECTOR laser { - traceline(self.origin, o, MOVE_NORMAL, self); if(trace_ent.iscreature) { - self.pusher = trace_ent; + self.pusher = hitent; if(!self.count) { self.count = 1; @@ -1071,6 +1075,15 @@ void misc_laser_think() } } } + + if(self.dmg) + { + if(self.team) + if((self.spawnflags & 4 == 0) == (self.team != hitent.team)) + return; + if(hitent.takedamage) + Damage(hitent, self, self, ((self.dmg < 0) ? 100000 : (self.dmg * frametime)), DEATH_HURTTRIGGER, hitloc, '0 0 0'); + } } float laser_SendEntity(entity to, float fl)