r5581 - in trunk/data/qcsrc: client common server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Jan 16 16:11:12 EST 2009


Author: div0
Date: 2009-01-16 16:11:07 -0500 (Fri, 16 Jan 2009)
New Revision: 5581

Modified:
   trunk/data/qcsrc/client/csqc_constants.qc
   trunk/data/qcsrc/client/interpolate.qh
   trunk/data/qcsrc/client/projectile.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/csqcprojectile.qc
   trunk/data/qcsrc/server/w_porto.qc
   trunk/data/qcsrc/server/w_seeker.qc
Log:
make porto and seeker use csqc projectiles completely


Modified: trunk/data/qcsrc/client/csqc_constants.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_constants.qc	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/csqc_constants.qc	2009-01-16 21:11:07 UTC (rev 5581)
@@ -187,3 +187,5 @@
 
 float CAMERA_FREE = 1;
 float CAMERA_CHASE = 2;
+
+float EF_NOMODELFLAGS = 8388608;

Modified: trunk/data/qcsrc/client/interpolate.qh
===================================================================
--- trunk/data/qcsrc/client/interpolate.qh	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/interpolate.qh	2009-01-16 21:11:07 UTC (rev 5581)
@@ -4,6 +4,7 @@
 #define IFLAG_AUTOANGLES 4
 #define IFLAG_VALID 8
 #define IFLAG_PREVALID 16
+#define IFLAG_INTERNALMASK (IFLAG_VALID | IFLAG_PREVALID)
 
 // call this BEFORE reading an entity update
 void InterpolateOrigin_Undo();

Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/projectile.qc	2009-01-16 21:11:07 UTC (rev 5581)
@@ -40,13 +40,27 @@
 			if(!(self.move_flags & FL_ONGROUND))
 				self.angles += '100 150 100' * time;
 			break;
+		case PROJECTILE_PORTO_RED:
+			// TODO add red dynamic light
+			trailparticles(self, particleeffectnum("TR_WIZSPIKE"), oldorg, self.origin);
+			break;
+		case PROJECTILE_PORTO_BLUE:
+			// TODO add blue dynamic light
+			trailparticles(self, particleeffectnum("TR_WIZSPIKE"), oldorg, self.origin);
+			break;
+		case PROJECTILE_FLAC:
+			trailparticles(self, particleeffectnum("TR_VORESPIKE"), oldorg, self.origin);
+			break;
+		case PROJECTILE_SEEKER:
+			trailparticles(self, particleeffectnum("TR_ROCKET"), oldorg, self.origin);
+			break;
 		default:
 			break;
 	}
 
 	self.renderflags = 0;
 
-	if(self.count & 0x80 || self.iflags & IFLAG_VALID)
+	if((self.count & 0x80) || (self.iflags & IFLAG_VALID))
 		R_AddEntity(self);
 }
 
@@ -84,9 +98,10 @@
 	
 	f = ReadByte();
 	self.count = (f & 0x80);
-	self.iflags = IFLAG_AUTOANGLES | IFLAG_ANGLES;
+	self.iflags = (self.iflags & IFLAG_INTERNALMASK) | IFLAG_AUTOANGLES | IFLAG_ANGLES;
 	self.move_flags &~= FL_ONGROUND;
 	self.solid = SOLID_TRIGGER;
+	//self.effects = EF_NOMODELFLAGS;
 
 	// sv_gameplayfix_delayprojectiles
 	if(!self.move_time)
@@ -94,7 +109,7 @@
 	else
 		self.move_time = max(self.move_time, time);
 
-	if(self.count & 0x80)
+	if(!(self.count & 0x80))
 		InterpolateOrigin_Undo();
 
 	if(f & 1)
@@ -118,6 +133,7 @@
 	{
 		self.cnt = ReadByte();
 
+		self.scale = 1;
 		switch(self.cnt)
 		{
 			case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl"); break;
@@ -130,14 +146,18 @@
 			case PROJECTILE_GRENADE_BOUNCING: setmodel(self, "models/grenademodel.md3"); break;
 			case PROJECTILE_LASER: setmodel(self, "models/laser.mdl"); break;
 			case PROJECTILE_HLAC: setmodel(self, "models/hlac_bullet.md3"); break;
+			case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; break;
+			case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; break;
+			case PROJECTILE_PORTO_RED: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
+			case PROJECTILE_PORTO_BLUE: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
 			default:
 				error("Received invalid CSQC projectile, can't work with this!");
 				break;
 		}
 
-		self.scale = 1;
 		self.mins = '0 0 0';
 		self.maxs = '0 0 0';
+		self.colormod = '0 0 0';
 		self.move_movetype = MOVETYPE_TOSS;
 		self.move_moveflags = MOVEFLAG_STOPONIMPACT;
 
@@ -161,22 +181,28 @@
 				self.mins = '-2 -2 -2';
 				self.maxs = '2 2 2';
 				break;
-			case PROJECTILE_GRENADE:
-				self.mins = '0 0 0';
-				self.maxs = '0 0 0';
-				break;
 			case PROJECTILE_GRENADE_BOUNCING:
 				self.mins = '0 0 -3';
 				self.maxs = '0 0 -3';
 				self.move_movetype = MOVETYPE_BOUNCE;
 				self.move_moveflags = 0;
 				break;
+			case PROJECTILE_SEEKER:
+				self.mins = '-2 -2 -2';
+				self.maxs = '2 2 2';
+				break;
+			case PROJECTILE_PORTO_RED:
+				self.colormod = '2 1 1';
+				break;
+			case PROJECTILE_PORTO_BLUE:
+				self.colormod = '1 1 2';
+				break;
 			default:
 				break;
 		}
 	}
 
-	if(self.count)
+	if(!(self.count & 0x80))
 		InterpolateOrigin_Note();
 	
 	self.draw = Projectile_Draw;
@@ -194,4 +220,9 @@
 	precache_model("models/grenademodel.md3");
 	precache_model("models/laser.mdl");
 	precache_model("models/hlac_bullet.md3");
+	precache_model("models/hlac_bullet.md3");
+	precache_model("models/tagrocket.md3");
+	precache_model("models/hagarmissile.mdl");
+	precache_model("models/grenademodel.md3");
+	precache_model("models/grenademodel.md3");
 }

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/common/constants.qh	2009-01-16 21:11:07 UTC (rev 5581)
@@ -364,3 +364,7 @@
 float PROJECTILE_GRENADE_BOUNCING = 8;
 float PROJECTILE_LASER = 9;
 float PROJECTILE_HLAC = 10;
+float PROJECTILE_SEEKER = 11;
+float PROJECTILE_FLAC = 12;
+float PROJECTILE_PORTO_RED = 13;
+float PROJECTILE_PORTO_BLUE = 14;

Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-16 21:11:07 UTC (rev 5581)
@@ -46,6 +46,7 @@
 		e.gravity = 0;
 
 	e.csqcprojectile_type = type;
+	e.SendFlags = 0xFFFFFF;
 }
 
 void UpdateCSQCProjectile(entity e)

Modified: trunk/data/qcsrc/server/w_porto.qc
===================================================================
--- trunk/data/qcsrc/server/w_porto.qc	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/w_porto.qc	2009-01-16 21:11:07 UTC (rev 5581)
@@ -123,6 +123,7 @@
 			trace_plane_normal = norm;
 			W_Porto_Fail(0);
 		}
+		CSQCProjectile(self, TRUE, PROJECTILE_PORTO_BLUE); // change type
 	}
 	else
 	{
@@ -147,7 +148,6 @@
 			W_Porto_Fail(0);
 		}
 	}
-
 }
 
 void W_Porto_Attack (void)
@@ -193,6 +193,8 @@
 	gren.right_vector = v_right;
 
 	gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
+
+	CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED);
 }
 
 void spawnfunc_weapon_porto (void)

Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc	2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/w_seeker.qc	2009-01-16 21:11:07 UTC (rev 5581)
@@ -123,6 +123,7 @@
 	self.angles = vectoangles(self.velocity);			// turn model in the new flight direction
 	self.nextthink = time + 0.05;
 
+	UpdateCSQCProjectile(self);
 }
 
 
@@ -162,6 +163,8 @@
 		else
 			self.movetype    = MOVETYPE_FLYMISSILE;
 	}
+
+	UpdateCSQCProjectile(self);
 }
 
 void Seeker_Fire_Missile(vector f_org)
@@ -216,6 +219,7 @@
 	missile.switchweapon = vlen(missile.velocity);
 	missile.angles = vectoangles (missile.velocity);
 
+	CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER);
 }
 
 void Seeker_Vollycontroler_Think()
@@ -460,6 +464,8 @@
 
 	missile.angles = vectoangles (missile.velocity);
 	missile.flags = FL_PROJECTILE;
+
+	CSQCProjectile(missile, TRUE, PROJECTILE_FLAC);
 }
 
 void spawnfunc_weapon_seeker (void)




More information about the nexuiz-commits mailing list