]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Properly implement the new check for all weapons (hopefully, only testing can tell)
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sun, 23 Jan 2011 15:01:18 +0000 (17:01 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sun, 23 Jan 2011 15:01:18 +0000 (17:01 +0200)
13 files changed:
qcsrc/server/w_crylink.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_hagar.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_minelayer.qc
qcsrc/server/w_minstanex.qc
qcsrc/server/w_nex.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/server/w_seeker.qc
qcsrc/server/w_sniperrifle.qc
qcsrc/server/w_uzi.qc

index 73f9f5864bba1eae047001469e12ba997d2e8d73..255aa43304d693955cd01ffa0a8abae5dcb67ab7 100644 (file)
@@ -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)
        {
index cd03bdcebe2f74fc3c6409b50117f3b67e22d802..686e18021e0d0b6e47e4bafe8e52ff13abe9792c 100644 (file)
@@ -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)
        {
index ea34c80afcdaade523aa24ddbf0c3638271f8729..aab2db71bf4ea3041db43307f43a98fc0cc42beb 100644 (file)
@@ -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)
        {
index 77bf031b3fb25935bba210a3abbe754b57125985..39f99f009f5922de24d1da32036f24dd7f374b23 100644 (file)
@@ -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)
        {
index 2a8e4d7f47b0c35e0b9d8a8b2efc8d8ae08fb68a..f16183021d36cec19bb6e928f47c9c50d1e9bcf7 100644 (file)
@@ -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)
        {
index bdbb88bc67337b0b86ac05bae959360e00761749..a30136da5f03848fb5deb395d5cedab3ed2a8356 100644 (file)
@@ -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)
        {
index 6d307bb2f971d777f36b5dc540c34240c9027d45..e64f0c0d7896f5f0879e9fbb084633bfdaef2779 100644 (file)
@@ -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)
        {
index 8b01ceee849ff4cf48605b17ac8bb77809e73db0..54984a1321a1e2156b390ce377d61d10a10957a8 100644 (file)
@@ -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)
        {
index e93262e92b471109a39423cf8843b2da21e6fe94..b57214defe2d0e0238bf38403c324a39ecb03223 100644 (file)
@@ -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)
        {
index ab30b0712d5851070bdebffbfc66e3a852723961..39a04e490a5da99ed69c06e4a93f2bdc2327a4c1 100644 (file)
@@ -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;
index b1cde626a0e74218028075eb035439e72cb8f5d2..47e161fd007fac2b6532fa2934e231f1d79fb363 100644 (file)
@@ -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)
        {
index 359ab4dfad553994d34709516abddaf6075b487d..d86a3287014bf5acb67262578258388375165a34 100644 (file)
@@ -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)
        {
index d841283433f359a696466e420529754d2883bfd8..eaa4442a2d05e115540a394996564ec7bd76da22 100644 (file)
@@ -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)
        {