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

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Jan 14 13:57:36 EST 2007


Author: div0
Date: 2007-01-14 13:57:35 -0500 (Sun, 14 Jan 2007)
New Revision: 2112

Modified:
   branches/nexuiz-2.0/data/default.cfg
   branches/nexuiz-2.0/data/qcsrc/server/bots.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
   branches/nexuiz-2.0/data/qcsrc/server/constants.qh
   branches/nexuiz-2.0/data/qcsrc/server/defs.qh
   branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
Log:
respawn when RELEASING the button;
respawn time customizable;
vote master message formatting


Modified: branches/nexuiz-2.0/data/default.cfg
===================================================================
--- branches/nexuiz-2.0/data/default.cfg	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/default.cfg	2007-01-14 18:57:35 UTC (rev 2112)
@@ -240,6 +240,24 @@
 seta g_domination_point_limit -1
 seta g_runematch_point_limit -1
 
+// respawn delay
+set g_respawn_delay 2
+set g_respawn_waves 0
+// when variables are set to 0, they take over the global setting...
+// to force disable delay or waves, set them to 0.125
+set g_ctf_respawn_delay 0
+set g_ctf_respawn_waves 0
+set g_dm_respawn_delay 0
+set g_dm_respawn_waves 0
+set g_dom_respawn_delay 0
+set g_dom_respawn_waves 0
+set g_lms_respawn_delay 0
+set g_lms_respawn_waves 0
+set g_rune_respawn_delay 0
+set g_rune_respawn_waves 0
+set g_tdm_respawn_delay 0
+set g_tdm_respawn_waves 0
+
 // maximum overtime
 seta timelimit_maxovertime 5
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/bots.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2007-01-14 18:57:35 UTC (rev 2112)
@@ -1669,7 +1669,7 @@
 	// if dead, just wait until we can respawn
 	if (self.deadflag)
 	{
-		if (self.deadflag == DEAD_RESPAWNABLE)
+		if (self.deadflag == DEAD_DEAD)
 			self.button2 = 1; // press jump to respawn
 		return;
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2007-01-14 18:57:35 UTC (rev 2112)
@@ -1285,6 +1285,32 @@
 
 /*
 =============
+ShowRespawnCountdown()
+
+Update a respawn countdown display.
+=============
+*/
+void ShowRespawnCountdown()
+{
+	float number;
+	if(self.deadflag == DEAD_NO) // just respawned?
+		return;
+	else
+	{
+		number = ceil(self.death_time - time);
+		if(number <= 0)
+			return;
+		if(number <= self.respawn_countdown)
+		{
+			self.respawn_countdown = number - 1;
+			if(ceil(self.death_time - (time + 0.5)) == number) // only say it if it is the same number even in 0.5s; to prevent overlapping sounds
+				stuffcmd(self, strcat("play2 announcer/robotic/", ftos(number), ".ogg\n"));
+		}
+	}
+}
+
+/*
+=============
 PlayerPreThink
 
 Called every frame for each client before the physics are run
@@ -1332,34 +1358,33 @@
 
 		if (self.deadflag != DEAD_NO)
 		{
+			float button_pressed, force_respawn;
 			player_anim();
+			button_pressed = (self.button0 || self.button2 || self.button3 || self.button4 || self.button5 || self.button6 || self.button7 || self.button8 || self.buttonuse);
+			force_respawn = (cvar("g_lms") || cvar("g_forced_respawn"));
 			if (self.deadflag == DEAD_DYING)
 			{
-				if (time > self.dead_time)
+				if(force_respawn)
+					self.deadflag = DEAD_RESPAWNING;
+				else if(!button_pressed)
 					self.deadflag = DEAD_DEAD;
 			}
 			else if (self.deadflag == DEAD_DEAD)
 			{
-				if (cvar("g_lms") || cvar("g_arena") || cvar("g_forced_respawn"))
+				if(button_pressed)
 					self.deadflag = DEAD_RESPAWNABLE;
-				else if (!self.button0 && !self.button2 && !self.button3)
-					self.deadflag = DEAD_RESPAWNABLE;
 			}
 			else if (self.deadflag == DEAD_RESPAWNABLE)
 			{
-				if (self.button0  ||
-				    self.button2  ||
-				    self.button3  ||
-				    self.button4  ||
-				    self.button5  ||
-				    self.button6  ||
-				    self.button7  ||
-				    self.button8  ||
-				    self.buttonuse ||
-				    cvar("g_lms") ||
-				    cvar("g_forced_respawn"))
+				if(!button_pressed)
+					self.deadflag = DEAD_RESPAWNING;
+			}
+			else if (self.deadflag == DEAD_RESPAWNING)
+			{
+				if(time > self.death_time)
 					respawn();
 			}
+			ShowRespawnCountdown();
 			return;
 		}
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2007-01-14 18:57:35 UTC (rev 2112)
@@ -205,7 +205,7 @@
 
 void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
 {
-	local float take, save;
+	local float take, save, waves, sdelay;
 
 	te_blood (hitloc, force, damage);
 	if (self.pain_finished < time)		//Don't switch pain sequences like crazy
@@ -312,7 +312,20 @@
 		// dying animation
 		self.deadflag = DEAD_DYING;
 		// when to allow respawn
-		self.death_time = time + 0.5;
+		sdelay = cvar(strcat("g_", GetGametype(), "_respawn_delay"));
+		if(!sdelay)
+			sdelay = cvar("g_respawn_delay");
+		waves = cvar(strcat("g_", GetGametype(), "_respawn_waves"));
+		if(!waves)
+			waves = cvar("g_respawn_waves");
+		if(waves)
+			self.death_time = ceil((time + sdelay) / waves) * waves;
+		else
+			self.death_time = time + sdelay;
+		if((sdelay + waves >= 5.0) && (self.death_time - time > 1.75))
+			self.respawn_countdown = 10; // first number to count down from is 10
+		else
+			self.respawn_countdown = -1; // do not count down
 		// when to switch to the dead_frame
 		self.dead_time = time + 2;
 		if (random() < 0.5)

Modified: branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc	2007-01-14 18:57:35 UTC (rev 2112)
@@ -209,7 +209,7 @@
 					votefinished = time + cvar("sv_vote_timeout");
 					votecaller.vote_vote = 1; // of course you vote yes
 					votecaller.vote_next = time + cvar("sv_vote_wait");
-					bprint(strcat("\"^3", votecaller.netname, "^3\" called a vote to become ^3master^3.\n"));
+					bprint(strcat("\{1}^2* ^3", votecaller.netname, "^2 calls a vote to become ^3master^2.\n"));
 					VoteCount(); // needed if you are the only one
 				}
 			} else {
@@ -242,7 +242,7 @@
 					if(strlen(dovote) >= 6)
 						if(substring(dovote, 0, 6) == "chmap ")
 							vote = strcat("gotomap ", substring(dovote, 6, strlen(dovote) - 6));
-					bprint("\"^7", strcat(self.netname, "^2 used his ^3master^2 status to do \"^2", dovote, "^2\".\n"));
+					bprint("\{1}^2* ^3", strcat(self.netname, "^2 used his ^3master^2 status to do \"^2", dovote, "^2\".\n"));
 					localcmd(strcat(dovote, "\n"));
 				} else {
 					sprint(self, "^1This command is not ok. See help for more info.\n");

Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2007-01-14 18:57:35 UTC (rev 2112)
@@ -44,6 +44,7 @@
 float	DEAD_DYING				= 1;
 float	DEAD_DEAD				= 2;
 float	DEAD_RESPAWNABLE			= 3;
+float	DEAD_RESPAWNING			= 4;
 
 float	DAMAGE_NO				= 0;
 float	DAMAGE_YES				= 1;

Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2007-01-14 18:57:35 UTC (rev 2112)
@@ -303,3 +303,5 @@
 void centerprint_atprio(entity e, float prio, string s);
 void centerprint_expire(entity e, float prio);
 void centerprint(entity e, string s);
+
+.float respawn_countdown; // next number to count

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2007-01-14 18:55:33 UTC (rev 2111)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2007-01-14 18:57:35 UTC (rev 2112)
@@ -242,6 +242,16 @@
 	precache_sound ("announcer/robotic/3fragsleft.ogg");
 	precache_sound ("announcer/robotic/lastsecond.ogg");
 	precache_sound ("announcer/robotic/narrowly.ogg");
+	precache_sound ("announcer/robotic/1.ogg");
+	precache_sound ("announcer/robotic/2.ogg");
+	precache_sound ("announcer/robotic/3.ogg");
+	precache_sound ("announcer/robotic/4.ogg");
+	precache_sound ("announcer/robotic/5.ogg");
+	precache_sound ("announcer/robotic/6.ogg");
+	precache_sound ("announcer/robotic/7.ogg");
+	precache_sound ("announcer/robotic/8.ogg");
+	precache_sound ("announcer/robotic/9.ogg");
+	precache_sound ("announcer/robotic/10.ogg");
 
 	// plays music for the level if there is any
 	if (self.noise)
@@ -374,23 +384,28 @@
 	}
 };
 
-string GetMapname()
+string GetGametype()
 {
 	if (game == GAME_DEATHMATCH)
-		return strcat("dm_", mapname);
+		return "dm";
 	else if (game == GAME_TEAM_DEATHMATCH)
-		return strcat("tdm_", mapname);
+		return "tdm";
 	else if (game == GAME_DOMINATION)
-		return strcat("dom_", mapname);
+		return "dom";
 	else if (game == GAME_CTF)
-		return strcat("ctf_", mapname);
+		return "ctf";
 	else if (game == GAME_RUNEMATCH)
-		return strcat("rune_", mapname);
+		return "rune";
 	else if (game == GAME_LMS)
-		return strcat("lms_", mapname);
-	return strcat("dm_", mapname);
+		return "lms";
+	return "dm";
 }
 
+string GetMapname()
+{
+	return strcat(GetGametype(), "_", mapname);
+}
+
 float Map_Count, Map_Current;
 string Map_Current_Name;
 




More information about the nexuiz-commits mailing list