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

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jan 17 13:39:58 EST 2009


Author: div0
Date: 2009-01-17 13:39:56 -0500 (Sat, 17 Jan 2009)
New Revision: 5593

Modified:
   trunk/data/qcsrc/client/damage.qc
   trunk/data/qcsrc/client/gibs.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/constants.qh
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_violence.qc
   trunk/data/qcsrc/server/w_crylink.qc
Log:
make crylink no longer use an impact sound and effect, instead do this on csqc


Modified: trunk/data/qcsrc/client/damage.qc
===================================================================
--- trunk/data/qcsrc/client/damage.qc	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/client/damage.qc	2009-01-17 18:39:56 UTC (rev 5593)
@@ -49,4 +49,31 @@
 	self = oldself;
 
 	// TODO spawn particle effects and sounds based on hittype
+	
+	print("hit: ", ftos(hittype), "\n");
+
+	if(!DEATH_ISSPECIAL(hittype))
+	{
+		float hitwep, secondary;
+		hitwep = DEATH_WEAPONOFWEAPONDEATH(hittype);
+		secondary = hittype & HITTYPE_SECONDARY;
+
+		print("hit: ", ftos(hitwep), "\n");
+
+		switch(hitwep)
+		{
+			case WEP_CRYLINK:
+				if(secondary)
+				{
+					sound (self, CHAN_PROJECTILE, "weapons/crylink_impact2.wav", VOL_BASE, ATTN_NORM);
+					pointparticles(particleeffectnum("crylink_impact"), org, '0 0 0', 1);
+				}
+				else
+				{
+					sound (self, CHAN_PROJECTILE, "weapons/crylink_impact.wav", VOL_BASE, ATTN_NORM);
+					pointparticles(particleeffectnum("crylink_impactbig"), org, '0 0 0', 1);
+				}
+				break;
+		}
+	}
 }

Modified: trunk/data/qcsrc/client/gibs.qc
===================================================================
--- trunk/data/qcsrc/client/gibs.qc	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/client/gibs.qc	2009-01-17 18:39:56 UTC (rev 5593)
@@ -62,8 +62,8 @@
 
 	float c, gibfactor, randomvalue;
 
+	type = ReadByte(); // gibbage type
 	amount = ReadByte() / 16.0; // gibbage amount
-	type = ReadByte(); // gibbage type
 	org_x = ReadShort() * 4 + 2;
 	org_y = ReadShort() * 4 + 2;
 	org_z = ReadShort() * 4 + 2;
@@ -71,8 +71,8 @@
 	mi = decompressShortVector(ReadShort());
 	ma = decompressShortVector(ReadShort());
 
-	isgentle = (type & 0x8000 || cvar("cl_gentle"));
-	type = type & 0x7FFF;
+	isgentle = (type & 0x80 || cvar("cl_gentle"));
+	type = type & 0x7F;
 
 
 	gibfactor = 1 - cvar("cl_nogibs");

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/common/constants.qh	2009-01-17 18:39:56 UTC (rev 5593)
@@ -373,3 +373,39 @@
 float PROJECTILE_HOOKBOMB = 15;
 float PROJECTILE_HAGAR = 16;
 float PROJECTILE_HAGAR_BOUNCING = 17;
+
+// Deathtypes (weapon deathtypes are the IT_* constants below)
+// NOTE: when adding death types, please add an explanation to Docs/spamlog.txt too.
+float	DEATH_SPECIAL_START     = 10000;
+float	DEATH_FALL				= 10000;
+float	DEATH_TELEFRAG				= 10001;
+float	DEATH_DROWN				= 10002;
+float	DEATH_HURTTRIGGER			= 10003;
+float	DEATH_LAVA				= 10004;
+float	DEATH_SLIME				= 10005;
+float	DEATH_KILL				= 10006;
+float	DEATH_NOAMMO				= 10007;
+float	DEATH_SWAMP				= 10008;
+float	DEATH_TEAMCHANGE			= 10009;
+float	DEATH_AUTOTEAMCHANGE			= 10010;
+float	DEATH_CAMP				= 10011;
+float	DEATH_SHOOTING_STAR			= 10012;
+float	DEATH_ROT				= 10013;
+float	DEATH_MIRRORDAMAGE		= 10014;
+float	DEATH_TOUCHEXPLODE      = 10015;
+float   DEATH_TURRET            = 10100;
+
+float	DEATH_WEAPONMASK        = 0xFF;
+float	DEATH_HITTYPEMASK		= 0x1F00; // which is WAY below 10000 used for normal deaths
+float	HITTYPE_SECONDARY = 0x100;
+float	HITTYPE_SPLASH = 0x200;
+float	HITTYPE_BOUNCE = 0x400;
+float	HITTYPE_HEADSHOT = 0x800;
+float	HITTYPE_RESERVED = 0x1000; // unused yet
+
+// macros to access these
+#define DEATH_ISSPECIAL(t)            ((t) >= DEATH_SPECIAL_START)
+#define DEATH_WEAPONOFWEAPONDEATH(t)  ((t) & DEATH_WEAPONMASK)
+#define DEATH_ISWEAPON(t,w)           (!DEATH_ISSPECIAL(t) && DEATH_WEAPONOFWEAPONDEATH(t) == (w))
+#define DEATH_WEAPONOF(t)             (DEATH_ISSPECIAL(t) ? 0 : DEATH_WEAPONOFWEAPONDEATH(t))
+#define WEP_VALID(w)                  ((w) >= WEP_FIRST && (w) <= WEP_LAST)

Modified: trunk/data/qcsrc/server/constants.qh
===================================================================
--- trunk/data/qcsrc/server/constants.qh	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/server/constants.qh	2009-01-17 18:39:56 UTC (rev 5593)
@@ -126,42 +126,6 @@
 float	MSG_INIT				= 3; // initialization
 float	MSG_ENTITY				= 5; // csqc
 
-// Deathtypes (weapon deathtypes are the IT_* constants below)
-// NOTE: when adding death types, please add an explanation to Docs/spamlog.txt too.
-float	DEATH_SPECIAL_START     = 10000;
-float	DEATH_FALL				= 10000;
-float	DEATH_TELEFRAG				= 10001;
-float	DEATH_DROWN				= 10002;
-float	DEATH_HURTTRIGGER			= 10003;
-float	DEATH_LAVA				= 10004;
-float	DEATH_SLIME				= 10005;
-float	DEATH_KILL				= 10006;
-float	DEATH_NOAMMO				= 10007;
-float	DEATH_SWAMP				= 10008;
-float	DEATH_TEAMCHANGE			= 10009;
-float	DEATH_AUTOTEAMCHANGE			= 10010;
-float	DEATH_CAMP				= 10011;
-float	DEATH_SHOOTING_STAR			= 10012;
-float	DEATH_ROT				= 10013;
-float	DEATH_MIRRORDAMAGE		= 10014;
-float	DEATH_TOUCHEXPLODE      = 10015;
-float   DEATH_TURRET            = 10100;
-
-float	DEATH_WEAPONMASK        = 0xFF;
-float	DEATH_HITTYPEMASK		= 0x1F00; // which is WAY below 10000 used for normal deaths
-float	HITTYPE_SECONDARY = 0x100;
-float	HITTYPE_SPLASH = 0x200;
-float	HITTYPE_BOUNCE = 0x400;
-float	HITTYPE_HEADSHOT = 0x800;
-float	HITTYPE_RESERVED = 0x1000; // unused yet
-
-// macros to access these
-#define DEATH_ISSPECIAL(t)            ((t) >= DEATH_SPECIAL_START)
-#define DEATH_WEAPONOFWEAPONDEATH(t)  ((t) & DEATH_WEAPONMASK)
-#define DEATH_ISWEAPON(t,w)           (!DEATH_ISSPECIAL(t) && DEATH_WEAPONOFWEAPONDEATH(t) == (w))
-#define DEATH_WEAPONOF(t)             (DEATH_ISSPECIAL(t) ? 0 : DEATH_WEAPONOFWEAPONDEATH(t))
-#define WEP_VALID(w)                  ((w) >= WEP_FIRST && (w) <= WEP_LAST)
-
 vector	PL_VIEW_OFS				= '0 0 35';
 vector	PL_MIN					= '-16 -16 -24';
 vector	PL_MAX					= '16 16 45';

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/server/g_damage.qc	2009-01-17 18:39:56 UTC (rev 5593)
@@ -948,7 +948,7 @@
 	blastorigin = (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5);
 	total_damage_to_creatures = 0;
 
-	if(deathtype == WEP_HOOK | HITTYPE_SECONDARY | HITTYPE_BOUNCE) // only send gravity bomb damage once
+	if(deathtype != (WEP_HOOK | HITTYPE_SECONDARY | HITTYPE_BOUNCE)) // only send gravity bomb damage once
 		Damage_DamageInfo(blastorigin, coredamage, edgedamage, rad, forceintensity * '0 0 1', deathtype);
 
 	targ = findradius (blastorigin, rad);

Modified: trunk/data/qcsrc/server/g_violence.qc
===================================================================
--- trunk/data/qcsrc/server/g_violence.qc	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/server/g_violence.qc	2009-01-17 18:39:56 UTC (rev 5593)
@@ -1,8 +1,8 @@
 float Violence_GibSplash_SendEntity(entity to, float sf)
 {
 	WriteByte(MSG_ENTITY, ENT_CLIENT_GIBSPLASH);
+	WriteByte(MSG_ENTITY, self.state); // actually type
 	WriteByte(MSG_ENTITY, bound(1, self.cnt * 16, 255)); // gibbage amount multiplier
-	WriteByte(MSG_ENTITY, self.state); // actually type
 	WriteShort(MSG_ENTITY, floor(self.origin_x / 4)); // not using a coord here, as gibs don't need this accuracy
 	WriteShort(MSG_ENTITY, floor(self.origin_y / 4)); // not using a coord here, as gibs don't need this accuracy
 	WriteShort(MSG_ENTITY, floor(self.origin_z / 4)); // not using a coord here, as gibs don't need this accuracy
@@ -22,7 +22,7 @@
 	e.cnt = amount;
 	e.state = type;
 	if(sv_gentle)
-		e.state |= 0x8000; // "force gentle" bit
+		e.state |= 0x80; // "force gentle" bit
 	e.SendEntity = Violence_GibSplash_SendEntity;
 	e.nextthink = time + 0.2;
 	e.think = SUB_Remove;

Modified: trunk/data/qcsrc/server/w_crylink.qc
===================================================================
--- trunk/data/qcsrc/server/w_crylink.qc	2009-01-17 18:17:10 UTC (rev 5592)
+++ trunk/data/qcsrc/server/w_crylink.qc	2009-01-17 18:39:56 UTC (rev 5593)
@@ -7,8 +7,6 @@
 	float finalhit;
 	float f;
 	PROJECTILE_TOUCH;
-	sound (self, CHAN_PROJECTILE, "weapons/crylink_impact.wav", VOL_BASE, ATTN_NORM);
-	pointparticles(particleeffectnum("crylink_impactbig"), self.origin, '0 0 0', 1);
 	finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO));
 	if(finalhit)
 		f = 1;
@@ -36,8 +34,6 @@
 	float finalhit;
 	float f;
 	PROJECTILE_TOUCH;
-	sound (self, CHAN_PROJECTILE, "weapons/crylink_impact2.wav", VOL_BASE, ATTN_NORM);
-	pointparticles(particleeffectnum("crylink_impact"), self.origin, '0 0 0', 1);
 	finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO));
 	if(finalhit)
 		f = 1;




More information about the nexuiz-commits mailing list