]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/gamemodes/gamemode/race/sv_race.qc
Store record type into a global to avoid some gamemode checks
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / race / sv_race.qc
index 66b23f6a6879160d00933705e17624553f5a2310..d00a163084a34b2461a989b362ae1f4740d2aac6 100644 (file)
@@ -1,6 +1,12 @@
 #include "sv_race.qh"
 
+#include <server/client.qh>
+#include <server/world.qh>
+#include <server/gamelog.qh>
+#include <server/intermission.qh>
 #include <server/race.qh>
+#include <common/ent_cs.qh>
+#include <common/mapobjects/triggers.qh>
 
 #define autocvar_g_race_laps_limit cvar("g_race_laps_limit")
 float autocvar_g_race_qualifying_timelimit;
@@ -202,7 +208,7 @@ MUTATOR_HOOKFUNCTION(rc, reset_map_global)
        Score_NicePrint(NULL);
 
        race_ClearRecords();
-       PlayerScore_Sort(race_place, 0, 1, 0);
+       PlayerScore_Sort(race_place, 0, true, false);
 
        FOREACH_CLIENT(true, {
                if(it.race_place)
@@ -232,16 +238,14 @@ MUTATOR_HOOKFUNCTION(rc, ClientConnect)
        race_PreparePlayer(player);
        player.race_checkpoint = -1;
 
-       string rr = RACE_RECORD;
-
        if(IS_REAL_CLIENT(player))
        {
                msg_entity = player;
                race_send_recordtime(MSG_ONE);
                race_send_speedaward(MSG_ONE);
 
-               speedaward_alltimebest = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "speed/speed")));
-               speedaward_alltimebest_holder = uid2name(db_get(ServerProgsDB, strcat(GetMapname(), rr, "speed/crypto_idfp")));
+               speedaward_alltimebest = stof(db_get(ServerProgsDB, strcat(GetMapname(), record_type, "speed/speed")));
+               speedaward_alltimebest_holder = uid2name(db_get(ServerProgsDB, strcat(GetMapname(), record_type, "speed/crypto_idfp")));
                race_send_speedaward_alltimebest(MSG_ONE);
 
                float i;
@@ -261,7 +265,7 @@ MUTATOR_HOOKFUNCTION(rc, MakePlayerObserver)
        if(g_race_qualifying)
        {
                if(GameRules_scoring_add(player, RACE_FASTEST, 0))
-                       player.frags = FRAGS_LMS_LOSER;
+                       player.frags = FRAGS_PLAYER_OUT_OF_GAME;
                else
                        player.frags = FRAGS_SPECTATOR;
        }
@@ -322,16 +326,7 @@ MUTATOR_HOOKFUNCTION(rc, GetPressedKeys)
 {
        entity player = M_ARGV(0, entity);
 
-       if(CS(player).cvar_cl_allow_uidtracking == 1 && CS(player).cvar_cl_allow_uid2name == 1)
-       {
-               if (!player.stored_netname)
-                       player.stored_netname = strzone(uid2name(player.crypto_idfp));
-               if(player.stored_netname != player.netname)
-               {
-                       db_put(ServerProgsDB, strcat("/uid2name/", player.crypto_idfp), player.netname);
-                       strcpy(player.stored_netname, player.netname);
-               }
-       }
+       race_checkAndWriteName(player);
 
        if (!IS_OBSERVER(player))
        {
@@ -342,9 +337,8 @@ MUTATOR_HOOKFUNCTION(rc, GetPressedKeys)
                        speedaward_uid = player.crypto_idfp;
                        speedaward_lastupdate = time;
                }
-               if (speedaward_speed > speedaward_lastsent && time - speedaward_lastupdate > 1)
+               if (speedaward_speed > speedaward_lastsent && (time - speedaward_lastupdate > 1 || intermission_running))
                {
-                       string rr = RACE_RECORD;
                        race_send_speedaward(MSG_ALL);
                        speedaward_lastsent = speedaward_speed;
                        if (speedaward_speed > speedaward_alltimebest && speedaward_uid != "")
@@ -352,8 +346,8 @@ MUTATOR_HOOKFUNCTION(rc, GetPressedKeys)
                                speedaward_alltimebest = speedaward_speed;
                                speedaward_alltimebest_holder = speedaward_holder;
                                speedaward_alltimebest_uid = speedaward_uid;
-                               db_put(ServerProgsDB, strcat(GetMapname(), rr, "speed/speed"), ftos(speedaward_alltimebest));
-                               db_put(ServerProgsDB, strcat(GetMapname(), rr, "speed/crypto_idfp"), speedaward_alltimebest_uid);
+                               db_put(ServerProgsDB, strcat(GetMapname(), record_type, "speed/speed"), ftos(speedaward_alltimebest));
+                               db_put(ServerProgsDB, strcat(GetMapname(), record_type, "speed/crypto_idfp"), speedaward_alltimebest_uid);
                                race_send_speedaward_alltimebest(MSG_ALL);
                        }
                }
@@ -444,6 +438,7 @@ void race_Initialize()
        race_ScoreRules();
        if(g_race_qualifying == 2)
                warmup_stage = 0;
+       radar_showenemies = true;
 }
 
 void rc_SetLimits()
@@ -466,6 +461,8 @@ void rc_SetLimits()
 
        float want_qualifying = ((qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit) > 0;
 
+       record_type = RACE_RECORD;
+
        if(autocvar_g_campaign)
        {
                g_race_qualifying = 1;