[nexuiz-commits] r7698 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Sep 8 15:24:10 EDT 2009
Author: div0
Date: 2009-09-08 15:24:10 -0400 (Tue, 08 Sep 2009)
New Revision: 7698
Modified:
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/g_damage.qc
trunk/data/qcsrc/server/miscfunctions.qc
Log:
random weapon arena: try to ensure the weapon ALWAYS changes on frag
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2009-09-08 16:10:52 UTC (rev 7697)
+++ trunk/data/qcsrc/server/cl_client.qc 2009-09-08 19:24:10 UTC (rev 7698)
@@ -850,7 +850,7 @@
}
if(g_weaponarena_random)
- self.weapons = randombits(self.weapons, g_weaponarena_random);
+ self.weapons = randombits(self.weapons, g_weaponarena_random, FALSE);
self.items = start_items;
self.switchweapon = w_getbestweapon(self);
Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc 2009-09-08 16:10:52 UTC (rev 7697)
+++ trunk/data/qcsrc/server/g_damage.qc 2009-09-08 19:24:10 UTC (rev 7698)
@@ -95,6 +95,8 @@
void W_SwitchWeapon_Force(entity e, float w);
void GiveFrags (entity attacker, entity targ, float f)
{
+ float w;
+
// TODO route through PlayerScores instead
if(gameover) return;
@@ -127,7 +129,18 @@
if(g_weaponarena_random)
{
// after a frag, choose another random weapon set
- attacker.weapons = randombits((inWarmupStage ? warmup_start_weapons : start_weapons), g_weaponarena_random);
+ if(inWarmupStage)
+ w = warmup_start_weapons;
+ else
+ w = start_weapons;
+
+ attacker.weapons = randombits(w - (w & W_WeaponBit(attacker.weapon)), g_weaponarena_random, TRUE);
+ if(attacker.weapons < 0)
+ {
+ // error from randombits: no weapon available
+ // this means we can just give ALL weapons
+ attacker.weapons = w;
+ }
if not(attacker.weapons & W_WeaponBit(attacker.weapon))
W_SwitchWeapon_Force(attacker, w_getbestweapon(attacker));
}
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2009-09-08 16:10:52 UTC (rev 7697)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2009-09-08 19:24:10 UTC (rev 7698)
@@ -2586,7 +2586,7 @@
return b;
}
-float randombits(float bits, float k)
+float randombits(float bits, float k, float error_return)
{
float r;
r = 0;
@@ -2595,6 +2595,9 @@
r += randombit(bits - r);
--k;
}
+ if(error_return)
+ if(k > 0)
+ return -1; // all
return r;
}
More information about the nexuiz-commits
mailing list