From bb565bd51e46b2f99e938964f654a51dedd63571 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 27 Sep 2009 17:49:17 +0000 Subject: [PATCH] a reset facility for weapon properties... should help keep code clean git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7959 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 7 +++++-- data/qcsrc/server/cl_player.qc | 6 +++++- data/qcsrc/server/defs.qh | 1 + data/qcsrc/server/w_campingrifle.qc | 6 ++++++ data/qcsrc/server/w_electro.qc | 4 ++++ data/qcsrc/server/w_fireball.qc | 4 ++++ data/qcsrc/server/w_hook.qc | 4 ++++ data/qcsrc/server/w_minstanex.qc | 4 ++++ data/qcsrc/server/w_porto.qc | 4 ++++ data/qcsrc/server/w_rocketlauncher.qc | 4 ++++ 10 files changed, 41 insertions(+), 3 deletions(-) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index da2503948..99cb05a40 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -792,6 +792,7 @@ void PutClientInServer (void) if(self.classname == "player") { entity spot, oldself; + float j; if(self.team < 0) JoinBestTeam(self, FALSE, TRUE); @@ -806,7 +807,6 @@ void PutClientInServer (void) } RemoveGrapplingHook(self); // Wazat's Grappling Hook - self.campingrifle_bulletcounter = cvar("g_balance_campingrifle_magazinecapacity"); self.classname = "player"; self.wasplayer = TRUE; @@ -981,13 +981,16 @@ void PutClientInServer (void) target_voicescript_clear(self); + // reset fields the weapons may use + for (j = WEP_FIRST; j <= WEP_LAST; ++j) + weapon_action(j, WR_RESETPLAYER); + oldself = self; self = spot; activator = oldself; SUB_UseTargets(); activator = world; self = oldself; - } else if(self.classname == "observer") { PutObserverInServer (); } diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 52974a188..2fff67339 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -430,7 +430,7 @@ void ClientKill_Now_TeamChange(); void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { - local float take, save, waves, sdelay, dh, da; + local float take, save, waves, sdelay, dh, da, j; vector v; float valid_damage_for_weaponstats; @@ -735,6 +735,10 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // remove corpse PlayerCorpseDamage (inflictor, attacker, 100.0, deathtype, hitloc, force); } + + // reset fields the weapons may use just in case + for (j = WEP_FIRST; j <= WEP_LAST; ++j) + weapon_action(j, WR_RESETPLAYER); } } diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 65e278bf8..429328265 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -234,6 +234,7 @@ float WR_PRECACHE = 6; // precaches models/sounds used by this weapon float WR_SUICIDEMESSAGE = 7; // sets w_deathtypestring or leaves it alone (and may inspect w_deathtype for details) float WR_KILLMESSAGE = 8; // sets w_deathtypestring or leaves it alone float WR_RELOAD = 9; // does not need to do anything +float WR_RESETPLAYER = 10; // does not need to do anything void weapon_defaultspawnfunc(float wpn); diff --git a/data/qcsrc/server/w_campingrifle.qc b/data/qcsrc/server/w_campingrifle.qc index c8885c8c7..8de807380 100644 --- a/data/qcsrc/server/w_campingrifle.qc +++ b/data/qcsrc/server/w_campingrifle.qc @@ -226,5 +226,11 @@ float w_campingrifle(float req) { W_CampingRifle_Reload(); } + else if (req == WR_RESETPLAYER) + { + self.campingrifle_accumulator = time - cvar("g_balance_campingrifle_bursttime"); + self.campingrifle_bulletcounter = cvar("g_balance_campingrifle_magazinecapacity"); + W_CampingRifle_CheckMaxBullets(); + } return TRUE; }; diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 2d24bca75..ee216931d 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -294,5 +294,9 @@ float w_electro(float req) w_deathtypestring = "was blasted by #'s blue beam"; } } + else if (req == WR_RESETPLAYER) + { + self.electro_secondarytime = time; + } return TRUE; }; diff --git a/data/qcsrc/server/w_fireball.qc b/data/qcsrc/server/w_fireball.qc index de989b5be..038f2b559 100644 --- a/data/qcsrc/server/w_fireball.qc +++ b/data/qcsrc/server/w_fireball.qc @@ -382,5 +382,9 @@ float w_fireball(float req) w_deathtypestring = "fatefully ignored #'s firemine"; } } + else if (req == WR_RESETPLAYER) + { + self.fireball_secondarytime = time; + } return TRUE; }; diff --git a/data/qcsrc/server/w_hook.qc b/data/qcsrc/server/w_hook.qc index 0bfc8f5da..83a70b4c0 100644 --- a/data/qcsrc/server/w_hook.qc +++ b/data/qcsrc/server/w_hook.qc @@ -239,5 +239,9 @@ float w_hook(float req) w_deathtypestring = "did the impossible"; else if (req == WR_KILLMESSAGE) w_deathtypestring = "has run into #'s gravity bomb"; + else if (req == WR_RESETPLAYER) + { + self.hook_refire = time; + } return TRUE; }; diff --git a/data/qcsrc/server/w_minstanex.qc b/data/qcsrc/server/w_minstanex.qc index f39b01910..c3e7e9d7c 100644 --- a/data/qcsrc/server/w_minstanex.qc +++ b/data/qcsrc/server/w_minstanex.qc @@ -224,5 +224,9 @@ float w_minstanex(float req) w_deathtypestring = "did the impossible"; else if (req == WR_KILLMESSAGE) w_deathtypestring = "has been vaporized by"; + else if (req == WR_RESETPLAYER) + { + self.minstanex_lasthit = 0; + } return TRUE; }; diff --git a/data/qcsrc/server/w_porto.qc b/data/qcsrc/server/w_porto.qc index 401a9e87f..91e862403 100644 --- a/data/qcsrc/server/w_porto.qc +++ b/data/qcsrc/server/w_porto.qc @@ -269,5 +269,9 @@ float w_porto(float req) w_deathtypestring = "did the impossible"; else if (req == WR_KILLMESSAGE) w_deathtypestring = "felt # doing the impossible to him"; + else if (req == WR_RESETPLAYER) + { + self.porto_current = world; + } return TRUE; }; diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index bf56e3c1e..18f52dfeb 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -551,5 +551,9 @@ float w_rlauncher(float req) else w_deathtypestring = "ate #'s rocket"; } + else if (req == WR_RESETPLAYER) + { + self.rl_release = 0; + } return TRUE; }; -- 2.39.2