From 446eb1f4f7aa66ad34ff27bc0f7d5d8b7d36c4a2 Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Wed, 23 Jan 2008 19:53:28 +0000 Subject: [PATCH] fix bug where you could shoot through someone if you were too close git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3243 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_weaponsystem.qc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 5a85c0d5e..3f8ef7c60 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -25,15 +25,19 @@ vector w_shotdir; void(entity ent, vector vecs, float antilag, float recoil, string snd) W_SetupShot = { local vector trueaimpoint; - traceline_hitcorpse(self, self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self); + traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self); trueaimpoint = trace_endpos; if (cvar("g_shootfromeye")) - w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x; + w_shotorg = ent.origin + ent.view_ofs; else if (cvar("g_shootfromcenter")) - w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x + '0 0 1' * vecs_z; + w_shotorg = ent.origin + ent.view_ofs + '0 0 1' * vecs_z; else - w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x + v_right * vecs_y + v_up * vecs_z; + w_shotorg = ent.origin + ent.view_ofs + v_right * vecs_y + v_up * vecs_z; + // now move the shotorg forward as much as requested if possible + traceline(w_shotorg, w_shotorg + v_forward * vecs_x, MOVE_NOMONSTERS, self); + w_shotorg = trace_endpos; + // calculate the shotdir from the chosen shotorg w_shotdir = normalize(trueaimpoint - w_shotorg); // explanation of g_antilag: -- 2.39.2