r5557 - in trunk/data/qcsrc: client common server server/tturrets/units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Jan 15 12:08:33 EST 2009


Author: div0
Date: 2009-01-15 12:08:33 -0500 (Thu, 15 Jan 2009)
New Revision: 5557

Modified:
   trunk/data/qcsrc/client/projectile.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/csqcprojectile.qc
   trunk/data/qcsrc/server/csqcprojectile.qh
   trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
   trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
   trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
   trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
   trunk/data/qcsrc/server/w_electro.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
   trunk/data/qcsrc/server/w_seeker.qc
Log:
csqcprojectiles: make them more readable; make turrets use them too when they fire a rocket with sound (so they no longer need to use stopsound).


Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/client/projectile.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -27,17 +27,16 @@
 
 	switch(self.cnt)
 	{
-		default:
-		case 0:
-			break;
-		case 1:
+		case PROJECTILE_ELECTRO:
 			break; // electro uses no trail
-		case 2:
+		case PROJECTILE_ROCKET:
 			trailparticles(self, particleeffectnum("TR_ROCKET"), oldorg, self.origin); // rocket
 			break;
-		case 3:
+		case PROJECTILE_TAG:
 			trailparticles(self, particleeffectnum("TR_VORESPIKE"), oldorg, self.origin); // seeker
 			break;
+		default:
+			break;
 	}
 
 	self.renderflags = 0;
@@ -48,8 +47,8 @@
 
 void Ent_RemoveProjectile()
 {
-	if(self.cnt)
-		if(csqc_flags & CSQC_FLAG_COLORCODES)
+	if(csqc_flags & CSQC_FLAG_COLORCODES)
+		if(self.cnt)
 			sound(self, CHAN_PAIN, "misc/null.wav", VOL_BASE, ATTN_NORM);
 }
 
@@ -112,24 +111,23 @@
 		}
 
 		self.cnt = ReadShort();
-		switch(self.cnt)
-		{
-			case 1:
-				// only new engines support sound moving with object
-				if(csqc_flags & CSQC_FLAG_COLORCODES)
+
+		if(csqc_flags & CSQC_FLAG_COLORCODES)
+			switch(self.cnt)
+			{
+				case PROJECTILE_ELECTRO:
+					// only new engines support sound moving with object
 					sound(self, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
-				break;
-			case 2:
-				if(csqc_flags & CSQC_FLAG_COLORCODES)
+					break;
+				case PROJECTILE_ROCKET:
 					sound(self, CHAN_PAIN, "weapons/rocket_fly.wav", VOL_BASE, ATTN_NORM);
-				break;
-			case 3:
-				if(csqc_flags & CSQC_FLAG_COLORCODES)
+					break;
+				case PROJECTILE_TAG:
 					sound(self, CHAN_PAIN, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
-				break;
-			default:
-				break;
-		}
+					break;
+				default:
+					break;
+			}
 
 		sz = ReadByte();
 		switch(sz)

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/common/constants.qh	2009-01-15 17:08:33 UTC (rev 5557)
@@ -352,3 +352,8 @@
 
 #define VOL_BASE 0.7
 #define VOL_BASEVOICE 1.0
+
+// this sets sounds and other properties of the projectiles in csqc
+float PROJECTILE_ELECTRO = 1;
+float PROJECTILE_ROCKET = 2;
+float PROJECTILE_TAG = 3;

Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -1,3 +1,5 @@
+.float csqcprojectile_type;
+
 float CSQCProjectile_SendEntity(entity to, float sf)
 {
 	sf = sf & 0x3F;
@@ -35,16 +37,28 @@
 			WriteShort(MSG_ENTITY, self.effects & 65535);
 			WriteByte(MSG_ENTITY, floor(self.effects / 65536));
 		}
-		WriteShort(MSG_ENTITY, self.csqcprojectile_flysound);
+		WriteShort(MSG_ENTITY, self.csqcprojectile_type);
 		WriteByte(MSG_ENTITY, 0); // size category
 	}
 
 	return 1;
 }
 
-void CSQCProjectile(entity e)
+void CSQCProjectile(entity e, float clientanimate, float type)
 {
 	e.SendEntity = CSQCProjectile_SendEntity;
+	
+	e.csqcprojectile_clientanimate = clientanimate;
+	
+	if(e.movetype == MOVETYPE_TOSS || e.movetype == MOVETYPE_BOUNCE)
+	{
+		if(e.gravity == 0)
+			e.gravity = 1;
+	}
+	else
+		e.gravity = 0;
+
+	e.csqcprojectile_type = type;
 }
 
 void UpdateCSQCProjectile(entity e)

Modified: trunk/data/qcsrc/server/csqcprojectile.qh
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qh	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/csqcprojectile.qh	2009-01-15 17:08:33 UTC (rev 5557)
@@ -1,5 +1,4 @@
-.float csqcprojectile_flysound;
 .float csqcprojectile_clientanimate;
 
-void CSQCProjectile(entity e);
+void CSQCProjectile(entity e, float clientanimate, float type);
 void UpdateCSQCProjectile(entity e);

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -31,7 +31,6 @@
 
     missile = spawn ();
     setorigin(missile, self.tur_shotorg_updated);
-    sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
     setmodel (missile, "models/turrets/mlrs_rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
@@ -57,6 +56,8 @@
     missile.tur_aimpos         = randomvec() * 128;
     te_explosion (missile.origin);
 
+	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
+
     // switch tubes
     self.tur_shotorg_y = self.tur_shotorg_y * -1;
 
@@ -142,6 +143,8 @@
         self.think = turret_hellion_missile_explode;
         self.nextthink = time + itime;
     }
+
+	UpdateCSQCProjectile(self);
 }
 
 void turret_hellion_missile_explode()
@@ -157,7 +160,6 @@
         return;
     }
 
-	stopsound (self, CHAN_PAIN);
     sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -91,7 +91,6 @@
     missile.solid            = SOLID_BBOX;
     setmodel (missile, "models/turrets/hunter2.md3"); // precision set below
     setsize (missile, missile.mins,missile.maxs); // give it some size so it can be shot
-    sound    (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
 
     missile.scale            = 1;
@@ -116,6 +115,8 @@
     missile.cnt              = time + 30;
     missile.ticrate          = max(cvar("sys_ticrate"),0.05);
 
+	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
+
     te_explosion (missile.origin);
 
     if (self.tur_head.frame == 0)
@@ -344,6 +345,8 @@
     self.atime = time + 0.2;
     //}
 #endif
+
+	UpdateCSQCProjectile(self);
 }
 
 void turret_hk_missile_explode()
@@ -363,7 +366,6 @@
         return;
 
     //vector	org2;
-	stopsound (self, CHAN_PAIN);
     sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -25,7 +25,6 @@
     missile                    = spawn ();
     setmodel (missile, "models/turrets/rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
-    sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
     missile.classname          = "mlrs_missile";
     missile.owner              = self;
@@ -46,6 +45,8 @@
     missile.solid              = SOLID_BBOX;
     missile.enemy              = self.enemy;
 
+	CSQCProjectile(self, TRUE, PROJECTILE_ROCKET);
+
     te_explosion (missile.origin);
 
     //self.tur_head.frame = 7 - self.volly_counter;
@@ -64,7 +65,6 @@
     }
 
 
-	stopsound (self, CHAN_PAIN);
     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);

Modified: trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -159,7 +159,7 @@
 }
 
 //#define WALKER_ROCKET_MOVE movelib_move(newdir * 275,900,0.1,10)
-#define WALKER_ROCKET_MOVE movelib_move_simple(newdir,1000,cvar("g_turrets_unit_walker_std_rocket_tunrate"))
+#define WALKER_ROCKET_MOVE movelib_move_simple(newdir,1000,cvar("g_turrets_unit_walker_std_rocket_tunrate")); UpdateCSQCProjectile(self)
 void walker_rocket_loop();
 void walker_rocket_think()
 {
@@ -311,7 +311,6 @@
     setorigin(rocket, org);
 
     sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", VOL_BASE, ATTN_NORM);
-    sound (rocket, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
     setmodel (rocket, "models/turrets/rocket.md3"); // precision set below
     setsize (rocket, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
@@ -345,6 +344,8 @@
     rocket.solid              = SOLID_BBOX;
     rocket.tur_health         = time + 9;
 
+	CSQCProjectile(rocket, TRUE, PROJECTILE_ROCKET);
+
     te_explosion (rocket.origin);
 
 }

Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_electro.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -154,12 +154,7 @@
 	proj.event_damage = W_Plasma_Damage;
 	proj.flags = FL_PROJECTILE;
 
-	//sound (proj, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
-
-	CSQCProjectile(proj);
-	proj.csqcprojectile_clientanimate = 1;
-	proj.gravity = 1;
-	proj.csqcprojectile_flysound = 1;
+	CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO);
 }
 
 void spawnfunc_weapon_electro (void)

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -247,16 +247,8 @@
 	//sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", VOL_BASE, ATTN_NORM);
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile);
+	CSQCProjectile(missile, cvar("g_balance_rocketlauncher_speedaccel") == 0 && cvar("g_laserguided_missiles") == 0, PROJECTILE_ROCKET);
 
-	if(cvar("g_balance_rocketlauncher_speedaccel") == 0 && cvar("g_laserguided_missiles") == 0)
-		missile.csqcprojectile_clientanimate = 1;
-	else
-		missile.csqcprojectile_clientanimate = 0; // we won't client animate if the missiles may behave weird
-
-	missile.gravity = 0;
-	missile.csqcprojectile_flysound = 2;
-
 	// muzzle flash for 1st person view
 	flash = spawn ();
 	flash.scale = 1.2;

Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc	2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_seeker.qc	2009-01-15 17:08:33 UTC (rev 5557)
@@ -369,10 +369,7 @@
 	W_SetupProjectileVelocity(missile);
 	missile.angles = vectoangles (missile.velocity);
 
-	CSQCProjectile(missile);
-	missile.csqcprojectile_clientanimate = 1;
-	missile.gravity = 0;
-	missile.csqcprojectile_flysound = 3;
+	CSQCProjectile(missile, TRUE, PROJECTILE_TAG);
 }
 
 




More information about the nexuiz-commits mailing list