[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