X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_triggers.qc;h=20372ec9e16de7ecf123ba9f3b87a41baf1977ce;hb=2a10a37a7da4bc47b1d7f757991178cc22e7e5e6;hp=8ded34feae4e6fae28e931a5a18f85868c6dc8e0;hpb=c6908edbf3e92b2e6fd39d8b39ce1140f5f1a513;p=xonotic%2Fxonotic-data.pk3dir.git 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)