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