From 43c7abac756bcec847f8b04c1a2d0c50daf0713a Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sun, 26 Dec 2010 22:24:53 +0100 Subject: [PATCH] fix failgun force through warpzones --- qcsrc/server/w_common.qc | 4 +++- qcsrc/server/w_electro.qc | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/qcsrc/server/w_common.qc b/qcsrc/server/w_common.qc index 24f434044..62d3dd809 100644 --- a/qcsrc/server/w_common.qc +++ b/qcsrc/server/w_common.qc @@ -23,6 +23,7 @@ void W_GiveWeapon (entity e, float wep, string name) } .float railgundistance; +.vector railgunforce; void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, float mindist, float maxdist, float halflifedist, float forcehalflifedist, float deathtype) { local vector hitloc, force, endpoint, dir; @@ -67,6 +68,7 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f trace_ent.railgunhitloc = end; trace_ent.railgunhitsolidbackup = trace_ent.solid; trace_ent.railgundistance = vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - start); + trace_ent.railgunforce = WarpZone_TransformVelocity(WarpZone_trace_transform, force); // stop if this is a wall if (trace_ent.solid == SOLID_BSP) @@ -130,7 +132,7 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f // apply the damage if (ent.takedamage) - Damage (ent, self, self, bdamage * f, deathtype, hitloc, force * ffs); + Damage (ent, self, self, bdamage * f, deathtype, hitloc, ent.railgunforce * ffs); // create a small explosion to throw gibs around (if applicable) //setorigin (explosion, hitloc); diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 1ae02b161..a25d26631 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -295,6 +295,7 @@ void W_Electro_Attack3 (void) entity beam, oldself; self.lgbeam = beam = spawn(); + beam.classname = "lgbeam"; beam.solid = SOLID_NOT; beam.think = lgbeam_think; beam.owner = self; -- 2.39.2