]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
reimplement the cts kill delay from fruitiex/rankings-recode. This is a feature that...
authorFruitieX <rasse@rasse-laptop.(none)>
Sat, 23 Oct 2010 13:25:56 +0000 (16:25 +0300)
committerFruitieX <rasse@rasse-laptop.(none)>
Sat, 23 Oct 2010 13:25:56 +0000 (16:25 +0300)
defaultXonotic.cfg
qcsrc/server/cl_client.qc
qcsrc/server/race.qc

index e9cd073be1b929be1b1a8b8dfaa41d4c79f126d7..55499628c72cb2307a4de43e539094c314db7f44 100644 (file)
@@ -626,6 +626,7 @@ set g_rc_respawn_delay 0
 set g_cts_respawn_waves 0
 set g_cts_respawn_delay 0
 set g_cts_selfdamage 1 "0 = disable all selfdamage and falldamage in cts"
+set g_cts_finish_kill_delay 10 "prevent cheating by running back to the start line, and starting out with more speed than otherwise possible"
 
 // overtime
 seta timelimit_overtime 2 "duration in minutes of one added overtime, added to the timelimit"
index df6c8d4b2a3f41e0793e271d8aae9a9b54512692..e618b565bd2c36a0ffbec57a519bd9e8318f775c 100644 (file)
@@ -1308,6 +1308,22 @@ void ClientKill (void)
        ClientKill_TeamChange(0);
 }
 
+void CTS_ClientKill_Think (void)
+{
+       self = self.owner; // set self to the player to be killed
+       sprint(self, "^1You were killed in order to prevent cheating!");
+       ClientKill_Now();
+}
+
+void CTS_ClientKill (float t) // silent version of ClientKill
+{
+       entity e;
+       spawn(e);
+       e.owner = self;
+       e.think = CTS_ClientKill_Think;
+       e.nextthink = t;
+}
+
 void DoTeamChange(float destteam)
 {
        float t, c0;
index 2f158898198aafe3b45aeedbe4a1a04979fbf6b8..2de74ab523cd3d83e50f9ff4c9e21e54c77619e4 100644 (file)
@@ -441,7 +441,12 @@ void race_SendTime(entity e, float cp, float t, float tvalid)
 
                        if(t != 0) {
                                if(cp == race_timed_checkpoint)
+                               {
                                        race_SetTime(e, t, recordtime);
+                                       if(g_cts && cvar("g_cts_finish_kill_delay"))
+                                       {
+                                               CTS_ClientKill(cvar("g_cts_finish_kill_delay"));
+                                       }
 
                                if(t < recordtime || recordtime == 0)
                                {