]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Allow using weapons when the player has no more ammo of that type, but the weapon...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Fri, 21 Jan 2011 14:38:10 +0000 (16:38 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Fri, 21 Jan 2011 14:38:10 +0000 (16:38 +0200)
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/w_shotgun.qc
qcsrc/server/w_sniperrifle.qc

index 0e0335b9f745f374c699df4e8dfe3ecdf9e92f0a..94613feb89946eeddcff5f60022b2f6b75fbabb2 100644 (file)
@@ -1047,6 +1047,13 @@ float weapon_prepareattack_checkammo(float secondary)
        if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
        if (!weapon_action(self.weapon, WR_CHECKAMMO1 + secondary))
        {
+               // don't switch away from reloadable weapons, even if we're out of ammo, since the
+               // weapon itself might still be loaded. The reload code takes care of the switching
+               entity e;
+               e = get_weaponinfo(self.weapon);
+               if(cvar(strcat("g_balance_", e.netname, "_reload_ammo")))
+                       return FALSE;
+
                // always keep the Mine Layer if we placed mines, so that we can detonate them
                local entity mine;
                if(self.weapon == WEP_MINE_LAYER)
index 118fbf08855c04287deb444c6e4dae168f73096c..a2cf7bdac9dc03ea4b4c66cf2e7856c8e6859bfa 100644 (file)
@@ -221,7 +221,12 @@ float w_shotgun(float req)
                W_Shotgun_SetAmmoCounter();
        }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo;
+       {
+               if(autocvar_g_balance_shotgun_reload_ammo)
+                       return self.shotgun_load;
+               else
+                       return self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo;
+       }
        else if (req == WR_CHECKAMMO2)
        {
                return TRUE;
index d31796d904ece8606fa95883d7b4c7713aa2048f..c1b9386f4832570051199937dd5407a80bd147ea 100644 (file)
@@ -273,9 +273,19 @@ float w_sniperrifle(float req)
                                self.ammo_counter = -1;
        }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo;
+       {
+               if(autocvar_g_balance_sniperrifle_reload_ammo)
+                       return self.sniperrifle_load;
+               else
+                       return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
+       {
+               if(autocvar_g_balance_sniperrifle_reload_ammo)
+                       return self.sniperrifle_load;
+               else
+                       return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
+       }
        else if (req == WR_RELOAD)
        {
                W_SniperRifle_Reload();