r2484 - in branches/nexuiz-2.0/data: . qcsrc/server scripts

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri May 4 09:20:37 EDT 2007


Author: div0
Date: 2007-05-04 09:20:37 -0400 (Fri, 04 May 2007)
New Revision: 2484

Added:
   branches/nexuiz-2.0/data/cfg-hierarchy.sh
Modified:
   branches/nexuiz-2.0/data/default.cfg
   branches/nexuiz-2.0/data/high.cfg
   branches/nexuiz-2.0/data/low.cfg
   branches/nexuiz-2.0/data/med.cfg
   branches/nexuiz-2.0/data/normal.cfg
   branches/nexuiz-2.0/data/omg.cfg
   branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
   branches/nexuiz-2.0/data/qcsrc/server/defs.qh
   branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc
   branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
   branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc
   branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_shotgun.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_uzi.qc
   branches/nexuiz-2.0/data/scripts/stralenex1.shader
   branches/nexuiz-2.0/data/ultimate.cfg
   branches/nexuiz-2.0/data/ultra.cfg
Log:
optional precaching; r_picmipworld


Copied: branches/nexuiz-2.0/data/cfg-hierarchy.sh (from rev 2483, trunk/data/cfg-hierarchy.sh)
===================================================================
--- branches/nexuiz-2.0/data/cfg-hierarchy.sh	                        (rev 0)
+++ branches/nexuiz-2.0/data/cfg-hierarchy.sh	2007-05-04 13:20:37 UTC (rev 2484)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+prev=omg
+for cfg in low med normal high ultra ultimate; do
+	echo "$prev.cfg -> $cfg.cfg:"
+	diff "$prev.cfg" "$cfg.cfg" | grep ^\>
+	echo
+	prev=$cfg
+done

Modified: branches/nexuiz-2.0/data/default.cfg
===================================================================
--- branches/nexuiz-2.0/data/default.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/default.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -113,7 +113,11 @@
 // use default physics
 exec physicsQBR.cfg
 
+seta sv_precacheplayermodels 0
+seta sv_precacheweapons 0
+seta sv_precacheitems 0
 set sv_spectator_speed_multiplier 1.5
+seta sv_precacheplayermodels 0
 seta sv_spectate 1
 seta sv_defaultcharacter 0
 seta sv_defaultplayermodel models/player/nexus.zym
@@ -122,6 +126,7 @@
 net_messagetimeout 300
 net_connecttimeout 30
 sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges
+set ekg 0
 
 cl_movement 1
 seta cl_autoswitch 1
@@ -184,6 +189,8 @@
 locs_enable 0
 pausable 0
 set g_antilag 0
+set g_shootfromeye 0
+set g_shootfromcenter 0
 set g_weapon_stay 0
 set g_powerup_superhealth 1
 set g_powerup_strength 1

Modified: branches/nexuiz-2.0/data/high.cfg
===================================================================
--- branches/nexuiz-2.0/data/high.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/high.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 0
+r_picmipworld 0
 gl_texture_anisotropy 1
 r_bloom 1
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 1
 r_shadow_realtime_world_shadows 1
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0

Modified: branches/nexuiz-2.0/data/low.cfg
===================================================================
--- branches/nexuiz-2.0/data/low.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/low.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 2
+r_picmipworld 1
 gl_texture_anisotropy 1
 r_bloom 0
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 0
 r_shadow_realtime_world_shadows 0
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0

Modified: branches/nexuiz-2.0/data/med.cfg
===================================================================
--- branches/nexuiz-2.0/data/med.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/med.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -13,7 +13,8 @@
 cl_particles_smoke 1
 cl_particles_snow 1
 cl_particles_sparks 1
-gl_picmip 1
+gl_picmip 2
+r_picmipworld 0
 gl_texture_anisotropy 1
 r_bloom 0
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 0
 r_shadow_realtime_world_shadows 0
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0

Modified: branches/nexuiz-2.0/data/normal.cfg
===================================================================
--- branches/nexuiz-2.0/data/normal.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/normal.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 0
+r_picmipworld 0
 gl_texture_anisotropy 1
 r_bloom 1
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 0
 r_shadow_realtime_world_shadows 0
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0

Modified: branches/nexuiz-2.0/data/omg.cfg
===================================================================
--- branches/nexuiz-2.0/data/omg.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/omg.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 2
+r_picmipworld 1
 gl_texture_anisotropy 1
 r_bloom 0
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 0
 r_shadow_realtime_world_shadows 0
 r_sky 1
-r_showsurfaces 1
\ No newline at end of file
+r_showsurfaces 1

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -415,10 +415,20 @@
 		self.flags = FL_CLIENT;
 		self.takedamage = DAMAGE_AIM;
 		self.effects = 0;
-		self.health = cvar("g_balance_health_start");
 		self.air_finished = time + 12;
 		self.dmg = 2;
-		self.armorvalue = cvar("g_balance_armor_start");
+
+		self.ammo_shells = start_ammo_shells;
+		self.ammo_nails = start_ammo_nails;
+		self.ammo_rockets = start_ammo_rockets;
+		self.ammo_cells = start_ammo_cells;
+		self.health = start_health;
+		self.armorvalue = start_armorvalue;
+		self.items = start_items;
+		self.switchweapon = start_switchweapon;
+		self.weapon = 0;
+		self.jump_interval = time;
+
 		self.spawnshieldtime = time + cvar("g_spawnshieldtime");
 		self.pauserotarmor_finished = time + cvar("g_balance_pause_armor_rot_spawn");
 		self.pauserothealth_finished = time + cvar("g_balance_pause_health_rot_spawn");
@@ -441,8 +451,6 @@
 		// players have no think function
 		self.think = SUB_Null;
 		self.nextthink = 0;
-		self.weapon = 0;
-		self.switchweapon = 0;
 		self.hook_time = 0;
 
 		self.runes = 0;
@@ -486,104 +494,6 @@
 		// don't reset back to last position, even if new position is stuck in solid
 		self.oldorigin = self.origin;
 
-		if(cvar("g_lms"))
-		{
-			self.ammo_shells = cvar("g_lms_start_ammo_shells");
-			self.ammo_nails = cvar("g_lms_start_ammo_nails");
-			self.ammo_rockets = cvar("g_lms_start_ammo_rockets");
-			self.ammo_cells = cvar("g_lms_start_ammo_cells");
-			self.health = cvar("g_lms_start_health");
-			self.armorvalue = cvar("g_lms_start_armor");
-		}
-		else if (cvar("g_use_ammunition")) {
-			self.ammo_shells = cvar("g_start_ammo_shells");
-			self.ammo_nails = cvar("g_start_ammo_nails");
-			self.ammo_rockets = cvar("g_start_ammo_rockets");
-			self.ammo_cells = cvar("g_start_ammo_cells");
-		} else {
-			self.ammo_shells = 999;
-			self.ammo_nails = 999;
-			self.ammo_rockets = 999;
-			self.ammo_cells = 999;
-		}
-
-		self.items = 0;
-		if (cvar("g_start_weapon_laser") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_LASER;
-			self.switchweapon = WEP_LASER;
-		}
-		if (cvar("g_start_weapon_shotgun") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_SHOTGUN;
-			self.switchweapon = WEP_SHOTGUN;
-		}
-		if (cvar("g_start_weapon_uzi") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_UZI;
-			self.switchweapon = WEP_UZI;
-		}
-		if (cvar("g_start_weapon_grenadelauncher") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_GRENADE_LAUNCHER;
-			self.switchweapon = WEP_GRENADE_LAUNCHER;
-		}
-		if (cvar("g_start_weapon_electro") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_ELECTRO;
-			self.switchweapon = WEP_ELECTRO;
-		}
-		if (cvar("g_start_weapon_crylink") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_CRYLINK;
-			self.switchweapon = WEP_CRYLINK;
-		}
-		if (cvar("g_start_weapon_nex") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_NEX;
-			self.switchweapon = WEP_NEX;
-		}
-		if (cvar("g_start_weapon_hagar") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_HAGAR;
-			self.switchweapon = WEP_HAGAR;
-		}
-		if (cvar("g_start_weapon_rocketlauncher") || cvar("g_lms"))
-		{
-			self.items = self.items | IT_ROCKET_LAUNCHER;
-			self.switchweapon = WEP_ROCKET_LAUNCHER;
-		}
-
-		if(cvar("g_instagib"))
-		{
-			self.items = IT_NEX;
-			self.switchweapon = WEP_NEX;
-			self.ammo_cells = 999;
-		}
-
-		if(cvar("g_rocketarena"))
-		{
-			self.items = IT_ROCKET_LAUNCHER;
-			self.switchweapon = WEP_ROCKET_LAUNCHER;
-			self.ammo_rockets = 999;
-		}
-
-		if(cvar("g_nixnex"))
-		{
-			self.items = 0;
-			// will be done later
-		}
-
-		if(cvar("g_minstagib"))
-		{
-			self.health = 100;
-			self.armorvalue = 0;
-			self.items = IT_NEX;
-			self.switchweapon = WEP_NEX;
-			self.ammo_cells = cvar("g_minstagib_ammo_start");
-			self.jump_interval = time;
-		}
-
 		if(cvar("g_arena"))
 		{
 			Spawnqueue_Remove(self);
@@ -616,12 +526,14 @@
 
 		if(cvar("spawn_debug"))
 		{
-				sprint(self, strcat("spawnpoint origin:  ", vtos(spot.origin), "\n"));
-				remove(spot);	// usefull for checking if there are spawnpoints, that let drop through the floor
+			sprint(self, strcat("spawnpoint origin:  ", vtos(spot.origin), "\n"));
+			remove(spot);	// usefull for checking if there are spawnpoints, that let drop through the floor
 		}
 
 		//stuffcmd(self, "chase_active 0");
 	 	//stuffcmd(self, "set viewsize $tmpviewsize \n");
+
+		sound (self, CHAN_AUTO, "misc/teleport.wav", 1, ATTN_NORM);
 	} else if(self.classname == "observer") {
 		PutObserverInServer ();
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -183,12 +183,23 @@
 				if(imp == 99)
 				{
 					self.items |= (IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER);
-					self.ammo_shells = 999;
-					self.ammo_nails = 999;
-					self.ammo_rockets = 999;
-					self.ammo_cells = 999;
-					self.health = 999;
-					self.armorvalue = 999;
+					self.ammo_shells = cvar("g_pickup_shells_max");
+					self.ammo_nails = cvar("g_pickup_nails_max");
+					self.ammo_rockets = cvar("g_pickup_rockets_max");
+					self.ammo_cells = cvar("g_pickup_cells_max");
+					self.health = cvar("g_pickup_healthshard_max");
+					self.armorvalue = cvar("g_pickup_armorshard_max");
+					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");
+					// precache weapon models/sounds
+					local float wep;
+					wep = WEP_FIRST;
+					while (wep <= WEP_LAST)
+					{
+						weapon_action(wep, WR_PRECACHE);
+						wep = wep + 1;
+					}
 				}
 				else if (imp == 13)
 				{

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -176,28 +176,37 @@
 		self.view_ofs = '0 0 4';
 
 		// make a juicy mess
-		te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 800, 1000);
-		te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 400, 1000);
+		local float multiplier;
+		multiplier = 1;
+		if (cvar("ekg"))
+			multiplier = 5;
+		te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 1200 * multiplier, 1000);
 
 		// make a meaty mess
 		TossGib (self, "models/gibs/eye.md3", self.origin, self.velocity,0);
 		TossGib (world, "models/gibs/bloodyskull.md3", self.origin, '0 0 600',0);
 
-		TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity,0);
-		//TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity,0);
-		TossGib (world, "models/gibs/gib1.mdl", self.origin, self.velocity,0);
-		//TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity,0);
-		TossGib (world, "models/gibs/gib2.mdl", self.origin, self.velocity,0);
-		//TossGib (world, "models/gibs/gib4.md3", self.origin, self.velocity,0);
-		TossGib (world, "models/gibs/gib3.mdl", self.origin, self.velocity,0);
+		local float c;
+		c = 0;
+		while (c < multiplier)
+		{
+			c = c + 1;
+			TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity,0);
+			//TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity,0);
+			TossGib (world, "models/gibs/gib1.mdl", self.origin, self.velocity,0);
+			//TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity,0);
+			TossGib (world, "models/gibs/gib2.mdl", self.origin, self.velocity,0);
+			//TossGib (world, "models/gibs/gib4.md3", self.origin, self.velocity,0);
+			TossGib (world, "models/gibs/gib3.mdl", self.origin, self.velocity,0);
 
-		// these destory on impact
-		TossGib (world, "models/gibs/gib5.md3", self.origin, '-500 0 450',1);
-		//TossGib (world, "models/gibs/gib6.md3", self.origin, '0 500 450',1);
-		TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 -500 450',1);
-		TossGib (world, "models/gibs/chunk.mdl", self.origin, '500 0 450',1);
-		TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity,1);
-		TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 0 450',1);
+			// these destory on impact
+			TossGib (world, "models/gibs/gib5.md3", self.origin, '-500 0 450',1);
+			//TossGib (world, "models/gibs/gib6.md3", self.origin, '0 500 450',1);
+			TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 -500 450',1);
+			TossGib (world, "models/gibs/chunk.mdl", self.origin, '500 0 450',1);
+			TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity,1);
+			TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 0 450',1);
+		}
 
 		sound (self, CHAN_VOICE, "misc/gib.wav", 1, ATTN_NORM);
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -122,7 +122,7 @@
 
 	if(e.items & w)
 		if(e.health >= 1)
-			sprint(e, strcat("You dropped the ^2", wep.netname, "\n"));
+			sprint(e, strcat("You dropped the ^2", wep.netname, " with ", ftos(wep.ammofield), " ammo", "\n"));
 
 	wep.owner = e;
 	setorigin(wep, wep.origin);
@@ -346,10 +346,10 @@
 			}
 			else
 			{
-				self.ammo_shells = 999;
-				self.ammo_nails = 999;
-				self.ammo_rockets = 999;
-				self.ammo_cells = 999;
+				self.ammo_shells = cvar("g_pickup_shells_max");
+				self.ammo_nails = cvar("g_pickup_nails_max");
+				self.ammo_rockets = cvar("g_pickup_rockets_max");
+				self.ammo_cells = cvar("g_pickup_cells_max");
 			}
 			self.nixnex_nextincr = time + cvar("g_balance_nixnex_incrtime");
 			if(dt >= 1 && dt <= 5)
@@ -375,7 +375,7 @@
 
 		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));
 		if(cvar("g_nixnex_with_laser"))
-			self.items = self.items + IT_LASER;
+			self.items = self.items | IT_LASER;
 		self.items = self.items | W_ItemCode(nixnex_weapon);
 
 		if(self.switchweapon != nixnex_weapon)

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -23,34 +23,43 @@
 void(entity ent, vector vecs, float antilag, float recoil, string snd) W_SetupShot =
 {
 	local vector trueaimpoint;
-
 	traceline_hitcorpse(self, self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self);
 	trueaimpoint = trace_endpos;
 
-	// if aiming at a player and the original trace won't hit that player
-	// anymore, try aiming at the player's new position
+	if (cvar("g_shootfromeye"))
+		w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x;
+	else if (cvar("g_shootfromcenter"))
+		w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x + '0 0 1' * vecs_z;
+	else
+		w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x + v_right * vecs_y + v_up * vecs_z;
+	w_shotdir = normalize(trueaimpoint - w_shotorg);
+
+	// explanation of g_antilag:
+	// if client reports it was aiming at a player, and the serverside trace
+	// says it would miss, change the aim point to the player's new origin,
+	// but only if the shot at the player's new origin would hit of course
+	//
+	// FIXME: a much better method for bullet weapons would be to leave a
+	// trail of lagged 'ghosts' behind players, and see if the bullet hits the
+	// ghost corresponding to this player's ping time, and if so it would do
+	// damage to the real player
 	if (antilag)
-	if (!trace_ent.takedamage)                 // shot would miss without antilag
-	if (self.cursor_trace_ent)                 // but it HAD hit on the client
-	if (self.cursor_trace_ent.takedamage)      //   and even something evil
-	// if (trace_ent != self.cursor_trace_ent) // and it is different (redundant check, see takedamage)
+	if (self.cursor_trace_ent)                 // client was aiming at someone
+	if (self.cursor_trace_ent.takedamage)      // and that person is killable
 	if (cvar("g_antilag"))
-		trueaimpoint = self.cursor_trace_ent.origin;
+	{
+		// verify that the shot would miss without antilag
+		// (avoids an issue where guns would always shoot at their origin)
+		traceline_hitcorpse(self, w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, self);
+		if (!trace_ent.takedamage)
+		{
+			// verify that the shot would hit if altered
+			traceline_hitcorpse(self, w_shotorg, self.cursor_trace_ent.origin, MOVE_NORMAL, self);
+			if (trace_ent == self.cursor_trace_ent)
+				w_shotdir = normalize(self.cursor_trace_ent.origin - w_shotorg);
+		}
+	}
 
-	/*
-	// don't allow the shot to start inside a wall
-	local vector startorg;
-	local vector idealorg;
-	startorg = ent.origin + ent.view_ofs;// - '0 0 8';
-	idealorg = ent.origin + ent.view_ofs + v_forward * vecs_x + v_right * vecs_y + v_up * vecs_z;
-	traceline_hitcorpse (ent, startorg, idealorg, MOVE_NOMONSTERS, ent);
-	w_shotorg = trace_endpos;
-	*/
-	// all positions in the code are now required to be inside the player box
-	w_shotorg = ent.origin + ent.view_ofs + v_forward * vecs_x + v_right * vecs_y + v_up * vecs_z;
-
-	w_shotdir = normalize(trueaimpoint - w_shotorg);
-
 	if (!cvar("g_norecoil"))
 		self.punchangle_x = recoil * -1;
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2007-05-04 13:20:37 UTC (rev 2484)
@@ -138,6 +138,7 @@
 float WR_CHECKAMMO1	  = 3; // checks ammo for weapon
 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
 
 // Weapon indexes
 float WEP_LASER				= 1; // float	IT_LASER				= 4096;

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -81,7 +81,8 @@
 	}
 	else if (casingtype == 2)
 	{
-		setmodel (e, "models/casing_steel.mdl"); // precision set above
+		// FIXME: this is not used and not precached, uncomment if you need it
+		//setmodel (e, "models/casing_steel.mdl"); // precision set above
 		e.cnt = time + 10;
 	}
 	else

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -88,108 +88,55 @@
 	soundpack = strzone(soundpack);
 	*/
 
-	// Precache all player models
-	// Workaround for "invisible players"
-	precache_model("models/player/carni.zym");
-	precache_model("models/player/crash.zym");
-	precache_model("models/player/grunt.zym");
-	precache_model("models/player/headhunter.zym");
-	precache_model("models/player/insurrectionist.zym");
-	precache_model("models/player/jeandarc.zym");
-	precache_model("models/player/lurk.zym");
-	precache_model("models/player/lycanthrope.zym");
-	precache_model("models/player/marine.zym");
-	precache_model("models/player/nexus.zym");
-	precache_model("models/player/pyria.zym");
-	precache_model("models/player/shock.zym");
-	precache_model("models/player/skadi.zym");
-	precache_model("models/player/specop.zym");
-	precache_model("models/player/visitant.zym");
+	// gamemode related things
+	precache_model ("models/misc/chatbubble.spr");
+	precache_model ("models/misc/teambubble.spr");
+	if (cvar("g_runematch"))
+	{
+		precache_model ("models/runematch/curse.mdl");
+		precache_model ("models/runematch/rune.mdl");
+	}
 
-	//precache_model ("progs/beam.mdl");
-	precache_model ("models/bullet.mdl");
-	precache_model ("models/casing_bronze.mdl");
-	precache_model ("models/casing_shell.mdl");
-	precache_model ("models/casing_steel.mdl");
-	precache_model ("models/ebomb.mdl");
-	precache_model ("models/elaser.mdl");
-	precache_model ("models/flash.md3");
+	// Precache all player models if desired
+	if (cvar("sv_precacheplayermodels"))
+	{
+		precache_model("models/player/carni.zym");
+		precache_model("models/player/crash.zym");
+		precache_model("models/player/grunt.zym");
+		precache_model("models/player/headhunter.zym");
+		precache_model("models/player/insurrectionist.zym");
+		precache_model("models/player/jeandarc.zym");
+		precache_model("models/player/lurk.zym");
+		precache_model("models/player/lycanthrope.zym");
+		precache_model("models/player/marine.zym");
+		precache_model("models/player/nexus.zym");
+		precache_model("models/player/pyria.zym");
+		precache_model("models/player/shock.zym");
+		precache_model("models/player/skadi.zym");
+		precache_model("models/player/specop.zym");
+		precache_model("models/player/visitant.zym");
+	}
+
+	if (cvar("g_footsteps"))
+	{
+		precache_sound ("misc/footstep01.wav");
+		precache_sound ("misc/footstep02.wav");
+		precache_sound ("misc/footstep03.wav");
+		precache_sound ("misc/footstep04.wav");
+		precache_sound ("misc/footstep05.wav");
+		precache_sound ("misc/footstep06.wav");
+	}
+
+	// gore and miscellaneous sounds
+	//precache_sound ("misc/h2ohit.wav");
 	precache_model ("models/gibs/bloodyskull.md3");
 	precache_model ("models/gibs/chunk.mdl");
 	precache_model ("models/gibs/eye.md3");
 	precache_model ("models/gibs/gib1.md3");
-	//precache_model ("models/gibs/gib2.md3");
-	//precache_model ("models/gibs/gib3.md3");
-	//precache_model ("models/gibs/gib4.md3");
-	precache_model ("models/gibs/gib5.md3");
-	//precache_model ("models/gibs/gib6.md3");
 	precache_model ("models/gibs/gib1.mdl");
 	precache_model ("models/gibs/gib2.mdl");
 	precache_model ("models/gibs/gib3.mdl");
-	precache_model ("models/grenademodel.md3");
-	precache_model ("models/hagarmissile.mdl");
-	precache_model ("models/items/a_bullets.mdl");
-	precache_model ("models/items/a_cells.md3");
-	precache_model ("models/items/a_rockets.md3");
-	precache_model ("models/items/a_shells.md3");
-	precache_model ("models/items/g_a1.md3");
-	precache_model ("models/items/g_a25.md3");
-	precache_model ("models/items/g_h1.md3");
-	precache_model ("models/items/g_h25.md3");
-	precache_model ("models/items/g_h100.md3");
-	precache_model ("models/items/g_invincible.md3");
-	precache_model ("models/items/g_strength.md3");
-	precache_model ("models/laser.mdl");
-	precache_model ("models/misc/chatbubble.spr");
-	precache_model ("models/misc/teambubble.spr");
-	precache_model ("models/nexflash.md3");
-	precache_model ("models/plasma.mdl");
-	precache_model ("models/plasmatrail.mdl");
-	precache_model ("models/rocket.md3");
-	//precache_model ("models/sprites/grenexpl.spr");
-	precache_model ("models/runematch/rune.mdl");
-	precache_model ("models/runematch/curse.mdl");
-	//precache_model ("models/sprites/hagar.spr");
-	//precache_model ("models/sprites/muzzleflash.spr32");
-	//precache_model ("models/sprites/electrocombo.spr32");
-	//precache_model ("models/sprites/plasmahitwall.spr32");
-	//precache_model ("models/sprites/plasmashot.spr32");
-	//precache_model ("models/sprites/rockexpl.spr");
-	precache_model ("models/tracer.mdl");
-	precache_model ("models/uziflash.md3");
-	precache_model ("models/weapons/g_crylink.md3");
-	precache_model ("models/weapons/g_electro.md3");
-	precache_model ("models/weapons/g_gl.md3");
-	precache_model ("models/weapons/g_hagar.md3");
-	precache_model ("models/weapons/g_nex.md3");
-	precache_model ("models/weapons/g_rl.md3");
-	precache_model ("models/weapons/g_shotgun.md3");
-	precache_model ("models/weapons/g_uzi.md3");
-	precache_model ("models/weapons/v_crylink.md3");
-	precache_model ("models/weapons/v_electro.md3");
-	precache_model ("models/weapons/v_gl.md3");
-	precache_model ("models/weapons/v_hagar.md3");
-	precache_model ("models/weapons/v_laser.md3");
-	precache_model ("models/weapons/v_nex.md3");
-	precache_model ("models/weapons/v_rl.md3");
-	precache_model ("models/weapons/v_shotgun.md3");
-	precache_model ("models/weapons/v_uzi.md3");
-	precache_model ("models/weapons/w_crylink.zym");
-	precache_model ("models/weapons/w_electro.zym");
-	precache_model ("models/weapons/w_gl.zym");
-	precache_model ("models/weapons/w_hagar.zym");
-	precache_model ("models/weapons/w_laser.zym");
-	precache_model ("models/weapons/w_nex.zym");
-	precache_model ("models/weapons/w_rl.zym");
-	precache_model ("models/weapons/w_shotgun.zym");
-	precache_model ("models/weapons/w_uzi.zym");
-
-	// laser for laser-guided weapons
-	precache_model ("models/laser_dot.mdl");
-
-	precache_sound ("misc/null.wav");
-	precache_sound ("misc/armor1.wav");
-	precache_sound ("misc/armor25.wav");
+	precache_model ("models/gibs/gib5.md3");
 	precache_sound ("misc/armorimpact.wav");
 	precache_sound ("misc/bodyimpact1.wav");
 	precache_sound ("misc/bodyimpact2.wav");
@@ -198,87 +145,19 @@
 	precache_sound ("misc/gib_splat02.wav");
 	precache_sound ("misc/gib_splat03.wav");
 	precache_sound ("misc/gib_splat04.wav");
-	//precache_sound ("misc/h2ohit.wav");
 	precache_sound ("misc/hit.wav");
-	precache_sound ("misc/footstep01.wav");
-	precache_sound ("misc/footstep02.wav");
-	precache_sound ("misc/footstep03.wav");
-	precache_sound ("misc/footstep04.wav");
-	precache_sound ("misc/footstep05.wav");
-	precache_sound ("misc/footstep06.wav");
 	precache_sound ("misc/hitground1.wav");
 	precache_sound ("misc/hitground2.wav");
 	precache_sound ("misc/hitground3.wav");
 	precache_sound ("misc/hitground4.wav");
-	precache_sound ("misc/itempickup.wav");
-	precache_sound ("misc/itemrespawn.wav");
-	precache_sound ("misc/jumppad.wav");
-	precache_sound ("misc/mediumhealth.wav");
-	precache_sound ("misc/megahealth.wav");
-	precache_sound ("misc/minihealth.wav");
-	precache_sound ("misc/powerup.wav");
-	precache_sound ("misc/powerup_shield.wav");
+	precache_sound ("misc/null.wav");
 	precache_sound ("misc/talk.wav");
 	precache_sound ("misc/teleport.wav");
-	precache_sound ("plats/medplat1.wav");
-	precache_sound ("plats/medplat2.wav");
 	precache_sound ("player/lava.wav");
 	precache_sound ("player/slime.wav");
-	precache_sound ("weapons/crylink_fire.wav");
-	precache_sound ("weapons/electro_bounce.wav");
-	precache_sound ("weapons/electro_fire.wav");
-	precache_sound ("weapons/electro_fire2.wav");
-	precache_sound ("weapons/electro_fly.wav");
-	precache_sound ("weapons/electro_impact.wav");
-	precache_sound ("weapons/electro_impact_combo.wav");
-	//precache_sound ("weapons/grenade_bounce.wav");
-	precache_sound ("weapons/grenade_bounce1.wav");
-	precache_sound ("weapons/grenade_bounce2.wav");
-	precache_sound ("weapons/grenade_bounce3.wav");
-	precache_sound ("weapons/grenade_bounce4.wav");
-	precache_sound ("weapons/grenade_bounce5.wav");
-	precache_sound ("weapons/grenade_bounce6.wav");
-	precache_sound ("weapons/grenade_fire.wav");
-	precache_sound ("weapons/grenade_impact.wav");
-	precache_sound ("weapons/hagar_fire.wav");
-	precache_sound ("weapons/hagexp1.wav");
-	precache_sound ("weapons/hagexp2.wav");
-	precache_sound ("weapons/hagexp3.wav");
-	precache_sound ("weapons/hook_fire.wav");
-	precache_sound ("weapons/hook_impact.wav");
-	precache_sound ("weapons/lasergun_fire.wav");
-	precache_sound ("weapons/laserimpact.wav");
-	precache_sound ("weapons/nexfire.wav");
-	precache_sound ("weapons/neximpact.wav");
-	precache_sound ("weapons/ric1.wav");
-	precache_sound ("weapons/ric2.wav");
-	precache_sound ("weapons/ric3.wav");
-	precache_sound ("weapons/rocket_fire.wav");
-	precache_sound ("weapons/rocket_fly.wav");
-	precache_sound ("weapons/rocket_impact.wav");
-	precache_sound ("weapons/rocket_det.wav");
-	precache_sound ("weapons/shotgun_fire.wav");
-	precache_sound ("weapons/tink1.wav");
-	precache_sound ("weapons/uzi_fire.wav");
-	precache_sound ("weapons/weapon_switch.wav");
-	precache_sound ("weapons/weaponpickup.wav");
-	precache_sound ("weapons/strength_fire.wav");
 
-	//precache_sound ("announce/male/kill10.wav");
-	//precache_sound ("announce/male/kill15.wav");
-	//precache_sound ("announce/male/kill20.wav");
-	//precache_sound ("announce/male/kill25.wav");
-	//precache_sound ("announce/male/kill3.wav");
-	//precache_sound ("announce/male/kill30.wav");
-	//precache_sound ("announce/male/kill4.wav");
-	//precache_sound ("announce/male/kill5.wav");
-	//precache_sound ("announce/male/kill6.wav");
-	//precache_sound ("announce/male/mapkill1.wav");
-	//precache_sound ("announce/robotic/last_second_save.wav");
-	//precache_sound ("announce/robotic/narrowly_averted.wav");
-	//precache_sound ("minstagib/mockery.wav");
-
 	// announcer sounds - male
+	//precache_sound ("announcer/male/electrobitch.wav");
 	precache_sound ("announcer/male/03kills.wav");
 	precache_sound ("announcer/male/05kills.wav");
 	precache_sound ("announcer/male/10kills.wav");
@@ -287,8 +166,6 @@
 	precache_sound ("announcer/male/25kills.wav");
 	precache_sound ("announcer/male/30kills.wav");
 	precache_sound ("announcer/male/botlike.wav");
-	precache_sound ("announcer/male/electrobitch.wav");
-	precache_sound ("announcer/male/welcome.wav");
 	precache_sound ("announcer/male/yoda.wav");
 
 	// announcer sounds - robotic
@@ -296,19 +173,43 @@
 	precache_sound ("announcer/robotic/1minuteremains.wav");
 	precache_sound ("announcer/robotic/2fragsleft.wav");
 	precache_sound ("announcer/robotic/3fragsleft.wav");
-	precache_sound ("announcer/robotic/lastsecond.wav");
-	precache_sound ("announcer/robotic/narrowly.wav");
-	precache_sound ("announcer/robotic/1.wav");
-	precache_sound ("announcer/robotic/2.wav");
-	precache_sound ("announcer/robotic/3.wav");
-	precache_sound ("announcer/robotic/4.wav");
-	precache_sound ("announcer/robotic/5.wav");
-	precache_sound ("announcer/robotic/6.wav");
-	precache_sound ("announcer/robotic/7.wav");
-	precache_sound ("announcer/robotic/8.wav");
-	precache_sound ("announcer/robotic/9.wav");
-	precache_sound ("announcer/robotic/10.wav");
+	if (cvar("g_minstagib"))
+	{
+		precache_sound ("announcer/robotic/lastsecond.wav");
+		precache_sound ("announcer/robotic/narrowly.wav");
+		precache_sound ("announcer/robotic/1.wav");
+		precache_sound ("announcer/robotic/2.wav");
+		precache_sound ("announcer/robotic/3.wav");
+		precache_sound ("announcer/robotic/4.wav");
+		precache_sound ("announcer/robotic/5.wav");
+		precache_sound ("announcer/robotic/6.wav");
+		precache_sound ("announcer/robotic/7.wav");
+		precache_sound ("announcer/robotic/8.wav");
+		precache_sound ("announcer/robotic/9.wav");
+		precache_sound ("announcer/robotic/10.wav");
+	}
 
+	// common weapon precaches
+	precache_sound ("weapons/weapon_switch.wav");
+	precache_sound ("weapons/weaponpickup.wav");
+	if (cvar("g_grappling_hook"))
+	{
+		precache_sound ("weapons/hook_fire.wav"); // hook
+		precache_sound ("weapons/hook_impact.wav"); // hook
+	}
+
+	if (cvar("sv_precacheweapons"))
+	{
+		//precache weapon models/sounds
+		local float wep;
+		wep = WEP_FIRST;
+		while (wep <= WEP_LAST)
+		{
+			weapon_action(wep, WR_PRECACHE);
+			wep = wep + 1;
+		}
+	}
+
 	// plays music for the level if there is any
 	if (self.noise)
 	{

Modified: branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -108,6 +108,8 @@
 void kh_Scores_Event(entity player, entity key, string what, float frags_player, float frags_owner)
 {
 	string s;
+	if(intermission_running)
+		return;
 	if(frags_player)
 		player.frags = player.frags + floor(0.5 + frags_player);
 	if(frags_owner)
@@ -558,7 +560,7 @@
 	{
 		kh_Scores_Event(attacker, world, "push", cvar("g_balance_keyhunt_score_push"), 0);
 		centerprint(attacker, "Your push is the best!\n\n\n");
-		bprint("The ", ColoredTeamName(teem), "^7 could not take care of the ", lostkey.netname, " when ", attacker.netname, "^7 came\n");
+		bprint("The ", ColoredTeamName(teem), "^7 could not take care of the ", lostkey.netname, "^7 when ", attacker.netname, "^7 came\n");
 	}
 	else
 	{

Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -703,6 +703,15 @@
 float g_pickup_healthmega;
 float g_pickup_healthmega_max;
 
+float start_items;
+float start_switchweapon;
+float start_ammo_shells;
+float start_ammo_nails;
+float start_ammo_rockets;
+float start_ammo_cells;
+float start_health;
+float start_armorvalue;
+
 void readlevelcvars(void)
 {
 	g_pickup_shells                    = cvar("g_pickup_shells");
@@ -723,6 +732,123 @@
 	g_pickup_health_max                = cvar("g_pickup_health_max");
 	g_pickup_healthmega                = cvar("g_pickup_healthmega");
 	g_pickup_healthmega_max            = cvar("g_pickup_healthmega_max");
+
+	// initialize starting values for players
+	start_items = 0;
+	start_switchweapon = 0;
+	start_ammo_shells = 0;
+	start_ammo_nails = 0;
+	start_ammo_rockets = 0;
+	start_ammo_cells = 0;
+	start_health = cvar("g_balance_health_start");
+	start_armorvalue = cvar("g_balance_armor_start");
+
+	if(cvar("g_instagib"))
+	{
+		start_items = IT_NEX;
+		start_switchweapon = WEP_NEX;
+		weapon_action(start_switchweapon, WR_PRECACHE);
+		start_ammo_cells = 999;
+	}
+	else if(cvar("g_rocketarena"))
+	{
+		start_items = IT_ROCKET_LAUNCHER;
+		start_switchweapon = WEP_ROCKET_LAUNCHER;
+		weapon_action(start_switchweapon, WR_PRECACHE);
+		start_ammo_rockets = 999;
+	}
+	else if(cvar("g_nixnex"))
+	{
+		start_items = 0;
+		// will be done later
+	}
+	else if(cvar("g_minstagib"))
+	{
+		start_health = 100;
+		start_armorvalue = 0;
+		start_items = IT_NEX;
+		start_switchweapon = WEP_NEX;
+		weapon_action(start_switchweapon, WR_PRECACHE);
+		start_ammo_cells = cvar("g_minstagib_ammo_start");
+	}
+	else
+	{
+		if(cvar("g_lms"))
+		{
+			start_ammo_shells = cvar("g_lms_start_ammo_shells");
+			start_ammo_nails = cvar("g_lms_start_ammo_nails");
+			start_ammo_rockets = cvar("g_lms_start_ammo_rockets");
+			start_ammo_cells = cvar("g_lms_start_ammo_cells");
+			start_health = cvar("g_lms_start_health");
+			start_armorvalue = cvar("g_lms_start_armor");
+		}
+		else if (cvar("g_use_ammunition")) {
+			start_ammo_shells = cvar("g_start_ammo_shells");
+			start_ammo_nails = cvar("g_start_ammo_nails");
+			start_ammo_rockets = cvar("g_start_ammo_rockets");
+			start_ammo_cells = cvar("g_start_ammo_cells");
+		} else {
+			start_ammo_shells = cvar("g_pickup_shells_max");
+			start_ammo_nails = cvar("g_pickup_nails_max");
+			start_ammo_rockets = cvar("g_pickup_rockets_max");
+			start_ammo_cells = cvar("g_pickup_cells_max");
+		}
+
+		if (cvar("g_start_weapon_laser") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_LASER;
+			start_switchweapon = WEP_LASER;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_shotgun") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_SHOTGUN;
+			start_switchweapon = WEP_SHOTGUN;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_uzi") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_UZI;
+			start_switchweapon = WEP_UZI;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_grenadelauncher") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_GRENADE_LAUNCHER;
+			start_switchweapon = WEP_GRENADE_LAUNCHER;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_electro") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_ELECTRO;
+			start_switchweapon = WEP_ELECTRO;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_crylink") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_CRYLINK;
+			start_switchweapon = WEP_CRYLINK;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_nex") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_NEX;
+			start_switchweapon = WEP_NEX;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_hagar") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_HAGAR;
+			start_switchweapon = WEP_HAGAR;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+		if (cvar("g_start_weapon_rocketlauncher") || cvar("g_lms"))
+		{
+			start_items = start_items | IT_ROCKET_LAUNCHER;
+			start_switchweapon = WEP_ROCKET_LAUNCHER;
+			weapon_action(start_switchweapon, WR_PRECACHE);
+		}
+	}
 }
 
 /*

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -350,6 +350,13 @@
 		}
 	}
 
+	if (self.classname != "droppedweapon")
+	{
+		precache_model (itemmodel);
+		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) && self.classname != "droppedweapon")
@@ -479,62 +486,86 @@
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_UZI, WR_PRECACHE);
 }
 
 void weapon_shotgun (void) {
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_SHOTGUN, WR_PRECACHE);
 }
 
-void weapon_grenadelauncher (void) {
+void weapon_grenadelauncher (void)
+{
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_GRENADE_LAUNCHER, WR_PRECACHE);
 }
 
-void weapon_electro (void) {
+void weapon_electro (void)
+{
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_ELECTRO, WR_PRECACHE);
 }
 
-void weapon_crylink (void) {
+void weapon_crylink (void)
+{
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_CRYLINK, WR_PRECACHE);
 }
 
-void weapon_nex (void) {
-	if (cvar("g_minstagib")) {
+void weapon_nex (void)
+{
+	float nextime;
+	if (cvar("g_minstagib"))
+	{
 		minstagib_items(IT_CELLS);
-	} else {
-		float nextime;
-		if(!self.ammo_cells)
-			self.ammo_cells = cvar("g_pickup_cells");
-		nextime = cvar("g_balance_nex_respawntime_modifier");
-		if(nextime)
-			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, 1000);
+		return;
 	}
+	if(!self.ammo_cells)
+		self.ammo_cells = cvar("g_pickup_cells");
+	nextime = cvar("g_balance_nex_respawntime_modifier");
+	if(nextime)
+		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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_NEX, WR_PRECACHE);
 }
 
-void weapon_hagar (void) {
+void weapon_hagar (void)
+{
 	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_HAGAR, WR_PRECACHE);
 }
 
-void weapon_rocketlauncher (void) {
-	if (cvar("g_minstagib")) {
+void weapon_rocketlauncher (void)
+{
+	if (cvar("g_minstagib"))
+	{
 		minstagib_items(IT_CELLS);
-	} else {
-		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, 1000);
+		return;
 	}
+	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, 1000);
+	if (self.modelindex) // don't precache if self was removed
+		weapon_action(WEP_ROCKET_LAUNCHER, WR_PRECACHE);
 }
 
 void item_rockets (void) {
@@ -621,6 +652,7 @@
 	if(cvar("g_minstagib")) {
 		minstagib_items(IT_STRENGTH);
 	} 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, 10000);
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -240,6 +240,9 @@
 		self.speed = 1000;
 	self.movedir = self.movedir * self.speed * 10;
 
+	if (self.target)
+		precache_sound ("misc/jumppad.wav");
+
 	// this must be called to spawn the teleport waypoints for bots
 	self.think = trigger_push_findtarget;
 	self.nextthink = time + 0.2;

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -203,6 +203,15 @@
 			weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_crylink_secondary_animtime"), w_ready);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/plasma.mdl");
+		precache_model ("models/plasmatrail.mdl");
+		precache_model ("models/weapons/g_crylink.md3");
+		precache_model ("models/weapons/v_crylink.md3");
+		precache_model ("models/weapons/w_crylink.zym");
+		precache_sound ("weapons/crylink_fire.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_CRYLINK, "crylink", IT_CELLS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -192,6 +192,20 @@
 			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_electro_secondary_animtime"), w_ready);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/ebomb.mdl");
+		precache_model ("models/elaser.mdl");
+		precache_model ("models/weapons/g_electro.md3");
+		precache_model ("models/weapons/v_electro.md3");
+		precache_model ("models/weapons/w_electro.zym");
+		precache_sound ("weapons/electro_bounce.wav");
+		precache_sound ("weapons/electro_fire.wav");
+		precache_sound ("weapons/electro_fire2.wav");
+		precache_sound ("weapons/electro_fly.wav");
+		precache_sound ("weapons/electro_impact.wav");
+		precache_sound ("weapons/electro_impact_combo.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_ELECTRO, "electro", IT_CELLS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -180,6 +180,21 @@
 			weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_grenadelauncher_secondary_animtime"), w_ready);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/grenademodel.md3");
+		precache_model ("models/weapons/g_gl.md3");
+		precache_model ("models/weapons/v_gl.md3");
+		precache_model ("models/weapons/w_gl.zym");
+		precache_sound ("weapons/grenade_bounce1.wav");
+		precache_sound ("weapons/grenade_bounce2.wav");
+		precache_sound ("weapons/grenade_bounce3.wav");
+		precache_sound ("weapons/grenade_bounce4.wav");
+		precache_sound ("weapons/grenade_bounce5.wav");
+		precache_sound ("weapons/grenade_bounce6.wav");
+		precache_sound ("weapons/grenade_fire.wav");
+		precache_sound ("weapons/grenade_impact.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_GRENADE_LAUNCHER, "gl", IT_ROCKETS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -172,6 +172,17 @@
 			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_hagar_secondary_refire"), w_ready);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/hagarmissile.mdl");
+		precache_model ("models/weapons/g_hagar.md3");
+		precache_model ("models/weapons/v_hagar.md3");
+		precache_model ("models/weapons/w_hagar.zym");
+		precache_sound ("weapons/hagar_fire.wav");
+		precache_sound ("weapons/hagexp1.wav");
+		precache_sound ("weapons/hagexp2.wav");
+		precache_sound ("weapons/hagexp3.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_HAGAR, "hagar", IT_ROCKETS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -117,6 +117,14 @@
 			}
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/laser.mdl");
+		precache_model ("models/weapons/v_laser.md3");
+		precache_model ("models/weapons/w_laser.zym");
+		precache_sound ("weapons/lasergun_fire.wav");
+		precache_sound ("weapons/laserimpact.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_LASER, "laser", 0);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -172,6 +172,15 @@
 			}
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/nexflash.md3");
+		precache_model ("models/weapons/g_nex.md3");
+		precache_model ("models/weapons/v_nex.md3");
+		precache_model ("models/weapons/w_nex.zym");
+		precache_sound ("weapons/nexfire.wav");
+		precache_sound ("weapons/neximpact.wav");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_NEX, "nex", IT_CELLS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -386,6 +386,20 @@
 			sound (self, CHAN_AUTO, "weapons/tink1.wav", 1, ATTN_NORM);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/flash.md3");
+		precache_model ("models/rocket.md3");
+		precache_model ("models/weapons/g_rl.md3");
+		precache_model ("models/weapons/v_rl.md3");
+		precache_model ("models/weapons/w_rl.zym");
+		precache_sound ("weapons/rocket_det.wav");
+		precache_sound ("weapons/rocket_fire.wav");
+		precache_sound ("weapons/rocket_fly.wav");
+		precache_sound ("weapons/rocket_impact.wav");
+		if (cvar("g_laserguided_missile"))
+			precache_model ("models/laser_dot.mdl"); // rocket launcher
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_ROCKET_LAUNCHER, "rl", IT_ROCKETS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_shotgun.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_shotgun.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_shotgun.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -87,6 +87,21 @@
 			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_shotgun_secondary_animtime"), shotgun_fire2_02);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/tracer.mdl");
+		precache_model ("models/weapons/g_shotgun.md3");
+		precache_model ("models/weapons/v_shotgun.md3");
+		precache_model ("models/weapons/w_shotgun.zym");
+		precache_sound ("misc/itempickup.wav");
+		precache_sound ("weapons/ric1.wav");
+		precache_sound ("weapons/ric2.wav");
+		precache_sound ("weapons/ric3.wav");
+		precache_sound ("weapons/shotgun_fire.wav");
+		precache_sound ("weapons/tink1.wav");
+		if (cvar("g_casings") >= 1)
+			precache_model ("models/casing_shell.mdl");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_SHOTGUN, "shotgun", IT_SHELLS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_uzi.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_uzi.qc	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_uzi.qc	2007-05-04 13:20:37 UTC (rev 2484)
@@ -106,6 +106,21 @@
 			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_uzi_sustained_refire"), w_ready);
 		}
 	}
+	else if (req == WR_PRECACHE)
+	{
+		precache_model ("models/tracer.mdl");
+		precache_model ("models/uziflash.md3");
+		precache_model ("models/weapons/g_uzi.md3");
+		precache_model ("models/weapons/v_uzi.md3");
+		precache_model ("models/weapons/w_uzi.zym");
+		precache_sound ("weapons/ric1.wav");
+		precache_sound ("weapons/ric2.wav");
+		precache_sound ("weapons/ric3.wav");
+		precache_sound ("weapons/tink1.wav");
+		precache_sound ("weapons/uzi_fire.wav");
+		if (cvar("g_casings") >= 2)
+			precache_model ("models/casing_bronze.mdl");
+	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_UZI, "uzi", IT_NAILS);
 	else if (req == WR_CHECKAMMO1)

Modified: branches/nexuiz-2.0/data/scripts/stralenex1.shader
===================================================================
--- branches/nexuiz-2.0/data/scripts/stralenex1.shader	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/scripts/stralenex1.shader	2007-05-04 13:20:37 UTC (rev 2484)
@@ -1,329 +1,329 @@
-textures/evil8_lights/e8minitrimlight
-{
-	qer_editorimage textures/evil8_lights/e8minitrimlight.tga
-	q3map_lightimage textures/evil8_lights/e8minitrimlight.blend.tga
-	surfaceparm nomarks
-	q3map_surfacelight 1200
-	{
-		map textures/evil8_lights/e8minitrimlight.tga
+textures/evil8_lights/e8minitrimlight
+{
+	qer_editorimage textures/evil8_lights/e8minitrimlight.tga
+	q3map_lightimage textures/evil8_lights/e8minitrimlight.blend.tga
+	surfaceparm nomarks
+	q3map_surfacelight 1200
+	{
+		map textures/evil8_lights/e8minitrimlight.tga
+	}
+	{
+		map $lightmap 
+		blendfunc filter
+		tcGen lightmap 
+	}
+	{
+		map textures/evil8_lights/e8minitrimlight.blend.tga
+		blendfunc add
+	}
+}
+textures/evil8_lights/e8tinylight2k
+{
+	qer_editorimage textures/evil8_lights/e8tinylight.tga
+	q3map_lightimage textures/evil8_lights/e8tinylightcolor.tga
+	surfaceparm nomarks
+	q3map_surfacelight 2000
+	{
+		map textures/evil8_lights/e8tinylight.tga
+	}
+	{
+		map $lightmap 
+		blendfunc filter
+		tcGen lightmap 
+	}
+	{
+		map textures/evil8_lights/e8tinylight.blend.tga
+		blendfunc add
+	}
+}
+
+textures/evil8_lights/e8tinylightblue2k
+{
+	qer_editorimage textures/evil8_lights/e8tinylightblue.tga
+	q3map_lightimage textures/evil8_lights/e8tinylightbluecolor.tga
+	surfaceparm nomarks
+	q3map_surfacelight 2000
+	{
+		map textures/evil8_lights/e8tinylightblue.tga
+	}
+	{
+		map $lightmap 
+		blendfunc filter
+		tcGen lightmap 
+	}
+	{
+		map textures/evil8_lights/e8tinylightblue.blend.tga
+		blendfunc add
+	}
+}
+
+textures/stralenex1/light_tube_green
+{	 
+	qer_editorimage textures/stralenex1/light_tube_green.tga
+        q3map_lightimage textures/stralenex1/light_tube_green_glow.tga 
+	q3map_surfacelight 1000	
+	{
+		map textures/stralenex1/light_tube_green.tga 
+		//blendfunc add 
+       tcmod scale 12 1  
+		//rgbGen identity 
+
+        
 	}
-	{
-		map $lightmap 
-		blendfunc filter
-		tcGen lightmap 
-	}
-	{
-		map textures/evil8_lights/e8minitrimlight.blend.tga
-		blendfunc add
-	}
+	{
+		map $lightmap
+		rgbGen identity
+	}
+} 
+
+
+textures/stralenex1/e8_bluestrip
+{
+	surfaceparm nolightmap
+	surfaceparm nomarks
+	surfaceparm trans
+	{
+		map textures/stralenex1/e8_bluestrip.tga
+		blendfunc add
+		rgbGen identity
+	}
+}
+
+textures/stralenex1/e8_redstrip
+{
+	surfaceparm nolightmap
+	surfaceparm nomarks
+	surfaceparm trans
+	{
+		map textures/stralenex1/e8_redstrip.tga
+		blendfunc add
+		rgbGen identity
+	}
+}
+
+textures/stralenex1/stralenex5_water
+{ 
+	qer_editorimage textures/stralenex1/stralenex5_water.tga
+      qer_trans 0.5
+	
+	surfaceparm trans
+	surfaceparm nonsolid
+      surfaceparm water
+	
+	deformVertexes wave 150.0 sin 2 5 0.25 0.1
+	Q3map_TessSize 128
+	cull none
+
+      {
+		map textures/stralenex1/stralenex5_water.tga
+            blendFunc add
+            rgbGen identity
+	}
+}
+
+textures/stralenex1/e6xrst_supprt
+{
+	qer_editorimage textures/stralenex1/e6xrst_supprt.tga
+	surfaceparm nomarks
+	surfaceparm trans
+	cull none
+	nopicmip
+	{
+		map textures/stralenex1/e6xrst_supprt.tga
+		rgbGen identity
+		depthWrite
+		//alphaFunc GE128
+		blendfunc blend
+	}
+	{
+		map $lightmap 
+		blendfunc filter
+		rgbGen identity
+		tcGen lightmap 
+		depthFunc equal
+	}
+}
+
+
+textures/stralenex1/strale_grey_box
+{
+	qer_editorimage env/strale_grey/ygrey_up.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/strale_grey/ygrey - -
+	q3map_surfacelight 60
+	q3map_lightimage textures/strale_grey/ygrey_up.tga
+	q3map_sun .9 .9 1 70 65 78
+
+}
+
+textures/stralenex1/strale_brown_box
+{
+	qer_editorimage env/strale_grey/ygrey_up.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/strale_grey/ygrey - -
+	q3map_surfacelight 100
+	q3map_lightimage textures/strale_grey/ygrey_up.tga
+	q3map_sun .75 .65 .6 130 255 80
+
+}
+
+textures/stralenex1/greennebula
+{
+	qer_editorimage env/stralenex5/greennebula_bk.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/stralenex5/greennebula - -
+	q3map_surfacelight 80
+	q3map_lightimage textures/stralenex5/stralenex5_up.tga
+	q3map_sun 0.3 0.33 0.3 60 80 20
+	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
+
+}
+
+textures/stralenex1/stralenex5
+{
+	qer_editorimage env/stralenex5/stralenex5_up.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/stralenex5/stralenex5 - -
+	q3map_surfacelight 60
+	q3map_lightimage textures/stralenex5/stralenex5_up.tga
+	q3map_sun .627 .525 0.392 60 300 40
+	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
+
 }
-textures/evil8_lights/e8tinylight2k
-{
-	qer_editorimage textures/evil8_lights/e8tinylight.tga
-	q3map_lightimage textures/evil8_lights/e8tinylightcolor.tga
-	surfaceparm nomarks
-	q3map_surfacelight 2000
-	{
-		map textures/evil8_lights/e8tinylight.tga
-	}
-	{
-		map $lightmap 
-		blendfunc filter
-		tcGen lightmap 
-	}
-	{
-		map textures/evil8_lights/e8tinylight.blend.tga
-		blendfunc add
-	}
-}
 
-textures/evil8_lights/e8tinylightblue2k
-{
-	qer_editorimage textures/evil8_lights/e8tinylightblue.tga
-	q3map_lightimage textures/evil8_lights/e8tinylightbluecolor.tga
-	surfaceparm nomarks
-	q3map_surfacelight 2000
-	{
-		map textures/evil8_lights/e8tinylightblue.tga
-	}
-	{
-		map $lightmap 
-		blendfunc filter
-		tcGen lightmap 
-	}
-	{
-		map textures/evil8_lights/e8tinylightblue.blend.tga
-		blendfunc add
-	}
+textures/stralenex1/stralenex5_1
+{
+	qer_editorimage env/stralenex5/stralenex5_up.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/stralenex5/stralenex5 - -
+	q3map_surfacelight 60
+	q3map_lightimage textures/stralenex5/stralenex5_up.tga
+	q3map_sun .627 .525 0.392 450 60 13
+	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
+
 }
 
-textures/stralenex1/light_tube_green
-{	 
-	qer_editorimage textures/stralenex1/light_tube_green.tga
-        q3map_lightimage textures/stralenex1/light_tube_green_glow.tga 
-	q3map_surfacelight 1000	
-	{
-		map textures/stralenex1/light_tube_green.tga 
-		//blendfunc add 
-       tcmod scale 12 1  
-		//rgbGen identity 
-
-        
-	}
-	{
-		map $lightmap
-		rgbGen identity
-	}
-} 
-
-
-textures/stralenex1/e8_bluestrip
-{
-	surfaceparm nolightmap
-	surfaceparm nomarks
-	surfaceparm trans
-	{
-		map textures/stralenex1/e8_bluestrip.tga
-		blendfunc add
-		rgbGen identity
-	}
-}
-
-textures/stralenex1/e8_redstrip
-{
-	surfaceparm nolightmap
-	surfaceparm nomarks
-	surfaceparm trans
-	{
-		map textures/stralenex1/e8_redstrip.tga
-		blendfunc add
-		rgbGen identity
-	}
-}
-
-textures/stralenex1/stralenex5_water
-{ 
-	qer_editorimage textures/stralenex1/stralenex5_water.tga
-      qer_trans 0.5
-	
-	surfaceparm trans
-	surfaceparm nonsolid
-      surfaceparm water
-	
-	deformVertexes wave 150.0 sin 2 5 0.25 0.1
-	Q3map_TessSize 128
-	cull none
-
-      {
-		map textures/stralenex1/stralenex5_water.tga
-            blendFunc add
-            rgbGen identity
-	}
-}
-
-textures/stralenex1/e6xrst_supprt
-{
-	qer_editorimage textures/stralenex1/e6xrst_supprt.tga
-	surfaceparm nomarks
-	surfaceparm trans
-	cull none
-	nopicmip
-	{
-		map textures/stralenex1/e6xrst_supprt.tga
-		rgbGen identity
-		depthWrite
-		//alphaFunc GE128
-		blendfunc blend
-	}
-	{
-		map $lightmap 
-		blendfunc filter
-		rgbGen identity
-		tcGen lightmap 
-		depthFunc equal
-	}
-}
-
-
-textures/stralenex1/strale_grey_box
-{
-	qer_editorimage env/strale_grey/ygrey_up.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/strale_grey/ygrey - -
-	q3map_surfacelight 60
-	q3map_lightimage textures/strale_grey/ygrey_up.tga
-	q3map_sun .9 .9 1 70 65 78
-
-}
-
-textures/stralenex1/strale_brown_box
-{
-	qer_editorimage env/strale_grey/ygrey_up.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/strale_grey/ygrey - -
-	q3map_surfacelight 100
-	q3map_lightimage textures/strale_grey/ygrey_up.tga
-	q3map_sun .75 .65 .6 130 255 80
-
-}
-
-textures/stralenex1/greennebula
-{
-	qer_editorimage env/stralenex5/greennebula_bk.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/stralenex5/greennebula - -
-	q3map_surfacelight 80
-	q3map_lightimage textures/stralenex5/stralenex5_up.tga
-	q3map_sun 0.3 0.33 0.3 60 80 20
-	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
-
-}
-
-textures/stralenex1/stralenex5
-{
-	qer_editorimage env/stralenex5/stralenex5_up.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/stralenex5/stralenex5 - -
-	q3map_surfacelight 60
-	q3map_lightimage textures/stralenex5/stralenex5_up.tga
-	q3map_sun .627 .525 0.392 60 300 40
-	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
-
-}
-
-textures/stralenex1/stralenex5_1
-{
-	qer_editorimage env/stralenex5/stralenex5_up.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/stralenex5/stralenex5 - -
-	q3map_surfacelight 60
-	q3map_lightimage textures/stralenex5/stralenex5_up.tga
-	q3map_sun .627 .525 0.392 450 60 13
-	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
-
-}
-
-textures/stralenex1/stralenex5_2
-{
-	qer_editorimage env/stralenex5/stralenex5_up.tga
-
-	surfaceparm nolightmap
-	surfaceparm noimpact
-	surfaceparm nomarks
-	surfaceparm sky
-
-	skyparms env/stralenex5/stralenex5 - -
-	q3map_surfacelight 180
-	q3map_lightimage textures/stralenex5/stralenex5_up.tga
-	q3map_sun .627 .525 0.392 450 60 13
-	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
-
-}
-
-//copied from harlequin-sky.shader
-textures/harlequin_sky/strale_jf-nebula_sky
-{
-	qer_editorimage textures/harlequin_sky/nebula_qer1.tga
-	surfaceparm sky
-	surfaceparm noimpact
-	surfaceparm nolightmap
-	surfaceparm nomarks
-	
-	skyparms textures/harlequin_sky/env/nebular - -
-	q3map_surfacelight 45
-// note: Change the surfacelight value if you want more ambient light from the sky.
-	q3map_sun 0.88 .71 .71 80 0 90
-// note: Change the fourth value (80) if you want a brighter or dimmer sun
-	
-}
-
-textures/stralenex1/stralenex_trimlight
-{
-	qer_editorimage textures/stralenex1/stralenex_trimlight.tga
-	q3map_lightimage textures/stralenex1/stralenex_trimlight_glow.tga
-	q3map_surfacelight 1800
-	surfaceparm nomarks
-	{
-		map $lightmap
-		rgbGen identity
-	}
-	{
-		map textures/stralenex1/stralenex_trimlight.tga
-		blendFunc GL_DST_COLOR GL_ZERO
-		rgbGen identity
-	}
-	{
-		map textures/stralenex1/stralenex_trimlight_glow.tga
-		blendfunc GL_ONE GL_ONE
-		rgbGen identityLighting
-	}
-}
-
-textures/stralenex1/stralenex_roundlight
-{
-	qer_editorimage textures/stralenex1/stralenex_roundlight.tga
-	q3map_lightimage textures/stralenex1/stralenex_roundlight_glow.tga
-	q3map_surfacelight 4000
-	surfaceparm nomarks
-	{
-		map $lightmap
-		rgbGen identity
-	}
-	{
-		map textures/stralenex1/stralenex_roundlight.tga
-		blendFunc GL_DST_COLOR GL_ZERO
-		rgbGen identity
-	}
-	{
-		map textures/stralenex1/stralenex_roundlight_glow.tga
-		blendfunc GL_ONE GL_ONE
-		rgbGen wave sin .3 .1 0 0.5
-	}
-}
-
-textures/evil8_lights/e8trimlight
-{
-	qer_editorimage textures/evil8_lights/e8trimlight.tga
-	q3map_lightimage textures/evil8_lights/e8trimlight_glow.tga
-	q3map_surfacelight 2000
-	surfaceparm nomarks
-	{
-		map $lightmap
-		rgbGen identity
-	}
-	{
-		map textures/evil8_lights/e8trimlight.tga
-		blendFunc GL_DST_COLOR GL_ZERO
-		rgbGen identity
-	}
-	{
-		map textures/evil8_lights/e8trimlight_glow.tga
-		blendfunc GL_ONE GL_ONE
-		rgbGen identityLighting
-	}
-}
+textures/stralenex1/stralenex5_2
+{
+	qer_editorimage env/stralenex5/stralenex5_up.tga
+
+	surfaceparm nolightmap
+	surfaceparm noimpact
+	surfaceparm nomarks
+	surfaceparm sky
+
+	skyparms env/stralenex5/stralenex5 - -
+	q3map_surfacelight 180
+	q3map_lightimage textures/stralenex5/stralenex5_up.tga
+	q3map_sun .627 .525 0.392 450 60 13
+	/*q3map_sun <red> <green> <blue> <intensity> <degrees> <elevation>*/
+
+}
+
+//copied from harlequin-sky.shader
+textures/harlequin_sky/strale_jf-nebula_sky
+{
+	qer_editorimage textures/harlequin_sky/nebula_qer1.tga
+	surfaceparm sky
+	surfaceparm noimpact
+	surfaceparm nolightmap
+	surfaceparm nomarks
+	
+	skyparms textures/harlequin_sky/env/nebular - -
+	q3map_surfacelight 45
+// note: Change the surfacelight value if you want more ambient light from the sky.
+	q3map_sun 0.88 .71 .71 80 0 90
+// note: Change the fourth value (80) if you want a brighter or dimmer sun
+	
+}
+
+textures/stralenex1/stralenex_trimlight
+{
+	qer_editorimage textures/stralenex1/stralenex_trimlight.tga
+	q3map_lightimage textures/stralenex1/stralenex_trimlight_glow.tga
+	q3map_surfacelight 1800
+	surfaceparm nomarks
+	{
+		map $lightmap
+		rgbGen identity
+	}
+	{
+		map textures/stralenex1/stralenex_trimlight.tga
+		blendFunc GL_DST_COLOR GL_ZERO
+		rgbGen identity
+	}
+	{
+		map textures/stralenex1/stralenex_trimlight_glow.tga
+		blendfunc GL_ONE GL_ONE
+		rgbGen identityLighting
+	}
+}
+
+textures/stralenex1/stralenex_roundlight
+{
+	qer_editorimage textures/stralenex1/stralenex_roundlight.tga
+	q3map_lightimage textures/stralenex1/stralenex_roundlight_glow.tga
+	q3map_surfacelight 4000
+	surfaceparm nomarks
+	{
+		map $lightmap
+		rgbGen identity
+	}
+	{
+		map textures/stralenex1/stralenex_roundlight.tga
+		blendFunc GL_DST_COLOR GL_ZERO
+		rgbGen identity
+	}
+	{
+		map textures/stralenex1/stralenex_roundlight_glow.tga
+		blendfunc GL_ONE GL_ONE
+		rgbGen wave sin .3 .1 0 0.5
+	}
+}
+
+textures/evil8_lights/e8trimlight
+{
+	qer_editorimage textures/evil8_lights/e8trimlight.tga
+	q3map_lightimage textures/evil8_lights/e8trimlight_glow.tga
+	q3map_surfacelight 2000
+	surfaceparm nomarks
+	{
+		map $lightmap
+		rgbGen identity
+	}
+	{
+		map textures/evil8_lights/e8trimlight.tga
+		blendFunc GL_DST_COLOR GL_ZERO
+		rgbGen identity
+	}
+	{
+		map textures/evil8_lights/e8trimlight_glow.tga
+		blendfunc GL_ONE GL_ONE
+		rgbGen identityLighting
+	}
+}

Modified: branches/nexuiz-2.0/data/ultimate.cfg
===================================================================
--- branches/nexuiz-2.0/data/ultimate.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/ultimate.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 0
+r_picmipworld 0
 gl_texture_anisotropy 16
 r_bloom 1
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 1
 r_shadow_realtime_world_shadows 1
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0

Modified: branches/nexuiz-2.0/data/ultra.cfg
===================================================================
--- branches/nexuiz-2.0/data/ultra.cfg	2007-05-04 13:20:02 UTC (rev 2483)
+++ branches/nexuiz-2.0/data/ultra.cfg	2007-05-04 13:20:37 UTC (rev 2484)
@@ -14,6 +14,7 @@
 cl_particles_snow 1
 cl_particles_sparks 1
 gl_picmip 0
+r_picmipworld 0
 gl_texture_anisotropy 16
 r_bloom 1
 r_coronas 1
@@ -31,4 +32,4 @@
 r_shadow_realtime_world_dlightshadows 1
 r_shadow_realtime_world_shadows 1
 r_sky 1
-r_showsurfaces 0
\ No newline at end of file
+r_showsurfaces 0




More information about the nexuiz-commits mailing list