From 1dcbbf49390195b7f0b8d0eec4eededf7207309c Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 15 Mar 2009 10:15:05 +0000 Subject: [PATCH] improve shotgun and shootfromcenter git-svn-id: svn://svn.icculus.org/nexuiz/trunk@6173 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_weaponsystem.qc | 18 ++++++------------ data/qcsrc/server/g_hook.qc | 8 +------- data/qcsrc/server/miscfunctions.qc | 23 +++++++++++++++++++++++ data/qcsrc/server/w_shotgun.qc | 6 +++--- 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 623a0b8df..841e51f66 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -46,10 +46,8 @@ void W_SetupShot(entity ent, vector vecs, float antilag, float recoil, string sn vecs = ent.weaponentity.movedir; vecs_y = -vecs_y; } - else if (cvar("g_shootfromeye")) - vecs_y = vecs_z = 0; - else if (cvar("g_shootfromcenter")) - vecs_y = 0; + else + vecs = shotorg_adjust(vecs, TRUE, FALSE); if(debug_shotorg != '0 0 0') vecs = debug_shotorg; @@ -408,16 +406,12 @@ void CL_Weaponentity_Think() self.view_ofs = '0 0 0'; - if(cvar("g_shootfromcenter") || cvar("g_shootfromeye")) if(self.movedir_x >= 0) { - self.view_ofs_y = -self.movedir_y; - self.movedir += self.view_ofs; - } - - if(cvar("g_shootfromeye")) - { - self.movedir_z = 0; + vector v0; + v0 = self.movedir; + self.movedir = shotorg_adjust(v0, FALSE, FALSE); + self.view_ofs = shotorg_adjust(v0, FALSE, TRUE) - v0; } // check if an instant weapon switch occurred diff --git a/data/qcsrc/server/g_hook.qc b/data/qcsrc/server/g_hook.qc index d80fc9546..7249e14f6 100644 --- a/data/qcsrc/server/g_hook.qc +++ b/data/qcsrc/server/g_hook.qc @@ -470,13 +470,7 @@ void GrappleHookInit() if(g_grappling_hook) hook_shotorigin = '8 -8 -12'; else - { - hook_shotorigin = '26.2148 9.2059 -15.9772'; - if(cvar("g_shootfromcenter")) - hook_shotorigin_y = 0; - if(cvar("g_shootfromeye")) - hook_shotorigin_y = hook_shotorigin_z = 0; - } + hook_shotorigin = shotorg_adjust('26.2148 9.2059 -15.9772', FALSE, FALSE); } void SetGrappleHookBindings() diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 147f9196f..a122f4757 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -2025,3 +2025,26 @@ void write_recordmarker(entity pl, float tstart, float dt) strcat("//", strconv(2, 0, 0, GetGametype()), " RECORD SET ", mmsss(dt * 10)), " ", ftos(tstart), " ", ftos(dt), "\n")); } + +vector shotorg_adjust(vector vecs, float y_is_right, float visual) +{ + if (cvar("g_shootfromeye")) + { + if(visual) + { + vecs_y = 0; + vecs_z -= 2; + } + else + { + vecs_y = 0; + vecs_z = 0; + } + } + else if (cvar("g_shootfromcenter")) + { + vecs_y = 0; + vecs_z -= 2; + } + return vecs; +} diff --git a/data/qcsrc/server/w_shotgun.qc b/data/qcsrc/server/w_shotgun.qc index 15478d3e0..07799de14 100644 --- a/data/qcsrc/server/w_shotgun.qc +++ b/data/qcsrc/server/w_shotgun.qc @@ -90,12 +90,12 @@ void W_Shotgun_Attack2 (void) SpawnCasing (w_shotorg - v_forward * 10, ((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); flash = spawn(); - setorigin(flash, '53 5 0'); + setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below if (gettagindex(self.weaponentity, "shot")) setattachment(flash, self.weaponentity, "shot"); - else if (gettagindex(self.weaponentity, "bone01")) - setattachment(flash, self.weaponentity, "bone01"); + else if (gettagindex(self.weaponentity, "bone02")) + setattachment(flash, self.weaponentity, "bone02"); else { setorigin(flash, '48 0 5'); -- 2.39.2