From: Mircea Kitsune Date: Sat, 22 Jan 2011 00:31:09 +0000 (+0200) Subject: Only switch to another weapon if the current one doesn't have enough ammo loaded... X-Git-Tag: xonotic-v0.5.0~309^2~7^2~128 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=32406aaf48d48cb07b47db920af7a063bdf4b57f;p=xonotic%2Fxonotic-data.pk3dir.git Only switch to another weapon if the current one doesn't have enough ammo loaded to still *use* it, not if it has no more ammo loaded at all. --- diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 0b23049fb..0f3edce25 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -1628,7 +1628,7 @@ void W_SetupProjectileVelocity(entity missile, float pSpeed, float spread) // shared weapon reload code .float reload_complain; -float W_ReloadCheck(float ammo_amount) +float W_ReloadCheck(float ammo_amount, float ammo_shot) { entity e; e = get_weaponinfo(self.weapon); @@ -1646,8 +1646,8 @@ float W_ReloadCheck(float ammo_amount) sprint(self, strcat("You don't have enough ammo to reload the ^2", W_Name(self.weapon), "\n")); self.reload_complain = time + 1; } - // is there's no more ammo to reload, only switch to another weapon if there's no more load in this one - if(!self.clip_load) + // switch away if the loaded amount of ammo is not enough to keep using the weapon + if(self.clip_load < ammo_shot) { self.clip_load = -1; // reload later W_SwitchToOtherWeapon(self); diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index 54bbf3652..604efbe1c 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -47,7 +47,7 @@ void W_Crylink_Reload() if(!autocvar_g_balance_crylink_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_cells)) + if(!W_ReloadCheck(self.ammo_cells, min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo))) return; float t; diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 1b67d0408..c4cd72689 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -43,7 +43,7 @@ void W_Electro_Reload() if(!autocvar_g_balance_electro_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_cells)) + if(!W_ReloadCheck(self.ammo_cells, min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo))) return; float t; diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index e803ac77f..ddd5eacf4 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -43,7 +43,7 @@ void W_GrenadeLauncher_Reload() if(!autocvar_g_balance_grenadelauncher_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_rockets)) + if(!W_ReloadCheck(self.ammo_rockets, min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo))) return; float t; diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index 233e6d337..3a5ff0717 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -41,7 +41,7 @@ void W_HLAC_Reload() if(!autocvar_g_balance_hlac_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_cells)) + if(!W_ReloadCheck(self.ammo_cells, min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo))) return; float t; diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index dfef72195..d46342ccc 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -44,7 +44,7 @@ void W_MineLayer_Reload() if(!autocvar_g_balance_minelayer_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_rockets)) + if(!W_ReloadCheck(self.ammo_rockets, autocvar_g_balance_minelayer_ammo)) return; float t; diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index a8e4bb47c..acf65a1f9 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -41,7 +41,7 @@ void W_Shotgun_Reload() if(!autocvar_g_balance_shotgun_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_shells)) + if(!W_ReloadCheck(self.ammo_shells, autocvar_g_balance_shotgun_primary_ammo)) return; float t; diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index 7cfea7d2a..826aa8d8d 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -45,7 +45,7 @@ void W_SniperRifle_Reload() if(!autocvar_g_balance_sniperrifle_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_nails)) + if(!W_ReloadCheck(self.ammo_nails, min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo))) return; float t; diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index a87513b8e..a02175884 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -41,7 +41,7 @@ void W_UZI_Reload() if(!autocvar_g_balance_uzi_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_nails)) + if(!W_ReloadCheck(self.ammo_nails, min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo))) return; float t;