r4288 - in trunk/data: . qcsrc/client qcsrc/common qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 2 09:34:11 EDT 2008


Author: div0
Date: 2008-09-02 09:34:10 -0400 (Tue, 02 Sep 2008)
New Revision: 4288

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/csqc_constants.qc
   trunk/data/qcsrc/client/sbar.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_impulse.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/cl_weapons.qc
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/constants.qh
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/t_items.qc
   trunk/data/qcsrc/server/w_common.qc
   trunk/data/qcsrc/server/w_crylink.qc
   trunk/data/qcsrc/server/w_electro.qc
   trunk/data/qcsrc/server/w_grenadelauncher.qc
   trunk/data/qcsrc/server/w_hagar.qc
   trunk/data/qcsrc/server/w_laser.qc
   trunk/data/qcsrc/server/w_nex.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
   trunk/data/qcsrc/server/w_shotgun.qc
   trunk/data/qcsrc/server/w_uzi.qc
Log:
huge patch that breaks everything: add a new stat "weapons", network weapon bits using that, allowing for up to 24 weapons (although their item entities are yet to be defined, maybe with an automatic replacement system)


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/defaultNexuiz.cfg	2008-09-02 13:34:10 UTC (rev 4288)
@@ -1077,3 +1077,18 @@
 set g_jump_grunt 0 // Do you make a grunting noise every time you jump? Is it the same grunting noise every time?
 
 alias allready "sv_cmd allready"
+
+seta cl_weaponpriority "9 8 7 6 5 4 3 2 1"
+// impulse 200, 210, 220:
+seta cl_weaponpriority0 "9 8 4"      // explosives    (RL Hagar Mortar)
+// impulse 201, 211, 221:
+seta cl_weaponpriority1 "7 6 5 1"    // energy        (Nex Crylink Electro Laser)
+seta cl_weaponpriority2 "7 3"        // hitscan exact (Nex MG)
+seta cl_weaponpriority3 "7 3 2"      // hitscan all   (Nex MG Shotgun)
+seta cl_weaponpriority4 "8 6 5 2"    // spam          (Hagar Crylink Electro Shotgun)
+seta cl_weaponpriority5 ""
+seta cl_weaponpriority6 ""
+seta cl_weaponpriority7 ""
+seta cl_weaponpriority8 ""
+// impulse 209, 219, 229:
+seta cl_weaponpriority9 ""

Modified: trunk/data/qcsrc/client/csqc_constants.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_constants.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/client/csqc_constants.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -164,24 +164,6 @@
 const float BUTTON_16 = 262144;
 
 
-const float NEX_IT_UZI              = 1;
-const float NEX_IT_SHOTGUN          = 2;
-const float NEX_IT_GRENADE_LAUNCHER = 4;
-const float NEX_IT_ELECTRO          = 8;
-const float NEX_IT_CRYLINK          = 16;
-const float NEX_IT_NEX              = 32;
-const float NEX_IT_HAGAR            = 64;
-const float NEX_IT_ROCKET_LAUNCHER  = 128;
-const float NEX_IT_SHELLS           = 256;
-const float NEX_IT_BULLETS          = 512;
-const float NEX_IT_ROCKETS          = 1024;
-const float NEX_IT_CELLS            = 2048;
-const float NEX_IT_LASER            = 4094;
-const float NEX_IT_STRENGTH         = 8192;
-const float NEX_IT_INVINCIBLE       = 16384;
-const float NEX_IT_SPEED            = 32768;
-const float NEX_IT_SLOWMO           = 65536;
-
 const float DRAWFLAG_NORMAL = 0;
 const float DRAWFLAG_ADDITIVE = 1;
 const float DRAWFLAG_MODULATE = 2;

Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/client/sbar.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -1296,7 +1296,7 @@
 {
 	float i;
 	float x, fade;
-	float stat_items;
+	float stat_items, stat_weapons;
 
 	sbar_fontsize = Sbar_GetFontsize();
 
@@ -1402,6 +1402,7 @@
 			if (sb_lines && sbar_hudselector == 1)
 			{
 				stat_items = getstati(STAT_ITEMS);
+				stat_weapons = getstati(STAT_WEAPONS);
 
 				sbar_x = (vid_conwidth - 320.0)*0.5;
 				sbar_y = vid_conheight - 24.0 - 16.0;
@@ -1411,19 +1412,14 @@
 				fade = bound(0.7, fade, 1);
 
 				x = 1.0;
-				for(i = 0; i < 8; ++i)
+				for(i = WEP_FIRST; i <= WEP_LAST; ++i)
 				{
-					if(stat_items & x)
+					if(stat_weapons & x)
 					{
-						Sbar_DrawWeapon(i+1, fade, (i + 2 == activeweapon));
+						Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
 					}
 					x *= 2;
 				}
-				x *= 2*2*2*2;
-				if(stat_items & x)
-				{
-					Sbar_DrawWeapon(0, fade, (activeweapon == 1));
-				}
 
 				// armor
 				x = getstati(STAT_ARMOR);
@@ -1465,15 +1461,15 @@
 
 				// ammo
 				x = getstati(STAT_AMMO);
-				if ((stat_items & (NEX_IT_SHELLS | NEX_IT_BULLETS | NEX_IT_ROCKETS | NEX_IT_CELLS)) || x != 0)
+				if ((stat_items & IT_AMMO) || x != 0)
 				{
-					if (stat_items & NEX_IT_SHELLS)
+					if (stat_items & IT_SHELLS)
 						drawpic(sbar + '296 0 0', "gfx/sb_shells", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_BULLETS)
+					else if (stat_items & IT_NAILS)
 						drawpic(sbar + '296 0 0', "gfx/sb_bullets", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_ROCKETS)
+					else if (stat_items & IT_ROCKETS)
 						drawpic(sbar + '296 0 0', "gfx/sb_rocket", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_CELLS)
+					else if (stat_items & IT_CELLS)
 						drawpic(sbar + '296 0 0', "gfx/sb_cells", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
 					if(x > 10)
 						Sbar_DrawXNum('224 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
@@ -1492,6 +1488,7 @@
 			{
 			
 				stat_items = getstati(STAT_ITEMS);
+				stat_weapons = getstati(STAT_ITEMS);
 			
 				sbar_x = (vid_conwidth - 640.0)*0.5;
 				sbar_y = vid_conheight - 47;
@@ -1500,19 +1497,14 @@
 				fade = 3 - 2 * (time - weapontime);
 
 				x = 1.0;
-				for(i = 0; i < 8; ++i)
+				for(i = WEP_FIRST; i <= WEP_LAST; ++i)
 				{
-					if(stat_items & x)
+					if(stat_weapons & x)
 					{
-						Sbar_DrawWeapon(i+1, fade, (i + 2 == activeweapon));
+						Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
 					}
 					x *= 2;
 				}
-				x *= 2*2*2*2;
-				if(stat_items & x)
-				{
-					Sbar_DrawWeapon(0, fade, (activeweapon == 1));
-				}
 
 				if (sb_lines > 24)
 					drawpic(sbar, "gfx/sbar", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
@@ -1538,13 +1530,13 @@
 				if(activeweapon != 12)
 				{
 					// (519-3*24) = 447
-					if (stat_items & NEX_IT_SHELLS)
+					if (stat_items & IT_SHELLS)
 						drawpic(sbar + '519 0 0', "gfx/sb_shells", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_BULLETS)
+					else if (stat_items & IT_NAILS)
 						drawpic(sbar + '519 0 0', "gfx/sb_bullets", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_ROCKETS)
+					else if (stat_items & IT_ROCKETS)
 						drawpic(sbar + '519 0 0', "gfx/sb_rocket", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
-					else if (stat_items & NEX_IT_CELLS)
+					else if (stat_items & IT_CELLS)
 						drawpic(sbar + '519 0 0', "gfx/sb_cells", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
 					if(x > 10)
 						Sbar_DrawXNum('447 12 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/common/constants.qh	2008-09-02 13:34:10 UTC (rev 4288)
@@ -14,7 +14,8 @@
 // Revision 13: pointparticles
 // Revision 14: laser
 // Revision 15: zoom
-#define CSQC_REVISION 15
+// Revision 16: multi-weapons
+#define CSQC_REVISION 16
 
 // probably put these in common/
 // so server/ and client/ can be synced better
@@ -204,6 +205,7 @@
 const float STAT_KH_KEYS = 32;
 const float STAT_CTF_STATE = 33;
 const float STAT_SYS_TICRATE = 34;
+const float STAT_WEAPONS = 35;
 const float CTF_STATE_ATTACK = 1;
 const float CTF_STATE_DEFEND = 2;
 const float CTF_STATE_COMMANDER = 3;
@@ -270,3 +272,42 @@
 #define SP_SUICIDES 2
 #define SP_SCORE 3
 // game mode specific indices are not in common/, but in server/scores_rules.qc!
+
+// Weapon indexes
+float WEP_FIRST				= 1;
+float WEP_LASER				= 1; float WEPBIT_LASER				= 1; // always: 2^(w-1)
+float WEP_SHOTGUN			= 2; float WEPBIT_SHOTGUN			= 2;
+float WEP_UZI				= 3; float WEPBIT_UZI				= 4;
+float WEP_GRENADE_LAUNCHER	= 4; float WEPBIT_GRENADE_LAUNCHER	= 8;
+float WEP_ELECTRO			= 5; float WEPBIT_ELECTRO			= 16;
+float WEP_CRYLINK			= 6; float WEPBIT_CRYLINK			= 32;
+float WEP_NEX				= 7; float WEPBIT_NEX				= 64;
+float WEP_HAGAR				= 8; float WEPBIT_HAGAR				= 128;
+float WEP_ROCKET_LAUNCHER	= 9; float WEPBIT_ROCKET_LAUNCHER	= 256;
+float WEP_LAST				= 9; float WEPBIT_ALL               = 511;
+float WEP_COUNT             = 10;
+
+float	IT_SHELLS				= 256;
+float	IT_NAILS				= 512;
+float	IT_ROCKETS				= 1024;
+float	IT_CELLS				= 2048;
+float	IT_AMMO					= 3840;
+float	IT_STRENGTH				= 8192;
+float	IT_INVINCIBLE			= 16384;
+float	IT_HEALTH				= 32768;
+// union:
+	// for items:
+	float	IT_KEY1					= 131072;
+	float	IT_KEY2					= 262144;
+	// for players:
+	float	IT_RED_FLAG_TAKEN		= 32768;
+	float	IT_RED_FLAG_LOST		= 65536;
+	float	IT_RED_FLAG_CARRING		= 98304;
+	float	IT_BLUE_FLAG_TAKEN		= 131072;
+	float	IT_BLUE_FLAG_LOST		= 262144;
+	float	IT_BLUE_FLAG_CARRING	= 393216;
+// end
+float	IT_5HP					= 524288;
+float	IT_25HP					= 1048576;
+float	IT_ARMOR_SHARD			= 2097152;
+float	IT_ARMOR				= 4194304;

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -461,6 +461,7 @@
 	setsize (self, '0 0 0', '0 0 0');
 	self.oldorigin = self.origin;
 	self.items = 0;
+	self.weapons = 0;
 	self.model = "";
 	self.modelindex = 0;
 	self.weapon = 0;
@@ -630,7 +631,8 @@
 		self.ammo_cells = start_ammo_cells;
 		self.health = start_health;
 		self.armorvalue = start_armorvalue;
-		self.items = start_items;
+		self.items = 0;
+		self.weapons = start_weapons;
 		self.switchweapon = start_switchweapon;
 		self.cnt = start_switchweapon;
 		self.weapon = 0;
@@ -1123,15 +1125,6 @@
 	// get version info from player
 	stuffcmd(self, "cmd clientversion $gameversion\n");
 
-	// send all weapon info strings
-	stuffcmd(self, "register_bestweapon clear\n"); // clear the Quake stuff
-	wep = WEP_FIRST;
-	while (wep <= WEP_LAST)
-	{
-		weapon_action(wep, WR_REGISTER);
-		wep = wep + 1;
-	}
-
 	// get other cvars from player
 	GetCvars(0);
 
@@ -1683,6 +1676,7 @@
 	self.health = spectatee.health;
 	self.impulse = 0;
 	self.items = spectatee.items;
+	self.weapons = spectatee.weapons;
 	self.punchangle = spectatee.punchangle;
 	self.view_ofs = spectatee.view_ofs;
 	self.v_angle = spectatee.v_angle;

Modified: trunk/data/qcsrc/server/cl_impulse.qc
===================================================================
--- trunk/data/qcsrc/server/cl_impulse.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/cl_impulse.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -264,7 +264,7 @@
 			switch(imp)
 			{
 				case 99:
-					self.items |= (IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER);
+					self.weapons |= WEPBIT_ALL;
 					self.ammo_shells = g_pickup_shells_max;
 					self.ammo_nails = g_pickup_nails_max;
 					self.ammo_rockets = g_pickup_rockets_max;
@@ -317,7 +317,7 @@
 						self.ammo_shells = 999;
 						self.health = start_health;
 						self.armorvalue = start_armorvalue;
-						self.items |= itemsInMap & (IT_LASER | IT_SHOTGUN | IT_UZI | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER);
+						self.weapons |= weaponsInMap;
 						self.pauserotarmor_finished = time + cvar("g_balance_pause_armor_rot_spawn");
 						self.pauserothealth_finished = time + cvar("g_balance_pause_health_rot_spawn");
 						self.pauseregen_finished = time + cvar("g_balance_pause_health_regen_spawn");

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -413,7 +413,7 @@
 					else
 						player_setanim(self.anim_pain2, FALSE, TRUE, TRUE);
 
-					if(deathtype != IT_LASER || attacker != self || self.health < 2 * cvar("g_balance_laser_primary_damage") * cvar("g_balance_selfdamagepercent") + 1)
+					if(deathtype != WEP_LASER || attacker != self || self.health < 2 * cvar("g_balance_laser_primary_damage") * cvar("g_balance_selfdamagepercent") + 1)
 					// exclude pain sounds for laserjumps as long as you aren't REALLY low on health and would die of the next two
 					{
 						if(self.health > 75) // TODO make a "gentle" version?

Modified: trunk/data/qcsrc/server/cl_weapons.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weapons.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/cl_weapons.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -165,19 +165,19 @@
 	return "@!#%'n Tuba";
 }
 
-float W_ItemCode(float wpn)
+float W_WeaponBit(float wpn)
 {
 	switch(wpn)
 	{
-		case WEP_LASER:            return IT_LASER;
-		case WEP_SHOTGUN:          return IT_SHOTGUN;
-		case WEP_UZI:              return IT_UZI;
-		case WEP_GRENADE_LAUNCHER: return IT_GRENADE_LAUNCHER;
-		case WEP_ELECTRO:          return IT_ELECTRO;
-		case WEP_CRYLINK:          return IT_CRYLINK;
-		case WEP_NEX:              return IT_NEX;
-		case WEP_HAGAR:            return IT_HAGAR;
-		case WEP_ROCKET_LAUNCHER:  return IT_ROCKET_LAUNCHER;
+		case WEP_LASER:            return WEPBIT_LASER;
+		case WEP_SHOTGUN:          return WEPBIT_SHOTGUN;
+		case WEP_UZI:              return WEPBIT_UZI;
+		case WEP_GRENADE_LAUNCHER: return WEPBIT_GRENADE_LAUNCHER;
+		case WEP_ELECTRO:          return WEPBIT_ELECTRO;
+		case WEP_CRYLINK:          return WEPBIT_CRYLINK;
+		case WEP_NEX:              return WEPBIT_NEX;
+		case WEP_HAGAR:            return WEPBIT_HAGAR;
+		case WEP_ROCKET_LAUNCHER:  return WEPBIT_ROCKET_LAUNCHER;
 		default:                   return 0;
 	}
 }
@@ -210,7 +210,7 @@
 // toss current weapon
 void W_ThrowWeapon(vector velo, vector delta, float doreduce)
 {
-	local float w, ammo;
+	local float w, ammo, wb;
 	local entity wep, e;
 	local .float ammofield;
 
@@ -227,7 +227,7 @@
 		return;
 	if (g_nixnex)
 		return;
-	if (!cvar("g_pickup_items"))
+	if (!cvar("g_pickup_weapons"))
 		return;
 
 	e = self;
@@ -241,13 +241,13 @@
 	SUB_SetFade(wep, time + 20, 1);
 
 	ammofield = Item_CounterField(W_AmmoItemCode(w));
-	w = W_ItemCode(w);
-	if(!(e.items & w))
+	wb = W_WeaponBit(w);
+	if(!(e.weapons & wb))
 	{
 		remove(wep);
 		goto leave;
 	}
-	Item_SpawnByItemCode(w);
+	Item_SpawnByWeaponCode(w);
 	if(startitem_failed)
 		goto leave;
 	if(doreduce)
@@ -257,7 +257,7 @@
 		e.ammofield -= ammo;
 	}
 
-	if(e.items & w)
+	if(e.weapons & wb)
 		if(e.health >= 1)
 			sprint(e, strcat("You dropped the ^2", wep.netname, " with ", ftos(wep.ammofield), " ammo", "\n"));
 
@@ -267,7 +267,7 @@
 	wep.think = thrown_wep_think;
 	wep.classname = "droppedweapon";
 	wep.flags = wep.flags | FL_TOSSED;
-	e.items = e.items - (e.items & w);
+	e.weapons = e.weapons - (e.weapons & wb);
 	e.switchweapon = w_getbestweapon(e);
 	wep.colormap = e.colormap;
 	if (e.switchweapon != e.weapon)
@@ -451,10 +451,10 @@
 			self.nixnex_nextincr = time + cvar("g_balance_nixnex_incrtime");
 		}
 
-		self.items = self.items - (self.items & (IT_LASER | IT_SHOTGUN | IT_UZI | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER));
+		self.weapons = 0;
 		if(g_nixnex_with_laser)
-			self.items = self.items | IT_LASER;
-		self.items = self.items | W_ItemCode(nixnex_weapon);
+			self.weapons = self.weapons | WEPBIT_LASER;
+		self.weapons = self.weapons | W_WeaponBit(nixnex_weapon);
 
 		if(self.switchweapon != nixnex_weapon)
 			if(!client_hasweapon(self, self.switchweapon, TRUE, FALSE))

Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -324,7 +324,7 @@
 
 float client_hasweapon(entity cl, float wpn, float andammo, float complain)
 {
-	local float itemcode, f;
+	local float weaponbit, f;
 	local entity oldself;
 
 	if (wpn < WEP_FIRST || wpn > WEP_LAST)
@@ -333,8 +333,8 @@
 			sprint(self, "Invalid weapon\n");
 		return FALSE;
 	}
-	itemcode = W_ItemCode(wpn);
-	if (cl.items & itemcode)
+	weaponbit = W_WeaponBit(wpn);
+	if (cl.weapons & weaponbit)
 	{
 		if (andammo)
 		{
@@ -356,7 +356,7 @@
 	{
 		// DRESK - 3/16/07
 		// Report Proper Weapon Status / Modified Weapon Ownership Message
-		if(itemsInMap & itemcode)
+		if(weaponsInMap & weaponbit)
 			sprint(cl, strcat("You do not have the ^2", W_Name(wpn), "\n") );
 		else
 			sprint(cl, strcat("The ^2", W_Name(wpn), "^7 is ^1NOT AVAILABLE^7 in this map\n") );
@@ -576,28 +576,3 @@
 
 	missile.velocity = W_CalculateProjectileVelocity(missile.owner.velocity, missile.velocity);
 }
-
-void weapon_register(float wepcode, float minammo)
-{
-	string s;
-	float itemcode;
-	s = strcat("register_bestweapon ", ftos(wepcode), " "); // char for bestweapon
-	s = strcat(s, ftos(wepcode), " "); // impulse
-	s = strcat(s, ftos(W_ItemCode(wepcode)), " "); // item code
-	s = strcat(s, ftos(wepcode), " "); // self.weapon code
-
-	// ammo stat
-	itemcode = W_AmmoItemCode(wepcode);
-	if(itemcode == IT_SHELLS)
-		s = strcat(s, "6 ");
-	else if(itemcode == IT_NAILS)
-		s = strcat(s, "7 ");
-	else if(itemcode == IT_ROCKETS)
-		s = strcat(s, "8 ");
-	else // if(itemcode == IT_CELLS)
-		s = strcat(s, "9 ");
-
-	s = strcat(s, ftos(minammo), "\n");
-	//dprint(s);
-	stuffcmd(self, s);
-}

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/clientcommands.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -401,7 +401,7 @@
 	if(g_tourney) {
 		tourneyInMatchStage = 1; //once the game is restarted the game is in match stage
 		//reset weapons and ammo, health and armor to default:
-		start_items = IT_LASER | IT_SHOTGUN;
+		start_weapons = WEPBIT_LASER | WEPBIT_SHOTGUN;
 		start_switchweapon = WEP_SHOTGUN;
 		start_ammo_shells = cvar("g_start_ammo_shells");
 		start_ammo_nails = cvar("g_start_ammo_nails");

Modified: trunk/data/qcsrc/server/constants.qh
===================================================================
--- trunk/data/qcsrc/server/constants.qh	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/constants.qh	2008-09-02 13:34:10 UTC (rev 4288)
@@ -154,43 +154,6 @@
 float	DEATH_MIRRORDAMAGE		= 10014;
 float   DEATH_TURRET            = 10100;
 
-
-
-
-float	IT_LASER				= 4096;
-float	IT_SHOTGUN				= 1;
-float	IT_UZI					= 2;
-float	IT_GRENADE_LAUNCHER			= 4;
-float	IT_ELECTRO				= 8;
-float	IT_CRYLINK				= 16;
-float	IT_NEX					= 32;
-float	IT_HAGAR				= 64;
-float	IT_ROCKET_LAUNCHER			= 128;
-
-float	IT_SHELLS				= 256;
-float	IT_NAILS				= 512;
-float	IT_ROCKETS				= 1024;
-float	IT_CELLS				= 2048;
-
-float	IT_STRENGTH				= 8192;
-float	IT_INVINCIBLE				= 16384;
-float	IT_HEALTH				= 32768;
-
-float	IT_KEY1					= 131072;
-float	IT_KEY2					= 262144;
-
-float	IT_RED_FLAG_TAKEN			= 32768;
-float	IT_RED_FLAG_LOST			= 65536;
-float	IT_RED_FLAG_CARRING			= 98304;
-float	IT_BLUE_FLAG_TAKEN			= 131072;
-float	IT_BLUE_FLAG_LOST			= 262144;
-float	IT_BLUE_FLAG_CARRING			= 393216;
-
-float	IT_5HP					= 524288;
-float	IT_25HP					= 1048576;
-float	IT_ARMOR_SHARD				= 2097152;
-float	IT_ARMOR				= 4194304;
-
 vector	PL_VIEW_OFS				= '0 0 35';
 vector	PL_MIN					= '-16 -16 -24';
 vector	PL_MAX					= '16 16 45';

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/defs.qh	2008-09-02 13:34:10 UTC (rev 4288)
@@ -202,23 +202,7 @@
 float WR_CHECKAMMO2	  = 4; // checks ammo for weapon
 float WR_AIM		  = 5; // runs bot aiming code for this weapon
 float WR_PRECACHE	  = 6; // precaches models/sounds used by this weapon
-float WR_REGISTER	  = 7; // send data about the weapon to the client self (for ClientConnect)
 
-// Weapon indexes
-float WEP_LASER				= 1; // float	IT_LASER				= 4096;
-float WEP_SHOTGUN			= 2; // float	IT_SHOTGUN				= 1;
-float WEP_UZI				= 3; // float	IT_UZI					= 2;
-float WEP_GRENADE_LAUNCHER	= 4; // float	IT_GRENADE_LAUNCHER		= 4;
-float WEP_ELECTRO			= 5; // float	IT_ELECTRO				= 8;
-float WEP_CRYLINK			= 6; // float	IT_CRYLINK				= 16;
-float WEP_NEX				= 7; // float	IT_NEX					= 32;
-float WEP_HAGAR				= 8; // float	IT_HAGAR				= 64;
-float WEP_ROCKET_LAUNCHER	= 9; // float	IT_ROCKET_LAUNCHER		= 128;
-// For weapon cycling commands
-float WEP_FIRST				= 1;
-float WEP_LAST				= 9;
-float WEP_COUNT             = 10;
-
 void(entity client, string s) centerprint_builtin = #73;
 .vector dest1, dest2;
 
@@ -372,11 +356,10 @@
 
 typedef .float floatfield;
 floatfield Item_CounterField(float it);
-float Item_WeaponCode(float it);
-void Item_SpawnByItemCode(float it);
+void Item_SpawnByWeaponCode(float it);
 
 float W_AmmoItemCode(float wpn);
-float W_ItemCode(float wpn);
+float W_WeaponBit(float wpn);
 string W_Name(float weaponid);
 
 void UpdateSelectedPlayer();
@@ -391,7 +374,7 @@
 void FixIntermissionClient(entity e);
 void FixClientCvars(entity e);
 
-float itemsInMap;
+float weaponsInMap;
 
 void centerprint_atprio(entity e, float prio, string s);
 void centerprint_expire(entity e, float prio);
@@ -494,3 +477,4 @@
 string clientstuff;
 .float stat_sys_ticrate;
 .float phase;
+.float weapons;

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/g_damage.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -105,7 +105,7 @@
 	//	w = player.switchweapon;
 	if(w == 0)
 		w = player.cnt; // previous weapon!
-	s = strcat(s, ftos(W_ItemCode(w)));
+	s = strcat(s, ftos(w));
 	if(time < player.strength_finished)
 		s = strcat(s, "S");
 	if(time < player.invincible_finished)
@@ -203,11 +203,11 @@
 					bprint ("^1",s,"^1 ended it all with a ",ftos(targ.killcount)," scoring spree\n");
 			} else {
 
-				if (deathtype == IT_GRENADE_LAUNCHER)
+				if (deathtype == WEP_GRENADE_LAUNCHER)
 					bprint ("^1",s, "^1 detonated\n");
-				else if (deathtype == IT_ELECTRO)
+				else if (deathtype == WEP_ELECTRO)
 					bprint ("^1",s, "^1 played with plasma\n");
-				else if (deathtype == IT_ROCKET_LAUNCHER)
+				else if (deathtype == WEP_ROCKET_LAUNCHER)
 					bprint ("^1",s, "^1 exploded\n");
 				else if (deathtype == DEATH_KILL)
 					bprint ("^1",s, "^1 couldn't take it anymore\n");
@@ -283,23 +283,23 @@
 				if(sv_gentle) {
 					bprint ("^1",s, "^1 needs a restart thanks to ", a, "\n");
 				} else {
-					if (deathtype == IT_LASER)
+					if (deathtype == WEP_LASER)
 						bprint ("^1",s, "^1 was blasted by ", a, "\n");
-					else if (deathtype == IT_UZI)
+					else if (deathtype == WEP_UZI)
 						bprint ("^1",s, "^1 was riddled full of holes by ", a, "\n");
-					else if (deathtype == IT_SHOTGUN)
+					else if (deathtype == WEP_SHOTGUN)
 						bprint ("^1",s, "^1 was gunned by ", a, "\n");
-					else if (deathtype == IT_GRENADE_LAUNCHER)
+					else if (deathtype == WEP_GRENADE_LAUNCHER)
 						bprint ("^1", s, "^1 was blasted by ", a, "\n");
-					else if (deathtype == IT_ELECTRO)
+					else if (deathtype == WEP_ELECTRO)
 						bprint ("^1",s, "^1 was blasted by ", a, "\n");
-					else if (deathtype == IT_CRYLINK)
+					else if (deathtype == WEP_CRYLINK)
 						bprint ("^1",s, "^1 was blasted by ", a, "\n");
-					else if (deathtype == IT_NEX)
+					else if (deathtype == WEP_NEX)
 						bprint ("^1",s, "^1 has been vaporized by ", a, "\n");
-					else if (deathtype == IT_HAGAR)
+					else if (deathtype == WEP_HAGAR)
 						bprint ("^1",s, "^1 was pummeled by ", a, "\n");
-					else if (deathtype == IT_ROCKET_LAUNCHER)
+					else if (deathtype == WEP_ROCKET_LAUNCHER)
 						bprint ("^1",s, "^1 was blasted by ", a, "\n");
 					else if (deathtype == DEATH_TELEFRAG)
 						bprint ("^1",s, "^1 was telefragged by ", a, "\n");
@@ -572,20 +572,20 @@
 				(deathtype == DEATH_SLIME) ||
 				(deathtype == DEATH_LAVA))
 				return;
-			if (targ.armorvalue && (deathtype == IT_NEX) && damage)
+			if (targ.armorvalue && (deathtype == WEP_NEX) && damage)
 			{
 				targ.armorvalue -= 1;
 				centerprint(targ, strcat("^3Remaining extra lives: ",ftos(targ.armorvalue),"\n"));
 				damage = 0;
 				targ.hitsound += 1;
 			}
-			else if (deathtype == IT_NEX && targ.items & IT_STRENGTH)
+			else if (deathtype == WEP_NEX && targ.items & IT_STRENGTH)
 			{
 				if(clienttype(attacker) == CLIENTTYPE_REAL)
 					if(IsDifferentTeam(targ, attacker))
 						yoda = 1;
 			}
-			if (deathtype == IT_LASER)
+			if (deathtype == WEP_LASER)
 			{
 				damage = 0;
 				if (targ != attacker)

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/g_world.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -353,6 +353,7 @@
 	}
 
 	addstat(STAT_SYS_TICRATE, AS_FLOAT, stat_sys_ticrate);
+	addstat(STAT_WEAPONS, AS_INT, weapons);
 
 	next_pingtime = time + 5;
 	world_initialized = 1;

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -697,7 +697,7 @@
 float g_pickup_healthmega;
 float g_pickup_healthmega_max;
 
-float start_items;
+float start_weapons;
 float start_switchweapon;
 float start_ammo_shells;
 float start_ammo_nails;
@@ -758,7 +758,7 @@
 	g_pickup_healthmega_max            = cvar("g_pickup_healthmega_max");
 
 	// initialize starting values for players
-	start_items = 0;
+	start_weapons = 0;
 	start_switchweapon = 0;
 	start_ammo_shells = 0;
 	start_ammo_nails = 0;
@@ -769,28 +769,28 @@
 
 	if(g_instagib)
 	{
-		start_items = IT_NEX;
+		start_weapons = WEPBIT_NEX;
 		start_switchweapon = WEP_NEX;
 		weapon_action(start_switchweapon, WR_PRECACHE);
 		start_ammo_cells = 999;
 	}
 	else if(g_rocketarena)
 	{
-		start_items = IT_ROCKET_LAUNCHER;
+		start_weapons = WEPBIT_ROCKET_LAUNCHER;
 		start_switchweapon = WEP_ROCKET_LAUNCHER;
 		weapon_action(start_switchweapon, WR_PRECACHE);
 		start_ammo_rockets = 999;
 	}
 	else if(g_nixnex)
 	{
-		start_items = 0;
+		start_weapons = 0;
 		// will be done later
 	}
 	else if(g_minstagib)
 	{
 		start_health = 100;
 		start_armorvalue = 0;
-		start_items = IT_NEX;
+		start_weapons = WEPBIT_NEX;
 		start_switchweapon = WEP_NEX;
 		weapon_action(start_switchweapon, WR_PRECACHE);
 		start_ammo_cells = cvar("g_minstagib_ammo_start");
@@ -829,55 +829,55 @@
 
 		if (cvar("g_start_weapon_laser") || g_lms)
 		{
-			start_items = start_items | IT_LASER;
+			start_weapons = start_weapons | WEPBIT_LASER;
 			start_switchweapon = WEP_LASER;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_shotgun") || g_lms)
 		{
-			start_items = start_items | IT_SHOTGUN;
+			start_weapons = start_weapons | WEPBIT_SHOTGUN;
 			start_switchweapon = WEP_SHOTGUN;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_uzi") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_UZI;
+			start_weapons = start_weapons | WEPBIT_UZI;
 			start_switchweapon = WEP_UZI;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_grenadelauncher") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_GRENADE_LAUNCHER;
+			start_weapons = start_weapons | WEPBIT_GRENADE_LAUNCHER;
 			start_switchweapon = WEP_GRENADE_LAUNCHER;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_electro") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_ELECTRO;
+			start_weapons = start_weapons | WEPBIT_ELECTRO;
 			start_switchweapon = WEP_ELECTRO;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_crylink") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_CRYLINK;
+			start_weapons = start_weapons | WEPBIT_CRYLINK;
 			start_switchweapon = WEP_CRYLINK;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_nex") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_NEX;
+			start_weapons = start_weapons | WEPBIT_NEX;
 			start_switchweapon = WEP_NEX;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_hagar") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_HAGAR;
+			start_weapons = start_weapons | WEPBIT_HAGAR;
 			start_switchweapon = WEP_HAGAR;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}
 		if (cvar("g_start_weapon_rocketlauncher") || g_lms || g_tourney)
 		{
-			start_items = start_items | IT_ROCKET_LAUNCHER;
+			start_weapons = start_weapons | WEPBIT_ROCKET_LAUNCHER;
 			start_switchweapon = WEP_ROCKET_LAUNCHER;
 			weapon_action(start_switchweapon, WR_PRECACHE);
 		}

Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/t_items.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -54,8 +54,8 @@
 			// else if(self.items == IT_CELLS)
 			//	play2(other, "announce/robotic/ammo.ogg");
 
-			if (self.items & IT_NEX)
-				W_GiveWeapon (other, IT_NEX, "Nex");
+			if (self.weapons & WEPBIT_NEX)
+				W_GiveWeapon (other, WEP_NEX, "Nex");
 			if (self.ammo_cells)
 				other.ammo_cells = min (other.ammo_cells + cvar("g_minstagib_ammo_drop"), 999);
 			other.health = 100;
@@ -93,9 +93,9 @@
 	{
 		if (cvar("deathmatch") == 2 || cvar("g_weapon_stay"))
 		{
-			if (self.flags & FL_WEAPON && other.items & self.items && self.classname != "droppedweapon")
+			if (self.flags & FL_WEAPON && other.weapons & self.weapons && self.classname != "droppedweapon")
 				return;
-			if (other.items & self.items && self.flags & FL_TOSSED)	// don't let players stack ammo by tossing weapons
+			if (other.weapons & self.weapons && self.flags & FL_TOSSED)	// don't let players stack ammo by tossing weapons
 				return;
 		}
 
@@ -132,17 +132,18 @@
 		}
 
 		if (self.flags & FL_WEAPON)
-		if ((it = self.items - (self.items & other.items)))
+		if ((it = self.weapons - (self.weapons & other.weapons)))
 		{
 			pickedup = TRUE;
-			if (it & IT_UZI)                W_GiveWeapon (other, IT_UZI, self.netname);
-			if (it & IT_SHOTGUN)            W_GiveWeapon (other, IT_SHOTGUN, self.netname);
-			if (it & IT_GRENADE_LAUNCHER)   W_GiveWeapon (other, IT_GRENADE_LAUNCHER, self.netname);
-			if (it & IT_ELECTRO)            W_GiveWeapon (other, IT_ELECTRO, self.netname);
-			if (it & IT_NEX)                W_GiveWeapon (other, IT_NEX, self.netname);
-			if (it & IT_HAGAR)              W_GiveWeapon (other, IT_HAGAR, self.netname);
-			if (it & IT_ROCKET_LAUNCHER)    W_GiveWeapon (other, IT_ROCKET_LAUNCHER, self.netname);
-			if (it & IT_CRYLINK)            W_GiveWeapon (other, IT_CRYLINK, self.netname);
+			if (it & WEPBIT_UZI)                W_GiveWeapon (other, WEP_UZI, self.netname);
+			if (it & WEPBIT_SHOTGUN)            W_GiveWeapon (other, WEP_SHOTGUN, self.netname);
+			if (it & WEPBIT_GRENADE_LAUNCHER)   W_GiveWeapon (other, WEP_GRENADE_LAUNCHER, self.netname);
+			if (it & WEPBIT_ELECTRO)            W_GiveWeapon (other, WEP_ELECTRO, self.netname);
+			if (it & WEPBIT_NEX)                W_GiveWeapon (other, WEP_NEX, self.netname);
+			if (it & WEPBIT_HAGAR)              W_GiveWeapon (other, WEP_HAGAR, self.netname);
+			if (it & WEPBIT_ROCKET_LAUNCHER)    W_GiveWeapon (other, WEP_ROCKET_LAUNCHER, self.netname);
+			if (it & WEPBIT_CRYLINK)            W_GiveWeapon (other, WEP_CRYLINK, self.netname);
+			// %weaponaddpoint
 		}
 
 		if (self.strength_finished)
@@ -226,7 +227,7 @@
 float weapon_pickupevalfunc(entity player, entity item)
 {
 	// if we already have the weapon, rate it 1/5th normal value
-	if ((player.items & item.items) == item.items)
+	if ((player.weapons & item.weapons) == item.weapons)
 		return item.bot_pickupbasevalue * 0.2;
 	return item.bot_pickupbasevalue;
 };
@@ -257,18 +258,12 @@
 	if (player.health < item.max_health)
 		c = c + max(0, 1 - player.health / item.max_health);
 
-	if (cvar("deathmatch") == 2) // weapon stay is on, so weapons the player already has are of no interest
-	if (item.flags & FL_WEAPON)
-	if (self.items & item.items)
-	if (item.classname != "droppedweapon")
-		c = 0;
-
 	return item.bot_pickupbasevalue * c;
 };
 
 
 .float is_item;
-void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, string itemname, float itemid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue)
+void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, string itemname, float itemid, float weaponid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue)
 {
 	startitem_failed = FALSE;
 
@@ -374,7 +369,7 @@
 			self.is_item = TRUE;
 		}
 
-		itemsInMap |= itemid;
+		weaponsInMap |= weaponid;
 
 		if(g_lms || g_instagib || g_rocketarena)
 		{
@@ -403,9 +398,7 @@
 		precache_sound (pickupsound);
 		precache_sound ("misc/itemrespawn.wav");
 
-		if(itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2 |
-					IT_ROCKET_LAUNCHER | IT_HAGAR | IT_NEX | IT_CRYLINK | IT_ELECTRO |
-					IT_GRENADE_LAUNCHER | IT_UZI | IT_SHOTGUN | IT_LASER))
+		if((itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2)) || (weaponid & WEPBIT_ALL))
 			self.target = "###item###"; // for finding the nearest item using find()
 	}
 
@@ -419,6 +412,7 @@
 		self.respawntime = defaultrespawntime;
 	self.netname = itemname;
 	self.items = itemid;
+	self.weapons = weaponid;
 	self.flags = FL_ITEM | itemflags;
 	self.touch = Item_Touch;
 	setmodel (self, self.mdl); // precision set below
@@ -450,7 +444,7 @@
 		self.ammo_cells = 25;
 		StartItem ("models/weapons/g_nex.md3",
 			"weapons/weaponpickup.wav", 15,
-			"Nex Gun", IT_NEX, FL_WEAPON, generic_pickupevalfunc, 1000);
+			"Nex Gun", 0, WEPBIT_NEX, FL_WEAPON, generic_pickupevalfunc, 1000);
 		return;
 	}
 
@@ -463,7 +457,7 @@
 		self.ammo_cells = 1;
 		StartItem ("models/items/a_cells.md3",
 			"misc/itempickup.wav", 45,
-			"Nex Ammo", IT_CELLS, 0, generic_pickupevalfunc, 100);
+			"Nex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
 		return;
 	}
 
@@ -483,7 +477,7 @@
 		self.strength_finished = 30;
 		StartItem ("models/items/g_strength.md3",
 			"misc/powerup.wav", 120,
-			"Invisibility", IT_STRENGTH, FL_POWERUP, generic_pickupevalfunc, 1000);
+			"Invisibility", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 1000);
 	}
 	// replace with extra lives
 	if (itemid == IT_NAILS)
@@ -491,7 +485,7 @@
 		self.max_health = 1;
 		StartItem ("models/items/g_h100.md3",
 			"misc/megahealth.wav", 120,
-			"Extralife", IT_NAILS, FL_POWERUP, generic_pickupevalfunc, 1000);
+			"Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, 1000);
 
 	}
 	// replace with speed
@@ -501,7 +495,7 @@
 		self.invincible_finished = 30;
 		StartItem ("models/items/g_invincible.md3",
 			"misc/powerup_shield.wav", 120,
-			"Speed", IT_INVINCIBLE, FL_POWERUP, generic_pickupevalfunc, 1000);
+			"Speed", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 1000);
 	}
 
 }
@@ -528,7 +522,7 @@
 
 	if(!self.ammo_nails)
 		self.ammo_nails = cvar("g_pickup_nails");
-	StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_UZI), IT_UZI, FL_WEAPON, weapon_pickupevalfunc, 5000);
+	StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_UZI), 0, WEPBIT_UZI, FL_WEAPON, weapon_pickupevalfunc, 5000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_UZI, WR_PRECACHE);
 }
@@ -546,7 +540,7 @@
 
 	if(!self.ammo_shells)
 		self.ammo_shells = cvar("g_pickup_shells");
-	StartItem ("models/weapons/g_shotgun.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_SHOTGUN), IT_SHOTGUN, FL_WEAPON, weapon_pickupevalfunc, 2500);
+	StartItem ("models/weapons/g_shotgun.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_SHOTGUN), 0, WEPBIT_SHOTGUN, FL_WEAPON, weapon_pickupevalfunc, 2500);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_SHOTGUN, WR_PRECACHE);
 }
@@ -555,7 +549,7 @@
 {
 	if(!self.ammo_rockets)
 		self.ammo_rockets = cvar("g_pickup_rockets");
-	StartItem ("models/weapons/g_gl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_GRENADE_LAUNCHER), IT_GRENADE_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 5000);
+	StartItem ("models/weapons/g_gl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_GRENADE_LAUNCHER), 0, WEPBIT_GRENADE_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 5000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_GRENADE_LAUNCHER, WR_PRECACHE);
 }
@@ -564,7 +558,7 @@
 {
 	if(!self.ammo_cells)
 		self.ammo_cells = cvar("g_pickup_cells");
-	StartItem ("models/weapons/g_electro.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ELECTRO), IT_ELECTRO, FL_WEAPON, weapon_pickupevalfunc, 5000);
+	StartItem ("models/weapons/g_electro.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ELECTRO), 0, WEPBIT_ELECTRO, FL_WEAPON, weapon_pickupevalfunc, 5000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_ELECTRO, WR_PRECACHE);
 }
@@ -573,7 +567,7 @@
 {
 	if(!self.ammo_cells)
 		self.ammo_cells = cvar("g_pickup_cells");
-	StartItem ("models/weapons/g_crylink.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_CRYLINK), IT_CRYLINK, FL_WEAPON, weapon_pickupevalfunc, 2500);
+	StartItem ("models/weapons/g_crylink.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_CRYLINK), 0, WEPBIT_CRYLINK, FL_WEAPON, weapon_pickupevalfunc, 2500);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_CRYLINK, WR_PRECACHE);
 }
@@ -595,7 +589,7 @@
 		nextime = 15 * nextime;
 	else
 		nextime = 15;
-	StartItem ("models/weapons/g_nex.md3", "weapons/weaponpickup.wav", nextime, W_Name(WEP_NEX), IT_NEX, FL_WEAPON, weapon_pickupevalfunc, 10000);
+	StartItem ("models/weapons/g_nex.md3", "weapons/weaponpickup.wav", nextime, W_Name(WEP_NEX), 0, WEPBIT_NEX, FL_WEAPON, weapon_pickupevalfunc, 10000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_NEX, WR_PRECACHE);
 }
@@ -604,7 +598,7 @@
 {
 	if(!self.ammo_rockets)
 		self.ammo_rockets = cvar("g_pickup_rockets");
-	StartItem ("models/weapons/g_hagar.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_HAGAR), IT_HAGAR, FL_WEAPON, weapon_pickupevalfunc, 5000);
+	StartItem ("models/weapons/g_hagar.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_HAGAR), 0, WEPBIT_HAGAR, FL_WEAPON, weapon_pickupevalfunc, 5000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_HAGAR, WR_PRECACHE);
 }
@@ -620,7 +614,7 @@
 	}
 	if(!self.ammo_rockets)
 		self.ammo_rockets = g_pickup_rockets;
-	StartItem ("models/weapons/g_rl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ROCKET_LAUNCHER), IT_ROCKET_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 10000);
+	StartItem ("models/weapons/g_rl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ROCKET_LAUNCHER), 0, WEPBIT_ROCKET_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 10000);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(WEP_ROCKET_LAUNCHER, WR_PRECACHE);
 }
@@ -628,7 +622,7 @@
 void spawnfunc_item_rockets (void) {
 	if(!self.ammo_rockets)
 		self.ammo_rockets = g_pickup_rockets;
-	StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", 15, "rockets", IT_ROCKETS, 0, commodity_pickupevalfunc, 3000);
+	StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", 15, "rockets", IT_ROCKETS, 0, 0, commodity_pickupevalfunc, 3000);
 }
 
 void spawnfunc_item_shells (void);
@@ -645,13 +639,13 @@
 
 	if(!self.ammo_nails)
 		self.ammo_nails = g_pickup_nails;
-	StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", 15, "bullets", IT_NAILS, 0, commodity_pickupevalfunc, 2000);
+	StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", 15, "bullets", IT_NAILS, 0, 0, commodity_pickupevalfunc, 2000);
 }
 
 void spawnfunc_item_cells (void) {
 	if(!self.ammo_cells)
 		self.ammo_cells = g_pickup_cells;
-	StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", 15, "cells", IT_CELLS, 0, commodity_pickupevalfunc, 2000);
+	StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", 15, "cells", IT_CELLS, 0, 0, commodity_pickupevalfunc, 2000);
 }
 
 void spawnfunc_item_shells (void) {
@@ -667,7 +661,7 @@
 
 	if(!self.ammo_shells)
 		self.ammo_shells = g_pickup_shells;
-	StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", 15, "shells", IT_SHELLS, 0, commodity_pickupevalfunc, 500);
+	StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", 15, "shells", IT_SHELLS, 0, 0, commodity_pickupevalfunc, 500);
 }
 
 void spawnfunc_item_armor_small (void) {
@@ -675,7 +669,7 @@
 		self.armorvalue = g_pickup_armorsmall;
 	if(!self.max_armorvalue)
 		self.max_armorvalue = g_pickup_armorsmall_max;
-	StartItem ("models/items/g_a1.md3", "misc/armor1.wav", 15, "5 Armor", IT_ARMOR_SHARD, 0, commodity_pickupevalfunc, 1000);
+	StartItem ("models/items/g_a1.md3", "misc/armor1.wav", 15, "5 Armor", IT_ARMOR_SHARD, 0, 0, commodity_pickupevalfunc, 1000);
 }
 
 void spawnfunc_item_armor_medium (void) {
@@ -683,7 +677,7 @@
 		self.armorvalue = g_pickup_armormedium;
 	if(!self.max_armorvalue)
 		self.max_armorvalue = g_pickup_armormedium_max;
-	StartItem ("models/items/g_armormedium.md3", "misc/armor1.wav", 20, "25 Armor", IT_ARMOR, 0, commodity_pickupevalfunc, 20000);
+	StartItem ("models/items/g_armormedium.md3", "misc/armor1.wav", 20, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000);
 }
 
 void spawnfunc_item_armor_large (void) {
@@ -691,7 +685,7 @@
 		self.armorvalue = g_pickup_armorlarge;
 	if(!self.max_armorvalue)
 		self.max_armorvalue = g_pickup_armorlarge_max;
-	StartItem ("models/items/g_a25.md3", "misc/armor25.wav", 30, "100 Armor", IT_ARMOR, 0, commodity_pickupevalfunc, 20000);
+	StartItem ("models/items/g_a25.md3", "misc/armor25.wav", 30, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000);
 }
 
 void spawnfunc_item_health_small (void) {
@@ -699,7 +693,7 @@
 		self.max_health = g_pickup_healthsmall_max;
 	if(!self.health)
 		self.health = g_pickup_healthsmall;
-	StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", 15, "5 Health", IT_5HP, 0, commodity_pickupevalfunc, 20000);
+	StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", 15, "5 Health", IT_5HP, 0, 0, commodity_pickupevalfunc, 20000);
 }
 
 void spawnfunc_item_health_medium (void) {
@@ -707,7 +701,7 @@
 		self.max_health = g_pickup_healthmedium_max;
 	if(!self.health)
 		self.health = g_pickup_healthmedium;
-	StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", 15, "25 Health", IT_25HP, 0, commodity_pickupevalfunc, 20000);
+	StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", 15, "25 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, 20000);
 }
 
 void spawnfunc_item_health_large (void) {
@@ -715,7 +709,7 @@
 		self.max_health = g_pickup_healthlarge_max;
 	if(!self.health)
 		self.health = g_pickup_healthlarge;
-	StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", 20, "50 Health", IT_25HP, 0, commodity_pickupevalfunc, 20000);
+	StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", 20, "50 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, 20000);
 }
 
 void spawnfunc_item_health_mega (void) {
@@ -732,7 +726,7 @@
 			self.max_health = g_pickup_healthmega_max;
 		if(!self.health)
 			self.health = g_pickup_healthmega;
-		StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", 30, "100 Health", IT_HEALTH, 0, commodity_pickupevalfunc, 20000);
+		StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", 30, "100 Health", IT_HEALTH, 0, 0, commodity_pickupevalfunc, 20000);
 	}
 }
 
@@ -755,7 +749,8 @@
 	} else {
 		precache_sound("weapons/strength_fire.wav");
 		self.strength_finished = 30;
-		self.effects = EF_ADDITIVE;StartItem ("models/items/g_strength.md3", "misc/powerup.wav", 120, "Strength Powerup", IT_STRENGTH, FL_POWERUP, generic_pickupevalfunc, 100000);
+		self.effects = EF_ADDITIVE;
+		StartItem ("models/items/g_strength.md3", "misc/powerup.wav", 120, "Strength Powerup", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
 	}
 }
 
@@ -771,7 +766,7 @@
 	} else {
 		self.invincible_finished = 30;
 		self.effects = EF_ADDITIVE;
-		StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", 120, "Invulnerability", IT_INVINCIBLE, FL_POWERUP, generic_pickupevalfunc, 100000);
+		StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", 120, "Invulnerability", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
 	}
 }
 //void item_speed (void) {self.speed_finished = 30;StartItem ("models/items/g_speed.md3", "misc/powerup.wav", 120, "Speed Powerup", IT_SPEED, FL_POWERUP, generic_pickupevalfunc, 10000);}
@@ -834,35 +829,18 @@
 	}
 }
 
-float Item_WeaponCode(float it)
+void Item_SpawnByWeaponCode(float it)
 {
 	switch(it)
 	{
-		case IT_LASER:            return WEP_LASER;
-		case IT_SHOTGUN:          return WEP_SHOTGUN;
-		case IT_UZI:              return WEP_UZI;
-		case IT_GRENADE_LAUNCHER: return WEP_GRENADE_LAUNCHER;
-		case IT_ELECTRO:          return WEP_ELECTRO;
-		case IT_CRYLINK:          return WEP_CRYLINK;
-		case IT_NEX:              return WEP_NEX;
-		case IT_HAGAR:            return WEP_HAGAR;
-		case IT_ROCKET_LAUNCHER:  return WEP_ROCKET_LAUNCHER;
-		default:                  return 0;
-	}
-}
-
-void Item_SpawnByItemCode(float it)
-{
-	switch(it)
-	{
-		case IT_SHOTGUN:          spawnfunc_weapon_shotgun(); break;
-		case IT_UZI:              spawnfunc_weapon_uzi(); break;
-		case IT_GRENADE_LAUNCHER: spawnfunc_weapon_grenadelauncher(); break;
-		case IT_ELECTRO:          spawnfunc_weapon_electro(); break;
-		case IT_CRYLINK:          spawnfunc_weapon_crylink(); break;
-		case IT_NEX:              spawnfunc_weapon_nex(); break;
-		case IT_HAGAR:            spawnfunc_weapon_hagar(); break;
-		case IT_ROCKET_LAUNCHER:  spawnfunc_weapon_rocketlauncher(); break;
+		case WEP_SHOTGUN:          spawnfunc_weapon_shotgun(); break;
+		case WEP_UZI:              spawnfunc_weapon_uzi(); break;
+		case WEP_GRENADE_LAUNCHER: spawnfunc_weapon_grenadelauncher(); break;
+		case WEP_ELECTRO:          spawnfunc_weapon_electro(); break;
+		case WEP_CRYLINK:          spawnfunc_weapon_crylink(); break;
+		case WEP_NEX:              spawnfunc_weapon_nex(); break;
+		case WEP_HAGAR:            spawnfunc_weapon_hagar(); break;
+		case WEP_ROCKET_LAUNCHER:  spawnfunc_weapon_rocketlauncher(); break;
 		// add all other item spawn functions here
 		default:
 			error("requested item can't be spawned");

Modified: trunk/data/qcsrc/server/w_common.qc
===================================================================
--- trunk/data/qcsrc/server/w_common.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_common.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -6,7 +6,7 @@
 	if (!wep)
 		return;
 
-	e.items = e.items | wep;
+	e.weapons = e.weapons | wep;
 
 	oldself = self;
 	self = e;
@@ -141,7 +141,7 @@
 	{
 		if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
 		{
-			if (dtype == IT_SHOTGUN)
+			if (dtype == WEP_SHOTGUN)
 				pointparticles(particleeffectnum("shotgun_impact"), trace_endpos, trace_plane_normal * 1000, 1);
 			else
 				pointparticles(particleeffectnum("machinegun_impact"), trace_endpos, trace_plane_normal * 1000, 1);

Modified: trunk/data/qcsrc/server/w_crylink.qc
===================================================================
--- trunk/data/qcsrc/server/w_crylink.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_crylink.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -20,7 +20,7 @@
 		f = cvar("g_balance_crylink_primary_bouncedamagefactor");
 	if(self.alpha)
 		f *= self.alpha;
-	RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, IT_CRYLINK);
+	RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, WEP_CRYLINK);
 	if (finalhit)
 	{
 		remove (self);
@@ -49,7 +49,7 @@
 		f = cvar("g_balance_crylink_secondary_bouncedamagefactor");
 	if(self.alpha)
 		f *= self.alpha;
-	RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, IT_CRYLINK);
+	RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, WEP_CRYLINK);
 	if (finalhit)
 	{
 		remove (self);
@@ -191,7 +191,7 @@
 	trailparticles(world, particleeffectnum("lightning_beam", w_shotorg, trace_endpos);
 
 	if (trace_fraction < 1)
-		Damage(trace_ent, self, self, cvar("g_balance_crylink_primary_damage"), IT_CRYLINK, trace_endpos, '0 0 0');
+		Damage(trace_ent, self, self, cvar("g_balance_crylink_primary_damage"), WEP_CRYLINK, trace_endpos, '0 0 0');
 }
 */
 
@@ -234,7 +234,5 @@
 		return self.ammo_cells >= cvar("g_balance_crylink_primary_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_cells >= cvar("g_balance_crylink_secondary_ammo");
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_CRYLINK, min(cvar("g_balance_crylink_primary_ammo"), cvar("g_balance_crylink_secondary_ammo")));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_electro.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -8,12 +8,12 @@
 	if (self.movetype == MOVETYPE_BOUNCE)
 	{
 		pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1);
-		RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), IT_ELECTRO);
+		RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), WEP_ELECTRO);
 	}
 	else
 	{
 		pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1);
-		RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), IT_ELECTRO);
+		RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), WEP_ELECTRO);
 	}
 	sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
 
@@ -29,7 +29,7 @@
 	sound (self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM);
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), IT_ELECTRO);
+	RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), WEP_ELECTRO);
 	remove (self);
 }
 
@@ -225,7 +225,5 @@
 		return self.ammo_cells >= cvar("g_balance_electro_primary_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_cells >= cvar("g_balance_electro_secondary_ammo");
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_ELECTRO, min(cvar("g_balance_electro_primary_ammo"), cvar("g_balance_electro_secondary_ammo")));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -11,7 +11,7 @@
 	sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), IT_GRENADE_LAUNCHER);
+	RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), WEP_GRENADE_LAUNCHER);
 
 	remove (self);
 }
@@ -24,7 +24,7 @@
 	sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), IT_GRENADE_LAUNCHER);
+	RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), WEP_GRENADE_LAUNCHER);
 
 	remove (self);
 }
@@ -236,7 +236,5 @@
 		return self.ammo_rockets >= cvar("g_balance_grenadelauncher_primary_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_rockets >= cvar("g_balance_grenadelauncher_secondary_ammo");
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_GRENADE_LAUNCHER, min(cvar("g_balance_grenadelauncher_primary_ammo"), cvar("g_balance_grenadelauncher_secondary_ammo")));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_hagar.qc
===================================================================
--- trunk/data/qcsrc/server/w_hagar.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_hagar.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -13,7 +13,7 @@
 		sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), IT_HAGAR);
+	RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), WEP_HAGAR);
 
 	remove (self);
 }
@@ -33,7 +33,7 @@
 		sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), IT_HAGAR);
+	RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), WEP_HAGAR);
 
 	remove (self);
 }
@@ -198,7 +198,5 @@
 		return self.ammo_rockets >= cvar("g_balance_hagar_primary_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_rockets >= cvar("g_balance_hagar_secondary_ammo");
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_HAGAR, min(cvar("g_balance_hagar_primary_ammo"), cvar("g_balance_hagar_secondary_ammo")));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_laser.qc
===================================================================
--- trunk/data/qcsrc/server/w_laser.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_laser.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -24,9 +24,9 @@
 
 	self.event_damage = SUB_Null;
 	if (self.dmg)
-		RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), IT_LASER);
+		RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), WEP_LASER);
 	else
-		RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), IT_LASER);
+		RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), WEP_LASER);
 	sound (self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
 
 	remove (self);
@@ -133,7 +133,5 @@
 		return TRUE;
 	else if (req == WR_CHECKAMMO2)
 		return TRUE;
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_LASER, 0);
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_nex.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -10,11 +10,11 @@
 
 	// assure that nexdamage is high enough in minstagib
 	if (g_minstagib || g_instagib)
-		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, IT_NEX);
+		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, WEP_NEX);
 	else
 	{
 		yoda = 0;
-		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), IT_NEX);
+		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), WEP_NEX);
 
 		if(yoda)
 			if(flying)
@@ -178,12 +178,5 @@
 	}
 	else if (req == WR_CHECKAMMO2)
 		return FALSE;
-	else if (req == WR_REGISTER)
-	{
-		if(g_minstagib)
-			weapon_register(WEP_NEX, 1);
-		else
-			weapon_register(WEP_NEX, cvar("g_balance_nex_ammo"));
-	}
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -12,7 +12,7 @@
 
 	//effect (org2, "models/sprites/rockexpl.spr", 0, 12, 35);
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), IT_ROCKET_LAUNCHER);
+	RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), WEP_ROCKET_LAUNCHER);
 
 	if (self.owner.weapon == WEP_ROCKET_LAUNCHER)
 	{
@@ -428,7 +428,5 @@
 	}
 	else if (req == WR_CHECKAMMO2)
 		return FALSE;
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_ROCKET_LAUNCHER, cvar("g_balance_rocketlauncher_ammo"));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_shotgun.qc
===================================================================
--- trunk/data/qcsrc/server/w_shotgun.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_shotgun.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -15,7 +15,7 @@
 
 	W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav");
 	for (sc = 0;sc < bullets;sc = sc + 1)
-		fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3);
+		fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3);
 	if (cvar("g_use_ammunition"))
 		self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_primary_ammo");
 
@@ -58,7 +58,7 @@
 
 	W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav");
 	for (sc = 0;sc < bullets;sc = sc + 1)
-		fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3);
+		fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3);
 	if (cvar("g_use_ammunition"))
 		self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_secondary_ammo");
 
@@ -139,7 +139,5 @@
 		return self.ammo_shells >= cvar("g_balance_shotgun_primary_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_shells >= cvar("g_balance_shotgun_secondary_ammo") * 3;
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_SHOTGUN, min(cvar("g_balance_shotgun_primary_ammo"), cvar("g_balance_shotgun_secondary_ammo")));
 	return TRUE;
 };

Modified: trunk/data/qcsrc/server/w_uzi.qc
===================================================================
--- trunk/data/qcsrc/server/w_uzi.qc	2008-09-02 12:28:21 UTC (rev 4287)
+++ trunk/data/qcsrc/server/w_uzi.qc	2008-09-02 13:34:10 UTC (rev 4288)
@@ -34,9 +34,9 @@
 	ATTACK_FINISHED(self) = time + cvar("g_balance_uzi_first_refire");
 
 	if (self.uzi_bulletcounter == 1)
-		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), cvar("g_balance_uzi_first_force"), IT_UZI, TRUE);
+		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), cvar("g_balance_uzi_first_force"), WEP_UZI, TRUE);
 	else
-		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), cvar("g_balance_uzi_sustained_force"), IT_UZI, (self.uzi_bulletcounter & 3) == 0);
+		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), cvar("g_balance_uzi_sustained_force"), WEP_UZI, (self.uzi_bulletcounter & 3) == 0);
 
 	pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -147,7 +147,5 @@
 		return self.ammo_nails >= cvar("g_balance_uzi_first_ammo");
 	else if (req == WR_CHECKAMMO2)
 		return self.ammo_nails >= cvar("g_balance_uzi_first_ammo");
-	else if (req == WR_REGISTER)
-		weapon_register(WEP_UZI, cvar("g_balance_uzi_first_ammo"));
 	return TRUE;
 };




More information about the nexuiz-commits mailing list