From 028c37ef6bb36f7fdc06d0b78939d5ceb3887450 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 9 Aug 2008 15:14:07 +0000 Subject: [PATCH] when dead and respawning behind a checkpoint, also retract the checkpoint number (or stop the timer, when back at the finish line) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4077 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 4 ++++ data/qcsrc/server/race.qc | 11 +++++++++++ data/qcsrc/server/race.qh | 1 + 3 files changed, 16 insertions(+) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 5ce54db87..85deb566e 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -702,9 +702,13 @@ void PutClientInServer (void) if(g_race) if(self.killcount != -666) + { if(spot.target == "") // let the player run without timing, if he did not spawn at a targetting spawnpoint race_PreparePlayer(); + else + race_RetractPlayer(); + } if(self.killcount == -666) { PlayerScore_Clear(self); diff --git a/data/qcsrc/server/race.qc b/data/qcsrc/server/race.qc index a694491d7..277c8c79a 100644 --- a/data/qcsrc/server/race.qc +++ b/data/qcsrc/server/race.qc @@ -244,9 +244,20 @@ void race_PreparePlayer() { if(!g_race) return; + print("prepare\n"); race_ClearTime(self); } +void race_RetractPlayer() +{ + if(!g_race) + return; + print("retract\n"); + self.race_checkpoint = race_PreviousCheckpoint(self.race_checkpoint); + if(self.race_checkpoint == 0) + race_ClearTime(self); +} + void spawnfunc_info_player_race (void) { if(!g_race) diff --git a/data/qcsrc/server/race.qh b/data/qcsrc/server/race.qh index 71f62e93f..a97fab0aa 100644 --- a/data/qcsrc/server/race.qh +++ b/data/qcsrc/server/race.qh @@ -1,4 +1,5 @@ void race_PreparePlayer(); +void race_RetractPlayer(); // go back by one checkpoint float race_teams; float race_spawns; float race_PreviousCheckpoint(float f); -- 2.39.2