[nexuiz-commits] r7687 - in trunk/data: . qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 8 08:06:04 EDT 2009


Author: div0
Date: 2009-09-08 08:06:04 -0400 (Tue, 08 Sep 2009)
New Revision: 7687

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/constants.qh
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/teamplay.qc
   trunk/data/weapons.cfg
   trunk/data/weapons25.cfg
   trunk/data/weaponsHavoc.cfg
Log:
Random Mutator Day: RANDOM WEAPON ARENA. You spawn randomly with any of the arena weapons set up.


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/defaultNexuiz.cfg	2009-09-08 12:06:04 UTC (rev 7687)
@@ -26,7 +26,7 @@
 seta g_configversion 0	"Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1  Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
 
 // default.cfg versioning (update using update-cvarcount.sh, run that every time after adding a new cvar)
-set cvar_check_default 24fd8644ab949a1c138560b94abda4d3
+set cvar_check_default ff4c4b4c9c9574b0d647c023021a8956
 
 // Nexuiz version (formatted for machines)
 // used to determine if a client version is compatible
@@ -453,6 +453,7 @@
 set g_minstagib_speed_moverate 1.25 "speed-multiplier that applies while you carry the invincibility powerup"
 set g_vampire 0 "set to 1 to enable the vampire mode, where the damage done to your opponent gets added to your own health"
 set g_weaponarena "0"	"put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
+set g_weaponarena_random "0"	"if set to a number, only that weapon count is given on every spawn (randomly)"
 set g_laserguided_missile 0 "if set to 1 the rockets of the rocket launcher can be steered using a laserpointer"
 set g_midair 0 "if set to 1 you can only apply damage to your opponent while he is airborne"
 set g_midair_shieldtime 0.3 "number of seconds you are still invincible since you lost contact to the ground"

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/qcsrc/server/cl_client.qc	2009-09-08 12:06:04 UTC (rev 7687)
@@ -848,6 +848,10 @@
 			self.armorvalue = start_armorvalue;
 			self.weapons = start_weapons;
 		}
+
+		if(g_weaponarena_random)
+			self.weapons = randombits(self.weapons, g_weaponarena_random);
+
 		self.items = start_items;
 		self.switchweapon = w_getbestweapon(self);
 		self.cnt = self.switchweapon;

Modified: trunk/data/qcsrc/server/constants.qh
===================================================================
--- trunk/data/qcsrc/server/constants.qh	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/qcsrc/server/constants.qh	2009-09-08 12:06:04 UTC (rev 7687)
@@ -1,5 +1,5 @@
-string CVAR_CHECK_DEFAULT = "24fd8644ab949a1c138560b94abda4d3";
-string CVAR_CHECK_WEAPONS = "fe2dfa3c0b8a05734acfcdd6af0649df";
+string CVAR_CHECK_DEFAULT = "ff4c4b4c9c9574b0d647c023021a8956";
+string CVAR_CHECK_WEAPONS = "eead6b984631a74c8337b1bf9756cfc9";
 
 float	FALSE					= 0;
 float	TRUE					= 1;

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2009-09-08 12:06:04 UTC (rev 7687)
@@ -725,6 +725,7 @@
 float g_pickup_healthmega;
 float g_pickup_healthmega_max;
 float g_weaponarena;
+float g_weaponarena_random;
 string g_weaponarena_list;
 float g_weaponspeedfactor;
 float g_weaponratefactor;
@@ -825,9 +826,14 @@
                 print("The weapon mutator list contains an unknown weapon ", s, ". Skipped.\n");
             }
         }
-        g_weaponarena_list = strzone(substring(g_weaponarena_list, 0, strlen(g_weaponarena_list) - 3));
-    }
+		g_weaponarena_list = strzone(substring(g_weaponarena_list, 0, strlen(g_weaponarena_list) - 3));
+	}
 
+	if(g_weaponarena)
+		g_weaponarena_random = cvar("g_weaponarena_random");
+	else
+		g_weaponarena_random = 0;
+
     if (g_nixnex)
     {
         start_weapons = 0;
@@ -2552,3 +2558,51 @@
 {
 	return modeleffect_spawn(m, 0, 0, org, '0 0 0', '0 0 0', '0 0 0', 0, sz, 1, t1, t2);
 }
+
+float randombit(float bits)
+{
+	if not(bits & (bits-1)) // this ONLY holds for powers of two!
+		return bits;
+
+	float n, f, b, r;
+
+	r = random();
+	b = 0;
+	n = 0;
+
+	for(f = 1; f <= bits; f *= 2)
+	{
+		if(bits & f)
+		{
+			++n;
+			r *= n;
+			if(r <= 1)
+				b = f;
+			else
+				r = (r - 1) / (n - 1);
+		}
+	}
+
+	return b;
+}
+
+float randombits(float bits, float k)
+{
+	float r;
+	r = 0;
+	while(k > 0 && bits != r)
+	{
+		r += randombit(bits - r);
+		--k;
+	}
+	return r;
+}
+
+void randombit_test(float bits, float iter)
+{
+	while(iter > 0)
+	{
+		print(ftos(randombit(bits)), "\n");
+		--iter;
+	}
+}

Modified: trunk/data/qcsrc/server/teamplay.qc
===================================================================
--- trunk/data/qcsrc/server/teamplay.qc	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/qcsrc/server/teamplay.qc	2009-09-08 12:06:04 UTC (rev 7687)
@@ -476,7 +476,12 @@
 	if(g_nixnex)
 		modifications = strcat(modifications, ", NixNex");
 	if(g_weaponarena)
-		modifications = strcat(modifications, ", ", g_weaponarena_list, " Arena");
+	{
+		if(g_weaponarena_random)
+			modifications = strcat(modifications, ", ", ftos(g_weaponarena_random), " of ", g_weaponarena_list, " Arena");
+		else
+			modifications = strcat(modifications, ", ", g_weaponarena_list, " Arena");
+	}
 	if(cvar("g_start_weapon_laser") == 0)
 		modifications = strcat(modifications, ", No start weapons");
 	if(cvar("sv_gravity") < 800)

Modified: trunk/data/weapons.cfg
===================================================================
--- trunk/data/weapons.cfg	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/weapons.cfg	2009-09-08 12:06:04 UTC (rev 7687)
@@ -3,7 +3,7 @@
 //
 // And... don't forget to edit weaponsHavoc.cfg too.
 
-set cvar_check_weapons fe2dfa3c0b8a05734acfcdd6af0649df
+set cvar_check_weapons eead6b984631a74c8337b1bf9756cfc9
 
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!

Modified: trunk/data/weapons25.cfg
===================================================================
--- trunk/data/weapons25.cfg	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/weapons25.cfg	2009-09-08 12:06:04 UTC (rev 7687)
@@ -3,7 +3,7 @@
 //
 // And... don't forget to edit weaponsHavoc.cfg too.
 
-set cvar_check_weapons fe2dfa3c0b8a05734acfcdd6af0649df
+set cvar_check_weapons eead6b984631a74c8337b1bf9756cfc9
 
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!

Modified: trunk/data/weaponsHavoc.cfg
===================================================================
--- trunk/data/weaponsHavoc.cfg	2009-09-08 10:48:35 UTC (rev 7686)
+++ trunk/data/weaponsHavoc.cfg	2009-09-08 12:06:04 UTC (rev 7687)
@@ -1,4 +1,4 @@
-set cvar_check_weapons fe2dfa3c0b8a05734acfcdd6af0649df
+set cvar_check_weapons eead6b984631a74c8337b1bf9756cfc9
 
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!



More information about the nexuiz-commits mailing list