From: FruitieX Date: Sun, 9 Jan 2011 01:38:29 +0000 (+0200) Subject: make the sniper rifle secondary reload. Execute the rifle reload later if it can... X-Git-Tag: xonotic-v0.5.0~318^2~133^2~1 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=33df8727651a426d2a95a063022716ada346327e;p=xonotic%2Fxonotic-data.pk3dir.git make the sniper rifle secondary reload. Execute the rifle reload later if it can't be done right at the moment you hit the key --- diff --git a/balance25.cfg b/balance25.cfg index bb646c8f7..95c2f2f1f 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -627,6 +627,7 @@ set g_balance_sniperrifle_primary_bulletconstant 130 // 56.3qu set g_balance_sniperrifle_primary_burstcost 0 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 0 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 35 set g_balance_sniperrifle_secondary_headshotaddeddamage 15 // 50 damage only on head diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg index 0ee817988..d1b959c33 100644 --- a/balanceLeeStricklin.cfg +++ b/balanceLeeStricklin.cfg @@ -627,6 +627,7 @@ set g_balance_sniperrifle_primary_bulletconstant 130 // 56.3qu set g_balance_sniperrifle_primary_burstcost 0 // require same cooldown as secondary, note it's smaller than primary refire time set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 0 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 40 set g_balance_sniperrifle_secondary_headshotaddeddamage 20 diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 451adf196..600f7fb5e 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -627,6 +627,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu set g_balance_sniperrifle_primary_burstcost 0 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 0 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 50 set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index a16f07ba1..1a4001532 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -627,6 +627,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu set g_balance_sniperrifle_primary_burstcost 0 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 1 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 42 set g_balance_sniperrifle_secondary_headshotaddeddamage 42 diff --git a/balancetZork.cfg b/balancetZork.cfg index b0b589867..174a5c3da 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -627,6 +627,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu set g_balance_sniperrifle_primary_burstcost 0 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 0 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 50 set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index d8d0c5f82..07a74d4c6 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -109,6 +109,7 @@ float autocvar_g_balance_sniperrifle_secondary_damage; float autocvar_g_balance_sniperrifle_secondary_force; float autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage; float autocvar_g_balance_sniperrifle_secondary_lifetime; +float autocvar_g_balance_sniperrifle_secondary_reload; float autocvar_g_balance_sniperrifle_secondary_refire; float autocvar_g_balance_sniperrifle_secondary_speed; float autocvar_g_balance_sniperrifle_secondary_spread; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index cb2d2ed3d..ec89824d8 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1065,6 +1065,8 @@ void PutClientInServer (void) self.cnt = self.switchweapon; self.weapon = 0; + self.wish_reload = 0; + if(!self.alivetime) self.alivetime = time; } else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) { diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 6de63b937..17190326f 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -1,8 +1,6 @@ void W_Reload() { - if(self.switchweapon == self.weapon) - if(self.weaponentity.state == WS_READY) - weapon_action(self.weapon, WR_RELOAD); + self.wish_reload = 1; } // switch between weapons diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 8db4849e7..970c86af4 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -613,6 +613,7 @@ float client_cefc_accumulatortime; #endif .float sniperrifle_bulletcounter; +.float wish_reload; #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE // when doing this, hagar can go through clones diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index 720ab8f82..22992dc3c 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -212,9 +212,7 @@ float w_sniperrifle(float req) { if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted) { - if(self.switchweapon == self.weapon) - if(self.weaponentity.state == WS_READY) - W_SniperRifle_Reload(); + self.wish_reload = 1; } else { @@ -231,16 +229,32 @@ float w_sniperrifle(float req) { if (autocvar_g_balance_sniperrifle_secondary) { - if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire)) - if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost) - { - weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire); - W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire); - self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost; - } + if(autocvar_g_balance_sniperrifle_secondary_reload) + self.wish_reload = 1; + else + { + if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire)) + if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost) + { + weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire); + W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire); + self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost; + } + } } } } + if(self.wish_reload) + { + if(self.switchweapon == self.weapon) + { + if(self.weaponentity.state == WS_READY) + { + self.wish_reload = 0; + W_SniperRifle_Reload(); + } + } + } } else if (req == WR_PRECACHE) { @@ -266,7 +280,7 @@ float w_sniperrifle(float req) return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo; else if (req == WR_RELOAD) { - W_SniperRifle_Reload(); + self.wish_reload = 1; } else if (req == WR_RESETPLAYER) {