r3733 - in trunk/data: . qcsrc/server

savagex at icculus.org savagex at icculus.org
Sun Jun 29 06:50:43 EDT 2008


Author: savagex
Date: 2008-06-29 06:50:42 -0400 (Sun, 29 Jun 2008)
New Revision: 3733

Modified:
   trunk/data/effectinfo.txt
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/g_violence.qc
Log:
add 100% optional sv_gentle.

This will replace the blood and gore with other damage indicators (after all blood and 
gore *do* serve a gameplay purpose to get immediate visual feedback on success). No 
corpses, no blood, no pain animation. Instead have particle effects indicate that "energy" 
was lost. Kumbaya my lord.

Next stop would be to defuse the language ("You scored against [Bot]Hooray").


Modified: trunk/data/effectinfo.txt
===================================================================
--- trunk/data/effectinfo.txt	2008-06-29 10:37:37 UTC (rev 3732)
+++ trunk/data/effectinfo.txt	2008-06-29 10:50:42 UTC (rev 3733)
@@ -2236,3 +2236,33 @@
 size 16 16
 alpha 256 256 1024
 velocityjitter 256 256 256
+
+// Zero-violence effects
+
+// impact effect indicating damage
+effect damage_hit
+count 1
+type static
+color 0x20FF30 0x80FFC0
+size 1 1
+alpha 256 256 256
+gravity -0.4
+bounce 1.5
+airfriction 8
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 16 16 16
+
+// effect for removing player model
+effect damage_dissolve
+count 112
+type static
+color 0x00FF00 0xFFFFFF
+size 10 10
+alpha 64 128 256
+airfriction 1
+liquidfriction 4
+originoffset 0 0 28
+originjitter 16 16 28
+velocityjitter 0 0 256
+

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-06-29 10:37:37 UTC (rev 3732)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-06-29 10:50:42 UTC (rev 3733)
@@ -257,8 +257,10 @@
 
 void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
 {
-	local float take, save;
-	pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200));
+	local float take, save, gentle;
+	gentle = cvar("sv_gentle");
+	if(gentle < 1)	
+		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200));
 	// damage resistance (ignore most of the damage from a bullet or similar)
 	damage = max(damage - 5, 1);
 
@@ -272,10 +274,12 @@
 	else if (take > 10)
 		sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", 1, ATTN_NORM);
 
-	if (take > 50)
-		TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1);
-	if (take > 100)
-		TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.2,1);
+	if(gentle < 1) {	
+		if (take > 50)
+			TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1);
+		if (take > 100)
+			TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.2,1);
+	}
 
 	if (!(self.flags & FL_GODMODE))
 	{
@@ -301,44 +305,48 @@
 		multiplier = 1;
 		if (cvar("ekg"))
 			multiplier = 5;
-		te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 1200 * multiplier, 1000);
 
+
 		// make a meaty mess
 		TossGib (self, "models/gibs/eye.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
-		TossGib (world, "models/gibs/bloodyskull.md3", self.origin + self.view_ofs, self.velocity,0);
+		
+		if(gentle < 1) {
+			te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 1200 * multiplier, 1000);
+			TossGib (world, "models/gibs/bloodyskull.md3", self.origin + self.view_ofs, self.velocity,0);
 
-		local float c;
-		c = 0;
-		while (c < multiplier)
-		{
-			c = c + 1;
-			//TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity + randomvec() * 450,0);
-			//TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity + randomvec() * 450,0);
-			//TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity + randomvec() * 450,0);
-			//TossGib (world, "models/gibs/gib4.md3", self.origin, self.velocity + randomvec() * 450,0);
-			//TossGib (world, "models/gibs/gib5.md3", self.origin, self.velocity + randomvec() * 450,0);
-			//TossGib (world, "models/gibs/gib6.md3", self.origin, self.velocity + randomvec() * 450,0);
+			local float c;
+			c = 0;
 
-			TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 90),0);
-			TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 90),0);
-			//TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
-			//TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
-			TossGib (world, "models/gibs/chest.md3", self.origin + self.view_ofs * 0.5, self.velocity + randomvec() * (random() * 120 + 80),0);
-			//TossGib (world, "models/gibs/smallchest.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
-			TossGib (world, "models/gibs/smallchest.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 80),0);
-			TossGib (world, "models/gibs/leg1.md3", self.origin + self.view_ofs * -0.2, self.velocity + randomvec() * (random() * 120 + 85),0);
-			TossGib (world, "models/gibs/leg2.md3", self.origin + self.view_ofs * -0.4, self.velocity + randomvec() * (random() * 120 + 85),0);
-			//TossGib (world, "models/gibs/leg1.md3", self.origin + self.view_ofs * -0.2, self.velocity + randomvec() * 150,0);
-			//TossGib (world, "models/gibs/leg2.md3", self.origin + self.view_ofs * -0.4, self.velocity + randomvec() * 150,0);
+			while (c < multiplier)
+			{
+				c = c + 1;
+				//TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity + randomvec() * 450,0);
+				//TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity + randomvec() * 450,0);
+				//TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity + randomvec() * 450,0);
+				//TossGib (world, "models/gibs/gib4.md3", self.origin, self.velocity + randomvec() * 450,0);
+				//TossGib (world, "models/gibs/gib5.md3", self.origin, self.velocity + randomvec() * 450,0);
+				//TossGib (world, "models/gibs/gib6.md3", self.origin, self.velocity + randomvec() * 450,0);
 
-			// these splat on impact
-			TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
-			TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
-			TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
-			TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
+				TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 90),0);
+				TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 90),0);
+				//TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
+				//TossGib (world, "models/gibs/arm.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
+				TossGib (world, "models/gibs/chest.md3", self.origin + self.view_ofs * 0.5, self.velocity + randomvec() * (random() * 120 + 80),0);
+				//TossGib (world, "models/gibs/smallchest.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
+				TossGib (world, "models/gibs/smallchest.md3", self.origin + self.view_ofs, self.velocity + randomvec() * (random() * 120 + 80),0);
+				TossGib (world, "models/gibs/leg1.md3", self.origin + self.view_ofs * -0.2, self.velocity + randomvec() * (random() * 120 + 85),0);
+				TossGib (world, "models/gibs/leg2.md3", self.origin + self.view_ofs * -0.4, self.velocity + randomvec() * (random() * 120 + 85),0);
+				//TossGib (world, "models/gibs/leg1.md3", self.origin + self.view_ofs * -0.2, self.velocity + randomvec() * 150,0);
+				//TossGib (world, "models/gibs/leg2.md3", self.origin + self.view_ofs * -0.4, self.velocity + randomvec() * 150,0);
+
+				// these splat on impact
+				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
+				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
+				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
+				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
+			}
+			sound (self, CHAN_VOICE, "misc/gib.wav", 1, ATTN_NORM);
 		}
-
-		sound (self, CHAN_VOICE, "misc/gib.wav", 1, ATTN_NORM);
 	}
 }
 
@@ -349,14 +357,20 @@
 	local float take, save, waves, sdelay;
 
 	damage = damage * bound(1.0, self.cvar_cl_handicap, 100.0);
+	if(cvar("sv_gentle")) {
+		pointparticles(particleeffectnum("damage_hit"), hitloc, force, bound(0, damage, 200));
+	} else {
+		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200));
+	}
 
-	pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200));
 	if (self.pain_finished < time)		//Don't switch pain sequences like crazy
 	{
-		if (random() > 0.5)
-			player_setanim(self.anim_pain1, FALSE, TRUE, TRUE);
-		else
-			player_setanim(self.anim_pain2, FALSE, TRUE, TRUE);
+		if(!cvar("sv_gentle")) {		
+			if (random() > 0.5)
+				player_setanim(self.anim_pain1, FALSE, TRUE, TRUE);
+			else
+				player_setanim(self.anim_pain2, FALSE, TRUE, TRUE);
+		}
 		self.pain_finished = time + 0.5;	//Supajoe
 
 		// throw off bot aim temporarily
@@ -546,6 +560,12 @@
 
 		if(defer_ClientKill_Now_TeamChange)
 			ClientKill_Now_TeamChange();
+
+		if(cvar("sv_gentle")) {
+			// remove corpse
+			PlayerCorpseDamage (inflictor, attacker, 100.0, deathtype, hitloc, force);
+			pointparticles(particleeffectnum("damage_dissolve"), self.origin, force, 1);
+		}
 	}
 }
 

Modified: trunk/data/qcsrc/server/g_violence.qc
===================================================================
--- trunk/data/qcsrc/server/g_violence.qc	2008-06-29 10:37:37 UTC (rev 3732)
+++ trunk/data/qcsrc/server/g_violence.qc	2008-06-29 10:50:42 UTC (rev 3733)
@@ -10,7 +10,9 @@
 		sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", 1, ATTN_NORM);
 	else if (r < 0.75)
 		sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", 1, ATTN_NORM);
-	pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
+	
+	if(cvar("sv_gentle") < 1)
+		pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
 	self.health = self.health - damage;
 	if (self.health <= -1000)
 	{
@@ -37,6 +39,10 @@
 {
 	if(self.classname == "player") // the eye
 	{
+		if(cvar("sv_gentle")) {
+			self.model = "";
+			return TRUE;
+		}
 		if(self.gibrandom > other.cvar_cl_nogibs)
 			self.model = self.mdl;
 		else




More information about the nexuiz-commits mailing list