From: Mircea Kitsune Date: Sun, 23 Jan 2011 15:01:18 +0000 (+0200) Subject: Properly implement the new check for all weapons (hopefully, only testing can tell) X-Git-Tag: xonotic-v0.5.0~309^2~7^2~90 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=54ed0e31a41f2569b2ea8f2a5169201fde7d6f9d;p=xonotic%2Fxonotic-data.pk3dir.git Properly implement the new check for all weapons (hopefully, only testing can tell) --- diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index 73f9f5864..255aa4330 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -581,6 +581,7 @@ void spawnfunc_weapon_crylink (void) float w_crylink(float req) { + float ammo_amount; if (req == WR_AIM) { if (random() < 0.10) @@ -683,10 +684,9 @@ float w_crylink(float req) if(self.crylink_lastgroup && self.crylink_waitrelease) return TRUE; - if(autocvar_g_balance_crylink_reload_ammo) - return self.crylink_load >= autocvar_g_balance_crylink_primary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo; + ammo_amount += (autocvar_g_balance_crylink_reload_ammo && self.crylink_load >= autocvar_g_balance_crylink_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { @@ -694,10 +694,9 @@ float w_crylink(float req) if(self.crylink_lastgroup && self.crylink_waitrelease) return TRUE; - if(autocvar_g_balance_crylink_reload_ammo) - return self.crylink_load >= autocvar_g_balance_crylink_secondary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo; + ammo_amount += (autocvar_g_balance_crylink_reload_ammo && self.crylink_load >= autocvar_g_balance_crylink_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index cd03bdceb..686e18021 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -437,6 +437,7 @@ void w_electro_checkattack() .float BUTTON_ATCK_prev; float w_electro(float req) { + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK=FALSE; @@ -561,27 +562,24 @@ float w_electro(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_electro_reload_ammo) - { - if(autocvar_g_balance_electro_lightning) - return !autocvar_g_balance_electro_primary_ammo || (self.electro_load > 0); - else - return self.electro_load >= autocvar_g_balance_electro_primary_ammo; - } + if(autocvar_g_balance_electro_lightning) + ammo_amount = !autocvar_g_balance_electro_primary_ammo || (self.ammo_cells > 0); else + ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; + if(autocvar_g_balance_electro_reload_ammo) { if(autocvar_g_balance_electro_lightning) - return !autocvar_g_balance_electro_primary_ammo || (self.ammo_cells > 0); + ammo_amount += !autocvar_g_balance_electro_primary_ammo || (self.electro_load > 0); else - return self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; + ammo_amount += self.electro_load >= autocvar_g_balance_electro_primary_ammo; } + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_electro_reload_ammo) - return self.electro_load >= autocvar_g_balance_electro_secondary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo; + ammo_amount += (autocvar_g_balance_electro_reload_ammo && self.electro_load >= autocvar_g_balance_electro_secondary_ammo); + return ammo_amount; } else if (req == WR_RESETPLAYER) { diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index ea34c80af..aab2db71b 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -378,6 +378,7 @@ void spawnfunc_weapon_fireball (void) float w_fireball(float req) { + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK = FALSE; @@ -450,17 +451,15 @@ float w_fireball(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_fireball_reload_ammo) - return self.fireball_load >= autocvar_g_balance_fireball_primary_ammo; - else - return self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo; + ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo; + ammo_amount += (autocvar_g_balance_fireball_reload_ammo && self.fireball_load >= autocvar_g_balance_fireball_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_fireball_reload_ammo) - return self.fireball_load >= autocvar_g_balance_fireball_secondary_ammo; - else - return self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo; + ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo; + ammo_amount += (autocvar_g_balance_fireball_reload_ammo && self.fireball_load >= autocvar_g_balance_fireball_secondary_ammo); + return ammo_amount; } else if (req == WR_RESETPLAYER) { diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 77bf031b3..39f99f009 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -332,6 +332,7 @@ float w_glauncher(float req) { entity nade; float nadefound; + float ammo_amount; if (req == WR_AIM) { @@ -422,17 +423,15 @@ float w_glauncher(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_grenadelauncher_reload_ammo) - return self.grenadelauncher_load >= autocvar_g_balance_grenadelauncher_primary_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo; + ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo; + ammo_amount += (autocvar_g_balance_grenadelauncher_reload_ammo && self.grenadelauncher_load >= autocvar_g_balance_grenadelauncher_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_grenadelauncher_reload_ammo) - return self.grenadelauncher_load >= autocvar_g_balance_grenadelauncher_secondary_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo; + ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo; + ammo_amount += (autocvar_g_balance_grenadelauncher_reload_ammo && self.grenadelauncher_load >= autocvar_g_balance_grenadelauncher_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 2a8e4d7f4..f16183021 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -191,6 +191,7 @@ void spawnfunc_weapon_hagar (void) float w_hagar(float req) { + float ammo_amount; if (req == WR_AIM) if (random()>0.15) self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hagar_primary_speed, 0, autocvar_g_balance_hagar_primary_lifetime, FALSE); @@ -246,17 +247,15 @@ float w_hagar(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_hagar_reload_ammo) - return self.hagar_load >= autocvar_g_balance_hagar_primary_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo; + ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo; + ammo_amount += (autocvar_g_balance_hagar_reload_ammo && self.hagar_load >= autocvar_g_balance_hagar_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_hagar_reload_ammo) - return self.hagar_load >= autocvar_g_balance_hagar_secondary_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo; + ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo; + ammo_amount += (autocvar_g_balance_hagar_reload_ammo && self.hagar_load >= autocvar_g_balance_hagar_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index bdbb88bc6..a30136da5 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -233,6 +233,7 @@ void spawnfunc_weapon_hlac (void) float w_hlac(float req) { + float ammo_amount; if (req == WR_AIM) self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hlac_primary_speed, 0, autocvar_g_balance_hlac_primary_lifetime, FALSE); else if (req == WR_THINK) @@ -285,17 +286,15 @@ float w_hlac(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_hlac_reload_ammo) - return self.hlac_load >= autocvar_g_balance_hlac_primary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo; + ammo_amount += (autocvar_g_balance_hlac_reload_ammo && self.hlac_load >= autocvar_g_balance_hlac_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_hlac_reload_ammo) - return self.hlac_load >= autocvar_g_balance_hlac_secondary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo; + ammo_amount += (autocvar_g_balance_hlac_reload_ammo && self.hlac_load >= autocvar_g_balance_hlac_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 6d307bb2f..e64f0c0d7 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -331,6 +331,8 @@ float w_minelayer(float req) { entity mine; float minfound; + float ammo_amount; + if (req == WR_AIM) { // aim and decide to fire if appropriate @@ -487,18 +489,14 @@ float w_minelayer(float req) else if (req == WR_CHECKAMMO1) { // don't switch while placing a mine - if(autocvar_g_balance_electro_reload_ammo) - { - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) - && self.clip_load < autocvar_g_balance_minelayer_ammo) - return FALSE; - } - else + if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) { - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) - && self.ammo_rockets < autocvar_g_balance_minelayer_ammo) - return FALSE; + if(self.ammo_rockets < autocvar_g_balance_minelayer_ammo) + ammo_amount = FALSE; + if(autocvar_g_balance_electro_reload_ammo && self.minelayer_load < autocvar_g_balance_minelayer_ammo) + ammo_amount = FALSE; } + return ammo_amount; } else if (req == WR_CHECKAMMO2) { diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 8b01ceee8..54984a132 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -243,6 +243,7 @@ void spawnfunc_weapon_minstanex (void); // defined in t_items.qc float minstanex_ammo; float w_minstanex(float req) { + float ammo_amount; if (req == WR_AIM) { if(self.ammo_cells > 0) @@ -326,19 +327,17 @@ float w_minstanex(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_minstanex_reload_ammo) - return self.clip_load >= minstanex_ammo; - else - return self.ammo_cells >= minstanex_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_ammo; + ammo_amount += (autocvar_g_balance_minstanex_reload_ammo && self.minstanex_load >= autocvar_g_balance_minstanex_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { if(!autocvar_g_balance_minstanex_laser_ammo) return TRUE; - if(autocvar_g_balance_minstanex_reload_ammo) - return self.clip_load >= autocvar_g_balance_minstanex_laser_ammo; - else - return self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo; + ammo_amount += (autocvar_g_balance_minstanex_reload_ammo && self.minstanex_load >= autocvar_g_balance_minstanex_laser_ammo); + return ammo_amount; } else if (req == WR_RESETPLAYER) { diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index e93262e92..b57214def 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -146,6 +146,7 @@ void spawnfunc_weapon_nex (void); // defined in t_items.qc float w_nex(float req) { float dt; + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE); @@ -297,17 +298,16 @@ float w_nex(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_nex_reload_ammo) - return self.clip_load >= autocvar_g_balance_nex_primary_ammo; - else - return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; + ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.nex_load >= autocvar_g_balance_nex_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_nex_reload_ammo) - return self.clip_load >= autocvar_g_balance_nex_primary_ammo; // don't allow charging if we don't have enough ammo - else - return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; // don't allow charging if we don't have enough ammo + // don't allow charging if we don't have enough ammo + ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_secondary_ammo; + ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.nex_load >= autocvar_g_balance_nex_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index ab30b0712..39a04e490 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -366,6 +366,8 @@ float w_rlauncher(float req) { entity rock; float rockfound; + float ammo_amount; + if (req == WR_AIM) { // aim and decide to fire if appropriate @@ -526,20 +528,15 @@ float w_rlauncher(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_rocketlauncher_reload_ammo) - { - // don't switch while guiding a missile - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER) - && self.clip_load < autocvar_g_balance_rocketlauncher_ammo) - return FALSE; - } - else + // don't switch while guiding a missile + if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER) { - // don't switch while guiding a missile - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER) - && self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo) - return FALSE; + if(self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo) + ammo_amount = FALSE; + if(autocvar_g_balance_electro_reload_ammo && self.minelayer_load < autocvar_g_balance_rocketlauncher_ammo) + ammo_amount = FALSE; } + return ammo_amount; } else if (req == WR_CHECKAMMO2) return FALSE; diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index b1cde626a..47e161fd0 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -492,6 +492,8 @@ void spawnfunc_weapon_seeker (void) float w_seeker(float req) { + float ammo_amount; + if (req == WR_AIM) self.BUTTON_ATCK = bot_aim(autocvar_g_balance_seeker_tag_speed, 0, 20, FALSE); @@ -547,17 +549,15 @@ float w_seeker(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_seeker_reload_ammo) - return self.clip_load >= autocvar_g_balance_seeker_tag_ammo + autocvar_g_balance_seeker_missile_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_seeker_tag_ammo + autocvar_g_balance_seeker_missile_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_seeker_missile_ammo; + ammo_amount += (autocvar_g_balance_seeker_reload_ammo && self.seeker_load >= autocvar_g_balance_seeker_missile_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_seeker_reload_ammo) - return self.clip_load >= autocvar_g_balance_seeker_flac_ammo; - else - return self.ammo_rockets >= autocvar_g_balance_seeker_flac_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_seeker_flac_ammo; + ammo_amount += (autocvar_g_balance_seeker_reload_ammo && self.seeker_load >= autocvar_g_balance_seeker_flac_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index 359ab4dfa..d86a32870 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -170,6 +170,8 @@ void W_SniperRifle_BulletHail(float mode, void(void) AttackFunc, float fr, float .float bot_secondary_sniperriflemooth; float w_sniperrifle(float req) { + float ammo_amount; + if (req == WR_AIM) { self.BUTTON_ATCK=FALSE; @@ -255,17 +257,15 @@ float w_sniperrifle(float req) } else if (req == WR_CHECKAMMO1) { - if(autocvar_g_balance_sniperrifle_reload_ammo) - return self.sniperrifle_load >= autocvar_g_balance_sniperrifle_primary_ammo; - else - return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_sniperrifle_primary_ammo; + ammo_amount += (autocvar_g_balance_sniperrifle_reload_ammo && self.sniperrifle_load >= autocvar_g_balance_sniperrifle_primary_ammo); + return ammo_amount; } else if (req == WR_CHECKAMMO2) { - if(autocvar_g_balance_sniperrifle_reload_ammo) - return self.sniperrifle_load >= autocvar_g_balance_sniperrifle_secondary_ammo; - else - return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo; + ammo_amount = self.ammo_cells >= autocvar_g_balance_sniperrifle_secondary_ammo; + ammo_amount += (autocvar_g_balance_sniperrifle_reload_ammo && self.sniperrifle_load >= autocvar_g_balance_sniperrifle_secondary_ammo); + return ammo_amount; } else if (req == WR_RELOAD) { diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index d84128343..eaa4442a2 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -256,6 +256,7 @@ void spawnfunc_weapon_machinegun(); // defined in t_items.qc float w_uzi(float req) { + float ammo_amount; if (req == WR_AIM) if(vlen(self.origin-self.enemy.origin) < 3000 - bound(0, skill, 10) * 200) self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE); @@ -350,16 +351,34 @@ float w_uzi(float req) else if (req == WR_CHECKAMMO1) { if(autocvar_g_balance_uzi_mode == 1) - return self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo; else - return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + + if(autocvar_g_balance_uzi_reload_ammo) + { + if(autocvar_g_balance_uzi_mode == 1) + ammo_amount += self.uzi_load >= autocvar_g_balance_uzi_sustained_ammo; + else + ammo_amount += self.uzi_load >= autocvar_g_balance_uzi_first_ammo; + } + return ammo_amount; } else if (req == WR_CHECKAMMO2) { if(autocvar_g_balance_uzi_mode == 1) - return self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo; else - return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + + if(autocvar_g_balance_uzi_reload_ammo) + { + if(autocvar_g_balance_uzi_mode == 1) + ammo_amount += self.uzi_load >= autocvar_g_balance_uzi_burst_ammo; + else + ammo_amount += self.uzi_load >= autocvar_g_balance_uzi_first_ammo; + } + return ammo_amount; } else if (req == WR_RELOAD) {