]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Use only WR_SWITCHABLE to check if we can select our weapon. The ammo checks still...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 22 Jan 2011 23:36:57 +0000 (01:36 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 22 Jan 2011 23:36:57 +0000 (01:36 +0200)
15 files changed:
qcsrc/server/cl_weaponsystem.qc
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_shotgun.qc
qcsrc/server/w_sniperrifle.qc
qcsrc/server/w_uzi.qc

index 3566b552480d311ead7c1d50ac3870b7078cc081..a6841d2d785d5eed7f7976644e98032cf1c5b497 100644 (file)
@@ -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
index 21f3790fa5bef1bd4549debd90d9394fbdab7115..4f3d5ae2392bd627f3773d92ce532c38914f2a05 100644 (file)
@@ -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;
 };
index 44a1a916727d636c4752d76d20a3634f123e5c4e..247437bc06853735ca1f14bef431d984420e0d95 100644 (file)
@@ -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;
 };
index dfb3605b00c174aac0072475b976c97cab0f6529..43764ab5eba4ef4070c3a030d49b153875dcfec1 100644 (file)
@@ -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;
 };
index 2a26eeae51f39941fa4c36724b219b213166c6ee..3817c9ef988f28b5dab20c61b032bcf32e61f8cd 100644 (file)
@@ -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;
 };
index 0d4c38765dc89a28cc9a49a79cda96f88c03a51b..4c5ce10b3e45f3d9bb92ea0374115d2d55e44cfa 100644 (file)
@@ -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;
 };
index 08cfd69af5c182c57c965c1cfc37c07d03bde0fd..b13976217aaabf138e18328febd1975925dff37c 100644 (file)
@@ -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;
 };
index 50f392f9bc0cfe3fff601e4be5e2be054e3bf942..1aa1b61d64c3bc8dfd9579b9265f10b8f7d183e2 100644 (file)
@@ -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;
 };
index e5c9a1ed83eefab5f40aeeb6089e974ff9f08767..b5056b052deef07c1719aa37ac27327ff75fb897 100644 (file)
@@ -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;
 };
index 49c4d3887693ec5b9b2fac9b22f967bb710abc75..3bca97431dca94a93d5095eccfa9ef466546560e 100644 (file)
@@ -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;
index 168e9d2bdc0d5e4619e7f07d8de593dd1f1a905d..7a89668c7080411c97f74d1160ffafc177af3987 100644 (file)
@@ -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;
 };
index cda5bcbf104de293d8992df37adb23b2ba05866b..a4c4ded4927164004e14a2f3b9c909aee5f82ed1 100644 (file)
@@ -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;
 };
index 5fa5fa4c92306cca9201d96bbbc8e5bcc490e6e0..c3ed59164f2c76b1801a53a920c2352cd4f49fb5 100644 (file)
@@ -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;
 };
index 1ef0c92a7380cd1616abf65af0b51dbfb96fb967..00e96bed13a3b0b45fd8a856e4da38365aa9bf2c 100644 (file)
@@ -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;
 };
index 3b43d52043d339bcd612a88ff9835db7e3108b30..113b8f74f38725f6051ee950689d580f8c0f4f53 100644 (file)
@@ -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;
 };