]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_weapons.qc
Merge branch 'master' into mirceakitsune/universal_reload_system
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_weapons.qc
index d57883a292e372e916b7088b82818d7208bac3e1..7b0bbce3c8ff83ab2b4314ab087b252f5a10b30f 100644 (file)
@@ -1,4 +1,4 @@
-void W_DoReload()
+void W_TriggerReload()
 {
     weapon_action(self.weapon, WR_RELOAD);
 }
@@ -15,7 +15,7 @@ void W_SwitchWeapon(float imp)
        }
        else
        {
-               W_DoReload();
+               W_TriggerReload();
        }
 };
 
@@ -221,6 +221,13 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto
                                        wep.ammofield = thisammo;
                                        own.ammofield -= thisammo;
                                        s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j));
+
+                                       // if our weapon is loaded, give its load back to the player
+                                       if(self.weapon_load[self.weapon] > 0)
+                                       {
+                                               own.ammofield += self.weapon_load[self.weapon];
+                                               self.weapon_load[self.weapon] = -1; // schedule the weapon for reloading
+                                       }
                                }
                        }
                        s = substring(s, 5, -1);
@@ -344,7 +351,7 @@ void W_WeaponFrame()
                        // set our clip load to the load of the weapon we switched to, if it's reloadable
                        entity e;
                        e = get_weaponinfo(self.switchweapon);
-                       if(e.spawnflags & WEP_FLAG_RELOADABLE && cvar(strcat("g_balance_", e.netname, "_reload_ammo")))
+                       if(e.spawnflags & WEP_FLAG_RELOADABLE && cvar(strcat("g_balance_", e.netname, "_reload_ammo"))) // prevent accessing undefined cvars
                        {
                                self.clip_load = self.weapon_load[self.switchweapon];
                                self.clip_size = cvar(strcat("g_balance_", e.netname, "_reload_ammo"));