[nexuiz-commits] r8331 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Nov 29 08:23:16 EST 2009


Author: div0
Date: 2009-11-29 08:23:15 -0500 (Sun, 29 Nov 2009)
New Revision: 8331

Modified:
   trunk/data/qcsrc/server/miscfunctions.qc
Log:
try improving warmup weapon selection code; also:
g_start_weapon_* -2 makes the gun not appear in DM (overrides gametype default), except in allguns game types (like LMS)


Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2009-11-29 08:55:56 UTC (rev 8330)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2009-11-29 13:23:15 UTC (rev 8331)
@@ -843,6 +843,38 @@
 
 entity get_weaponinfo(float w);
 
+float want_weapon(string cvarprefix, entity weaponinfo, float allguns)
+{
+	var float i = weaponinfo.weapon;
+
+	if (!i)
+		return 0;
+
+	var float t = cvar(strcat(cvarprefix, weaponinfo.netname));
+
+	if (t < 0) // "default" weapon selection
+	{
+		if (g_lms || g_ca || allguns)
+			t = (weaponinfo.spawnflags & WEPSPAWNFLAG_NORMAL);
+		else if(t < -1)
+			t = 0;
+		else if (g_race || g_cts)
+			t = (i == WEP_LASER);
+		else if (g_nexball)
+			t = 0; // weapon is set a few lines later
+		else
+			t = (i == WEP_LASER || i == WEP_SHOTGUN);
+		if(g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
+			t |= (i == WEP_HOOK);
+	}
+
+	// we cannot disable porto in Nexball, we must force it
+	if(g_nexball && i == WEP_PORTO)
+		t = 1;
+
+	return t;
+}
+
 float NixNex_CanChooseWeapon(float wpn);
 void readplayerstartcvars()
 {
@@ -995,34 +1027,8 @@
         for (i = WEP_FIRST; i <= WEP_LAST; ++i)
         {
             e = get_weaponinfo(i);
-            if (!(e.weapon))
-                continue;
-
-            t = cvar(strcat("g_start_weapon_", e.netname));
-
-	    if (t == -1) // "default" weapon selection
-            {
-                if (g_lms || g_ca)
-                    t = (e.spawnflags & WEPSPAWNFLAG_NORMAL);
-                else if (g_race || g_cts)
-                    t = (i == WEP_LASER);
-                else if (g_nexball)
-                    t = 0; // weapon is set a few lines later
-                else
-                    t = (i == WEP_LASER || i == WEP_SHOTGUN);
-                if (g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
-                    t += (i == WEP_HOOK);
-            }
-	    else if (t == -2 && (g_ca || g_lms))
-		t = 1;
-	    else if (t < 0)
-		t = 0;
-
-            if (g_nexball && i == WEP_PORTO)
-                t=1;
-
-            if (t)
-            {
+			if(want_weapon("g_start_weapon_", e, FALSE))
+			{
                 start_weapons |= e.weapons;
                 weapon_action(e.weapon, WR_PRECACHE);
             }
@@ -1052,20 +1058,15 @@
             }
             warmup_start_health = cvar("g_warmup_start_health");
             warmup_start_armorvalue = cvar("g_warmup_start_armor");
-            if (cvar("g_warmup_allguns"))
-            {
-                for (i = WEP_FIRST; i <= WEP_LAST; ++i)
-                {
-                    e = get_weaponinfo(i);
-                    if (!(e.weapon))
-                        continue;
-                    if (e.spawnflags & WEPSPAWNFLAG_NORMAL)
-                    {
-                        warmup_start_weapons |= e.weapons;
-                        weapon_action(e.weapon, WR_PRECACHE);
-                    }
-                }
-            }
+			for (i = WEP_FIRST; i <= WEP_LAST; ++i)
+			{
+				e = get_weaponinfo(i);
+				if(want_weapon("g_start_weapon_", e, cvar("g_warmup_allguns")))
+				{
+					start_weapons |= e.weapons;
+					weapon_action(e.weapon, WR_PRECACHE);
+				}
+			}
         }
     }
 



More information about the nexuiz-commits mailing list