r3753 - in branches/nexuiz-2.0: . data data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Jul 2 05:47:25 EDT 2008


Author: div0
Date: 2008-07-02 05:47:14 -0400 (Wed, 02 Jul 2008)
New Revision: 3753

Modified:
   branches/nexuiz-2.0/.patchsets
   branches/nexuiz-2.0/data/effectinfo.txt
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/defs.qh
   branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
   branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
   branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
Log:
merge 3733-3736 (sv_gentle)


Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/.patchsets	2008-07-02 09:47:14 UTC (rev 3753)
@@ -1,2 +1,2 @@
 master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-3730,3737-3742
+revisions_applied = 1-3730,3733-3742

Modified: branches/nexuiz-2.0/data/effectinfo.txt
===================================================================
--- branches/nexuiz-2.0/data/effectinfo.txt	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/effectinfo.txt	2008-07-02 09:47:14 UTC (rev 3753)
@@ -2236,3 +2236,56 @@
 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
+// "teleport"
+effect damage_dissolve
+count 96
+type static
+color 0x66FF66 0xFFFFFF
+size 10 10
+alpha 64 128 128
+airfriction 1
+liquidfriction 4
+originoffset 0 0 28
+originjitter 16 16 28
+velocityjitter 0 0 256
+// flare
+effect damage_dissolve
+countabsolute 1
+type static
+tex 38 38
+color 0x00FF00 0x99FF99
+size 32 32
+alpha 256 256 196
+// large sparks
+effect damage_dissolve
+count 20
+type static
+color 0x00FF00 0x99FF99
+size 16 16
+alpha 256 256 256
+//gravity 1
+bounce 1.5
+airfriction 4
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 512 512 512
+
+

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-07-02 09:47:14 UTC (rev 3753)
@@ -258,7 +258,8 @@
 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));
+	if(sv_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 +273,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(sv_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 +304,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(sv_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 +356,20 @@
 	local float take, save, waves, sdelay;
 
 	damage = damage * bound(1.0, self.cvar_cl_handicap, 100.0);
+	if(sv_gentle > 0) {
+		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(sv_gentle < 1) {		
+			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 +559,12 @@
 
 		if(defer_ClientKill_Now_TeamChange)
 			ClientKill_Now_TeamChange();
+
+		if(sv_gentle > 0) {
+			// remove corpse
+			PlayerCorpseDamage (inflictor, attacker, 100.0, deathtype, hitloc, force);
+			pointparticles(particleeffectnum("damage_dissolve"), self.origin, force, 1);
+		}
 	}
 }
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2008-07-02 09:47:14 UTC (rev 3753)
@@ -19,6 +19,7 @@
 float tourneyInMatchStage;
 
 float sv_cheats;
+float sv_gentle;
 float sv_foginterval;
 
 entity	activator;

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc	2008-07-02 09:47:14 UTC (rev 3753)
@@ -148,67 +148,110 @@
 
 		if (targ == attacker)
 		{
-			if (deathtype == DEATH_TEAMCHANGE)
-			{
+			if (deathtype == DEATH_TEAMCHANGE) {
 				centerprint(targ, strcat("You are now on: ", ColoredTeamName(targ.team)));
-			}
-			else if (deathtype == DEATH_AUTOTEAMCHANGE)
-			{
+			} else if (deathtype == DEATH_AUTOTEAMCHANGE) {
 				centerprint(targ, strcat("You have been moved into a different team to improve team balance\nYou are now on: ", ColoredTeamName(targ.team)));
 				return;
+			} else if (deathtype == DEATH_CAMP) {
+				if(sv_gentle)
+					centerprint(targ, "^1Reconsider your tactics, camper!\n\n\n");
+				else
+					centerprint(targ, "^1Die camper!\n\n\n");
+			} else if (deathtype == DEATH_NOAMMO) {
+				if(sv_gentle)
+					centerprint(targ, "^1You are reinserted into the game for running out of ammo...\n\n\n");
+				else
+					centerprint(targ, "^1You were killed for running out of ammo...\n\n\n");
+			} else if (deathtype == DEATH_ROT) {
+				if(sv_gentle)
+					centerprint(targ, "^1You need to preserve your health\n\n\n");
+				else
+					centerprint(targ, "^1You grew too old without taking your medicine\n\n\n");
+			} else if (deathtype == DEATH_MIRRORDAMAGE) {
+				if(sv_gentle)				
+					centerprint(targ, "^1Don't go against team mates!\n\n\n");
+				else
+					centerprint(targ, "^1Don't shoot your team mates!\n\n\n");
+			} else {
+				if(sv_gentle)
+					centerprint(targ, "^1You need to be more careful!\n\n\n");
+				else
+					centerprint(targ, "^1You killed your own dumb self!\n\n\n");
 			}
-			else if (deathtype == DEATH_CAMP)
-				centerprint(targ, "^1Die camper!\n\n\n");
-			else if (deathtype == DEATH_NOAMMO)
-				centerprint(targ, "^1You were killed for running out of ammo...\n\n\n");
-			else if (deathtype == DEATH_ROT)
-				centerprint(targ, "^1You grew too old without taking your medicine\n\n\n");
-			else if (deathtype == DEATH_MIRRORDAMAGE)
-				centerprint(targ, "^1Don't shoot your team mates!\n\n\n");
-			else
-				centerprint(targ, "^1You killed your own dumb self!\n\n\n");
 
-			if (deathtype == IT_GRENADE_LAUNCHER)
-				bprint ("^1",s, "^1 detonated\n");
-			else if (deathtype == IT_ELECTRO)
-				bprint ("^1",s, "^1 played with plasma\n");
-			else if (deathtype == IT_ROCKET_LAUNCHER)
-				bprint ("^1",s, "^1 exploded\n");
-			else if (deathtype == DEATH_KILL)
-				bprint ("^1",s, "^1 couldn't take it anymore\n");
-			else if (deathtype == DEATH_ROT)
-				bprint ("^1",s, "^1 died\n");
-			else if (deathtype == DEATH_NOAMMO)
-			{
-				bprint ("^7",s, " ^7committed suicide. What's the point of living without ammo?\n");
-				//sound (self, CHAN_BODY, "minstagib/mockery.wav", 1, ATTN_NONE);
-			}
-			else if (deathtype == DEATH_CAMP)
-				bprint ("^1",s, "^1 thought he found a nice camping ground\n");
-			else if (deathtype == DEATH_MIRRORDAMAGE)
-				bprint ("^1",s, "^1 didn't become friends with the Lord of Teamplay\n");
-			else if (deathtype != DEATH_TEAMCHANGE)
-				bprint ("^1",s, "^1 couldn't resist the urge to self-destruct\n");
+			if(sv_gentle) {
+				if (deathtype == DEATH_CAMP)
+					bprint ("^1",s, "^1 thought he found a nice camping ground\n");
+				else if (deathtype == DEATH_MIRRORDAMAGE)
+					bprint ("^1",s, "^1 didn't become friends with the Lord of Teamplay\n");
+				else
+					bprint ("^1",s, "^1 will be reinserted into the game due to his own actions\n");
+	
+				if(deathtype != DEATH_TEAMCHANGE)
+				{
+					LogDeath("suicide", deathtype, targ, targ);
+					GiveFrags(attacker, targ, -1);
+				}
+				if (targ.killcount > 2)
+					bprint ("^1",s,"^1 ended it all with a ",ftos(targ.killcount)," scoring spree\n");
+			} else {
 
-			if(deathtype != DEATH_TEAMCHANGE)
-			{
-				LogDeath("suicide", deathtype, targ, targ);
-				GiveFrags(attacker, targ, -1);
+				if (deathtype == IT_GRENADE_LAUNCHER)
+					bprint ("^1",s, "^1 detonated\n");
+				else if (deathtype == IT_ELECTRO)
+					bprint ("^1",s, "^1 played with plasma\n");
+				else if (deathtype == IT_ROCKET_LAUNCHER)
+					bprint ("^1",s, "^1 exploded\n");
+				else if (deathtype == DEATH_KILL)
+					bprint ("^1",s, "^1 couldn't take it anymore\n");
+				else if (deathtype == DEATH_ROT)
+					bprint ("^1",s, "^1 died\n");
+				else if (deathtype == DEATH_NOAMMO)
+				{
+					bprint ("^7",s, " ^7committed suicide. What's the point of living without ammo?\n");
+					//sound (self, CHAN_BODY, "minstagib/mockery.wav", 1, ATTN_NONE);
+				}
+				else if (deathtype == DEATH_CAMP)
+					bprint ("^1",s, "^1 thought he found a nice camping ground\n");
+				else if (deathtype == DEATH_MIRRORDAMAGE)
+					bprint ("^1",s, "^1 didn't become friends with the Lord of Teamplay\n");
+				else if (deathtype != DEATH_TEAMCHANGE)
+					bprint ("^1",s, "^1 couldn't resist the urge to self-destruct\n");
+	
+				if(deathtype != DEATH_TEAMCHANGE)
+				{
+					LogDeath("suicide", deathtype, targ, targ);
+					GiveFrags(attacker, targ, -1);
+				}
+				if (targ.killcount > 2)
+					bprint ("^1",s,"^1 ended it all with a ",ftos(targ.killcount)," kill spree\n");
 			}
-			if (targ.killcount > 2)
-				bprint ("^1",s,"^1 ended it all with a ",ftos(targ.killcount)," kill spree\n");
 		}
 		else if (attacker.classname == "player" || attacker.classname == "gib")
 		{
 			if(teamplay && attacker.team == targ.team)
 			{
-				centerprint(attacker, "^1Moron! You fragged a teammate!\n\n\n");
-				bprint ("^1", a, "^1 mows down a teammate\n");
+				if(sv_gentle) {
+					centerprint(attacker, "^1Moron! You went against a teammate!\n\n\n");
+					bprint ("^1", a, "^1 took action against a teammate\n");
+				} else {				
+					centerprint(attacker, "^1Moron! You fragged a teammate!\n\n\n");
+					bprint ("^1", a, "^1 mows down a teammate\n");
+				}
 				GiveFrags(attacker, targ, -1);
-				if (targ.killcount > 2)
-					bprint ("^1",s,"'s ^1",ftos(targ.killcount)," kill spree was ended by a teammate!\n");
-				if (attacker.killcount > 2)
-					bprint ("^1",a,"^1 ended a ",ftos(attacker.killcount)," kill spree by killing a teammate\n");
+				if (targ.killcount > 2) {
+					if(sv_gentle)
+						bprint ("^1",s,"'s ^1",ftos(targ.killcount)," scoring spree was ended by a teammate!\n");
+					else
+						bprint ("^1",s,"'s ^1",ftos(targ.killcount)," kill spree was ended by a teammate!\n");
+				}
+				if (attacker.killcount > 2) {
+					if(sv_gentle)
+						bprint ("^1",a,"^1 ended a ",ftos(attacker.killcount)," scoring spree by going against a teammate\n");
+					else
+						bprint ("^1",a,"^1 ended a ",ftos(attacker.killcount)," kill spree by killing a teammate\n");
+				}
 				attacker.killcount = 0;
 
 				LogDeath("tk", deathtype, attacker, targ);
@@ -221,92 +264,140 @@
 					//sound(world, CHAN_AUTO, "announcer/firstblood.wav", 1, ATTN_NONE);
 					//if (g_minstagib)
 						//sound(world, CHAN_AUTO, "announce/male/mapkill1.wav", 1, ATTN_NONE);
-					bprint("^1",a, "^1 drew first blood", "\n");
+					if(sv_gentle)
+						bprint("^1",a, "^1 was the first to score", "\n");
+					else
+						bprint("^1",a, "^1 drew first blood", "\n");
 				}
 
-				centerprint(attacker, strcat("^4You fragged ^7", s, "\n\n\n"));
-				centerprint(targ, strcat("^1You were fragged by ^7", a, "\n\n\n"));
+				if(sv_gentle > 0) {
+					centerprint(attacker, strcat("^4You scored against ^7", s, "\n\n\n"));
+					centerprint(targ, strcat(a,"^1 scored against you ^7\n\n\n"));
+				} else {
+					centerprint(attacker, strcat("^4You fragged ^7", s, "\n\n\n"));
+					centerprint(targ, strcat("^1You were fragged by ^7", a, "\n\n\n"));
+				}
 
-				if (deathtype == IT_LASER)
-					bprint ("^1",s, "^1 was blasted by ", a, "\n");
-				else if (deathtype == IT_UZI)
-					bprint ("^1",s, "^1 was riddled full of holes by ", a, "\n");
-				else if (deathtype == IT_SHOTGUN)
-					bprint ("^1",s, "^1 was gunned by ", a, "\n");
-				else if (deathtype == IT_GRENADE_LAUNCHER)
-					bprint ("^1", s, "^1 was blasted by ", a, "\n");
-				else if (deathtype == IT_ELECTRO)
-					bprint ("^1",s, "^1 was blasted by ", a, "\n");
-				else if (deathtype == IT_CRYLINK)
-					bprint ("^1",s, "^1 was blasted by ", a, "\n");
-				else if (deathtype == IT_NEX)
-					bprint ("^1",s, "^1 has been vaporized by ", a, "\n");
-				else if (deathtype == IT_HAGAR)
-					bprint ("^1",s, "^1 was pummeled by ", a, "\n");
-				else if (deathtype == IT_ROCKET_LAUNCHER)
-					bprint ("^1",s, "^1 was blasted by ", a, "\n");
-				else if (deathtype == DEATH_TELEFRAG)
-					bprint ("^1",s, "^1 was telefragged by ", a, "\n");
-				else if (deathtype == DEATH_DROWN)
-					bprint ("^1",s, "^1 was drowned by ", a, "\n");
-				else if (deathtype == DEATH_SLIME)
-					bprint ("^1",s, "^1 was slimed by ", a, "\n");
-				else if (deathtype == DEATH_LAVA)
-					bprint ("^1",s, "^1 was cooked by ", a, "\n");
-				else if (deathtype == DEATH_FALL)
-					bprint ("^1",s, "^1 was grounded by ", a, "\n");
-				else if (deathtype == DEATH_SHOOTING_STAR)
-					bprint ("^1",s, "^1 was shot into space by ", a, "\n");
-				else if (deathtype == DEATH_SWAMP)
-					bprint ("^1",s, "^1 was conserved by ", a, "\n");
-				else if (deathtype == DEATH_HURTTRIGGER)
-					bprint ("^1",s, "^1 was thrown into a world of hurt by ", a, "\n");
-				else
-					bprint ("^1",s, "^1 was fragged by ", a, "\n");
+				if(sv_gentle) {
+					bprint ("^1",s, "^1 needs a restart thanks to ", a, "\n");
+				} else {
+					if (deathtype == IT_LASER)
+						bprint ("^1",s, "^1 was blasted by ", a, "\n");
+					else if (deathtype == IT_UZI)
+						bprint ("^1",s, "^1 was riddled full of holes by ", a, "\n");
+					else if (deathtype == IT_SHOTGUN)
+						bprint ("^1",s, "^1 was gunned by ", a, "\n");
+					else if (deathtype == IT_GRENADE_LAUNCHER)
+						bprint ("^1", s, "^1 was blasted by ", a, "\n");
+					else if (deathtype == IT_ELECTRO)
+						bprint ("^1",s, "^1 was blasted by ", a, "\n");
+					else if (deathtype == IT_CRYLINK)
+						bprint ("^1",s, "^1 was blasted by ", a, "\n");
+					else if (deathtype == IT_NEX)
+						bprint ("^1",s, "^1 has been vaporized by ", a, "\n");
+					else if (deathtype == IT_HAGAR)
+						bprint ("^1",s, "^1 was pummeled by ", a, "\n");
+					else if (deathtype == IT_ROCKET_LAUNCHER)
+						bprint ("^1",s, "^1 was blasted by ", a, "\n");
+					else if (deathtype == DEATH_TELEFRAG)
+						bprint ("^1",s, "^1 was telefragged by ", a, "\n");
+					else if (deathtype == DEATH_DROWN)
+						bprint ("^1",s, "^1 was drowned by ", a, "\n");
+					else if (deathtype == DEATH_SLIME)
+						bprint ("^1",s, "^1 was slimed by ", a, "\n");
+					else if (deathtype == DEATH_LAVA)
+						bprint ("^1",s, "^1 was cooked by ", a, "\n");
+					else if (deathtype == DEATH_FALL)
+						bprint ("^1",s, "^1 was grounded by ", a, "\n");
+					else if (deathtype == DEATH_SHOOTING_STAR)
+						bprint ("^1",s, "^1 was shot into space by ", a, "\n");
+					else if (deathtype == DEATH_SWAMP)
+						bprint ("^1",s, "^1 was conserved by ", a, "\n");
+					else if (deathtype == DEATH_HURTTRIGGER)
+						bprint ("^1",s, "^1 was thrown into a world of hurt by ", a, "\n");
+					else
+						bprint ("^1",s, "^1 was fragged by ", a, "\n");
+				}
 
 				GiveFrags(attacker, targ, 1);
-				if (targ.killcount > 2)
-					bprint ("^1",s,"'s ^1", ftos(targ.killcount), " kill spree was ended by ", a, "\n");
+				if (targ.killcount > 2) {
+					if(sv_gentle)
+						bprint ("^1",s,"'s ^1", ftos(targ.killcount), " scoring spree was ended by ", a, "\n");
+					else
+						bprint ("^1",s,"'s ^1", ftos(targ.killcount), " kill spree was ended by ", a, "\n");
+				}
 				attacker.killcount = attacker.killcount + 1;
-				if (attacker.killcount > 2)
-					bprint ("^1",a,"^1 has ",ftos(attacker.killcount)," frags in a row\n");
+				if (attacker.killcount > 2) {
+					if(sv_gentle)
+						bprint ("^1",a,"^1 made ",ftos(attacker.killcount)," scores in a row\n");
+					else
+						bprint ("^1",a,"^1 has ",ftos(attacker.killcount)," frags in a row\n");
+				}
 
 				LogDeath("frag", deathtype, attacker, targ);
 
 				if (attacker.killcount == 3)
 				{
-					bprint (a,"^7 made a ^1TRIPLE FRAG\n");
-					announce(attacker, "announcer/male/03kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made a ^1TRIPLE SCORE\n");
+					} else {
+						bprint (a,"^7 made a ^1TRIPLE FRAG\n");
+						announce(attacker, "announcer/male/03kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 5)
 				{
-					bprint (a,"^7 unleashes ^1RAGE\n");
-					announce(attacker, "announcer/male/05kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 unleashes ^1SCORING RAGE\n");
+					} else {
+						bprint (a,"^7 unleashes ^1RAGE\n");
+						announce(attacker, "announcer/male/05kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 10)
 				{
-					bprint (a,"^7 starts the ^1MASSACRE!\n");
-					announce(attacker, "announcer/male/10kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made ^1TEN SCORES IN A ROW!\n");
+					} else {
+						bprint (a,"^7 starts the ^1MASSACRE!\n");
+						announce(attacker, "announcer/male/10kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 15)
 				{
-					bprint (a,"^7 executes ^1MAYHEM!\n");
-					announce(attacker, "announcer/male/15kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made ^1FIFTEEN SCORES IN A ROW!\n");
+					} else {
+						bprint (a,"^7 executes ^1MAYHEM!\n");
+						announce(attacker, "announcer/male/15kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 20)
 				{
-					bprint (a,"^7 is a ^1BERSERKER!\n");
-					announce(attacker, "announcer/male/20kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made ^1TWENTY SCORES IN A ROW!\n");
+					} else {
+						bprint (a,"^7 is a ^1BERSERKER!\n");
+						announce(attacker, "announcer/male/20kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 25)
 				{
-					bprint (a,"^7 inflicts ^1CARNAGE!\n");
-					announce(attacker, "announcer/male/25kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made ^1TWENTY FIFE SCORES IN A ROW!\n");
+					} else {
+						bprint (a,"^7 inflicts ^1CARNAGE!\n");
+						announce(attacker, "announcer/male/25kills.ogg");
+					}
 				}
 				else if (attacker.killcount == 30)
 				{
-					bprint (a,"^7 unleashes ^1ARMAGEDDON!\n");
-					announce(attacker, "announcer/male/30kills.ogg");
+					if(sv_gentle) {
+						bprint (a,"^7 made ^1THIRTY SCORES IN A ROW!\n");
+					} else {
+						bprint (a,"^7 unleashes ^1ARMAGEDDON!\n");
+						announce(attacker, "announcer/male/30kills.ogg");
+					}
 				}
 			}
 		}
@@ -316,26 +407,44 @@
 			if (deathtype == DEATH_HURTTRIGGER && attacker.message != "")
 				bprint ("^1",s, "^1 ", attacker.message, "\n");
 			else if (deathtype == DEATH_DROWN)
-				bprint ("^1",s, "^1 drowned\n");
+				if(sv_gentle)
+					bprint ("^1",s, "^1 was in the water for too long\n");
+				else
+					bprint ("^1",s, "^1 drowned\n");
 			else if (deathtype == DEATH_SLIME)
 				bprint ("^1",s, "^1 was slimed\n");
 			else if (deathtype == DEATH_LAVA)
-				bprint ("^1",s, "^1 turned into hot slag\n");
+				if(sv_gentle)
+					bprint ("^1",s, "^1 found a hot place\n");
+				else
+					bprint ("^1",s, "^1 turned into hot slag\n");
 			else if (deathtype == DEATH_FALL)
-				bprint ("^1",s, "^1 hit the ground with a crunch\n");
+				if(sv_gentle)
+					bprint ("^1",s, "^1 tested gravity (and it worked)\n");
+				else
+					bprint ("^1",s, "^1 hit the ground with a crunch\n");
 			else if (deathtype == DEATH_SHOOTING_STAR)
 				bprint ("^1",s, "^1 became a shooting star\n");
 			else if (deathtype == DEATH_SWAMP)
-				bprint ("^1",s, "^1 is now conserved for centuries to come\n");
+				if(sv_gentle)
+					bprint ("^1",s, "^1 discovered a swamp\n");
+				else
+					bprint ("^1",s, "^1 is now conserved for centuries to come\n");
 			else
-				bprint ("^1",s, "^1 died\n");
+				if(sv_gentle)
+					bprint ("^1",s, "^1 needs a restart\n");
+				else
+					bprint ("^1",s, "^1 died\n");
 			GiveFrags(targ, targ, -1);
 			if(targ.frags == -5) {
 				announce(targ, "announcer/male/botlike.ogg");
 			}
 
 			if (targ.killcount > 2)
-				bprint ("^1",s,"^1 died with a ",ftos(targ.killcount)," kill spree\n");
+				if(sv_gentle)
+					bprint ("^1",s,"^1 needs a restart after a ",ftos(targ.killcount)," scoring spree\n");
+				else
+					bprint ("^1",s,"^1 died with a ",ftos(targ.killcount)," kill spree\n");
 
 			LogDeath("accident", deathtype, targ, targ);
 		}

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc	2008-07-02 09:47:14 UTC (rev 3753)
@@ -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(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(sv_gentle > 0) {
+			self.model = "";
+			return TRUE;
+		}
 		if(self.gibrandom > other.cvar_cl_nogibs)
 			self.model = self.mdl;
 		else

Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-07-02 00:03:00 UTC (rev 3752)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-07-02 09:47:14 UTC (rev 3753)
@@ -752,6 +752,7 @@
 void readlevelcvars(void)
 {
 	sv_cheats = cvar("sv_cheats");
+	sv_gentle = cvar("sv_gentle");
 	sv_foginterval = cvar("sv_foginterval");
 	g_cloaked = cvar("g_cloaked");
 	g_footsteps = cvar("g_footsteps");




More information about the nexuiz-commits mailing list