From: Mircea Kitsune Date: Sat, 22 Jan 2011 23:36:57 +0000 (+0200) Subject: Use only WR_SWITCHABLE to check if we can select our weapon. The ammo checks still... X-Git-Tag: xonotic-v0.5.0~309^2~7^2~94 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=1ceb14cc5cb497f1161f72cb5a416b4eaa811382;p=xonotic%2Fxonotic-data.pk3dir.git Use only WR_SWITCHABLE to check if we can select our weapon. The ammo checks still stay for other uses --- diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 3566b5524..a6841d2d7 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -925,21 +925,13 @@ float client_hasweapon(entity cl, float wpn, float andammo, float complain) { oldself = self; self = cl; - f = weapon_action(wpn, WR_CHECKAMMO1); - f = f + weapon_action(wpn, WR_CHECKAMMO2); + f = weapon_action(wpn, WR_SWITCHABLE); // allow switching to reloadable weapons, even if we're out of ammo, since the weapon itself // might still be loaded. The reload code takes care of complaining and forced switching entity e; e = get_weaponinfo(wpn); if(wpn != WEP_TUBA && wpn != WEP_PORTO && wpn != WEP_HOOK) // skip non-reloadable weapons, or we access undefined cvars - if(cvar(strcat("g_balance_", e.netname, "_reload_ammo"))) - { - if(weapon_action(wpn, WR_SWITCHABLE)) - f = 1; - else - f = 0; // necessary to avoid switching back and forth - } // always allow selecting the Mine Layer if we placed mines, so that we can detonate them local entity mine; @@ -1060,13 +1052,9 @@ float weapon_prepareattack_checkammo(float secondary) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) if (!weapon_action(self.weapon, WR_CHECKAMMO1 + secondary)) { - // allow switching to reloadable weapons, even if we're out of ammo, since the weapon itself - // might still be loaded. The reload code takes care of complaining and forced switching - entity e; - e = get_weaponinfo(self.weapon); - if(self.weapon != WEP_TUBA && self.weapon != WEP_PORTO && self.weapon != WEP_HOOK) // skip non-reloadable weapons, or we access undefined cvars - if(cvar(strcat("g_balance_", e.netname, "_reload_ammo"))) - if(weapon_action(self.weapons, WR_SWITCHABLE)) + // always allow reloadable weapons, even if we're out of ammo, since the weapon itself + // could still be loaded. The reload code takes care of the rest + if(weapon_action(self.weapon, WR_SWITCHABLE)) return FALSE; // always keep the Mine Layer if we placed mines, so that we can detonate them diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index 21f3790fa..4f3d5ae23 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -699,7 +699,7 @@ float w_crylink(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo); - return self.crylink_load >= ammo_amount || self.ammo_cells >= ammo_amount; + return (autocvar_g_balance_crylink_reload_ammo && self.crylink_load >= ammo_amount) || self.ammo_cells >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 44a1a9167..247437bc0 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -586,7 +586,7 @@ float w_electro(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo); - return self.electro_load >= ammo_amount || self.ammo_cells >= ammo_amount; + return (autocvar_g_balance_electro_reload_ammo && self.electro_load >= ammo_amount) || self.ammo_cells >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index dfb3605b0..43764ab5e 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -466,7 +466,7 @@ float w_fireball(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo); - return self.fireball_load >= ammo_amount || self.ammo_fuel >= ammo_amount; + return (autocvar_g_balance_fireball_reload_ammo && self.fireball_load >= ammo_amount) || self.ammo_fuel >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 2a26eeae5..3817c9ef9 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -434,7 +434,7 @@ float w_glauncher(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo); - return self.grenadelauncher_load >= ammo_amount || self.ammo_rockets >= ammo_amount; + return (autocvar_g_balance_grenadelauncher_reload_ammo && self.grenadelauncher_load) >= ammo_amount || self.ammo_rockets >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 0d4c38765..4c5ce10b3 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -258,7 +258,7 @@ float w_hagar(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo); - return self.hagar_load >= ammo_amount || self.ammo_rockets >= ammo_amount; + return (autocvar_g_balance_hagar_reload_ammo && self.hagar_load >= ammo_amount) || self.ammo_rockets >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index 08cfd69af..b13976217 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -297,7 +297,7 @@ float w_hlac(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo); - return self.hlac_load >= ammo_amount || self.ammo_cells >= ammo_amount; + return (autocvar_g_balance_hlac_reload_ammo && self.hlac_load >= ammo_amount) || self.ammo_cells >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 50f392f9b..1aa1b61d6 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -503,7 +503,7 @@ float w_minelayer(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = autocvar_g_balance_minelayer_ammo; - return self.minelayer_load >= ammo_amount || self.ammo_rockets >= ammo_amount; + return (autocvar_g_balance_minelayer_reload_ammo && self.minelayer_load >= ammo_amount) || self.ammo_rockets >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index e5c9a1ed8..b5056b052 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -350,7 +350,7 @@ float w_minstanex(float req) if(autocvar_g_balance_minstanex_laser_ammo) ammo_amount = min(ammo_amount, autocvar_g_balance_minstanex_laser_ammo); - return self.minstanex_load >= ammo_amount || self.ammo_cells >= ammo_amount; + return (autocvar_g_balance_minstanex_reload_ammo && self.minstanex_load >= ammo_amount) || self.ammo_cells >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index 49c4d3887..3bca97431 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -308,7 +308,7 @@ float w_nex(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo); - return self.nex_load >= ammo_amount || self.ammo_cells >= ammo_amount; + return (autocvar_g_balance_nex_reload_ammo && self.nex_load >= ammo_amount) || self.ammo_cells >= ammo_amount; } return TRUE; diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index 168e9d2bd..7a89668c7 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -547,7 +547,7 @@ float w_rlauncher(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = autocvar_g_balance_rocketlauncher_ammo; - return self.rocketlauncher_load >= ammo_amount || self.ammo_rockets >= ammo_amount; + return (autocvar_g_balance_rocketlauncher_reload_ammo && self.rocketlauncher_load >= ammo_amount) || self.ammo_rockets >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index cda5bcbf1..a4c4ded49 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -558,7 +558,7 @@ float w_seeker(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo); - return self.seeker_load >= ammo_amount || self.ammo_rockets >= ammo_amount; + return (autocvar_g_balance_seeker_reload_ammo && self.seeker_load >= ammo_amount) || self.ammo_rockets >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index 5fa5fa4c9..c3ed59164 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -233,7 +233,7 @@ float w_shotgun(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = autocvar_g_balance_shotgun_primary_ammo; - return self.shotgun_load >= ammo_amount || self.ammo_shells >= ammo_amount; + return (autocvar_g_balance_shotgun_reload_ammo && self.shotgun_load >= ammo_amount) || self.ammo_shells >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index 1ef0c92a7..00e96bed1 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -272,7 +272,7 @@ float w_sniperrifle(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo); - return self.sniperrifle_load >= ammo_amount || self.ammo_nails >= ammo_amount; + return (autocvar_g_balance_sniperrifle_reload_ammo && self.sniperrifle_load >= ammo_amount) || self.ammo_nails >= ammo_amount; } return TRUE; }; diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 3b43d5204..113b8f74f 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -361,7 +361,7 @@ float w_uzi(float req) // or we have enough ammo to reload the weapon to a usable point float ammo_amount; ammo_amount = min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo); - return self.uzi_load >= ammo_amount || self.ammo_nails >= ammo_amount; + return (autocvar_g_balance_uzi_reload_ammo && self.uzi_load >= ammo_amount) || self.ammo_nails >= ammo_amount; } return TRUE; };