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

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Jan 18 15:22:35 EST 2009


Author: div0
Date: 2009-01-18 15:22:34 -0500 (Sun, 18 Jan 2009)
New Revision: 5605

Modified:
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/client/damage.qc
   trunk/data/qcsrc/client/gibs.qc
   trunk/data/qcsrc/client/progs.src
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/g_casings.qc
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_triggers.qc
Log:
csqc casings


Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/Main.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -136,6 +136,7 @@
 
 	Projectile_Precache();
 	GibSplash_Precache();
+	Casings_Precache();
 }
 
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@ -524,6 +525,8 @@
 		Ent_GibSplash();
 	else if(self.enttype == ENT_CLIENT_DAMAGEINFO)
 		Ent_DamageInfo();
+	else if(self.enttype == ENT_CLIENT_CASING)
+		Ent_Casing();
 	else
 		error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
 	

Modified: trunk/data/qcsrc/client/damage.qc
===================================================================
--- trunk/data/qcsrc/client/damage.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/damage.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -23,8 +23,16 @@
 			thisdmg = vlen(self.origin - org) / rad;
 			if(thisdmg >= 1)
 				continue;
-			thisdmg = dmg + (edge - dmg) * thisdmg;
-			thisforce = vlen(force) * normalize(self.origin - org);
+			if(dmg)
+			{
+				thisdmg = dmg + (edge - dmg) * thisdmg;
+				thisforce = vlen(force) * (thisdmg / dmg) * normalize(self.origin - org);
+			}
+			else
+			{
+				thisdmg = 0;
+				thisforce = vlen(force) * normalize(self.origin - org);
+			}
 		}
 		else
 		{

Modified: trunk/data/qcsrc/client/gibs.qc
===================================================================
--- trunk/data/qcsrc/client/gibs.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/gibs.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -1,6 +1,18 @@
+void SUB_RemoveOnNoImpact()
+{
+	if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
+		remove(self);
+}
+
 void Gib_Touch()
 {
 	// TODO maybe bounce of walls, make more gibs, etc.
+
+	if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
+	{
+		remove(self);
+		return;
+	}
 	
 	sound(self, CHAN_PAIN, strcat("misc/gib_splat0", ftos(floor(random() * 4 + 1)), ".wav"), VOL_BASE, ATTN_NORM);
 	pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
@@ -48,6 +60,8 @@
 	gib.draw = Gib_Draw;
 	if(destroyontouch)
 		gib.move_touch = Gib_Touch;
+	else
+		gib.move_touch = SUB_RemoveOnNoImpact;
 
 	gib.move_origin = gib.origin = org;
 	gib.move_velocity = v + randomvec();
@@ -77,7 +91,6 @@
 	isgentle = (type & 0x80 || cvar("cl_gentle"));
 	type = type & 0x7F;
 
-
 	gibfactor = 1 - cvar("cl_nogibs");
 	if(gibfactor <= 0)
 		return;

Modified: trunk/data/qcsrc/client/progs.src
===================================================================
--- trunk/data/qcsrc/client/progs.src	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/progs.src	2009-01-18 20:22:34 UTC (rev 5605)
@@ -32,6 +32,7 @@
 projectile.qc
 gibs.qc
 damage.qc
+casings.qc
 
 Main.qc
 View.qc

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/common/constants.qh	2009-01-18 20:22:34 UTC (rev 5605)
@@ -57,6 +57,7 @@
 const float ENT_CLIENT_PROJECTILE = 12;
 const float ENT_CLIENT_GIBSPLASH = 13;
 const float ENT_CLIENT_DAMAGEINFO = 14;
+const float ENT_CLIENT_CASING = 15;
 
 const float SPRITERULE_DEFAULT = 0;
 const float SPRITERULE_TEAMPLAY = 1;

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/clientcommands.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -36,23 +36,22 @@
 {
 	nagger = spawn();
 	Net_LinkEntity(nagger);
-	nagger.SendFlags = 128;
 	nagger.SendEntity = Nagger_SendEntity;
 }
 void Nagger_VoteChanged()
 {
 	if(nagger)
-		nagger.SendFlags = 128;
+		nagger.SendFlags |= 128;
 }
 void Nagger_VoteCountChanged()
 {
 	if(nagger)
-		nagger.SendFlags = 1;
+		nagger.SendFlags |= 1;
 }
 void Nagger_ReadyCounted()
 {
 	if(nagger)
-		nagger.SendFlags = 1;
+		nagger.SendFlags |= 1;
 }
 
 void ReadyCount();

Modified: trunk/data/qcsrc/server/g_casings.qc
===================================================================
--- trunk/data/qcsrc/server/g_casings.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_casings.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -1,3 +1,4 @@
+#if 0
 void casingtouch()
 {
 	PROJECTILE_TOUCH;
@@ -105,3 +106,38 @@
 	setsize (e, '0 0 -1', '0 0 -1');
 	setorigin (e, org);
 };
+#endif
+
+float Casing_SendEntity(entity to, float sf)
+{
+	WriteByte(MSG_ENTITY, ENT_CLIENT_CASING);
+	WriteByte(MSG_ENTITY, self.state); // actually type
+	WriteCoord(MSG_ENTITY, self.origin_x);
+	WriteCoord(MSG_ENTITY, self.origin_y);
+	WriteCoord(MSG_ENTITY, self.origin_z);
+	WriteShort(MSG_ENTITY, self.oldorigin_x); // acrually compressed velocity
+	WriteByte(MSG_ENTITY, self.angles_x * 256 / 360);
+	WriteByte(MSG_ENTITY, self.angles_y * 256 / 360);
+	WriteByte(MSG_ENTITY, self.angles_z * 256 / 360);
+	return TRUE;
+}
+
+void SpawnCasing(vector org, vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype)
+{
+	entity e;
+
+	e = spawn();
+	e.state = casingtype;
+	e.origin = org;
+	e.velocity = vel;
+	e.angles = ang;
+
+	e.oldorigin_x = compressShortVector(e.velocity);
+
+	setmodel(e, "null");
+	e.SendEntity = Casing_SendEntity;
+
+	e.nextthink = time + 0.2;
+	e.think = SUB_Remove;
+		// 0.2s should be enough time for all clients to receive this ent once, do the gibbage and be done with it
+}

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_damage.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -956,7 +956,7 @@
 		if(vlen(force) == 0)
 			force = '0 0 -1';
 		else
-			force = normalize(force) * forceintensity;
+			force = normalize(force);
 		Damage_DamageInfo(blastorigin, coredamage, edgedamage, rad, forceintensity * force, deathtype);
 	}
 

Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc	2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_triggers.qc	2009-01-18 20:22:34 UTC (rev 5605)
@@ -597,7 +597,6 @@
 
 	self.effects = EF_NODEPTHTEST;
 	self.SendEntity = pointparticles_SendEntity;
-	self.SendFlags = 7;
 	if(!self.modelindex)
 	{
 		vector misave, masave;
@@ -982,7 +981,6 @@
 
 	self.effects = EF_NODEPTHTEST;
 	self.SendEntity = laser_SendEntity;
-	self.SendFlags = 15;
 	setmodel(self, "null");
 	self.mangle = self.angles;
 




More information about the nexuiz-commits mailing list