From e2528621ea683956c842838f4d9b093fcc286040 Mon Sep 17 00:00:00 2001 From: FruitieX Date: Wed, 21 Jul 2010 02:55:33 +0300 Subject: [PATCH] shotgun melee should be easier to hit now, (tracing for hit until end of swing in anim, becomes weaker if it doesnt hit right away though) --- balance.cfg | 3 ++- balance25.cfg | 3 ++- balanceFruit.cfg | 3 ++- balanceSamual.cfg | 3 ++- balanceXPM.cfg | 3 ++- qcsrc/server/w_shotgun.qc | 22 +++++++++++++++++----- 6 files changed, 27 insertions(+), 10 deletions(-) diff --git a/balance.cfg b/balance.cfg index c96b82870..1db210ec1 100644 --- a/balance.cfg +++ b/balance.cfg @@ -245,7 +245,8 @@ set g_balance_shotgun_secondary 1 set g_balance_shotgun_secondary_melee 0 // ew, bad! Still uses the melee anim! set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim set g_balance_shotgun_secondary_melee_range 60 -set g_balance_shotgun_secondary_melee_size 50 +set g_balance_shotgun_secondary_melee_swing 50 +set g_balance_shotgun_secondary_melee_time 0.4 set g_balance_shotgun_secondary_bullets 6 set g_balance_shotgun_secondary_damage 9 set g_balance_shotgun_secondary_force 60 diff --git a/balance25.cfg b/balance25.cfg index 12c356dfc..bc415cac7 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -245,7 +245,8 @@ set g_balance_shotgun_secondary 1 set g_balance_shotgun_secondary_melee 0 // ew, bad! Still uses the melee anim! set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim set g_balance_shotgun_secondary_melee_range 60 -set g_balance_shotgun_secondary_melee_size 50 +set g_balance_shotgun_secondary_melee_swing 50 +set g_balance_shotgun_secondary_melee_time 0.4 set g_balance_shotgun_secondary_bullets 6 set g_balance_shotgun_secondary_damage 9 set g_balance_shotgun_secondary_force 60 diff --git a/balanceFruit.cfg b/balanceFruit.cfg index 5d1aae9f1..6b9a70841 100644 --- a/balanceFruit.cfg +++ b/balanceFruit.cfg @@ -245,7 +245,8 @@ set g_balance_shotgun_secondary 1 set g_balance_shotgun_secondary_melee 1 set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim set g_balance_shotgun_secondary_melee_range 60 -set g_balance_shotgun_secondary_melee_size 50 +set g_balance_shotgun_secondary_melee_swing 50 +set g_balance_shotgun_secondary_melee_time 0.4 set g_balance_shotgun_secondary_bullets 6 // one more per shot than 15/3 (primary bullets/amount of shots = 3) set g_balance_shotgun_secondary_damage 115 set g_balance_shotgun_secondary_force 150 diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 40a82f37a..d9ae5ecb6 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -245,7 +245,8 @@ set g_balance_shotgun_secondary 1 set g_balance_shotgun_secondary_melee 0 // ew, bad! Still uses the melee anim! set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim set g_balance_shotgun_secondary_melee_range 60 -set g_balance_shotgun_secondary_melee_size 50 +set g_balance_shotgun_secondary_melee_swing 50 +set g_balance_shotgun_secondary_melee_time 0.4 set g_balance_shotgun_secondary_bullets 6 set g_balance_shotgun_secondary_damage 8 set g_balance_shotgun_secondary_force 15 diff --git a/balanceXPM.cfg b/balanceXPM.cfg index ba0a23c01..9033e4263 100644 --- a/balanceXPM.cfg +++ b/balanceXPM.cfg @@ -245,7 +245,8 @@ set g_balance_shotgun_secondary 0 set g_balance_shotgun_secondary_melee 0 // ew, bad! Still uses the melee anim! set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim set g_balance_shotgun_secondary_melee_range 60 -set g_balance_shotgun_secondary_melee_size 50 +set g_balance_shotgun_secondary_melee_swing 50 +set g_balance_shotgun_secondary_melee_time 0.4 set g_balance_shotgun_secondary_bullets 6 // one more per shot than 15/3 (primary bullets/amount of shots = 3) set g_balance_shotgun_secondary_damage 7 set g_balance_shotgun_secondary_force 20 diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index e12678771..319f743e3 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -91,22 +91,34 @@ void W_Shotgun_Attack2 (void) void shotgun_meleethink (void) { + // store time when we started swinging down inside self.cnt + if(!self.cnt) + self.cnt = time; + makevectors(self.owner.v_angle); vector angle; angle = v_forward; - // broken? fix, needs to be easier to hit + // broken? fix, needs to be easier to hit EDIT: maybe not :) //WarpZone_tracebox_antilag(self.owner, self.owner.origin + self.owner.view_ofs, self.owner.origin + self.owner.view_ofs + angle * cvar("g_balance_shotgun_secondary_melee_range") - (v_right + v_up) * cvar("g_balance_shotgun_secondary_melee_size"), self.owner.origin + self.owner.view_ofs + (v_right + v_up) * cvar("g_balance_shotgun_secondary_melee_size"), self.owner.origin + self.owner.view_ofs + angle * cvar("g_balance_shotgun_secondary_melee_range"), FALSE, self.owner, ANTILAG_LATENCY(self.owner)); - WarpZone_traceline_antilag(self.owner, self.owner.origin + self.owner.view_ofs, self.owner.origin + self.owner.view_ofs + angle * cvar("g_balance_shotgun_secondary_melee_range"), FALSE, self.owner, ANTILAG_LATENCY(self.owner)); + float f; + f = (self.cnt + cvar("g_balance_shotgun_secondary_melee_time") - time) / cvar("g_balance_shotgun_secondary_melee_time") * 2 - 1; + vector targpos; + targpos = self.owner.origin + self.owner.view_ofs + angle * cvar("g_balance_shotgun_secondary_melee_range") + v_right * f * cvar("g_balance_shotgun_secondary_melee_swing") + v_up * f * cvar("g_balance_shotgun_secondary_melee_swing"); + WarpZone_traceline_antilag(self.owner, self.owner.origin + self.owner.view_ofs, targpos, FALSE, self.owner, ANTILAG_LATENCY(self.owner)); - // apply the damage + // apply the damage, also remove self if(trace_fraction < 1) { vector force; force = angle * cvar("g_balance_shotgun_secondary_force"); - Damage (trace_ent, self.owner, self.owner, cvar("g_balance_shotgun_secondary_damage"), WEP_SHOTGUN, self.owner.origin + self.owner.view_ofs, force); + Damage (trace_ent, self.owner, self.owner, cvar("g_balance_shotgun_secondary_damage") * ((f + 1) / 2), WEP_SHOTGUN, self.owner.origin + self.owner.view_ofs, force); + remove(self); } - remove(self); + else if(time >= self.cnt + cvar("g_balance_shotgun_secondary_melee_time")) // missed, remove ent + remove(self); + else // continue swinging the weapon in hope of hitting someone :) + self.nextthink = time; } void W_Shotgun_Attack3 (void) -- 2.39.2