[nexuiz-commits] r7132 - in trunk/data/qcsrc: client common server server/tturrets/system server/vehicles

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Jun 30 10:41:34 EDT 2009


Author: div0
Date: 2009-06-30 10:41:34 -0400 (Tue, 30 Jun 2009)
New Revision: 7132

Modified:
   trunk/data/qcsrc/client/miscfunctions.qc
   trunk/data/qcsrc/client/sbar.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/havocbot_ctf.qc
   trunk/data/qcsrc/server/tturrets/system/system_damage.qc
   trunk/data/qcsrc/server/vehicles/racer.qc
   trunk/data/qcsrc/server/vehicles/spiderbot.qc
   trunk/data/qcsrc/server/vehicles/vehicles.qc
Log:
eof fixes for all qc, qh, c filesd


Modified: trunk/data/qcsrc/client/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/client/miscfunctions.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/client/miscfunctions.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -11,9 +11,9 @@
 		if (!spectatee_status) //do cprint only for players
 			centerprint("^1Begin!");
 
-		sound(self, CHAN_VOICE, "announcer/robotic/begin.wav", VOL_BASEVOICE, ATTN_NONE);
-		//reset maptime announcers now as well
-		announcer_5min = announcer_1min = FALSE;
+		sound(self, CHAN_VOICE, "announcer/robotic/begin.wav", VOL_BASEVOICE, ATTN_NONE);
+		//reset maptime announcers now as well
+		announcer_5min = announcer_1min = FALSE;
 		
 		remove(self);
 		return;
@@ -28,46 +28,46 @@
 
 		self.nextthink = getstatf(STAT_GAMESTARTTIME) - (countdown - 1);
 	}
-}
-
-/**
- * Plays the 1minute or 5 minutes (of maptime) remaining sound, if client wants it
- */
-void maptimeAnnouncer() {
-    float timelimit;
-    timelimit = getstatf(STAT_TIMELIMIT);
-    float timeleft;
-    timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time);
-    
-    //5 minute check
-    if (cvar("cl_sound_maptime_warning") >= 2) {
-        //make sure that after connect (and e.g. 4 minutes left) we will not get a wrong sound
-        if (!announcer_5min && timelimit > 0 && timeleft < 300 && timeleft > 299) {
-            announcer_5min = TRUE;
-            //dprint("i will play the sound, I promise!\n");
-            sound(self, CHAN_VOICE, "announcer/robotic/5minutesremain.wav", VOL_BASEVOICE, ATTN_NONE);
-        }
-        
-    }
-    
-    //1 minute check
-    if (cvar("cl_sound_maptime_warning") == 1 || cvar("cl_sound_maptime_warning") == 3) {
-        if (!announcer_1min && timelimit > 0 && timeleft < 60) {
-            announcer_1min = TRUE;
-            sound(self, CHAN_VOICE, "announcer/robotic/1minuteremains.wav", VOL_BASEVOICE, ATTN_NONE);
-        }
-    }
-}
-
-/**
- * Add all future announcer sounds precaches here.
- * TODO: make all announcer sound() calls client-side in the end, to allow queues etc.
- */
-void Announcer_Precache () {
-    precache_sound ("announcer/robotic/1minuteremains.wav");
-	precache_sound ("announcer/robotic/5minutesremain.wav");
 }
 
+/**
+ * Plays the 1minute or 5 minutes (of maptime) remaining sound, if client wants it
+ */
+void maptimeAnnouncer() {
+    float timelimit;
+    timelimit = getstatf(STAT_TIMELIMIT);
+    float timeleft;
+    timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time);
+    
+    //5 minute check
+    if (cvar("cl_sound_maptime_warning") >= 2) {
+        //make sure that after connect (and e.g. 4 minutes left) we will not get a wrong sound
+        if (!announcer_5min && timelimit > 0 && timeleft < 300 && timeleft > 299) {
+            announcer_5min = TRUE;
+            //dprint("i will play the sound, I promise!\n");
+            sound(self, CHAN_VOICE, "announcer/robotic/5minutesremain.wav", VOL_BASEVOICE, ATTN_NONE);
+        }
+        
+    }
+    
+    //1 minute check
+    if (cvar("cl_sound_maptime_warning") == 1 || cvar("cl_sound_maptime_warning") == 3) {
+        if (!announcer_1min && timelimit > 0 && timeleft < 60) {
+            announcer_1min = TRUE;
+            sound(self, CHAN_VOICE, "announcer/robotic/1minuteremains.wav", VOL_BASEVOICE, ATTN_NONE);
+        }
+    }
+}
+
+/**
+ * Add all future announcer sounds precaches here.
+ * TODO: make all announcer sound() calls client-side in the end, to allow queues etc.
+ */
+void Announcer_Precache () {
+    precache_sound ("announcer/robotic/1minuteremains.wav");
+	precache_sound ("announcer/robotic/5minutesremain.wav");
+}
+
 void AuditLists()
 {
 	entity e;


Property changes on: trunk/data/qcsrc/client/miscfunctions.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/client/sbar.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1180,7 +1180,7 @@
 	float timelimit, minutes, seconds, timeleft, minutesLeft, secondsLeft, distribution, myplace, score, desiredPlayerId;
 	vector sbar_save, place, timer_color, offset;
 	entity tm, pl, me;
-	sbar_save = sbar;
+	sbar_save = sbar;
 
  	vector bottomright;
  	bottomright_x = vid_conwidth;
@@ -1191,15 +1191,15 @@
  	topright_x = vid_conwidth;
  	topright_y = 0;
  	topright_z = 0;
-
-	//get the ID (could be "me", or the player I'm spectating)
-	desiredPlayerId = player_localentnum - 1;
-	if (spectatee_status) {
-		if (spectatee_status != -1) {
-			desiredPlayerId = spectatee_status - 1;
-		}
+
+	//get the ID (could be "me", or the player I'm spectating)
+	desiredPlayerId = player_localentnum - 1;
+	if (spectatee_status) {
+		if (spectatee_status != -1) {
+			desiredPlayerId = spectatee_status - 1;
+		}
 	}
-
+
 	sbar_y = vid_conheight - (32+12);
 	sbar_x -= margin;
 


Property changes on: trunk/data/qcsrc/client/sbar.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/common/constants.qh	2009-06-30 14:41:34 UTC (rev 7132)
@@ -77,9 +77,9 @@
 const float ENT_CLIENT_MAPVOTE = 17;
 const float ENT_CLIENT_CLIENTDATA = 18;
 const float ENT_CLIENT_RANDOMSEED = 19;
-const float ENT_CLIENT_WALL = 20;
-const float ENT_CLIENT_SPIDERBOT = 21;
-
+const float ENT_CLIENT_WALL = 20;
+const float ENT_CLIENT_SPIDERBOT = 21;
+
 const float ENT_CLIENT_TURRET = 40;
 
 const float SPRITERULE_DEFAULT = 0;
@@ -260,25 +260,25 @@
 const float CTF_STATE_ATTACK = 1;
 const float CTF_STATE_DEFEND = 2;
 const float CTF_STATE_COMMANDER = 3;
-
-const float STAT_HUD = 50;
-const float HUD_NORMAL = 0;
-const float HUD_SPIDEBOT = 10;
-
-const float STAT_SPIDERBOT_HEALTH  = 60;
-const float STAT_SPIDERBOT_ROCKETS = 61;
-const float STAT_SPIDERBOT_HEAT    = 62;
-const float STAT_SPIDERBOT_RELOAD  = 63;
-const float STAT_SPIDERBOT_ENERGY  = 64;
-const float STAT_SPIDERBOT_SHIELD  = 65;
-
-//const float STAT_SPIDERBOT_AIM     53 // compressShotOrigin
-
-//const float STAT_SPIDERBOT_TARGET  54 // compressShotOrigin
-
-
-
 
+const float STAT_HUD = 50;
+const float HUD_NORMAL = 0;
+const float HUD_SPIDEBOT = 10;
+
+const float STAT_SPIDERBOT_HEALTH  = 60;
+const float STAT_SPIDERBOT_ROCKETS = 61;
+const float STAT_SPIDERBOT_HEAT    = 62;
+const float STAT_SPIDERBOT_RELOAD  = 63;
+const float STAT_SPIDERBOT_ENERGY  = 64;
+const float STAT_SPIDERBOT_SHIELD  = 65;
+
+//const float STAT_SPIDERBOT_AIM     53 // compressShotOrigin
+
+//const float STAT_SPIDERBOT_TARGET  54 // compressShotOrigin
+
+
+
+
 // moved that here so the client knows the max.
 // # of maps, I'll use arrays for them :P
 #define MAPVOTE_COUNT 10


Property changes on: trunk/data/qcsrc/common/constants.qh
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/server/havocbot_ctf.qc
===================================================================
--- trunk/data/qcsrc/server/havocbot_ctf.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/server/havocbot_ctf.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1,10 +1,10 @@
-#define HAVOCBOT_CTF_ROLE_NONE 		0
-#define HAVOCBOT_CTF_ROLE_DEFENSE	2
-#define HAVOCBOT_CTF_ROLE_MIDDLE	4
-#define HAVOCBOT_CTF_ROLE_OFFENSE	8
-#define HAVOCBOT_CTF_ROLE_CARRIER	16
-#define HAVOCBOT_CTF_ROLE_RETRIEVER	32
-#define HAVOCBOT_CTF_ROLE_ESCORT	64
+#define HAVOCBOT_CTF_ROLE_NONE 		0
+#define HAVOCBOT_CTF_ROLE_DEFENSE	2
+#define HAVOCBOT_CTF_ROLE_MIDDLE	4
+#define HAVOCBOT_CTF_ROLE_OFFENSE	8
+#define HAVOCBOT_CTF_ROLE_CARRIER	16
+#define HAVOCBOT_CTF_ROLE_RETRIEVER	32
+#define HAVOCBOT_CTF_ROLE_ESCORT	64
 
 .void() havocbot_role;
 .void() havocbot_previous_role;
@@ -53,27 +53,27 @@
 	}
 	return world;
 };
-
-float havocbot_ctf_teamcount(entity bot, vector org, float radius)
-{
-	if not(teams_matter)
-		return 0;
-
-	float c;
-	entity head;
-
-	FOR_EACH_PLAYER(head)
-	{
-		if(head.team!=bot.team || head.deadflag != DEAD_NO || head == bot)
-			continue;
-
-		if(vlen(head.origin - org) < radius)
-			++c;
-	}
-
-	return c;
-};
 
+float havocbot_ctf_teamcount(entity bot, vector org, float radius)
+{
+	if not(teams_matter)
+		return 0;
+
+	float c;
+	entity head;
+
+	FOR_EACH_PLAYER(head)
+	{
+		if(head.team!=bot.team || head.deadflag != DEAD_NO || head == bot)
+			continue;
+
+		if(vlen(head.origin - org) < radius)
+			++c;
+	}
+
+	return c;
+};
+
 void havocbot_goalrating_ctf_ourflag(float ratingscale)
 {
 	local entity head;
@@ -216,183 +216,183 @@
 		head = head.chain;
 	}
 };
-
-void havocbot_role_ctf_setrole(entity bot, float role)
-{
-	dprint(strcat(bot.netname," switched to "));
-	switch(role)
-	{
-		case HAVOCBOT_CTF_ROLE_CARRIER:
-			dprint("carrier");
-			bot.havocbot_role = havocbot_role_ctf_carrier;
-			bot.havocbot_role_timeout = 0;
-			bot.havocbot_cantfindflag = time + 10;
-			break;
-		case HAVOCBOT_CTF_ROLE_DEFENSE:
-			dprint("defense");
-			bot.havocbot_role = havocbot_role_ctf_defense;
-			bot.havocbot_role_timeout = 0;
-			break;
-		case HAVOCBOT_CTF_ROLE_MIDDLE:
-			dprint("middle");
-			bot.havocbot_role = havocbot_role_ctf_middle;
-			bot.havocbot_role_timeout = 0;
-			break;
-		case HAVOCBOT_CTF_ROLE_OFFENSE:
-			dprint("offense");
-			bot.havocbot_role = havocbot_role_ctf_offense;
-			bot.havocbot_role_timeout = 0;
-			break;
-		case HAVOCBOT_CTF_ROLE_RETRIEVER:
+
+void havocbot_role_ctf_setrole(entity bot, float role)
+{
+	dprint(strcat(bot.netname," switched to "));
+	switch(role)
+	{
+		case HAVOCBOT_CTF_ROLE_CARRIER:
+			dprint("carrier");
+			bot.havocbot_role = havocbot_role_ctf_carrier;
+			bot.havocbot_role_timeout = 0;
+			bot.havocbot_cantfindflag = time + 10;
+			break;
+		case HAVOCBOT_CTF_ROLE_DEFENSE:
+			dprint("defense");
+			bot.havocbot_role = havocbot_role_ctf_defense;
+			bot.havocbot_role_timeout = 0;
+			break;
+		case HAVOCBOT_CTF_ROLE_MIDDLE:
+			dprint("middle");
+			bot.havocbot_role = havocbot_role_ctf_middle;
+			bot.havocbot_role_timeout = 0;
+			break;
+		case HAVOCBOT_CTF_ROLE_OFFENSE:
+			dprint("offense");
+			bot.havocbot_role = havocbot_role_ctf_offense;
+			bot.havocbot_role_timeout = 0;
+			break;
+		case HAVOCBOT_CTF_ROLE_RETRIEVER:
 			dprint("retriever");
-			bot.havocbot_previous_role = bot.havocbot_role;
-			bot.havocbot_role = havocbot_role_ctf_retriever;
-			bot.havocbot_role_timeout = time + 10;
-			break;
-		case HAVOCBOT_CTF_ROLE_ESCORT:
+			bot.havocbot_previous_role = bot.havocbot_role;
+			bot.havocbot_role = havocbot_role_ctf_retriever;
+			bot.havocbot_role_timeout = time + 10;
+			break;
+		case HAVOCBOT_CTF_ROLE_ESCORT:
 			dprint("escort");
-			bot.havocbot_previous_role = bot.havocbot_role;
-			bot.havocbot_role = havocbot_role_ctf_escort;
-			bot.havocbot_role_timeout = time + 30;
-			break;
-	}
-	dprint("\n");
-};
-
-void havocbot_role_ctf_carrier()
-{
+			bot.havocbot_previous_role = bot.havocbot_role;
+			bot.havocbot_role = havocbot_role_ctf_escort;
+			bot.havocbot_role_timeout = time + 30;
+			break;
+	}
+	dprint("\n");
+};
+
+void havocbot_role_ctf_carrier()
+{
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried == world)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.bot_strategytime < time)
-	{
-		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
-
-		navigation_goalrating_start();
-		havocbot_goalrating_ctf_ourbase(50000);
-
-		if(self.health<100)
-			havocbot_goalrating_ctf_carrieritems(1000, self.origin, 1000);
-
-		navigation_goalrating_end();
-
-		if (self.navigation_hasgoals)
-			self.havocbot_cantfindflag = time + 10;
-		else if (time > self.havocbot_cantfindflag)
-		{
-			// Can't navigate to my own base, suicide!
-			// TODO: drop it and wander around
-			Damage(self, self, self, 100000, DEATH_KILL, self.origin, '0 0 0');
-			return;
-		}
-	}
-};
-
-void havocbot_role_ctf_escort()
-{
-	local entity mf, ef;
-
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.flagcarried == world)
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.bot_strategytime < time)
+	{
+		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+
+		navigation_goalrating_start();
+		havocbot_goalrating_ctf_ourbase(50000);
+
+		if(self.health<100)
+			havocbot_goalrating_ctf_carrieritems(1000, self.origin, 1000);
+
+		navigation_goalrating_end();
+
+		if (self.navigation_hasgoals)
+			self.havocbot_cantfindflag = time + 10;
+		else if (time > self.havocbot_cantfindflag)
+		{
+			// Can't navigate to my own base, suicide!
+			// TODO: drop it and wander around
+			Damage(self, self, self, 100000, DEATH_KILL, self.origin, '0 0 0');
+			return;
+		}
+	}
+};
+
+void havocbot_role_ctf_escort()
+{
+	local entity mf, ef;
+
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
-		return;
-	}
-
-	// If enemy flag is back on the base switch to previous role
-	ef = havocbot_ctf_find_enemy_flag(self);
-	if(ef.cnt==FLAG_BASE)
-	{
-		self.havocbot_role = self.havocbot_previous_role;
-		self.havocbot_role_timeout = 0;
-		return;
-	}
-
-	// If the flag carrier reached the base switch to defense
-	mf = havocbot_ctf_find_flag(self);
-	if(mf.cnt!=FLAG_BASE)
-	if(vlen(ef.origin - mf.dropped_origin) < 300)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_DEFENSE);
-		return;
-	}
-
-	// Set the role timeout if necessary
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.flagcarried)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
+		return;
+	}
+
+	// If enemy flag is back on the base switch to previous role
+	ef = havocbot_ctf_find_enemy_flag(self);
+	if(ef.cnt==FLAG_BASE)
+	{
+		self.havocbot_role = self.havocbot_previous_role;
+		self.havocbot_role_timeout = 0;
+		return;
+	}
+
+	// If the flag carrier reached the base switch to defense
+	mf = havocbot_ctf_find_flag(self);
+	if(mf.cnt!=FLAG_BASE)
+	if(vlen(ef.origin - mf.dropped_origin) < 300)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_DEFENSE);
+		return;
+	}
+
+	// Set the role timeout if necessary
 	if (!self.havocbot_role_timeout)
-	{
+	{
 		self.havocbot_role_timeout = time + random() * 30 + 60;
-	}
-
-	// If nothing happened just switch to previous role
-	if (time > self.havocbot_role_timeout)
-	{
-		self.havocbot_role = self.havocbot_previous_role;
-		self.havocbot_role_timeout = 0;
-		return;
-	}
-
-	// Chase the flag carrier
-	if (self.bot_strategytime < time)
-	{
-		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
-		navigation_goalrating_start();
-		havocbot_goalrating_ctf_enemyflag(30000);
-		havocbot_goalrating_ctf_ourstolenflag(40000);
-		havocbot_goalrating_items(10000, self.origin, 10000);
-		navigation_goalrating_end();
-	}
-};
-
-void havocbot_role_ctf_offense()
-{
+	}
+
+	// If nothing happened just switch to previous role
+	if (time > self.havocbot_role_timeout)
+	{
+		self.havocbot_role = self.havocbot_previous_role;
+		self.havocbot_role_timeout = 0;
+		return;
+	}
+
+	// Chase the flag carrier
+	if (self.bot_strategytime < time)
+	{
+		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+		navigation_goalrating_start();
+		havocbot_goalrating_ctf_enemyflag(30000);
+		havocbot_goalrating_ctf_ourstolenflag(40000);
+		havocbot_goalrating_items(10000, self.origin, 10000);
+		navigation_goalrating_end();
+	}
+};
+
+void havocbot_role_ctf_offense()
+{
 	local entity mf, ef;
-	local vector pos;
-
+	local vector pos;
+
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
-		return;
-	}
-
-	// Check flags
-	mf = havocbot_ctf_find_flag(self);
-	ef = havocbot_ctf_find_enemy_flag(self);
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
 
+	if (self.flagcarried)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
+		return;
+	}
+
+	// Check flags
+	mf = havocbot_ctf_find_flag(self);
+	ef = havocbot_ctf_find_enemy_flag(self);
+
 	// Own flag stolen
-	if(mf.cnt!=FLAG_BASE)
-	{
+	if(mf.cnt!=FLAG_BASE)
+	{
 		if(mf.tag_entity)
 			pos = mf.tag_entity.origin;
 		else
 			pos = mf.origin;
-
+
 		// Try to get it if closer than the enemy base
-		if(vlen(self.origin-ef.dropped_origin)>vlen(self.origin-pos))
-		{
-			havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
-			return;
-		}
-	}
+		if(vlen(self.origin-ef.dropped_origin)>vlen(self.origin-pos))
+		{
+			havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
+			return;
+		}
+	}
 
 	// Escort flag carrier
 	if(ef.cnt!=FLAG_BASE)
@@ -402,66 +402,66 @@
 		else
 			pos = ef.origin;
 
-		if(vlen(pos-mf.dropped_origin)>700)
-		{
-			havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_ESCORT);
-			return;
-		}
+		if(vlen(pos-mf.dropped_origin)>700)
+		{
+			havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_ESCORT);
+			return;
+		}
 	}
-
-	// About to fail, switch to middlefield
-	if(self.health<50)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_MIDDLE);
-		return;
-	}
-
-	// Set the role timeout if necessary
-	if (!self.havocbot_role_timeout)
-		self.havocbot_role_timeout = time + 120;
-
-	if (time > self.havocbot_role_timeout)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.bot_strategytime < time)
-	{
-		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
-		navigation_goalrating_start();
-		havocbot_goalrating_ctf_ourstolenflag(50000);
-		havocbot_goalrating_ctf_enemybase(20000);
+
+	// About to fail, switch to middlefield
+	if(self.health<50)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_MIDDLE);
+		return;
+	}
+
+	// Set the role timeout if necessary
+	if (!self.havocbot_role_timeout)
+		self.havocbot_role_timeout = time + 120;
+
+	if (time > self.havocbot_role_timeout)
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.bot_strategytime < time)
+	{
+		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+		navigation_goalrating_start();
+		havocbot_goalrating_ctf_ourstolenflag(50000);
+		havocbot_goalrating_ctf_enemybase(20000);
 		havocbot_goalrating_items(5000, self.origin, 1000);
-		havocbot_goalrating_items(1000, self.origin, 10000);
-		navigation_goalrating_end();
-	}
-};
-
-// Retriever (temporary role):
-void havocbot_role_ctf_retriever()
-{
-	local entity mf;
-
+		havocbot_goalrating_items(1000, self.origin, 10000);
+		navigation_goalrating_end();
+	}
+};
+
+// Retriever (temporary role):
+void havocbot_role_ctf_retriever()
+{
+	local entity mf;
+
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
-		return;
-	}
-
-	// If flag is back on the base switch to previous role
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.flagcarried)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
+		return;
+	}
+
+	// If flag is back on the base switch to previous role
 	mf = havocbot_ctf_find_flag(self);
-	if(mf.cnt==FLAG_BASE)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
+	if(mf.cnt==FLAG_BASE)
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
 
 	if (!self.havocbot_role_timeout)
 		self.havocbot_role_timeout = time + 20;
@@ -471,114 +471,114 @@
 		havocbot_ctf_reset_role(self);
 		return;
 	}
-
-	if (self.bot_strategytime < time)
-	{
-		local float radius;
-		radius = 10000;
-
+
+	if (self.bot_strategytime < time)
+	{
+		local float radius;
+		radius = 10000;
+
 		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
 		navigation_goalrating_start();
 		havocbot_goalrating_ctf_ourstolenflag(50000);
 		havocbot_goalrating_ctf_droppedflags(40000, self.origin, radius);
 		havocbot_goalrating_ctf_enemybase(30000);
-		havocbot_goalrating_items(500, self.origin, radius);
+		havocbot_goalrating_items(500, self.origin, radius);
 		navigation_goalrating_end();
-	}
-};
-
-void havocbot_role_ctf_middle()
-{
-	local entity mf;
-
+	}
+};
+
+void havocbot_role_ctf_middle()
+{
+	local entity mf;
+
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
-		return;
-	}
-
-	mf = havocbot_ctf_find_flag(self);
-	if(mf.cnt!=FLAG_BASE)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
-		return;
-	}
-
-	if (!self.havocbot_role_timeout)
-		self.havocbot_role_timeout = time + 10;
-
-	if (time > self.havocbot_role_timeout)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.bot_strategytime < time)
 	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.flagcarried)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
+		return;
+	}
+
+	mf = havocbot_ctf_find_flag(self);
+	if(mf.cnt!=FLAG_BASE)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
+		return;
+	}
+
+	if (!self.havocbot_role_timeout)
+		self.havocbot_role_timeout = time + 10;
+
+	if (time > self.havocbot_role_timeout)
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.bot_strategytime < time)
+	{
 		local vector org;
 
 		org = havocbot_ctf_middlepoint;
 		org_z = self.origin_z;
-
-		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
-		navigation_goalrating_start();
-		havocbot_goalrating_ctf_ourstolenflag(50000);
-		havocbot_goalrating_ctf_droppedflags(30000, self.origin, 10000);
-		havocbot_goalrating_enemyplayers(10000, org, havocbot_ctf_middlepoint_radius * 0.5);
+
+		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+		navigation_goalrating_start();
+		havocbot_goalrating_ctf_ourstolenflag(50000);
+		havocbot_goalrating_ctf_droppedflags(30000, self.origin, 10000);
+		havocbot_goalrating_enemyplayers(10000, org, havocbot_ctf_middlepoint_radius * 0.5);
 		havocbot_goalrating_items(5000, org, havocbot_ctf_middlepoint_radius * 0.5);
 		havocbot_goalrating_items(2500, self.origin, 10000);
 		havocbot_goalrating_ctf_enemybase(2500);
-		navigation_goalrating_end();
-	}
-};
-
-void havocbot_role_ctf_defense()
-{
-	local entity mf;
-
+		navigation_goalrating_end();
+	}
+};
+
+void havocbot_role_ctf_defense()
+{
+	local entity mf;
+
 	if(self.deadflag != DEAD_NO)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-
-	if (self.flagcarried)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
-		return;
-	}
-
-	// If own flag was captured
-	mf = havocbot_ctf_find_flag(self);
-	if(mf.cnt!=FLAG_BASE)
-	{
-		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
-		return;
-	}
-
-	if (!self.havocbot_role_timeout)
-		self.havocbot_role_timeout = time + 30;
-
-	if (time > self.havocbot_role_timeout)
-	{
-		havocbot_ctf_reset_role(self);
-		return;
-	}
-	if (self.bot_strategytime < time)
-	{
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+
+	if (self.flagcarried)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_CARRIER);
+		return;
+	}
+
+	// If own flag was captured
+	mf = havocbot_ctf_find_flag(self);
+	if(mf.cnt!=FLAG_BASE)
+	{
+		havocbot_role_ctf_setrole(self, HAVOCBOT_CTF_ROLE_RETRIEVER);
+		return;
+	}
+
+	if (!self.havocbot_role_timeout)
+		self.havocbot_role_timeout = time + 30;
+
+	if (time > self.havocbot_role_timeout)
+	{
+		havocbot_ctf_reset_role(self);
+		return;
+	}
+	if (self.bot_strategytime < time)
+	{
 		local float radius;
-		local vector org;
-
+		local vector org;
+
 		org = mf.dropped_origin;
-		radius = havocbot_ctf_middlepoint_radius;
-
-		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+		radius = havocbot_ctf_middlepoint_radius;
+
+		self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
 		navigation_goalrating_start();
 
 		// if enemies are closer to our base, go there
@@ -603,40 +603,40 @@
 		if(vlen(org - self.origin)>1000)
 		if(checkpvs(self.origin,closestplayer)||random()<0.5)
 			havocbot_goalrating_ctf_ourbase(30000);
-
-		havocbot_goalrating_ctf_ourstolenflag(20000);
-		havocbot_goalrating_ctf_droppedflags(20000, org, radius);
+
+		havocbot_goalrating_ctf_ourstolenflag(20000);
+		havocbot_goalrating_ctf_droppedflags(20000, org, radius);
 		havocbot_goalrating_enemyplayers(15000, org, radius);
 		havocbot_goalrating_items(10000, org, radius);
-		havocbot_goalrating_items(5000, self.origin, 10000);
-		navigation_goalrating_end();
-	}
-};
-
-void havocbot_calculate_middlepoint()
-{
-	entity f;
-	vector p1, p2;
-
-	f = ctf_worldflaglist;
-	while (f)
-	{
-		if(p1)
-			p2 = f.origin;
-		else
-			p1 = f.origin;
+		havocbot_goalrating_items(5000, self.origin, 10000);
+		navigation_goalrating_end();
+	}
+};
 
-		f = f.ctf_worldflagnext;
-	}
+void havocbot_calculate_middlepoint()
+{
+	entity f;
+	vector p1, p2;
+
+	f = ctf_worldflaglist;
+	while (f)
+	{
+		if(p1)
+			p2 = f.origin;
+		else
+			p1 = f.origin;
+
+		f = f.ctf_worldflagnext;
+	}
 	havocbot_ctf_middlepoint = p1 + ((p2-p1) * 0.5);
-	havocbot_ctf_middlepoint_radius	 = vlen(p2-p1) * 0.5;
-};
-
-void havocbot_ctf_reset_role(entity bot)
-{
-	local float cdefense, cmiddle, coffense;
+	havocbot_ctf_middlepoint_radius	 = vlen(p2-p1) * 0.5;
+};
+
+void havocbot_ctf_reset_role(entity bot)
+{
+	local float cdefense, cmiddle, coffense;
 	local entity mf, ef, head;
-	local float c;
+	local float c;
 
 	if(bot.deadflag != DEAD_NO)
 		return;
@@ -644,30 +644,30 @@
 	if(vlen(havocbot_ctf_middlepoint)==0)
 		havocbot_calculate_middlepoint();
 
-	// Check ctf flags
+	// Check ctf flags
 	if (bot.flagcarried)
 	{
 		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_CARRIER);
 		return;
 	}
 
-	mf = havocbot_ctf_find_flag(bot);
-	ef = havocbot_ctf_find_enemy_flag(bot);
-
-	// Retrieve stolen flag
-	if(mf.cnt!=FLAG_BASE)
-	{
-		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_RETRIEVER);
-		return;
-	}
-
-	// If enemy flag is taken go to the middle to intercept pursuers
-	if(ef.cnt!=FLAG_BASE)
-	{
-		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_MIDDLE);
-		return;
+	mf = havocbot_ctf_find_flag(bot);
+	ef = havocbot_ctf_find_enemy_flag(bot);
+
+	// Retrieve stolen flag
+	if(mf.cnt!=FLAG_BASE)
+	{
+		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_RETRIEVER);
+		return;
 	}
 
+	// If enemy flag is taken go to the middle to intercept pursuers
+	if(ef.cnt!=FLAG_BASE)
+	{
+		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_MIDDLE);
+		return;
+	}
+
 	// if there is only me on the team switch to offense
 	c = 0;
 	FOR_EACH_PLAYER(head)
@@ -679,26 +679,26 @@
 		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_OFFENSE);
 		return;
 	}
-
-	// Evaluate best position to take
-	// Count mates on middle position
-	cmiddle = havocbot_ctf_teamcount(bot, havocbot_ctf_middlepoint, havocbot_ctf_middlepoint_radius * 0.5);
-
-	// Count mates on defense position
-	cdefense = havocbot_ctf_teamcount(bot, mf.dropped_origin, havocbot_ctf_middlepoint_radius * 0.5);
-
-	// Count mates on offense position
-	coffense = havocbot_ctf_teamcount(bot, ef.dropped_origin, havocbot_ctf_middlepoint_radius);
-
-	if(cdefense<=coffense)
-		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_DEFENSE);
-	else if(coffense<=cmiddle)
-		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_OFFENSE);
-	else
-		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_MIDDLE);
-};
-
-void havocbot_chooserole_ctf()
-{
-	havocbot_ctf_reset_role(self);
+
+	// Evaluate best position to take
+	// Count mates on middle position
+	cmiddle = havocbot_ctf_teamcount(bot, havocbot_ctf_middlepoint, havocbot_ctf_middlepoint_radius * 0.5);
+
+	// Count mates on defense position
+	cdefense = havocbot_ctf_teamcount(bot, mf.dropped_origin, havocbot_ctf_middlepoint_radius * 0.5);
+
+	// Count mates on offense position
+	coffense = havocbot_ctf_teamcount(bot, ef.dropped_origin, havocbot_ctf_middlepoint_radius);
+
+	if(cdefense<=coffense)
+		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_DEFENSE);
+	else if(coffense<=cmiddle)
+		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_OFFENSE);
+	else
+		havocbot_role_ctf_setrole(bot, HAVOCBOT_CTF_ROLE_MIDDLE);
 };
+
+void havocbot_chooserole_ctf()
+{
+	havocbot_ctf_reset_role(self);
+};


Property changes on: trunk/data/qcsrc/server/havocbot_ctf.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/server/tturrets/system/system_damage.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/system_damage.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/server/tturrets/system/system_damage.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1,343 +1,343 @@
-/*
-* Trow a turret gib
-*/
-void turret_gib_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
-{
-    self.velocity += vforce;
-}
-
-void turret_trowgib(
-    vector v_from, vector v_to, vector v_colormod,
-    string smodel,
-    float f_lifetime, float f_fadetime, float b_burn)
-{
-    local entity gib;
-    local entity burn;
-
-    gib = spawn();
-
-    gib.classname = "turret_gib";
-    setmodel(gib,smodel);
-    setorigin(gib,v_from);
-    SUB_SetFade(gib,time + f_lifetime,2);
-
-    gib.solid              = SOLID_BBOX;
-
-    gib.movetype           = MOVETYPE_BOUNCE;
-    gib.takedamage         = DAMAGE_YES;
-    gib.event_damage       = turret_gib_damage;
-    gib.health             = -1;
-    gib.effects            = EF_LOWPRECISION;
-    gib.flags              = FL_NOTARGET;
-    gib.colormod           = v_colormod;
-    gib.velocity           = v_to;
-
-    if (b_burn)
-    {
-        burn = spawn();
-        burn.effects        = EF_LOWPRECISION;//|EF_FLAME;
-        setattachment(burn,gib,"");
-        setorigin(burn,(gib.mins + gib.maxs) * 0.5);
-        SUB_SetFade(burn,time + (f_lifetime * 0.5) ,2);
-    }
-}
-
-void turret_gib_boom()
-{
-    entity gib;
-    float i;
-    string s;
-
-    for (i = 1; i < 5; i = i +1)
-    {
-        gib = spawn();
-        gib.classname = "turret_gib";
-
-        s = strcat("models/turrets/head-gib",ftos(i));
-        s = strcat(s,".md3");
-        // bprint("s:",s,"\n");
-        setmodel(gib,s);
-
-        setorigin(gib,self.origin);
-
-        SUB_SetFade(gib,time + 5,2);
-
-        gib.solid              = SOLID_BBOX;
-
-        gib.movetype           = MOVETYPE_BOUNCE;
-        gib.gravity            = 0.5;
-        gib.damageforcescale   = 2;
-        gib.takedamage         = DAMAGE_YES;
-        gib.event_damage       = turret_gib_damage;
-        gib.health             = -1;
-        gib.effects            = EF_LOWPRECISION;
-        gib.flags              = FL_NOTARGET;
-        gib.velocity           = self.velocity + (randomvec() * 700);
-        gib.avelocity          = randomvec() * 64;
-    }
-
-    WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
-    WriteByte (MSG_BROADCAST, 78);
-    WriteCoord (MSG_BROADCAST, self.origin_x);
-    WriteCoord (MSG_BROADCAST, self.origin_y);
-    WriteCoord (MSG_BROADCAST, self.origin_z);
-
-    remove(self);
-}
-
-void turret_trowgib2(
-    vector v_from, vector v_to, vector v_colormod,
-    entity e_mimic, float boomtime)
-{
-    entity gib;
-
-    gib = spawn();
-
-    gib.classname = "turret_gib";
-    setmodel(gib,e_mimic.model);
-    setorigin(gib,v_from);
-
-    gib.solid              = SOLID_BBOX;
-
-    gib.movetype           = MOVETYPE_BOUNCE;
-    gib.gravity            = 0.75;
-    gib.damageforcescale   = 2;
-    gib.takedamage         = DAMAGE_YES;
-    gib.event_damage       = turret_gib_damage;
-    gib.health             = -1;
-    gib.effects            = EF_LOWPRECISION;
-    gib.flags              = FL_NOTARGET;
-    gib.colormod           = v_colormod;
-    gib.velocity           = v_to;
-    gib.avelocity          = randomvec() * 32;
-    gib.think              = turret_gib_boom;
-    gib.nextthink          = boomtime;
-    //gib.effects            = EF_FLAME;
-
-
-}
-/*
-* Spawn a boom, trow fake bits arround
-* and hide the real ones.
-*/
-void turret_stdproc_die()
-{
-    vector org2;
-    vector t_dir;
-
-    self.deadflag           = DEAD_DEAD;
-    self.tur_head.deadflag  = self.deadflag;
-
-    sound (self, CHAN_PLAYER, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-    org2 = self.origin + '0 0 40';
-
-// Explotion grafix
-    WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
-    WriteByte (MSG_BROADCAST, 78);
-    WriteCoord (MSG_BROADCAST, org2_x);
-    WriteCoord (MSG_BROADCAST, org2_y);
-    WriteCoord (MSG_BROADCAST, org2_z);
-
-// Unsolidify and hide real parts
-    self.solid              = SOLID_NOT;
-    self.tur_head.solid     = self.solid;
-
-    self.alpha             = -1;
-    self.tur_head.alpha    = self.alpha;
+/*
+* Trow a turret gib
+*/
+void turret_gib_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
+{
+    self.velocity += vforce;
+}
+
+void turret_trowgib(
+    vector v_from, vector v_to, vector v_colormod,
+    string smodel,
+    float f_lifetime, float f_fadetime, float b_burn)
+{
+    local entity gib;
+    local entity burn;
+
+    gib = spawn();
+
+    gib.classname = "turret_gib";
+    setmodel(gib,smodel);
+    setorigin(gib,v_from);
+    SUB_SetFade(gib,time + f_lifetime,2);
+
+    gib.solid              = SOLID_BBOX;
+
+    gib.movetype           = MOVETYPE_BOUNCE;
+    gib.takedamage         = DAMAGE_YES;
+    gib.event_damage       = turret_gib_damage;
+    gib.health             = -1;
+    gib.effects            = EF_LOWPRECISION;
+    gib.flags              = FL_NOTARGET;
+    gib.colormod           = v_colormod;
+    gib.velocity           = v_to;
+
+    if (b_burn)
+    {
+        burn = spawn();
+        burn.effects        = EF_LOWPRECISION;//|EF_FLAME;
+        setattachment(burn,gib,"");
+        setorigin(burn,(gib.mins + gib.maxs) * 0.5);
+        SUB_SetFade(burn,time + (f_lifetime * 0.5) ,2);
+    }
+}
+
+void turret_gib_boom()
+{
+    entity gib;
+    float i;
+    string s;
+
+    for (i = 1; i < 5; i = i +1)
+    {
+        gib = spawn();
+        gib.classname = "turret_gib";
+
+        s = strcat("models/turrets/head-gib",ftos(i));
+        s = strcat(s,".md3");
+        // bprint("s:",s,"\n");
+        setmodel(gib,s);
+
+        setorigin(gib,self.origin);
+
+        SUB_SetFade(gib,time + 5,2);
+
+        gib.solid              = SOLID_BBOX;
+
+        gib.movetype           = MOVETYPE_BOUNCE;
+        gib.gravity            = 0.5;
+        gib.damageforcescale   = 2;
+        gib.takedamage         = DAMAGE_YES;
+        gib.event_damage       = turret_gib_damage;
+        gib.health             = -1;
+        gib.effects            = EF_LOWPRECISION;
+        gib.flags              = FL_NOTARGET;
+        gib.velocity           = self.velocity + (randomvec() * 700);
+        gib.avelocity          = randomvec() * 64;
+    }
+
+    WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
+    WriteByte (MSG_BROADCAST, 78);
+    WriteCoord (MSG_BROADCAST, self.origin_x);
+    WriteCoord (MSG_BROADCAST, self.origin_y);
+    WriteCoord (MSG_BROADCAST, self.origin_z);
+
+    remove(self);
+}
+
+void turret_trowgib2(
+    vector v_from, vector v_to, vector v_colormod,
+    entity e_mimic, float boomtime)
+{
+    entity gib;
+
+    gib = spawn();
+
+    gib.classname = "turret_gib";
+    setmodel(gib,e_mimic.model);
+    setorigin(gib,v_from);
+
+    gib.solid              = SOLID_BBOX;
+
+    gib.movetype           = MOVETYPE_BOUNCE;
+    gib.gravity            = 0.75;
+    gib.damageforcescale   = 2;
+    gib.takedamage         = DAMAGE_YES;
+    gib.event_damage       = turret_gib_damage;
+    gib.health             = -1;
+    gib.effects            = EF_LOWPRECISION;
+    gib.flags              = FL_NOTARGET;
+    gib.colormod           = v_colormod;
+    gib.velocity           = v_to;
+    gib.avelocity          = randomvec() * 32;
+    gib.think              = turret_gib_boom;
+    gib.nextthink          = boomtime;
+    //gib.effects            = EF_FLAME;
+
+
+}
+/*
+* Spawn a boom, trow fake bits arround
+* and hide the real ones.
+*/
+void turret_stdproc_die()
+{
+    vector org2;
+    vector t_dir;
+
+    self.deadflag           = DEAD_DEAD;
+    self.tur_head.deadflag  = self.deadflag;
+
+    sound (self, CHAN_PLAYER, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+    org2 = self.origin + '0 0 40';
+
+// Explotion grafix
+    WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
+    WriteByte (MSG_BROADCAST, 78);
+    WriteCoord (MSG_BROADCAST, org2_x);
+    WriteCoord (MSG_BROADCAST, org2_y);
+    WriteCoord (MSG_BROADCAST, org2_z);
+
+// Unsolidify and hide real parts
+    self.solid              = SOLID_NOT;
+    self.tur_head.solid     = self.solid;
+
+    self.alpha             = -1;
+    self.tur_head.alpha    = self.alpha;
     self.customizeentityforclient = SUB_False;
     self.tur_head.customizeentityforclient = SUB_False;
-
-    self.event_damage           = SUB_Null;
-    self.tur_head.event_damage  = SUB_Null;
-    self.takedamage             = DAMAGE_NO;
-    self.tur_head.takedamage    = self.takedamage;
-
-    self.effects            = 0;
-    self.tur_head.effects   = self.effects;
-    self.health             = 0;
-
-// Trow fake parts arround
-    // base
-    if not(self.damage_flags & TFL_DMG_DEATH_NOGIBS)
-    {
-        makevectors(self.angles);
-        if (random() > 0.5)
-        {
-            turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib2.md3",min(self.respawntime,20),1,1);
-            t_dir = (v_up * 700) + (randomvec() * 300);
-            turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib3.md3",min(self.respawntime,10),1,1);
-            t_dir = (v_up * 700) + (randomvec() * 300);
-            turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib4.md3",min(self.respawntime,10),1,1);
-        }
-        else
-        {
-            turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib1.md3",min(self.respawntime,20),1,1);
-        }
-
-        // Blow the top part up into the air
-        turret_trowgib2( self.origin + (v_up * 50),
-                         v_up * 150 + randomvec() * 50,
-                         '0.2 0.2 0.2',
-                         self.tur_head,time + 0.5 + (random() * 0.5));
-    }
-
-// Go boom
-    //RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,DEATH_TURRET,world);
-
-    if(self.damage_flags & TFL_DMG_DEATH_NORESPAWN)
-    {
-        if (self.turret_diehook)
-            self.turret_diehook();
-
-        remove(self.tur_head);
-        remove(self);
-    }
-    else
-    {
-    // Setup respawn
-        self.nextthink      = time + self.respawntime;
-        //self.think          = self.turret_spawnfunc;
-        self.think          = turret_stdproc_respawn;
-        if (self.turret_diehook)
-            self.turret_diehook();
-    }
-
-}
-
-void turret_stdproc_respawn()
-{
-    // Make sure all parts belong to the same team since
-    // this function doubles as "teamchange" function.
-
-    self.tur_head.team = self.team;
-
-    /*
-    COLOR_TEAM1       = 4;  // red
-    COLOR_TEAM2       = 13; // blue
-    COLOR_TEAM3       = 12; // yellow
-    COLOR_TEAM4       = 9; // pink
-    */
-
-	self.colormod = '0 0 0';
-
-	switch(self.team)
-	{
-        case COLOR_TEAM1: // Red
-            self.colormod = '1.4 0.8 0.8';
-            break;
-
-        case COLOR_TEAM2: // Blue
-            self.colormod = '0.8 0.8 1.4';
-            break;
-
-        case COLOR_TEAM3: // Yellow
-            self.colormod = '1.4 1.4 0.6';
-            break;
-
-        case COLOR_TEAM4: // Pink
-            self.colormod = '1.4 0.6 1.4';
-            break;
-	}
-
-    self.deadflag           = DEAD_NO;
-    self.tur_head.deadflag  = self.deadflag;
-    self.effects            = 0;
-    self.tur_head.effects   = self.effects;
-
-    self.solid              = SOLID_BBOX;
-    self.tur_head.solid     = self.solid;
-
-    self.alpha = 1;
+
+    self.event_damage           = SUB_Null;
+    self.tur_head.event_damage  = SUB_Null;
+    self.takedamage             = DAMAGE_NO;
+    self.tur_head.takedamage    = self.takedamage;
+
+    self.effects            = 0;
+    self.tur_head.effects   = self.effects;
+    self.health             = 0;
+
+// Trow fake parts arround
+    // base
+    if not(self.damage_flags & TFL_DMG_DEATH_NOGIBS)
+    {
+        makevectors(self.angles);
+        if (random() > 0.5)
+        {
+            turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib2.md3",min(self.respawntime,20),1,1);
+            t_dir = (v_up * 700) + (randomvec() * 300);
+            turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib3.md3",min(self.respawntime,10),1,1);
+            t_dir = (v_up * 700) + (randomvec() * 300);
+            turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib4.md3",min(self.respawntime,10),1,1);
+        }
+        else
+        {
+            turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib1.md3",min(self.respawntime,20),1,1);
+        }
+
+        // Blow the top part up into the air
+        turret_trowgib2( self.origin + (v_up * 50),
+                         v_up * 150 + randomvec() * 50,
+                         '0.2 0.2 0.2',
+                         self.tur_head,time + 0.5 + (random() * 0.5));
+    }
+
+// Go boom
+    //RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,DEATH_TURRET,world);
+
+    if(self.damage_flags & TFL_DMG_DEATH_NORESPAWN)
+    {
+        if (self.turret_diehook)
+            self.turret_diehook();
+
+        remove(self.tur_head);
+        remove(self);
+    }
+    else
+    {
+    // Setup respawn
+        self.nextthink      = time + self.respawntime;
+        //self.think          = self.turret_spawnfunc;
+        self.think          = turret_stdproc_respawn;
+        if (self.turret_diehook)
+            self.turret_diehook();
+    }
+
+}
+
+void turret_stdproc_respawn()
+{
+    // Make sure all parts belong to the same team since
+    // this function doubles as "teamchange" function.
+
+    self.tur_head.team = self.team;
+
+    /*
+    COLOR_TEAM1       = 4;  // red
+    COLOR_TEAM2       = 13; // blue
+    COLOR_TEAM3       = 12; // yellow
+    COLOR_TEAM4       = 9; // pink
+    */
+
+	self.colormod = '0 0 0';
+
+	switch(self.team)
+	{
+        case COLOR_TEAM1: // Red
+            self.colormod = '1.4 0.8 0.8';
+            break;
+
+        case COLOR_TEAM2: // Blue
+            self.colormod = '0.8 0.8 1.4';
+            break;
+
+        case COLOR_TEAM3: // Yellow
+            self.colormod = '1.4 1.4 0.6';
+            break;
+
+        case COLOR_TEAM4: // Pink
+            self.colormod = '1.4 0.6 1.4';
+            break;
+	}
+
+    self.deadflag           = DEAD_NO;
+    self.tur_head.deadflag  = self.deadflag;
+    self.effects            = 0;
+    self.tur_head.effects   = self.effects;
+
+    self.solid              = SOLID_BBOX;
+    self.tur_head.solid     = self.solid;
+
+    self.alpha = 1;
     self.tur_head.alpha     = self.alpha;
     self.customizeentityforclient = SUB_True;
     self.tur_head.customizeentityforclient = SUB_True;
-
-
-    self.takedamage = DAMAGE_AIM;
-    self.tur_head.takedamage    = self.takedamage;
-
-    self.event_damage           = turret_stdproc_damage;
-    self.tur_head.event_damage  = self.event_damage;
-
-    self.avelocity              = '0 0 0';
-    self.tur_head.avelocity     = self.avelocity;
-    self.tur_head.angles        = self.idle_aim;
-    self.health                 = self.tur_health;
-    self.tur_head.health         = self.tur_health;
-
-    self.enemy                  = world;
-    self.volly_counter          = self.shot_volly;
-    self.ammo                   = self.ammo_max;
-
-    self.nextthink  = time + self.ticrate;
-    self.think      = turret_think;
-
-    if (self.turret_respawnhook)
-        self.turret_respawnhook();
-
-}
-
-/*
-* Standard damage proc.
-*/
-void turret_stdproc_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
-{
-    entity baseent;
-
-    if (self.owner)
-        baseent = self.owner;
-    else
-        baseent = self;
-
-    // Enougth allready!
-    if (self.health <= 0)
-        return;
-
-    // Inactive turrets take no damage. (hm..)
-    if not (baseent.tur_active)
-        return;
-
-    if (teamplay != 0)
-    if (self.team == attacker.team)
-    {
-        // This does not happen anymore. Re-enable if you fix that.
-        //if(attacker.flags & FL_CLIENT)
-        if(clienttype(attacker) == CLIENTTYPE_REAL)
-            sprint(attacker, "\{1}Turret tells you: I'm on your team!\n");
-
-        if(cvar("g_friendlyfire"))
-            damage = damage * cvar("g_friendlyfire");
-        else
-            return;
-    }
-
-    self.health = self.health - damage;
-
-    // thorw head slightly off aim when hit?
-    if (self.classname == "turret_head")
-        if (baseent.damage_flags & TFL_DMG_HEADSHAKE)
-        {
-            //baseent.tur_aimoff_x += (random() * damage);
-            //baseent.tur_aimoff_y += ((random()*0.75) * damage);
-            self.angles_x = self.angles_x + (-0.5 + random()) * damage;
-            self.angles_y = self.angles_y + (-0.5 + random()) * damage;
-        }
-
-    if (baseent.turrcaps_flags & TFL_TURRCAPS_MOVE)
-        baseent.velocity = baseent.velocity + vforce;
-
-    // FIXME: Better damage feedback
-    // Start burning when we have 10% or less health left
-    //if (self.health < (self.tur_health * 0.1))
-    //    self.effects = EF_FLAME;
-
-    if (self.health <= 0)
-    {
-        baseent.event_damage           = SUB_Null;
-        baseent.tur_head.event_damage  = SUB_Null;
-        baseent.takedamage             = DAMAGE_NO;
-        baseent.tur_head.takedamage    = baseent.takedamage;
-        baseent.nextthink = time;
-        baseent.think = turret_stdproc_die;
-    }
-}
+
+
+    self.takedamage = DAMAGE_AIM;
+    self.tur_head.takedamage    = self.takedamage;
+
+    self.event_damage           = turret_stdproc_damage;
+    self.tur_head.event_damage  = self.event_damage;
+
+    self.avelocity              = '0 0 0';
+    self.tur_head.avelocity     = self.avelocity;
+    self.tur_head.angles        = self.idle_aim;
+    self.health                 = self.tur_health;
+    self.tur_head.health         = self.tur_health;
+
+    self.enemy                  = world;
+    self.volly_counter          = self.shot_volly;
+    self.ammo                   = self.ammo_max;
+
+    self.nextthink  = time + self.ticrate;
+    self.think      = turret_think;
+
+    if (self.turret_respawnhook)
+        self.turret_respawnhook();
+
+}
+
+/*
+* Standard damage proc.
+*/
+void turret_stdproc_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
+{
+    entity baseent;
+
+    if (self.owner)
+        baseent = self.owner;
+    else
+        baseent = self;
+
+    // Enougth allready!
+    if (self.health <= 0)
+        return;
+
+    // Inactive turrets take no damage. (hm..)
+    if not (baseent.tur_active)
+        return;
+
+    if (teamplay != 0)
+    if (self.team == attacker.team)
+    {
+        // This does not happen anymore. Re-enable if you fix that.
+        //if(attacker.flags & FL_CLIENT)
+        if(clienttype(attacker) == CLIENTTYPE_REAL)
+            sprint(attacker, "\{1}Turret tells you: I'm on your team!\n");
+
+        if(cvar("g_friendlyfire"))
+            damage = damage * cvar("g_friendlyfire");
+        else
+            return;
+    }
+
+    self.health = self.health - damage;
+
+    // thorw head slightly off aim when hit?
+    if (self.classname == "turret_head")
+        if (baseent.damage_flags & TFL_DMG_HEADSHAKE)
+        {
+            //baseent.tur_aimoff_x += (random() * damage);
+            //baseent.tur_aimoff_y += ((random()*0.75) * damage);
+            self.angles_x = self.angles_x + (-0.5 + random()) * damage;
+            self.angles_y = self.angles_y + (-0.5 + random()) * damage;
+        }
+
+    if (baseent.turrcaps_flags & TFL_TURRCAPS_MOVE)
+        baseent.velocity = baseent.velocity + vforce;
+
+    // FIXME: Better damage feedback
+    // Start burning when we have 10% or less health left
+    //if (self.health < (self.tur_health * 0.1))
+    //    self.effects = EF_FLAME;
+
+    if (self.health <= 0)
+    {
+        baseent.event_damage           = SUB_Null;
+        baseent.tur_head.event_damage  = SUB_Null;
+        baseent.takedamage             = DAMAGE_NO;
+        baseent.tur_head.takedamage    = baseent.takedamage;
+        baseent.nextthink = time;
+        baseent.think = turret_stdproc_die;
+    }
+}


Property changes on: trunk/data/qcsrc/server/tturrets/system/system_damage.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/server/vehicles/racer.qc
===================================================================
--- trunk/data/qcsrc/server/vehicles/racer.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/server/vehicles/racer.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1,26 +1,26 @@
-#define RACER_MIN '-40 -40 0'
-#define RACER_MAX '40 40 44'
-
-void racer_exit(float eject);
-void racer_enter();
-
+#define RACER_MIN '-40 -40 0'
+#define RACER_MAX '40 40 44'
+
+void racer_exit(float eject);
+void racer_enter();
+
 float  jetfromtag_power;
 float  jetfromtag_normpower;
-float  jetfromtag_nosolid;
+float  jetfromtag_nosolid;
 vector jetfromtag_origin;
-
-vector jetfromtag(string tagname,float jet_length,float air_power,float solid_power)
-{
+
+vector jetfromtag(string tagname,float jet_length,float air_power,float solid_power)
+{
     vector force_dir;
-    float  air_frac, solid_frac, air_pwr, solid_pwr;
-
+    float  air_frac, solid_frac, air_pwr, solid_pwr;
+
     jetfromtag_origin = gettaginfo(self,gettagindex(self,tagname));
     v_forward = normalize(v_forward);
-
-    force_dir = jetfromtag_origin - v_forward * jet_length;
-    traceline(jetfromtag_origin, force_dir, MOVE_NORMAL, self);
-
-    solid_frac = 1 - trace_fraction;
+
+    force_dir = jetfromtag_origin - v_forward * jet_length;
+    traceline(jetfromtag_origin, force_dir, MOVE_NORMAL, self);
+
+    solid_frac = 1 - trace_fraction;
     air_frac   = trace_fraction;
 
     if(solid_frac < 0.1)
@@ -32,39 +32,39 @@
     jetfromtag_power     = solid_pwr + air_pwr;
     jetfromtag_normpower = jetfromtag_power / (air_power+solid_power);
     if(trace_fraction == 1)
-        return v_forward;
-    else
-        return v_forward * (jetfromtag_power + cvar("g_vehicle_racer_power_min"));
-}
-
-void racer_align4point(float spring_length,float spring_up,float blendrate)
-{
+        return v_forward;
+    else
+        return v_forward * (jetfromtag_power + cvar("g_vehicle_racer_power_min"));
+}
+
+void racer_align4point(float spring_length,float spring_up,float blendrate)
+{
     vector fl_org,fl_force,fr_org,fr_force,bl_org,bl_force,br_org,br_force;
-    vector push_vector,align;
-    float fl_push, fr_push, bl_push, br_push;
+    vector push_vector,align;
+    float fl_push, fr_push, bl_push, br_push;
 
-    jetfromtag_nosolid = 0;
+    jetfromtag_nosolid = 0;
 
-    fr_force = jetfromtag("tag_engine_fr",spring_length,cvar("g_vehicle_racer_power_air"), cvar("g_vehicle_racer_power_solid"));
+    fr_force = jetfromtag("tag_engine_fr",spring_length,cvar("g_vehicle_racer_power_air"), cvar("g_vehicle_racer_power_solid"));
     fr_org   = jetfromtag_origin; fr_push = jetfromtag_normpower;
-
+
     fl_force = jetfromtag("tag_engine_fl",spring_length,cvar("g_vehicle_racer_power_air"), cvar("g_vehicle_racer_power_solid"));
     fl_org   = jetfromtag_origin; fl_push = jetfromtag_normpower;
 
     br_force = jetfromtag("tag_engine_br",spring_length,cvar("g_vehicle_racer_power_air"), cvar("g_vehicle_racer_power_solid"));
     br_org   = jetfromtag_origin; br_push = jetfromtag_normpower;
-
+
     bl_force = jetfromtag("tag_engine_bl",spring_length,cvar("g_vehicle_racer_power_air"), cvar("g_vehicle_racer_power_solid"));
     bl_org   = jetfromtag_origin; bl_push = jetfromtag_normpower;
 
     push_vector = fr_force + fl_force + br_force + bl_force;
 
-    align = align;
-
+    align = align;
+
     align_x = (fl_push - bl_push);
     align_x += (fr_push - br_push);
     align_x *= 360;
-
+
     align_z = (fl_push - fr_push);
     align_z += (bl_push - br_push);
     align_z *= 360;
@@ -76,354 +76,354 @@
     self.angles_z += align_z * frametime;
 
     self.velocity =  self.velocity + (push_vector * frametime);
-    self.velocity_z -= sv_gravity * frametime;
-}
-
-void racer_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
-    self.velocity += force;
-}
-
-float racer_pplug()
-{
-    entity player,racer;
-    float ftmp,ftmp2;
-
-
-    player = self;
-    racer = self.vehicle;
-    player.fixangle = FALSE;
-
-    player.BUTTON_ZOOM = 0;
-    player.BUTTON_CROUCH = 0;
-
-    self = racer;
-
-    if(player.BUTTON_USE)
-    {
-        self = racer;
-        racer_exit(0);
-        self = player;
-        return 0;
-    }
-
-    racer.angles_x *= -1;
-    makevectors(racer.angles);
-    racer.angles_x *= -1;
-
-    // Turn Body
-    ftmp = cvar("g_vehicle_racer_turnspeed") / server_fps;
-    ftmp2 = ftmp * -1;
-
-    ftmp = bound(ftmp2,shortangle_f(player.v_angle_y - racer.angles_y,racer.angles_y),ftmp);
-
-    {
-        racer.angles_y = safeangle(racer.angles_y + ftmp);
-        if(player.BUTTON_JUMP)
-        {
-            player.BUTTON_JUMP = 0;
-            racer.velocity  = racer.velocity  + v_forward * 250 + v_up * 600;
-        }
-        else
-        {
-            if(vlen(player.movement) == 0)
-            {
-                self = racer;
-                ftmp = self.velocity_z;
-                self.velocity = self.velocity - self.velocity * cvar("g_vehicle_racer_speed_stop");
-                self.velocity_z = ftmp;
-            }
-            else
-            {
-
-                if(player.movement_x != 0)
-                {
-                    if(player.movement_x > 0)
-                        player.movement_x = 1;
-                    else if(player.movement_x < 0)
-                        player.movement_x = -1;
-                }
-
-                if(player.movement_y != 0)
-                {
-                    if(player.movement_y < 0)
-                        player.movement_y = -1;
-                    else if(player.movement_y > 0)
-                        player.movement_y = 1;
-                }
-
-                self = racer;
-                self.velocity  = self.velocity + ((v_right * player.movement_y) * cvar("g_vehicle_racer_speed_strafe")) * frametime;
-                self.velocity  = self.velocity + ((v_forward * player.movement_x) * cvar("g_vehicle_racer_speed_forward")) * frametime;
-            }
-        }
-        self = racer;
+    self.velocity_z -= sv_gravity * frametime;
+}
+
+void racer_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
+{
+    self.velocity += force;
+}
+
+float racer_pplug()
+{
+    entity player,racer;
+    float ftmp,ftmp2;
+
+
+    player = self;
+    racer = self.vehicle;
+    player.fixangle = FALSE;
+
+    player.BUTTON_ZOOM = 0;
+    player.BUTTON_CROUCH = 0;
+
+    self = racer;
+
+    if(player.BUTTON_USE)
+    {
+        self = racer;
+        racer_exit(0);
+        self = player;
+        return 0;
     }
-
-    vector df;
-
-    self = racer;
 
+    racer.angles_x *= -1;
+    makevectors(racer.angles);
+    racer.angles_x *= -1;
+
+    // Turn Body
+    ftmp = cvar("g_vehicle_racer_turnspeed") / server_fps;
+    ftmp2 = ftmp * -1;
+
+    ftmp = bound(ftmp2,shortangle_f(player.v_angle_y - racer.angles_y,racer.angles_y),ftmp);
+
+    {
+        racer.angles_y = safeangle(racer.angles_y + ftmp);
+        if(player.BUTTON_JUMP)
+        {
+            player.BUTTON_JUMP = 0;
+            racer.velocity  = racer.velocity  + v_forward * 250 + v_up * 600;
+        }
+        else
+        {
+            if(vlen(player.movement) == 0)
+            {
+                self = racer;
+                ftmp = self.velocity_z;
+                self.velocity = self.velocity - self.velocity * cvar("g_vehicle_racer_speed_stop");
+                self.velocity_z = ftmp;
+            }
+            else
+            {
+
+                if(player.movement_x != 0)
+                {
+                    if(player.movement_x > 0)
+                        player.movement_x = 1;
+                    else if(player.movement_x < 0)
+                        player.movement_x = -1;
+                }
+
+                if(player.movement_y != 0)
+                {
+                    if(player.movement_y < 0)
+                        player.movement_y = -1;
+                    else if(player.movement_y > 0)
+                        player.movement_y = 1;
+                }
+
+                self = racer;
+                self.velocity  = self.velocity + ((v_right * player.movement_y) * cvar("g_vehicle_racer_speed_strafe")) * frametime;
+                self.velocity  = self.velocity + ((v_forward * player.movement_x) * cvar("g_vehicle_racer_speed_forward")) * frametime;
+            }
+        }
+        self = racer;
+    }
+
+    vector df;
+
+    self = racer;
+
     df = vlen(self.velocity) * cvar("g_vehicle_racer_downforce") * v_up;
-    self.velocity = self.velocity - df;
-    player.movement = racer.velocity;
-    racer_align4point(cvar("g_vehicle_racer_springlength"),100,cvar("g_vehicle_racer_inert"));
-
-    if(cvar("g_vehicle_racer_drag"))
+    self.velocity = self.velocity - df;
+    player.movement = racer.velocity;
+    racer_align4point(cvar("g_vehicle_racer_springlength"),100,cvar("g_vehicle_racer_inert"));
+
+    if(cvar("g_vehicle_racer_drag"))
         self.velocity  = movelib_dragvec(cvar("g_vehicle_racer_drag"),cvar("g_vehicle_racer_dragexp"));
 
-    self = player;
-    player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
-    setorigin(player,racer.origin + '0 0 32');
-    player.velocity = racer.velocity;
-
-    return 1;
-}
-
-void racer_think()
-{
-    movelib_beak_simple(cvar("g_vehicle_racer_speed_stop"));
-
-    self.nextthink = time;
-}
-
-void racer_enter()
-{
-    self.owner = other;
-    self.owner.angles = self.angles;
-
-    //setattachment(other,self,"");
-    self.nextthink = 0;
-    self.think = SUB_Null;
-    self.owner.takedamage     = DAMAGE_NO;
-    self.owner.solid          = SOLID_NOT;
-    self.owner.movetype       = MOVETYPE_NOCLIP;
-    //setsize(self.owner,spiderbot_MIN,spiderbot_MAX);
-    self.owner.alpha          = -1;
-    self.owner.PlayerPhysplug = racer_pplug;
-    self.owner.vehicle        = self;
-    self.owner.event_damage   = SUB_Null;
-    //self.event_damage         = vehicle_stdproc_damage ;
-    self.colormap             = self.owner.colormap;
-    //self.tur_head.colormap    = self.owner.colormap;
-    //self.vehicle_hudmodel.viewmodelforclient = self.owner;
-    //self.owner.hud            = HUD_SPIDEBOT;
-    //self.owner.vehicle_health = (self.vehicle_health / cvar("g_vehicle_spiderbot_health"));
-    //self.owner.vehicle_shield = (self.vehicle_shield / cvar("g_vehicle_spiderbot_shield"));
-
-    //setorigin(self.owner,self.origin);
-    //setattachment(self.owner,self,"");
-    //setorigin(self.owner,'0 0 0');
-
-    msg_entity = other;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.vehicle_viewport);
-
-    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
-    WriteAngle(MSG_ONE,  self.angles_x);    // tilt
-    WriteAngle(MSG_ONE,  self.angles_y);    // yaw
-    WriteAngle(MSG_ONE,  0);                // roll
-
-    //self.owner.view_ofs = '0 0 0';
-    //self.tur_head.nodrawtoclient = self.owner;
-}
-
-void racer_exit(float eject)
-{
-    self.velocity = '0 0 0';
-
-    msg_entity = self.owner;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.owner);
-
-    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
-    WriteAngle(MSG_ONE,  0);                // tilt
-    WriteAngle(MSG_ONE,  self.angles_y);    // yaw
-    WriteAngle(MSG_ONE,  0);                // roll
-
-    self.think = racer_think;
-    self.nextthink = time;
-
-    self.owner.takedamage     = DAMAGE_AIM;
-    self.owner.solid          = SOLID_SLIDEBOX;
-    self.owner.movetype       = MOVETYPE_WALK;
-
-    setsize(self.owner,PL_MIN,PL_MAX);
-
-    self.owner.alpha          = 1;
-    self.owner.PlayerPhysplug = SUB_Null;
-    self.owner.vehicle        = world;
-	self.owner.view_ofs       = PL_VIEW_OFS;
-	self.owner.event_damage   = PlayerDamage;
-	//self.owner.hud            = HUD_NORMAL;
-
-	self.colormap            = 1024;
-	//self.tur_head.colormap = 1024;
-
-	//self.vehicle_hudmodel.viewmodelforclient = self;
-	//self.tur_head.nodrawtoclient             = self;
-    setattachment(self.owner,world,"");
-
-	if(eject)
-	{
-	    makevectors(self.angles);
-	    setorigin(self.owner,self.origin + v_forward * 100);
-	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
-	}
-	else
-        setorigin(self.owner,self.origin + '0 0 64' - v_forward * 200);
-
-    self.owner = world;
-}
-
-
-void racer_touch()
-{
-    if(self.owner)
-    {
-        if(vlen(self.velocity) == 0)
-            return;
-
-        if(other.classname != "player")
-            return;
-
-        vector a;
-        a = normalize(other.origin - self.origin);
-        a = a - normalize(self.velocity);
-
-        return;
-    }
-
-    if(other.classname != "player")
-        return;
-
-    if(other.deadflag != DEAD_NO)
-        return;
-
-    if(other.vehicle != world)
-        return;
-
-    racer_enter();
-}
-
-/*
-float racer_customizeentityforclient()
-{
-    if(self.deadflag == DEAD_DEAD)
-        return FALSE;
-
-    return TRUE;
-}
-*/
-
-void racer_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
-void racer_spawn()
-{
-    self.think = racer_think;
-    self.nextthink = time;
-
-    //self.vehicle_health = CCVAR("_health");
-    //self.vehicle_shield = CCVAR("_shield");
-    //self.event_damage = vehicle_stdproc_damage;
-    self.event_damage = racer_damage;
-    //self.iscreature = TRUE;
-    self.scale = 0.5;
-    self.movetype   = MOVETYPE_FLY;
-    self.solid      = SOLID_SLIDEBOX;
-    //self.takedamage = DAMAGE_AIM;
-    self.touch      = racer_touch;
-    //self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1;
-    self.alpha = 1;
-    //self.tur_head.angles = '0 0 0';
-	//self.colormap = 1024;
-	//self.tur_head.colormap = 1024;
-	self.deadflag    = DEAD_NO;
-    self.bot_attack = TRUE;
-    setorigin(self,self.origin + '0 0 128');
-    setsize(self,RACER_MIN*0.5,RACER_MAX*0.5);
-    setorigin(self,self.tur_aimpos);
-    pointparticles(particleeffectnum("teleport"), self.origin + '0 0 64', '0 0 0', 1);
-}
-
-void racer_blowup()
-{
-    /*
-    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-    pointparticles(particleeffectnum("rocket_explode"), findbetterlocation (self.origin, 16), '0 0 0', 1);
-
-    //RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
-    RadiusDamage (self, self, 250, 15, 250, world, 250, DEATH_TURRET, world);
-
-    self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = -1;
-    self.nextthink  = time + 10;
-    self.think      = spiderbot_spawn;
-
-    setorigin(self,self.tur_aimpos);
-    */
-}
-
-void racer_die()
-{
-
-    /*
-    self.health = 0;
-    self.event_damage = SUB_Null;
-    self.iscreature = FALSE;
-    self.solid      = SOLID_NOT;
-    self.takedamage = DAMAGE_NO;
-    self.touch      = SUB_Null;
-    self.nextthink  = time + random() * 2;
-    self.think      = spiderbot_blowup;
-    self.deadflag    = DEAD_DEAD;
-	self.vehicle_hudmodel.viewmodelforclient = self;
-	self.frame = 0;
-	self.tur_head.frame = 0;
-	*/
-}
-
-void racer_dinit()
-{
-
-    server_fps = (1 / sys_ticrate);
-
-    /*
-    addstat(STAT_HUD, AS_INT,  hud);
-	addstat(STAT_SPIDERBOT_ROCKETS, AS_INT,   rockets);
-	addstat(STAT_SPIDERBOT_RELOAD,  AS_FLOAT, rockets_reload);
-	addstat(STAT_SPIDERBOT_HEAT,    AS_FLOAT, vehicle_heat);
-	addstat(STAT_SPIDERBOT_HEALTH,  AS_FLOAT, vehicle_health);
-	addstat(STAT_SPIDERBOT_SHIELD,  AS_FLOAT, vehicle_shield);
-	*/
-
-    if (self.netname == "")      self.netname     = "Race PoD";
-
-    self.vehicle_viewport = spawn();
-    self.event_damage = racer_damage;
-    //self.gravity = 2;
-    //self.vehicle_hudmodel = spawn();
-    //self.vehicle_flags = VHF_HASSHIELD | VHF_SHIELDREGEN | VHF_HEALTHREGEN;
-    //self.cvar_basename = "g_vehicle_spiderbot";
-
-    setmodel (self.vehicle_viewport, "models/null.md3");
-    setmodel(self,"models/racers/waka.dpm");
-
-    setattachment(self.vehicle_viewport,self,"");
-    //self.tur_head.customizeentityforclient = spiderbot_customizeentityforclient;
-
-    setorigin(self.vehicle_viewport,'-400 0 40');
-    self.tur_aimpos = self.origin;
-    racer_spawn();
-
-    //self.vehicle_die = spiderbot_die;
-    //self.vehicle_exit = spiderbot_exit;
-}
-
-void spawnfunc_racer()
-{
-    g_turrets_common_precash();
-
-    precache_model ( "models/racers/waka.dpm");
-
-    self.think = racer_dinit;
-    self.nextthink = time + 0.5;
-}
+    self = player;
+    player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
+    setorigin(player,racer.origin + '0 0 32');
+    player.velocity = racer.velocity;
+
+    return 1;
+}
+
+void racer_think()
+{
+    movelib_beak_simple(cvar("g_vehicle_racer_speed_stop"));
+
+    self.nextthink = time;
+}
+
+void racer_enter()
+{
+    self.owner = other;
+    self.owner.angles = self.angles;
+
+    //setattachment(other,self,"");
+    self.nextthink = 0;
+    self.think = SUB_Null;
+    self.owner.takedamage     = DAMAGE_NO;
+    self.owner.solid          = SOLID_NOT;
+    self.owner.movetype       = MOVETYPE_NOCLIP;
+    //setsize(self.owner,spiderbot_MIN,spiderbot_MAX);
+    self.owner.alpha          = -1;
+    self.owner.PlayerPhysplug = racer_pplug;
+    self.owner.vehicle        = self;
+    self.owner.event_damage   = SUB_Null;
+    //self.event_damage         = vehicle_stdproc_damage ;
+    self.colormap             = self.owner.colormap;
+    //self.tur_head.colormap    = self.owner.colormap;
+    //self.vehicle_hudmodel.viewmodelforclient = self.owner;
+    //self.owner.hud            = HUD_SPIDEBOT;
+    //self.owner.vehicle_health = (self.vehicle_health / cvar("g_vehicle_spiderbot_health"));
+    //self.owner.vehicle_shield = (self.vehicle_shield / cvar("g_vehicle_spiderbot_shield"));
+
+    //setorigin(self.owner,self.origin);
+    //setattachment(self.owner,self,"");
+    //setorigin(self.owner,'0 0 0');
+
+    msg_entity = other;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.vehicle_viewport);
+
+    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
+    WriteAngle(MSG_ONE,  self.angles_x);    // tilt
+    WriteAngle(MSG_ONE,  self.angles_y);    // yaw
+    WriteAngle(MSG_ONE,  0);                // roll
+
+    //self.owner.view_ofs = '0 0 0';
+    //self.tur_head.nodrawtoclient = self.owner;
+}
+
+void racer_exit(float eject)
+{
+    self.velocity = '0 0 0';
+
+    msg_entity = self.owner;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.owner);
+
+    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
+    WriteAngle(MSG_ONE,  0);                // tilt
+    WriteAngle(MSG_ONE,  self.angles_y);    // yaw
+    WriteAngle(MSG_ONE,  0);                // roll
+
+    self.think = racer_think;
+    self.nextthink = time;
+
+    self.owner.takedamage     = DAMAGE_AIM;
+    self.owner.solid          = SOLID_SLIDEBOX;
+    self.owner.movetype       = MOVETYPE_WALK;
+
+    setsize(self.owner,PL_MIN,PL_MAX);
+
+    self.owner.alpha          = 1;
+    self.owner.PlayerPhysplug = SUB_Null;
+    self.owner.vehicle        = world;
+	self.owner.view_ofs       = PL_VIEW_OFS;
+	self.owner.event_damage   = PlayerDamage;
+	//self.owner.hud            = HUD_NORMAL;
+
+	self.colormap            = 1024;
+	//self.tur_head.colormap = 1024;
+
+	//self.vehicle_hudmodel.viewmodelforclient = self;
+	//self.tur_head.nodrawtoclient             = self;
+    setattachment(self.owner,world,"");
+
+	if(eject)
+	{
+	    makevectors(self.angles);
+	    setorigin(self.owner,self.origin + v_forward * 100);
+	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
+	}
+	else
+        setorigin(self.owner,self.origin + '0 0 64' - v_forward * 200);
+
+    self.owner = world;
+}
+
+
+void racer_touch()
+{
+    if(self.owner)
+    {
+        if(vlen(self.velocity) == 0)
+            return;
+
+        if(other.classname != "player")
+            return;
+
+        vector a;
+        a = normalize(other.origin - self.origin);
+        a = a - normalize(self.velocity);
+
+        return;
+    }
+
+    if(other.classname != "player")
+        return;
+
+    if(other.deadflag != DEAD_NO)
+        return;
+
+    if(other.vehicle != world)
+        return;
+
+    racer_enter();
+}
+
+/*
+float racer_customizeentityforclient()
+{
+    if(self.deadflag == DEAD_DEAD)
+        return FALSE;
+
+    return TRUE;
+}
+*/
+
+void racer_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
+void racer_spawn()
+{
+    self.think = racer_think;
+    self.nextthink = time;
+
+    //self.vehicle_health = CCVAR("_health");
+    //self.vehicle_shield = CCVAR("_shield");
+    //self.event_damage = vehicle_stdproc_damage;
+    self.event_damage = racer_damage;
+    //self.iscreature = TRUE;
+    self.scale = 0.5;
+    self.movetype   = MOVETYPE_FLY;
+    self.solid      = SOLID_SLIDEBOX;
+    //self.takedamage = DAMAGE_AIM;
+    self.touch      = racer_touch;
+    //self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1;
+    self.alpha = 1;
+    //self.tur_head.angles = '0 0 0';
+	//self.colormap = 1024;
+	//self.tur_head.colormap = 1024;
+	self.deadflag    = DEAD_NO;
+    self.bot_attack = TRUE;
+    setorigin(self,self.origin + '0 0 128');
+    setsize(self,RACER_MIN*0.5,RACER_MAX*0.5);
+    setorigin(self,self.tur_aimpos);
+    pointparticles(particleeffectnum("teleport"), self.origin + '0 0 64', '0 0 0', 1);
+}
+
+void racer_blowup()
+{
+    /*
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+    pointparticles(particleeffectnum("rocket_explode"), findbetterlocation (self.origin, 16), '0 0 0', 1);
+
+    //RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+    RadiusDamage (self, self, 250, 15, 250, world, 250, DEATH_TURRET, world);
+
+    self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = -1;
+    self.nextthink  = time + 10;
+    self.think      = spiderbot_spawn;
+
+    setorigin(self,self.tur_aimpos);
+    */
+}
+
+void racer_die()
+{
+
+    /*
+    self.health = 0;
+    self.event_damage = SUB_Null;
+    self.iscreature = FALSE;
+    self.solid      = SOLID_NOT;
+    self.takedamage = DAMAGE_NO;
+    self.touch      = SUB_Null;
+    self.nextthink  = time + random() * 2;
+    self.think      = spiderbot_blowup;
+    self.deadflag    = DEAD_DEAD;
+	self.vehicle_hudmodel.viewmodelforclient = self;
+	self.frame = 0;
+	self.tur_head.frame = 0;
+	*/
+}
+
+void racer_dinit()
+{
+
+    server_fps = (1 / sys_ticrate);
+
+    /*
+    addstat(STAT_HUD, AS_INT,  hud);
+	addstat(STAT_SPIDERBOT_ROCKETS, AS_INT,   rockets);
+	addstat(STAT_SPIDERBOT_RELOAD,  AS_FLOAT, rockets_reload);
+	addstat(STAT_SPIDERBOT_HEAT,    AS_FLOAT, vehicle_heat);
+	addstat(STAT_SPIDERBOT_HEALTH,  AS_FLOAT, vehicle_health);
+	addstat(STAT_SPIDERBOT_SHIELD,  AS_FLOAT, vehicle_shield);
+	*/
+
+    if (self.netname == "")      self.netname     = "Race PoD";
+
+    self.vehicle_viewport = spawn();
+    self.event_damage = racer_damage;
+    //self.gravity = 2;
+    //self.vehicle_hudmodel = spawn();
+    //self.vehicle_flags = VHF_HASSHIELD | VHF_SHIELDREGEN | VHF_HEALTHREGEN;
+    //self.cvar_basename = "g_vehicle_spiderbot";
+
+    setmodel (self.vehicle_viewport, "models/null.md3");
+    setmodel(self,"models/racers/waka.dpm");
+
+    setattachment(self.vehicle_viewport,self,"");
+    //self.tur_head.customizeentityforclient = spiderbot_customizeentityforclient;
+
+    setorigin(self.vehicle_viewport,'-400 0 40');
+    self.tur_aimpos = self.origin;
+    racer_spawn();
+
+    //self.vehicle_die = spiderbot_die;
+    //self.vehicle_exit = spiderbot_exit;
+}
+
+void spawnfunc_racer()
+{
+    g_turrets_common_precash();
+
+    precache_model ( "models/racers/waka.dpm");
+
+    self.think = racer_dinit;
+    self.nextthink = time + 0.5;
+}


Property changes on: trunk/data/qcsrc/server/vehicles/racer.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/server/vehicles/spiderbot.qc
===================================================================
--- trunk/data/qcsrc/server/vehicles/spiderbot.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/server/vehicles/spiderbot.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1,776 +1,776 @@
-#define MODEL_SPIDERBOT_FORWARD_START 1
-#define MODEL_SPIDERBOT_FORWARD_END 31
-#define MODEL_SPIDERBOT_FORWARD_LENGTH 31
-
-#define MODEL_SPIDERBOT_BACKWARDS_START 32
-#define MODEL_SPIDERBOT_BACKWARDS_END 62
-#define MODEL_SPIDERBOT_BACKWARDS_LENGTH 31
-
-#define MODEL_SPIDERBOT_LEFT_START 63
-#define MODEL_SPIDERBOT_LEFT_END 93
-#define MODEL_SPIDERBOT_LEFT_LENGTH 31
-
-#define MODEL_SPIDERBOT_RIGHT_START 94
-#define MODEL_SPIDERBOT_RIGHT_END 124
-#define MODEL_SPIDERBOT_RIGHT_LENGTH 31
-
-#define MODEL_SPIDERBOT_JUMP_START 125
-#define MODEL_SPIDERBOT_JUMP_END 155
-#define MODEL_SPIDERBOT_JUMP_LENGTH 31
-
-#define spiderbot_MIN '-75 -75 5'
-#define spiderbot_MAX '75 75 105'
-
-/*
-.void() anim_now;
-.void() anim_next;
-
-void spider_anim_idle()
-{
-    movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
-    if(self.anim_next != self.anim_now)
-        self.anim_now = self.anim_next;
-}
-
-void spider_anim_forward()
-{
-    movelib_move_simple(normalize(v_forward),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
-
-    if((self.frame < MODEL_SPIDERBOT_FORWARD_START) || (self.frame > MODEL_SPIDERBOT_FORWARD_END))
-        self.frame = MODEL_SPIDERBOT_FORWARD_START;
-    else
-        self.frame += 0.8;
-
-    if(self.frame > MODEL_SPIDERBOT_FORWARD_END)
-        self.anim_now = self.anim_next;
-}
-
-void spider_anim_backward()
-{
-    movelib_move_simple(normalize(v_forward * -1),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
-
-    if(self.frame < MODEL_SPIDERBOT_BACKWARDS_START)
-        self.frame = MODEL_SPIDERBOT_BACKWARDS_START;
-    else
-        self.frame += 0.8;
-
-    if(self.frame > MODEL_SPIDERBOT_BACKWARDS_END)
-        self.anim_now = self.anim_next;
-}
-
-void spider_anim_strafel()
-{
-    movelib_move_simple(normalize(v_right * -1),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
-
-    if(self.frame < MODEL_SPIDERBOT_LEFT_START)
-        self.frame = MODEL_SPIDERBOT_LEFT_START;
-    else
-        self.frame += 0.8;
-
-    if(self.frame > MODEL_SPIDERBOT_LEFT_END)
-        self.anim_now = self.anim_next;
-}
-
-void spider_anim_strafer()
-{
-    movelib_move_simple(normalize(v_right),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
-
-    if(self.frame < MODEL_SPIDERBOT_RIGHT_START)
-        self.frame = MODEL_SPIDERBOT_RIGHT_START;
-    else
-        self.frame += 0.8;
-
-    if(self.frame > MODEL_SPIDERBOT_RIGHT_END)
-        self.anim_now = self.anim_next;
-}
-
-void spider_anim_jump()
-{
-    //movelib_move_simple(normalize(v_forward),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
-
-    if(self.frame < MODEL_SPIDERBOT_JUMP_START)
-        self.frame = MODEL_SPIDERBOT_JUMP_START;
-    else
-        self.frame += 1;
-
-    if(self.frame <= 8)
-        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
-
-    if(self.frame == 9)
-        self.velocity = v_forward * 400 + v_up * 400;
-
-    if(self.frame >= 19)
-        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
-
-    if(self.frame > MODEL_SPIDERBOT_JUMP_END)
-        self.anim_now = self.anim_next;
-}
-
-void anim_do()
-{
-    if not (self.anim_now)
-        self.anim_now = self.anim_next;
-
-    self.anim_now();
-}
-
-*/
-
-void anim_do()
-{
-    self.frame = self.frame + 0.8;
-    if ((self.frame < self.anim_start) || (self.frame > self.anim_end))
-        if(self.anim_start == 0)
-        {
-            self.frame = 0;
-            self.anim_end = 0;
-        }
-        else
-            self.frame = self.anim_start;
-}
-
-void spiderbot_exit(float eject);
-void spiderbot_enter();
-
-void spiderbot_rocket_explode()
-{
-    vector org2;
-
-    if(self.event_damage != SUB_Null)
-    {
-        self.event_damage = SUB_Null;
-        self.think = spiderbot_rocket_explode;
-        self.nextthink = time;
-        return;
-    }
-
-    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-    org2 = findbetterlocation (self.origin, 16);
-    pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
-    w_deathtypestring = "dident escape the rocket barrage";
-
-    if(!self.owner)
-        self.owner = self.realowner;
-
-    RadiusDamage (self, self.owner,
-     cvar("g_vehicle_spiderbot_rocket_damage"),
-     cvar("g_vehicle_spiderbot_rocket_edgedamage"),
-     cvar("g_vehicle_spiderbot_rocket_radius"), world,
-     cvar("g_vehicle_spiderbot_rocket_force"), DEATH_TURRET, world);
-
-    remove (self);
-}
-
-void spiderbot_rocket_touch()
-{
-    if(self.owner)
-    {
-        if(other == self.owner.vehicle)
-            return;
-
-        if(other == self.owner.vehicle.tur_head)
-            return;
-    }
-
-    PROJECTILE_TOUCH;
-    spiderbot_rocket_explode();
-}
-
-void spiderbot_rocket_think()
-{
-    vector newdir,olddir;
-
-    self.nextthink  = time;
-    if not(self.owner)
-    {
-        UpdateCSQCProjectile(self);
-        return;
-    }
-
-    self.solid      = SOLID_BBOX;
-    self.touch      = spiderbot_rocket_touch;
-    olddir = normalize(self.velocity);
-    newdir = normalize(self.owner.cursor_trace_endpos - self.origin);
-    newdir += randomvec() * cvar("g_vehicle_spiderbot_rocket_noise");
-    self.velocity = normalize(olddir + newdir * cvar("g_vehicle_spiderbot_rocket_turnrate")) * cvar("g_vehicle_spiderbot_rocket_speed");
-
-    UpdateCSQCProjectile(self);
-}
-
-void spiderbot_rocket_do()
-{
-    entity missile;
-
-    if(self.gun2.cnt > time)
-        return;
-
-    if(self.tur_head.frame > 7)
-        self.tur_head.frame = 0;
-
-    if not (self.owner.BUTTON_ATCK2)
-        return;
-
-    self.tur_head.frame += 1;
-    if(self.tur_head.frame > 7)
-        self.attack_finished_single = cvar("g_vehicle_spiderbot_rocket_reload");
-    else
-        self.attack_finished_single = cvar("g_vehicle_spiderbot_rocket_refire");
-
-    self.gun2.cnt = time + self.attack_finished_single;
-
-    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", VOL_BASE, ATTN_NORM);
-    missile                    = spawn ();
-    setsize (missile, '-3 -1 -1', '3 1 1'); // give it some size so it can be shot
-    setorigin(missile,gettaginfo(self.tur_head,gettagindex(self.tur_head,"tag_fire")));
-    te_explosion (missile.origin);
-
-    missile.classname       = "spiderbot_rocket";
-    missile.owner           = self.owner;
-    missile.bot_dodge       = TRUE;
-    missile.bot_dodgerating = 75;
-    missile.nextthink       = time;// + 0.2;
-    missile.movetype        = MOVETYPE_FLYMISSILE;
-    missile.velocity        = normalize(v_forward + (v_up * 0.5) + randomvec() * 0.25) * cvar("g_vehicle_spiderbot_rocket_speed");
-    missile.angles          = vectoangles(missile.velocity);
-    missile.think           = spiderbot_rocket_think;
-    missile.flags           = FL_PROJECTILE;
-    missile.solid           = SOLID_NOT;
-
-	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET, FALSE); // no culling, has fly sound
-}
-
-void spiderbot_minigun_fire_Flash_Go() {
-	if (self.frame > 10){
+#define MODEL_SPIDERBOT_FORWARD_START 1
+#define MODEL_SPIDERBOT_FORWARD_END 31
+#define MODEL_SPIDERBOT_FORWARD_LENGTH 31
+
+#define MODEL_SPIDERBOT_BACKWARDS_START 32
+#define MODEL_SPIDERBOT_BACKWARDS_END 62
+#define MODEL_SPIDERBOT_BACKWARDS_LENGTH 31
+
+#define MODEL_SPIDERBOT_LEFT_START 63
+#define MODEL_SPIDERBOT_LEFT_END 93
+#define MODEL_SPIDERBOT_LEFT_LENGTH 31
+
+#define MODEL_SPIDERBOT_RIGHT_START 94
+#define MODEL_SPIDERBOT_RIGHT_END 124
+#define MODEL_SPIDERBOT_RIGHT_LENGTH 31
+
+#define MODEL_SPIDERBOT_JUMP_START 125
+#define MODEL_SPIDERBOT_JUMP_END 155
+#define MODEL_SPIDERBOT_JUMP_LENGTH 31
+
+#define spiderbot_MIN '-75 -75 5'
+#define spiderbot_MAX '75 75 105'
+
+/*
+.void() anim_now;
+.void() anim_next;
+
+void spider_anim_idle()
+{
+    movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
+    if(self.anim_next != self.anim_now)
+        self.anim_now = self.anim_next;
+}
+
+void spider_anim_forward()
+{
+    movelib_move_simple(normalize(v_forward),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
+
+    if((self.frame < MODEL_SPIDERBOT_FORWARD_START) || (self.frame > MODEL_SPIDERBOT_FORWARD_END))
+        self.frame = MODEL_SPIDERBOT_FORWARD_START;
+    else
+        self.frame += 0.8;
+
+    if(self.frame > MODEL_SPIDERBOT_FORWARD_END)
+        self.anim_now = self.anim_next;
+}
+
+void spider_anim_backward()
+{
+    movelib_move_simple(normalize(v_forward * -1),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
+
+    if(self.frame < MODEL_SPIDERBOT_BACKWARDS_START)
+        self.frame = MODEL_SPIDERBOT_BACKWARDS_START;
+    else
+        self.frame += 0.8;
+
+    if(self.frame > MODEL_SPIDERBOT_BACKWARDS_END)
+        self.anim_now = self.anim_next;
+}
+
+void spider_anim_strafel()
+{
+    movelib_move_simple(normalize(v_right * -1),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
+
+    if(self.frame < MODEL_SPIDERBOT_LEFT_START)
+        self.frame = MODEL_SPIDERBOT_LEFT_START;
+    else
+        self.frame += 0.8;
+
+    if(self.frame > MODEL_SPIDERBOT_LEFT_END)
+        self.anim_now = self.anim_next;
+}
+
+void spider_anim_strafer()
+{
+    movelib_move_simple(normalize(v_right),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
+
+    if(self.frame < MODEL_SPIDERBOT_RIGHT_START)
+        self.frame = MODEL_SPIDERBOT_RIGHT_START;
+    else
+        self.frame += 0.8;
+
+    if(self.frame > MODEL_SPIDERBOT_RIGHT_END)
+        self.anim_now = self.anim_next;
+}
+
+void spider_anim_jump()
+{
+    //movelib_move_simple(normalize(v_forward),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
+
+    if(self.frame < MODEL_SPIDERBOT_JUMP_START)
+        self.frame = MODEL_SPIDERBOT_JUMP_START;
+    else
+        self.frame += 1;
+
+    if(self.frame <= 8)
+        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
+
+    if(self.frame == 9)
+        self.velocity = v_forward * 400 + v_up * 400;
+
+    if(self.frame >= 19)
+        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
+
+    if(self.frame > MODEL_SPIDERBOT_JUMP_END)
+        self.anim_now = self.anim_next;
+}
+
+void anim_do()
+{
+    if not (self.anim_now)
+        self.anim_now = self.anim_next;
+
+    self.anim_now();
+}
+
+*/
+
+void anim_do()
+{
+    self.frame = self.frame + 0.8;
+    if ((self.frame < self.anim_start) || (self.frame > self.anim_end))
+        if(self.anim_start == 0)
+        {
+            self.frame = 0;
+            self.anim_end = 0;
+        }
+        else
+            self.frame = self.anim_start;
+}
+
+void spiderbot_exit(float eject);
+void spiderbot_enter();
+
+void spiderbot_rocket_explode()
+{
+    vector org2;
+
+    if(self.event_damage != SUB_Null)
+    {
+        self.event_damage = SUB_Null;
+        self.think = spiderbot_rocket_explode;
+        self.nextthink = time;
+        return;
+    }
+
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+    org2 = findbetterlocation (self.origin, 16);
+    pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
+    w_deathtypestring = "dident escape the rocket barrage";
+
+    if(!self.owner)
+        self.owner = self.realowner;
+
+    RadiusDamage (self, self.owner,
+     cvar("g_vehicle_spiderbot_rocket_damage"),
+     cvar("g_vehicle_spiderbot_rocket_edgedamage"),
+     cvar("g_vehicle_spiderbot_rocket_radius"), world,
+     cvar("g_vehicle_spiderbot_rocket_force"), DEATH_TURRET, world);
+
+    remove (self);
+}
+
+void spiderbot_rocket_touch()
+{
+    if(self.owner)
+    {
+        if(other == self.owner.vehicle)
+            return;
+
+        if(other == self.owner.vehicle.tur_head)
+            return;
+    }
+
+    PROJECTILE_TOUCH;
+    spiderbot_rocket_explode();
+}
+
+void spiderbot_rocket_think()
+{
+    vector newdir,olddir;
+
+    self.nextthink  = time;
+    if not(self.owner)
+    {
+        UpdateCSQCProjectile(self);
+        return;
+    }
+
+    self.solid      = SOLID_BBOX;
+    self.touch      = spiderbot_rocket_touch;
+    olddir = normalize(self.velocity);
+    newdir = normalize(self.owner.cursor_trace_endpos - self.origin);
+    newdir += randomvec() * cvar("g_vehicle_spiderbot_rocket_noise");
+    self.velocity = normalize(olddir + newdir * cvar("g_vehicle_spiderbot_rocket_turnrate")) * cvar("g_vehicle_spiderbot_rocket_speed");
+
+    UpdateCSQCProjectile(self);
+}
+
+void spiderbot_rocket_do()
+{
+    entity missile;
+
+    if(self.gun2.cnt > time)
+        return;
+
+    if(self.tur_head.frame > 7)
+        self.tur_head.frame = 0;
+
+    if not (self.owner.BUTTON_ATCK2)
+        return;
+
+    self.tur_head.frame += 1;
+    if(self.tur_head.frame > 7)
+        self.attack_finished_single = cvar("g_vehicle_spiderbot_rocket_reload");
+    else
+        self.attack_finished_single = cvar("g_vehicle_spiderbot_rocket_refire");
+
+    self.gun2.cnt = time + self.attack_finished_single;
+
+    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", VOL_BASE, ATTN_NORM);
+    missile                    = spawn ();
+    setsize (missile, '-3 -1 -1', '3 1 1'); // give it some size so it can be shot
+    setorigin(missile,gettaginfo(self.tur_head,gettagindex(self.tur_head,"tag_fire")));
+    te_explosion (missile.origin);
+
+    missile.classname       = "spiderbot_rocket";
+    missile.owner           = self.owner;
+    missile.bot_dodge       = TRUE;
+    missile.bot_dodgerating = 75;
+    missile.nextthink       = time;// + 0.2;
+    missile.movetype        = MOVETYPE_FLYMISSILE;
+    missile.velocity        = normalize(v_forward + (v_up * 0.5) + randomvec() * 0.25) * cvar("g_vehicle_spiderbot_rocket_speed");
+    missile.angles          = vectoangles(missile.velocity);
+    missile.think           = spiderbot_rocket_think;
+    missile.flags           = FL_PROJECTILE;
+    missile.solid           = SOLID_NOT;
+
+	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET, FALSE); // no culling, has fly sound
+}
+
+void spiderbot_minigun_fire_Flash_Go() {
+	if (self.frame > 10){
 		self.alpha = -1;
-		setmodel(self,"");
-		return;
-	}
-
-	self.frame = self.frame + 2;
-	self.alpha = self.alpha - 0.2;
-	self.nextthink = time + 0.02;
-}
-
-void spiderbot_minigun_fire(entity gun,float trail)
-{
-
-    entity flash;
-    vector v;
-    v = gettaginfo(gun,gettagindex(gun,"barrels"));
-    v_forward = normalize(v_forward);
-
-    sound (gun, CHAN_WEAPON, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM);
-
-    fireBullet (v, v_forward, cvar("g_vehicle_spiderbot_minigun_spread"), cvar("g_vehicle_spiderbot_minigun_damage"),
-        cvar("g_vehicle_spiderbot_minigun_spread"), DEATH_TURRET, 0);
-
-    if not (gun.enemy)
-    {
-        gun.enemy = spawn();
-        setattachment(gun.enemy , gun, "barrels");
-        setorigin(gun.enemy ,gun.enemy.origin + '48 0 0');
-    }
-
-    flash = gun.enemy; //spawn();
-    setmodel(flash, "models/uziflash.md3"); // precision set below
-    flash.think = spiderbot_minigun_fire_Flash_Go;
-    flash.nextthink = time + 0.02;
-    flash.frame = 2;
-    flash.angles_z = flash.v_angle_z + random() * 180;
-    flash.alpha = 1;
-    flash.effects = EF_ADDITIVE | EF_FULLBRIGHT | EF_LOWPRECISION;
-    if(trail)
-        trailparticles(self, particleeffectnum("EF_MGTURRETTRAIL"), v, trace_endpos);
-}
-
-void spiderbot_miniguns_do()
-{
-    if ((self.owner.BUTTON_ATCK) && (self.owner.vehicle_heat < 1) && (self.tur_head.attack_finished_single < time))
-    {
-
-        self.gun1.angles_z += 36;
-        self.gun2.angles_z -= 36;
-        if(self.gun1.angles_z >= 360)
-        {
-            self.gun1.angles_z = 0;
-            self.gun2.angles_z = 360;
-        }
-
-        self = self.owner;
-        if(self.uzi_bulletcounter == 1)
-        {
-            spiderbot_minigun_fire(self.vehicle.gun1,0);
-            spiderbot_minigun_fire(self.vehicle.gun2,1);
-            self.uzi_bulletcounter = 0;
-        }
-        else
-        {
-            spiderbot_minigun_fire(self.vehicle.gun1,1);
-            spiderbot_minigun_fire(self.vehicle.gun2,0);
-            self.uzi_bulletcounter += 1;
-        }
-
-        self = self.vehicle;
-        self.owner.vehicle_heat += cvar("g_vehicle_spiderbot_minigun_heat");
-        if(self.owner.vehicle_heat >= 1)
-        {
-            self.vehicle_heat = 1;
-            self.owner.vehicle_heat = 1;
-            self.tur_head.attack_finished_single = (1/(cvar("g_vehicle_spiderbot_minigun_cooldown") * server_fps))+time;
-        }
-        else
-            self.tur_head.attack_finished_single = cvar("g_vehicle_spiderbot_minigun_refire") + time;
-
-        return;
-    }
-    else
-        if(self.vehicle_heat != 0)
-        {
-            self.vehicle_heat = max(self.vehicle_heat - cvar("g_vehicle_spiderbot_minigun_cooldown"),0);
-            if(self.tur_head.attack_finished_single < time)
-            {
-                self.vehicle_heat = 0;
-                self.owner.vehicle_heat = 0;
-            }
-            else
-            {
-                if(self.tur_head.uzi_bulletcounter < time)
-                {
-                    self.tur_head.uzi_bulletcounter = time + 0.2;
-                    self.owner.vehicle_heat  = self.vehicle_heat;
-                }
-                else
-                    self.owner.vehicle_heat = 1;
-            }
-        }
-        else
-            self.owner.vehicle_heat = max(self.owner.vehicle_heat - cvar("g_vehicle_spiderbot_minigun_cooldown"),0);
-
-}
-
-float spiderbot_pplug()
-{
-    vector ad;
-    entity player,spider;
-    float ftmp,ftmp2;
-
-    player = self;
-    spider = self.vehicle;
-
-/*
-	self.BUTTON_ATCK = 0;
-	self.button1 = 0;
-	self.BUTTON_JUMP = 0;
-	self.BUTTON_ATCK2 = 0;
-
-
-	self.BUTTON_HOOK = 0;
-	self.BUTTON_INFO = 0;
-	self.button8 = 0;
-	self.BUTTON_CHAT = 0;
-	self.BUTTON_USE = 0;
-*/
-
-    player.BUTTON_ZOOM = 0;
-    player.BUTTON_CROUCH = 0;
-
-
-    if(player.BUTTON_USE)
-    {
-        self = spider;
-        spiderbot_exit(0);
-        self = player;
-        return 0;
-    }
-
-    player.exteriormodeltoclient = spider.tur_head;
-
-    spider.tur_head.angles_x *= -1;
-    spider.angles_x *= -1;
-    //player.angles_x *= -1;
-    makevectors(spider.angles);
-
-    //ad = player.v_angle - (spider.tur_head.angles + spider.angles);
-    ad = player.v_angle -  (spider.tur_head.angles + spider.angles);
-
-    // Rotate head
-    ftmp = cvar("g_vehicle_spiderbot_head_turnspeed") / server_fps;
-    ftmp2 = ftmp * -1;
-    spider.tur_head.angles_y += bound(ftmp2,shortangle_f(ad_y,spider.tur_head.angles_y),ftmp);
-    spider.tur_head.angles_y = bound(cvar("g_vehicle_spiderbot_head_turnlimit") * -1,spider.tur_head.angles_y,cvar("g_vehicle_spiderbot_head_turnlimit"));
-
-    // Pitch head
-    ftmp = cvar("g_vehicle_spiderbot_head_pitchspeed") / server_fps;
-    ftmp2 = ftmp * -1;
-    spider.tur_head.angles_x += bound(ftmp2,shortangle_f(ad_x,spider.tur_head.angles_x),ftmp);
-    spider.tur_head.angles_x = bound(cvar("g_vehicle_spiderbot_head_pitchlimit_down"),spider.tur_head.angles_x,cvar("g_vehicle_spiderbot_head_pitchlimit_up"));
-
-    spider.tur_head.angles_x *= -1;
-    spider.angles_x *= -1;
-    //player.angles_x *= -1;
-
-    // Turn Body
-    ftmp = cvar("g_vehicle_spiderbot_turnspeed") / server_fps;
-    ftmp2 = ftmp * -1;
-    ftmp = bound(ftmp2,spider.tur_head.angles_y,ftmp);
-
-    self = spider;
-    if(spider.flags & FL_ONGROUND)
-    {
-        if(player.BUTTON_JUMP)
-        {
-            player.BUTTON_JUMP = 0;
-            spider.anim_start = MODEL_SPIDERBOT_JUMP_START;
-            spider.anim_end   = MODEL_SPIDERBOT_JUMP_END;
-            spider.velocity   = v_forward * 700 + v_up * 600;
-        }
-        else
-        {
-            if(vlen(player.movement) == 0)
-            {
-                movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
-                spider.anim_start = 0;
-                spider.anim_end = 0;
-            }
-            else
-            {
-                spider.angles_y = safeangle(spider.angles_y + ftmp);
-                spider.tur_head.angles_y -= ftmp;
-
-                if(player.movement_x != 0)
-                {
-                    if(player.movement_x > 0)
-                    {
-                        player.movement_x = 1;
-                        spider.anim_start = MODEL_SPIDERBOT_FORWARD_START;
-                        spider.anim_end   = MODEL_SPIDERBOT_FORWARD_END;
-                    }
-                    else if(player.movement_x < 0)
-                    {
-                        player.movement_x = -1;
-                        spider.anim_start = MODEL_SPIDERBOT_BACKWARDS_START;
-                        spider.anim_end   = MODEL_SPIDERBOT_BACKWARDS_END;
-
-                    }
-                    player.movement_y = 0;
-                    movelib_move_simple(normalize(v_forward * player.movement_x),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
-                }
-                else if(player.movement_y != 0)
-                {
-                    if(player.movement_y < 0)
-                    {
-                        player.movement_y = -1;
-                        spider.anim_start = MODEL_SPIDERBOT_LEFT_START;
-                        spider.anim_end   = MODEL_SPIDERBOT_LEFT_END;
-                    }
-                    else if(player.movement_y > 0)
-                    {
-                        player.movement_y = 1;
-                        spider.anim_start = MODEL_SPIDERBOT_RIGHT_START;
-                        spider.anim_end   = MODEL_SPIDERBOT_RIGHT_END;
-                    }
-                    movelib_move_simple(normalize(v_right * player.movement_y),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
-                }
-
-            }
-        }
-        movelib_groundalign4point(300,100,0.25);
-    }
-
-    anim_do();
-    spiderbot_miniguns_do();
-    spiderbot_rocket_do();
-    vehicle_stdproc_regen();
-
-    player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
-    player.rockets = spider.tur_head.frame;
-
-    if(spider.gun2.cnt <= time)
-        player.rockets_reload = 1;
-    else
-        player.rockets_reload = 1 - ((spider.gun2.cnt - time) /spider.attack_finished_single);
-
-    self = player;
-
-    setorigin(player,spider.origin + '0 0 64');
-    player.velocity = spider.velocity;
-
-    return 1;
-}
-
-void spiderbot_think()
-{
-    if(self.flags & FL_ONGROUND)
-    {
-        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
-        //movelib_groundalign4point(300,100);
-    }
-
-    self.nextthink = time;
-}
-
-void spiderbot_enter()
-{
-    self.owner = other;
-
-    self.event_damage         = vehicle_stdproc_damage ;
-    self.colormap             = self.owner.colormap;
-    self.tur_head.colormap    = self.owner.colormap;
-    self.vehicle_hudmodel.viewmodelforclient = self.owner;
-    self.nextthink = 0;
-    self.owner.angles         = self.angles;
-    self.owner.takedamage     = DAMAGE_NO;
-    self.owner.solid          = SOLID_NOT;
-    self.owner.movetype       = MOVETYPE_NOCLIP;
-    self.owner.alpha          = -1;
-    self.owner.PlayerPhysplug = spiderbot_pplug;
-    self.owner.vehicle        = self;
-    self.owner.event_damage   = SUB_Null;
-    self.owner.hud            = HUD_SPIDEBOT;
-    self.owner.vehicle_health = (self.vehicle_health / cvar("g_vehicle_spiderbot_health"));
-    self.owner.vehicle_shield = (self.vehicle_shield / cvar("g_vehicle_spiderbot_shield"));
-    self.team                   = self.owner.team;
-
-    //setorigin(self.owner,self.origin);
-    //setattachment(self.owner,self,"");
-    //setorigin(self.owner,'0 0 0');
-
-    msg_entity = other;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.vehicle_viewport);
-
-    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
-    WriteAngle(MSG_ONE, self.tur_head.angles_x + self.angles_x);    // tilt
-    WriteAngle(MSG_ONE, self.tur_head.angles_y + self.angles_y);    // yaw
-    WriteAngle(MSG_ONE, 0);    // roll
-    //WriteAngle(MSG_ONE, self.tur_head.angles_z + self.angles_z);    // roll
-
-    //self.owner.view_ofs = '0 0 0';
-    //self.tur_head.nodrawtoclient = self.owner;
-}
-
-void spiderbot_exit(float eject)
-{
-    entity e;
-
-    e = findchain(classname,"spiderbot_rocket");
-    while(e)
-    {
-        if(e.owner == self.owner)
-        {
-            e.realowner = self.owner;
-            e.owner = world;
-            //e.solid = SOLID_BBOX;
-            //e.think = SUB_Null;
-            //e.nextthink = -1;
-        }
-        e = e.chain;
-    }
-
-    self.velocity = '0 0 0';
-
-    msg_entity = self.owner;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.owner);
-
-    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
-    WriteAngle(MSG_ONE, 0);    // tilt
-    WriteAngle(MSG_ONE, self.angles_y);    // yaw
-    WriteAngle(MSG_ONE, 0);    // roll
-
-    //setattachment(self.owner,world,"");
-    self.think = spiderbot_think;
-    self.nextthink = time;
-    self.owner.takedamage     = DAMAGE_AIM;
-    self.owner.solid          = SOLID_SLIDEBOX;
-    self.owner.movetype       = MOVETYPE_WALK;
-
-    setsize(self.owner,PL_MIN,PL_MAX);
-
-    self.owner.alpha          = 1;
-    self.owner.PlayerPhysplug = SUB_Null;
-    self.owner.vehicle        = world;
-	self.owner.view_ofs       = PL_VIEW_OFS;
-	self.owner.hud            = HUD_NORMAL;
-	self.owner.event_damage   = PlayerDamage;
-
-	self.colormap            = 1024;
-	self.tur_head.colormap   = 1024;
-    self.team                = -1;
-
-	self.vehicle_hudmodel.viewmodelforclient = self;
-	self.tur_head.nodrawtoclient             = self;
-
-    setattachment(self.owner,world,"");
-
-	makevectors(self.angles);
-	if(eject)
-	{
-	    setorigin(self.owner,self.origin + v_forward * 100 + '0 0 64');
-	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
-	}
-	else
-        setorigin(self.owner,self.origin - v_forward * 200 + '0 0 64');
-
-    self.owner = world;
-}
-
-void spiderbot_touch()
-{
-    if(self.owner)
-    {
-        if(vlen(self.velocity) == 0)
-            return;
-
-        if(other.classname != "player")
-            return;
-
-        //todo: add check for velocity here (so we dont cush players runing onto us from behind)
-
-        Damage(other,self,self.owner,cvar("g_vehicle_spiderbot_crush_dmg"),DEATH_TURRET,'0 0 0', normalize(other.origin - self.origin) * cvar("g_vehicle_spiderbot_crush_force") );
-        return;
-    }
-
-    if(other.classname != "player")
-        return;
-
-    if(other.deadflag != DEAD_NO)
-        return;
-
-    if(other.vehicle != world)
-        return;
-
-    spiderbot_enter();
-}
-
-float spiderbot_customizeentityforclient()
-{
-    if(self.deadflag == DEAD_DEAD)
-        return FALSE;
-
-    return TRUE;
-}
-
-//void spiderbot_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
-void spiderbot_spawn()
-{
-    self.think = spiderbot_think;
-    self.nextthink = time;
-
-    self.vehicle_health = CCVAR("_health");
-    self.vehicle_shield = CCVAR("_shield");
-    self.event_damage = vehicle_stdproc_damage;
-    self.iscreature = TRUE;
-    self.movetype   = MOVETYPE_WALK;
-    self.solid      = SOLID_SLIDEBOX;
-    self.takedamage = DAMAGE_AIM;
-    self.touch      = spiderbot_touch;
-    self.alpha      = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1;
-    self.tur_head.angles = '0 0 0';
-	self.colormap = 1024;
-	self.tur_head.colormap = 1024;
-	self.deadflag    = DEAD_NO;
-    self.bot_attack = TRUE;
-
-    setsize(self,spiderbot_MIN,spiderbot_MAX);
-    setorigin(self,self.tur_aimpos);
-    pointparticles(particleeffectnum("teleport"), self.origin + '0 0 64', '0 0 0', 1);
-}
-
-void spiderbot_blowup()
-{
-    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-    pointparticles(particleeffectnum("rocket_explode"), findbetterlocation (self.origin, 16), '0 0 0', 1);
-
-    RadiusDamage (self, self, 250, 15, 250, world, 250, DEATH_TURRET, world);
-
-    self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = -1;
-    self.nextthink  = time + 10;
-    self.think      = spiderbot_spawn;
-
-    setorigin(self,self.tur_aimpos);
-}
-
-void spiderbot_die()
-{
-
-    self.health = 0;
-    self.event_damage = SUB_Null;
-    self.iscreature = FALSE;
-    self.solid      = SOLID_NOT;
-    self.takedamage = DAMAGE_NO;
-    self.touch      = SUB_Null;
-    self.nextthink  = time + random() * 2;
-    self.think      = spiderbot_blowup;
-    self.deadflag    = DEAD_DEAD;
-	self.vehicle_hudmodel.viewmodelforclient = self;
-	self.frame = 0;
-	self.tur_head.frame = 0;
-
-}
-
-void vewhicle_spiderbot_dinit()
-{
-
-    server_fps = (1 / sys_ticrate);
-
-    addstat(STAT_HUD, AS_INT,  hud);
-	addstat(STAT_SPIDERBOT_ROCKETS, AS_INT,   rockets);
-	addstat(STAT_SPIDERBOT_RELOAD,  AS_FLOAT, rockets_reload);
-	addstat(STAT_SPIDERBOT_HEAT,    AS_FLOAT, vehicle_heat);
-	addstat(STAT_SPIDERBOT_HEALTH,  AS_FLOAT, vehicle_health);
-	addstat(STAT_SPIDERBOT_SHIELD,  AS_FLOAT, vehicle_shield);
-
-    if (self.netname == "")      self.netname     = "spiderbot";
-
-    self.tur_head = spawn();
-    self.gun1 = spawn();
-    self.gun2 = spawn();
-    self.vehicle_viewport = spawn();
-    self.gravity = 2;
-    self.vehicle_hudmodel = spawn();
-    self.vehicle_flags = VHF_HASSHIELD | VHF_SHIELDREGEN | VHF_HEALTHREGEN;
-    self.cvar_basename = "g_vehicle_spiderbot";
-
-    setmodel (self.vehicle_hudmodel, "models/spiderbot/cp.md3");
-    setmodel (self.vehicle_viewport, "models/null.md3");
-    setmodel(self,"models/spiderbot/spiderbot.dpm");
-    setmodel(self.tur_head,"models/spiderbot/spiderbot_top.dpm");
-    setmodel(self.gun1,"models/spiderbot/spiderbot_barrels.dpm");
-    setmodel(self.gun2,"models/spiderbot/spiderbot_barrels.dpm");
-
-    setattachment(self.tur_head,self,"tag_head");
-    setattachment(self.vehicle_hudmodel,self.tur_head,"");
-    setattachment(self.vehicle_viewport,self.vehicle_hudmodel,"");
-    setattachment(self.gun1,self.tur_head,"tag_hardpoint01");
-    setattachment(self.gun2,self.tur_head,"tag_hardpoint02");
-
-    self.tur_head.owner = self;
-    self.customizeentityforclient          = spiderbot_customizeentityforclient;
-
-    setorigin(self.vehicle_viewport,'35 0 -14');
-    self.tur_aimpos = self.origin;
-    spiderbot_spawn();
-
-    self.vehicle_die = spiderbot_die;
-    self.vehicle_exit = spiderbot_exit;
-}
-
-void spawnfunc_vehicle_spiderbot()
-{
-    // g_turrets_common_precash();
-
-    precache_model ( "models/spiderbot/cr.md3");
-    precache_model ( "models/vhshield.md3");
-    precache_model ( "models/spiderbot/cp.md3");
-    precache_model ( "models/spiderbot/spiderbot.dpm");
-    precache_model ( "models/spiderbot/spiderbot_top.dpm");
-    precache_model ( "models/spiderbot/spiderbot_barrels.dpm");
-
-    precache_model ( "models/turrets/rocket.md3");
-    precache_sound ( "weapons/rocket_impact.wav" );
-
-    self.team                = -1;
-    self.think = vewhicle_spiderbot_dinit;
-    self.nextthink = time + 0.5;
-}
+		setmodel(self,"");
+		return;
+	}
+
+	self.frame = self.frame + 2;
+	self.alpha = self.alpha - 0.2;
+	self.nextthink = time + 0.02;
+}
+
+void spiderbot_minigun_fire(entity gun,float trail)
+{
+
+    entity flash;
+    vector v;
+    v = gettaginfo(gun,gettagindex(gun,"barrels"));
+    v_forward = normalize(v_forward);
+
+    sound (gun, CHAN_WEAPON, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM);
+
+    fireBullet (v, v_forward, cvar("g_vehicle_spiderbot_minigun_spread"), cvar("g_vehicle_spiderbot_minigun_damage"),
+        cvar("g_vehicle_spiderbot_minigun_spread"), DEATH_TURRET, 0);
+
+    if not (gun.enemy)
+    {
+        gun.enemy = spawn();
+        setattachment(gun.enemy , gun, "barrels");
+        setorigin(gun.enemy ,gun.enemy.origin + '48 0 0');
+    }
+
+    flash = gun.enemy; //spawn();
+    setmodel(flash, "models/uziflash.md3"); // precision set below
+    flash.think = spiderbot_minigun_fire_Flash_Go;
+    flash.nextthink = time + 0.02;
+    flash.frame = 2;
+    flash.angles_z = flash.v_angle_z + random() * 180;
+    flash.alpha = 1;
+    flash.effects = EF_ADDITIVE | EF_FULLBRIGHT | EF_LOWPRECISION;
+    if(trail)
+        trailparticles(self, particleeffectnum("EF_MGTURRETTRAIL"), v, trace_endpos);
+}
+
+void spiderbot_miniguns_do()
+{
+    if ((self.owner.BUTTON_ATCK) && (self.owner.vehicle_heat < 1) && (self.tur_head.attack_finished_single < time))
+    {
+
+        self.gun1.angles_z += 36;
+        self.gun2.angles_z -= 36;
+        if(self.gun1.angles_z >= 360)
+        {
+            self.gun1.angles_z = 0;
+            self.gun2.angles_z = 360;
+        }
+
+        self = self.owner;
+        if(self.uzi_bulletcounter == 1)
+        {
+            spiderbot_minigun_fire(self.vehicle.gun1,0);
+            spiderbot_minigun_fire(self.vehicle.gun2,1);
+            self.uzi_bulletcounter = 0;
+        }
+        else
+        {
+            spiderbot_minigun_fire(self.vehicle.gun1,1);
+            spiderbot_minigun_fire(self.vehicle.gun2,0);
+            self.uzi_bulletcounter += 1;
+        }
+
+        self = self.vehicle;
+        self.owner.vehicle_heat += cvar("g_vehicle_spiderbot_minigun_heat");
+        if(self.owner.vehicle_heat >= 1)
+        {
+            self.vehicle_heat = 1;
+            self.owner.vehicle_heat = 1;
+            self.tur_head.attack_finished_single = (1/(cvar("g_vehicle_spiderbot_minigun_cooldown") * server_fps))+time;
+        }
+        else
+            self.tur_head.attack_finished_single = cvar("g_vehicle_spiderbot_minigun_refire") + time;
+
+        return;
+    }
+    else
+        if(self.vehicle_heat != 0)
+        {
+            self.vehicle_heat = max(self.vehicle_heat - cvar("g_vehicle_spiderbot_minigun_cooldown"),0);
+            if(self.tur_head.attack_finished_single < time)
+            {
+                self.vehicle_heat = 0;
+                self.owner.vehicle_heat = 0;
+            }
+            else
+            {
+                if(self.tur_head.uzi_bulletcounter < time)
+                {
+                    self.tur_head.uzi_bulletcounter = time + 0.2;
+                    self.owner.vehicle_heat  = self.vehicle_heat;
+                }
+                else
+                    self.owner.vehicle_heat = 1;
+            }
+        }
+        else
+            self.owner.vehicle_heat = max(self.owner.vehicle_heat - cvar("g_vehicle_spiderbot_minigun_cooldown"),0);
+
+}
+
+float spiderbot_pplug()
+{
+    vector ad;
+    entity player,spider;
+    float ftmp,ftmp2;
+
+    player = self;
+    spider = self.vehicle;
+
+/*
+	self.BUTTON_ATCK = 0;
+	self.button1 = 0;
+	self.BUTTON_JUMP = 0;
+	self.BUTTON_ATCK2 = 0;
+
+
+	self.BUTTON_HOOK = 0;
+	self.BUTTON_INFO = 0;
+	self.button8 = 0;
+	self.BUTTON_CHAT = 0;
+	self.BUTTON_USE = 0;
+*/
+
+    player.BUTTON_ZOOM = 0;
+    player.BUTTON_CROUCH = 0;
+
+
+    if(player.BUTTON_USE)
+    {
+        self = spider;
+        spiderbot_exit(0);
+        self = player;
+        return 0;
+    }
+
+    player.exteriormodeltoclient = spider.tur_head;
+
+    spider.tur_head.angles_x *= -1;
+    spider.angles_x *= -1;
+    //player.angles_x *= -1;
+    makevectors(spider.angles);
+
+    //ad = player.v_angle - (spider.tur_head.angles + spider.angles);
+    ad = player.v_angle -  (spider.tur_head.angles + spider.angles);
+
+    // Rotate head
+    ftmp = cvar("g_vehicle_spiderbot_head_turnspeed") / server_fps;
+    ftmp2 = ftmp * -1;
+    spider.tur_head.angles_y += bound(ftmp2,shortangle_f(ad_y,spider.tur_head.angles_y),ftmp);
+    spider.tur_head.angles_y = bound(cvar("g_vehicle_spiderbot_head_turnlimit") * -1,spider.tur_head.angles_y,cvar("g_vehicle_spiderbot_head_turnlimit"));
+
+    // Pitch head
+    ftmp = cvar("g_vehicle_spiderbot_head_pitchspeed") / server_fps;
+    ftmp2 = ftmp * -1;
+    spider.tur_head.angles_x += bound(ftmp2,shortangle_f(ad_x,spider.tur_head.angles_x),ftmp);
+    spider.tur_head.angles_x = bound(cvar("g_vehicle_spiderbot_head_pitchlimit_down"),spider.tur_head.angles_x,cvar("g_vehicle_spiderbot_head_pitchlimit_up"));
+
+    spider.tur_head.angles_x *= -1;
+    spider.angles_x *= -1;
+    //player.angles_x *= -1;
+
+    // Turn Body
+    ftmp = cvar("g_vehicle_spiderbot_turnspeed") / server_fps;
+    ftmp2 = ftmp * -1;
+    ftmp = bound(ftmp2,spider.tur_head.angles_y,ftmp);
+
+    self = spider;
+    if(spider.flags & FL_ONGROUND)
+    {
+        if(player.BUTTON_JUMP)
+        {
+            player.BUTTON_JUMP = 0;
+            spider.anim_start = MODEL_SPIDERBOT_JUMP_START;
+            spider.anim_end   = MODEL_SPIDERBOT_JUMP_END;
+            spider.velocity   = v_forward * 700 + v_up * 600;
+        }
+        else
+        {
+            if(vlen(player.movement) == 0)
+            {
+                movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
+                spider.anim_start = 0;
+                spider.anim_end = 0;
+            }
+            else
+            {
+                spider.angles_y = safeangle(spider.angles_y + ftmp);
+                spider.tur_head.angles_y -= ftmp;
+
+                if(player.movement_x != 0)
+                {
+                    if(player.movement_x > 0)
+                    {
+                        player.movement_x = 1;
+                        spider.anim_start = MODEL_SPIDERBOT_FORWARD_START;
+                        spider.anim_end   = MODEL_SPIDERBOT_FORWARD_END;
+                    }
+                    else if(player.movement_x < 0)
+                    {
+                        player.movement_x = -1;
+                        spider.anim_start = MODEL_SPIDERBOT_BACKWARDS_START;
+                        spider.anim_end   = MODEL_SPIDERBOT_BACKWARDS_END;
+
+                    }
+                    player.movement_y = 0;
+                    movelib_move_simple(normalize(v_forward * player.movement_x),cvar("g_vehicle_spiderbot_speed_walk"),cvar("g_vehicle_spiderbot_movement_inertia"));
+                }
+                else if(player.movement_y != 0)
+                {
+                    if(player.movement_y < 0)
+                    {
+                        player.movement_y = -1;
+                        spider.anim_start = MODEL_SPIDERBOT_LEFT_START;
+                        spider.anim_end   = MODEL_SPIDERBOT_LEFT_END;
+                    }
+                    else if(player.movement_y > 0)
+                    {
+                        player.movement_y = 1;
+                        spider.anim_start = MODEL_SPIDERBOT_RIGHT_START;
+                        spider.anim_end   = MODEL_SPIDERBOT_RIGHT_END;
+                    }
+                    movelib_move_simple(normalize(v_right * player.movement_y),cvar("g_vehicle_spiderbot_speed_strafe"),cvar("g_vehicle_spiderbot_movement_inertia"));
+                }
+
+            }
+        }
+        movelib_groundalign4point(300,100,0.25);
+    }
+
+    anim_do();
+    spiderbot_miniguns_do();
+    spiderbot_rocket_do();
+    vehicle_stdproc_regen();
+
+    player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
+    player.rockets = spider.tur_head.frame;
+
+    if(spider.gun2.cnt <= time)
+        player.rockets_reload = 1;
+    else
+        player.rockets_reload = 1 - ((spider.gun2.cnt - time) /spider.attack_finished_single);
+
+    self = player;
+
+    setorigin(player,spider.origin + '0 0 64');
+    player.velocity = spider.velocity;
+
+    return 1;
+}
+
+void spiderbot_think()
+{
+    if(self.flags & FL_ONGROUND)
+    {
+        movelib_beak_simple(cvar("g_vehicle_spiderbot_speed_stop"));
+        //movelib_groundalign4point(300,100);
+    }
+
+    self.nextthink = time;
+}
+
+void spiderbot_enter()
+{
+    self.owner = other;
+
+    self.event_damage         = vehicle_stdproc_damage ;
+    self.colormap             = self.owner.colormap;
+    self.tur_head.colormap    = self.owner.colormap;
+    self.vehicle_hudmodel.viewmodelforclient = self.owner;
+    self.nextthink = 0;
+    self.owner.angles         = self.angles;
+    self.owner.takedamage     = DAMAGE_NO;
+    self.owner.solid          = SOLID_NOT;
+    self.owner.movetype       = MOVETYPE_NOCLIP;
+    self.owner.alpha          = -1;
+    self.owner.PlayerPhysplug = spiderbot_pplug;
+    self.owner.vehicle        = self;
+    self.owner.event_damage   = SUB_Null;
+    self.owner.hud            = HUD_SPIDEBOT;
+    self.owner.vehicle_health = (self.vehicle_health / cvar("g_vehicle_spiderbot_health"));
+    self.owner.vehicle_shield = (self.vehicle_shield / cvar("g_vehicle_spiderbot_shield"));
+    self.team                   = self.owner.team;
+
+    //setorigin(self.owner,self.origin);
+    //setattachment(self.owner,self,"");
+    //setorigin(self.owner,'0 0 0');
+
+    msg_entity = other;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.vehicle_viewport);
+
+    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
+    WriteAngle(MSG_ONE, self.tur_head.angles_x + self.angles_x);    // tilt
+    WriteAngle(MSG_ONE, self.tur_head.angles_y + self.angles_y);    // yaw
+    WriteAngle(MSG_ONE, 0);    // roll
+    //WriteAngle(MSG_ONE, self.tur_head.angles_z + self.angles_z);    // roll
+
+    //self.owner.view_ofs = '0 0 0';
+    //self.tur_head.nodrawtoclient = self.owner;
+}
+
+void spiderbot_exit(float eject)
+{
+    entity e;
+
+    e = findchain(classname,"spiderbot_rocket");
+    while(e)
+    {
+        if(e.owner == self.owner)
+        {
+            e.realowner = self.owner;
+            e.owner = world;
+            //e.solid = SOLID_BBOX;
+            //e.think = SUB_Null;
+            //e.nextthink = -1;
+        }
+        e = e.chain;
+    }
+
+    self.velocity = '0 0 0';
+
+    msg_entity = self.owner;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.owner);
+
+    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);  // 10 = SVC_SETVIEWANGLES
+    WriteAngle(MSG_ONE, 0);    // tilt
+    WriteAngle(MSG_ONE, self.angles_y);    // yaw
+    WriteAngle(MSG_ONE, 0);    // roll
+
+    //setattachment(self.owner,world,"");
+    self.think = spiderbot_think;
+    self.nextthink = time;
+    self.owner.takedamage     = DAMAGE_AIM;
+    self.owner.solid          = SOLID_SLIDEBOX;
+    self.owner.movetype       = MOVETYPE_WALK;
+
+    setsize(self.owner,PL_MIN,PL_MAX);
+
+    self.owner.alpha          = 1;
+    self.owner.PlayerPhysplug = SUB_Null;
+    self.owner.vehicle        = world;
+	self.owner.view_ofs       = PL_VIEW_OFS;
+	self.owner.hud            = HUD_NORMAL;
+	self.owner.event_damage   = PlayerDamage;
+
+	self.colormap            = 1024;
+	self.tur_head.colormap   = 1024;
+    self.team                = -1;
+
+	self.vehicle_hudmodel.viewmodelforclient = self;
+	self.tur_head.nodrawtoclient             = self;
+
+    setattachment(self.owner,world,"");
+
+	makevectors(self.angles);
+	if(eject)
+	{
+	    setorigin(self.owner,self.origin + v_forward * 100 + '0 0 64');
+	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
+	}
+	else
+        setorigin(self.owner,self.origin - v_forward * 200 + '0 0 64');
+
+    self.owner = world;
+}
+
+void spiderbot_touch()
+{
+    if(self.owner)
+    {
+        if(vlen(self.velocity) == 0)
+            return;
+
+        if(other.classname != "player")
+            return;
+
+        //todo: add check for velocity here (so we dont cush players runing onto us from behind)
+
+        Damage(other,self,self.owner,cvar("g_vehicle_spiderbot_crush_dmg"),DEATH_TURRET,'0 0 0', normalize(other.origin - self.origin) * cvar("g_vehicle_spiderbot_crush_force") );
+        return;
+    }
+
+    if(other.classname != "player")
+        return;
+
+    if(other.deadflag != DEAD_NO)
+        return;
+
+    if(other.vehicle != world)
+        return;
+
+    spiderbot_enter();
+}
+
+float spiderbot_customizeentityforclient()
+{
+    if(self.deadflag == DEAD_DEAD)
+        return FALSE;
+
+    return TRUE;
+}
+
+//void spiderbot_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
+void spiderbot_spawn()
+{
+    self.think = spiderbot_think;
+    self.nextthink = time;
+
+    self.vehicle_health = CCVAR("_health");
+    self.vehicle_shield = CCVAR("_shield");
+    self.event_damage = vehicle_stdproc_damage;
+    self.iscreature = TRUE;
+    self.movetype   = MOVETYPE_WALK;
+    self.solid      = SOLID_SLIDEBOX;
+    self.takedamage = DAMAGE_AIM;
+    self.touch      = spiderbot_touch;
+    self.alpha      = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1;
+    self.tur_head.angles = '0 0 0';
+	self.colormap = 1024;
+	self.tur_head.colormap = 1024;
+	self.deadflag    = DEAD_NO;
+    self.bot_attack = TRUE;
+
+    setsize(self,spiderbot_MIN,spiderbot_MAX);
+    setorigin(self,self.tur_aimpos);
+    pointparticles(particleeffectnum("teleport"), self.origin + '0 0 64', '0 0 0', 1);
+}
+
+void spiderbot_blowup()
+{
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+    pointparticles(particleeffectnum("rocket_explode"), findbetterlocation (self.origin, 16), '0 0 0', 1);
+
+    RadiusDamage (self, self, 250, 15, 250, world, 250, DEATH_TURRET, world);
+
+    self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = -1;
+    self.nextthink  = time + 10;
+    self.think      = spiderbot_spawn;
+
+    setorigin(self,self.tur_aimpos);
+}
+
+void spiderbot_die()
+{
+
+    self.health = 0;
+    self.event_damage = SUB_Null;
+    self.iscreature = FALSE;
+    self.solid      = SOLID_NOT;
+    self.takedamage = DAMAGE_NO;
+    self.touch      = SUB_Null;
+    self.nextthink  = time + random() * 2;
+    self.think      = spiderbot_blowup;
+    self.deadflag    = DEAD_DEAD;
+	self.vehicle_hudmodel.viewmodelforclient = self;
+	self.frame = 0;
+	self.tur_head.frame = 0;
+
+}
+
+void vewhicle_spiderbot_dinit()
+{
+
+    server_fps = (1 / sys_ticrate);
+
+    addstat(STAT_HUD, AS_INT,  hud);
+	addstat(STAT_SPIDERBOT_ROCKETS, AS_INT,   rockets);
+	addstat(STAT_SPIDERBOT_RELOAD,  AS_FLOAT, rockets_reload);
+	addstat(STAT_SPIDERBOT_HEAT,    AS_FLOAT, vehicle_heat);
+	addstat(STAT_SPIDERBOT_HEALTH,  AS_FLOAT, vehicle_health);
+	addstat(STAT_SPIDERBOT_SHIELD,  AS_FLOAT, vehicle_shield);
+
+    if (self.netname == "")      self.netname     = "spiderbot";
+
+    self.tur_head = spawn();
+    self.gun1 = spawn();
+    self.gun2 = spawn();
+    self.vehicle_viewport = spawn();
+    self.gravity = 2;
+    self.vehicle_hudmodel = spawn();
+    self.vehicle_flags = VHF_HASSHIELD | VHF_SHIELDREGEN | VHF_HEALTHREGEN;
+    self.cvar_basename = "g_vehicle_spiderbot";
+
+    setmodel (self.vehicle_hudmodel, "models/spiderbot/cp.md3");
+    setmodel (self.vehicle_viewport, "models/null.md3");
+    setmodel(self,"models/spiderbot/spiderbot.dpm");
+    setmodel(self.tur_head,"models/spiderbot/spiderbot_top.dpm");
+    setmodel(self.gun1,"models/spiderbot/spiderbot_barrels.dpm");
+    setmodel(self.gun2,"models/spiderbot/spiderbot_barrels.dpm");
+
+    setattachment(self.tur_head,self,"tag_head");
+    setattachment(self.vehicle_hudmodel,self.tur_head,"");
+    setattachment(self.vehicle_viewport,self.vehicle_hudmodel,"");
+    setattachment(self.gun1,self.tur_head,"tag_hardpoint01");
+    setattachment(self.gun2,self.tur_head,"tag_hardpoint02");
+
+    self.tur_head.owner = self;
+    self.customizeentityforclient          = spiderbot_customizeentityforclient;
+
+    setorigin(self.vehicle_viewport,'35 0 -14');
+    self.tur_aimpos = self.origin;
+    spiderbot_spawn();
+
+    self.vehicle_die = spiderbot_die;
+    self.vehicle_exit = spiderbot_exit;
+}
+
+void spawnfunc_vehicle_spiderbot()
+{
+    // g_turrets_common_precash();
+
+    precache_model ( "models/spiderbot/cr.md3");
+    precache_model ( "models/vhshield.md3");
+    precache_model ( "models/spiderbot/cp.md3");
+    precache_model ( "models/spiderbot/spiderbot.dpm");
+    precache_model ( "models/spiderbot/spiderbot_top.dpm");
+    precache_model ( "models/spiderbot/spiderbot_barrels.dpm");
+
+    precache_model ( "models/turrets/rocket.md3");
+    precache_sound ( "weapons/rocket_impact.wav" );
+
+    self.team                = -1;
+    self.think = vewhicle_spiderbot_dinit;
+    self.nextthink = time + 0.5;
+}


Property changes on: trunk/data/qcsrc/server/vehicles/spiderbot.qc
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/data/qcsrc/server/vehicles/vehicles.qc
===================================================================
--- trunk/data/qcsrc/server/vehicles/vehicles.qc	2009-06-30 14:36:36 UTC (rev 7131)
+++ trunk/data/qcsrc/server/vehicles/vehicles.qc	2009-06-30 14:41:34 UTC (rev 7132)
@@ -1,183 +1,183 @@
-void vehicle_stdproc_enter()
-{
-    self.owner = other;
-
-    msg_entity = other;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.vehicle_viewport);
-
-    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);
-    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_x + self.angles_x);    // tilt
-    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_y + self.angles_y);    // yaw
-    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_z + self.angles_z);    // flip
-
-    //setattachment(other,self,"");
-    self.nextthink = 0;
-    self.owner.takedamage     = DAMAGE_NO;
-    self.owner.solid          = SOLID_NOT;
-    self.owner.alpha          = -1;
-    //self.owner.PlayerPhysplug = spiderbot_pplug;
-    self.owner.vehicle           = self;
-    self.owner.event_damage   = SUB_Null;
-    self.owner.vehicle_health             = (self.health / cvar("g_vehicle_spiderbot_health"));
-    self.owner.hud            = HUD_SPIDEBOT;
-    self.colormap             = self.owner.colormap;
-    self.tur_head.colormap    = self.owner.colormap;
-    self.vehicle_hudmodel.viewmodelforclient   = self.owner;
-    //self.tur_head.nodrawtoclient = self.owner;
-
-
-}
-
-void vehicle_stdproc_exit(float eject)
-{
-    self.velocity = '0 0 0';
-
-    msg_entity = self.owner;
-    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
-    WriteEntity( MSG_ONE, self.owner);
-
-    //setattachment(self.owner,world,"");
-    //self.think = spiderbot_think;
-    //self.nextthink = time;
-
-    self.owner.takedamage     = DAMAGE_AIM;
-    self.owner.solid          = SOLID_SLIDEBOX;
-    self.owner.alpha          = 1;
-    self.owner.PlayerPhysplug = SUB_Null;
-    self.owner.vehicle        = world;
-	self.owner.view_ofs       = PL_VIEW_OFS;
-	self.owner.hud            = HUD_NORMAL;
-	self.owner.event_damage   = PlayerDamage;
-	self.colormap = 1024;
-	self.tur_head.colormap = 1024;
-	self.vehicle_hudmodel.viewmodelforclient   = self;
-	//self.tur_head.nodrawtoclient = self;
-
-	if(eject)
-	{
-	    makevectors(self.angles);
-	    setorigin(self.owner,self.origin + v_forward * 100);
-	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
-	}
-	else
-        setorigin(self.owner,self.origin - v_forward * 200);
-
-    self.owner = world;
-}
-
-void vehicle_stdproc_regen()
-{
-    float smax,hmax;
-
-    smax = CCVAR("_shield");
-    hmax = CCVAR("_health");
-
-    if(self.vehicle_flags & VHF_HASSHIELD)
-    if(self.vehicle_flags & VHF_SHIELDREGEN)
-    if(self.vehicle_shield < smax)
-    if(self.dmg_time + CCVAR("_shield_regen_dmgpause") < time)
-    {
-        self.vehicle_shield = min(self.vehicle_shield + CCVAR("_shield_regen") / server_fps,smax);
-
-        if(self.owner)
-            self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
-    }
-
-    if(self.vehicle_flags & VHF_HEALTHREGEN)
-    if(self.dmg_time + CCVAR("_health_regen_dmgpause") < time)
-    if(self.vehicle_health < hmax)
-    {
-        self.vehicle_health = min(self.vehicle_health + CCVAR("_health_regen") / server_fps,hmax);
-
-        if(self.owner)
-            self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
-    }
-}
-
-void shieldhit_think()
-{
-    self.alpha = self.alpha - 0.125;
-    if not(self.alpha <= 0)
-    {
-        self.nextthink = time;
-    }
+void vehicle_stdproc_enter()
+{
+    self.owner = other;
+
+    msg_entity = other;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.vehicle_viewport);
+
+    WriteByte (MSG_ONE, SVC_SETVIEWANGLES);
+    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_x + self.angles_x);    // tilt
+    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_y + self.angles_y);    // yaw
+    WriteAngle(MSG_ONE, self.vehicle_viewport.angles_z + self.angles_z);    // flip
+
+    //setattachment(other,self,"");
+    self.nextthink = 0;
+    self.owner.takedamage     = DAMAGE_NO;
+    self.owner.solid          = SOLID_NOT;
+    self.owner.alpha          = -1;
+    //self.owner.PlayerPhysplug = spiderbot_pplug;
+    self.owner.vehicle           = self;
+    self.owner.event_damage   = SUB_Null;
+    self.owner.vehicle_health             = (self.health / cvar("g_vehicle_spiderbot_health"));
+    self.owner.hud            = HUD_SPIDEBOT;
+    self.colormap             = self.owner.colormap;
+    self.tur_head.colormap    = self.owner.colormap;
+    self.vehicle_hudmodel.viewmodelforclient   = self.owner;
+    //self.tur_head.nodrawtoclient = self.owner;
+
+
+}
+
+void vehicle_stdproc_exit(float eject)
+{
+    self.velocity = '0 0 0';
+
+    msg_entity = self.owner;
+    WriteByte (MSG_ONE, SVC_SETVIEWPORT);
+    WriteEntity( MSG_ONE, self.owner);
+
+    //setattachment(self.owner,world,"");
+    //self.think = spiderbot_think;
+    //self.nextthink = time;
+
+    self.owner.takedamage     = DAMAGE_AIM;
+    self.owner.solid          = SOLID_SLIDEBOX;
+    self.owner.alpha          = 1;
+    self.owner.PlayerPhysplug = SUB_Null;
+    self.owner.vehicle        = world;
+	self.owner.view_ofs       = PL_VIEW_OFS;
+	self.owner.hud            = HUD_NORMAL;
+	self.owner.event_damage   = PlayerDamage;
+	self.colormap = 1024;
+	self.tur_head.colormap = 1024;
+	self.vehicle_hudmodel.viewmodelforclient   = self;
+	//self.tur_head.nodrawtoclient = self;
+
+	if(eject)
+	{
+	    makevectors(self.angles);
+	    setorigin(self.owner,self.origin + v_forward * 100);
+	    self.owner.velocity = (v_up + v_forward * 0.25) * 750;
+	}
+	else
+        setorigin(self.owner,self.origin - v_forward * 200);
+
+    self.owner = world;
+}
+
+void vehicle_stdproc_regen()
+{
+    float smax,hmax;
+
+    smax = CCVAR("_shield");
+    hmax = CCVAR("_health");
+
+    if(self.vehicle_flags & VHF_HASSHIELD)
+    if(self.vehicle_flags & VHF_SHIELDREGEN)
+    if(self.vehicle_shield < smax)
+    if(self.dmg_time + CCVAR("_shield_regen_dmgpause") < time)
+    {
+        self.vehicle_shield = min(self.vehicle_shield + CCVAR("_shield_regen") / server_fps,smax);
+
+        if(self.owner)
+            self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
+    }
+
+    if(self.vehicle_flags & VHF_HEALTHREGEN)
+    if(self.dmg_time + CCVAR("_health_regen_dmgpause") < time)
+    if(self.vehicle_health < hmax)
+    {
+        self.vehicle_health = min(self.vehicle_health + CCVAR("_health_regen") / server_fps,hmax);
+
+        if(self.owner)
+            self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
+    }
+}
+
+void shieldhit_think()
+{
+    self.alpha = self.alpha - 0.125;
+    if not(self.alpha <= 0)
+    {
+        self.nextthink = time;
+    }
     else
     {
-        setmodel(self,"");
-        self.alpha = -1;
-    }
-    //self.think = SUB_Remove;
-}
-
-void vehicle_stdproc_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
-
-    float ddmg_take;
-
-    self.dmg_time = time;
-
-    if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0))
-    {
-        if not (self.tur_head.enemy)
-            self.tur_head.enemy = spawn();
-
-        entity sh;
-
-        sh = self.tur_head.enemy;
-        sh.colormod = '1 1 1';
-        sh.alpha = 0.5;
-        sh.scale  = (128 / vlen(self.maxs - self.mins))*2;
-        //sh.scale = 1.25;
-
-        sh.effects = EF_LOWPRECISION;
-        sh.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles;
-
-        setmodel(sh,"models/vhshield.md3");
-        setattachment(sh,self,"");
-        sh.think = shieldhit_think;
-        sh.nextthink = time;
-
-
-        self.vehicle_shield -= damage;
-        if(self.vehicle_shield < 0)
-        {
-            sh.colormod = '10 0 -1';
-            ddmg_take = fabs(self.vehicle_shield);
-            self.vehicle_shield = 0;
-
-            self.vehicle_health -= ddmg_take;
-        }
-    }
-    else
-        self.vehicle_health -= damage;
-
-
-    if(self.owner)
-    {
-        self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
-
-        if(self.vehicle_flags & VHF_HASSHIELD)
-            self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
-
-    }
-
-    if(self.vehicle_health <= 0)
-    {
-        if(self.owner)
-            self.vehicle_exit(VHEF_EJECT);
-
-        self.vehicle_die();
-    }
-
-
-}
-
-void bugmenot()
-{
-    self.vehicle_exit       = self.vehicle_exit;
-    self.vehicle_enter      = self.vehicle_exit;
-    self.vehicle_die        = self.vehicle_exit;
-    self.vehicle_spawn      = self.vehicle_exit;
-    self.vehicle_message    = self.vehicle_exit;
-}
+        setmodel(self,"");
+        self.alpha = -1;
+    }
+    //self.think = SUB_Remove;
+}
+
+void vehicle_stdproc_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
+{
+
+    float ddmg_take;
+
+    self.dmg_time = time;
+
+    if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0))
+    {
+        if not (self.tur_head.enemy)
+            self.tur_head.enemy = spawn();
+
+        entity sh;
+
+        sh = self.tur_head.enemy;
+        sh.colormod = '1 1 1';
+        sh.alpha = 0.5;
+        sh.scale  = (128 / vlen(self.maxs - self.mins))*2;
+        //sh.scale = 1.25;
+
+        sh.effects = EF_LOWPRECISION;
+        sh.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles;
+
+        setmodel(sh,"models/vhshield.md3");
+        setattachment(sh,self,"");
+        sh.think = shieldhit_think;
+        sh.nextthink = time;
+
+
+        self.vehicle_shield -= damage;
+        if(self.vehicle_shield < 0)
+        {
+            sh.colormod = '10 0 -1';
+            ddmg_take = fabs(self.vehicle_shield);
+            self.vehicle_shield = 0;
+
+            self.vehicle_health -= ddmg_take;
+        }
+    }
+    else
+        self.vehicle_health -= damage;
+
+
+    if(self.owner)
+    {
+        self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
+
+        if(self.vehicle_flags & VHF_HASSHIELD)
+            self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
+
+    }
+
+    if(self.vehicle_health <= 0)
+    {
+        if(self.owner)
+            self.vehicle_exit(VHEF_EJECT);
+
+        self.vehicle_die();
+    }
+
+
+}
+
+void bugmenot()
+{
+    self.vehicle_exit       = self.vehicle_exit;
+    self.vehicle_enter      = self.vehicle_exit;
+    self.vehicle_die        = self.vehicle_exit;
+    self.vehicle_spawn      = self.vehicle_exit;
+    self.vehicle_message    = self.vehicle_exit;
+}


Property changes on: trunk/data/qcsrc/server/vehicles/vehicles.qc
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the nexuiz-commits mailing list