]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/gamemode_race.qc
Merge branch 'master' into terencehill/tooltips_cleanup
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / gamemode_race.qc
index 244b9f0e50e8c927dcc15c976a1a57f05264a366..271456986d393461bbd21f00030bff8092abda33 100644 (file)
@@ -1,7 +1,13 @@
+#include "gamemode_race.qh"
+
+#include "gamemode.qh"
+
+#include "../race.qh"
+
 // legacy bot roles
 .float race_checkpoint;
 void havocbot_role_race()
-{
+{SELFPARAM();
        if(self.deadflag != DEAD_NO)
                return;
 
@@ -57,7 +63,7 @@ void race_EventLog(string mode, entity actor) // use an alias for easy changing
 }
 
 MUTATOR_HOOKFUNCTION(race_PlayerPhysics)
-{
+{SELFPARAM();
        // force kbd movement for fairness
        float wishspeed;
        vector wishvel;
@@ -103,7 +109,7 @@ MUTATOR_HOOKFUNCTION(race_PlayerPhysics)
                                self.movement_y = -M_SQRT1_2 * wishspeed;
                }
        }
-       
+
        return false;
 }
 
@@ -137,12 +143,12 @@ MUTATOR_HOOKFUNCTION(race_ResetMap)
                cvar_set("timelimit", ftos(race_timelimit));
                race_ScoreRules();
        }
-       
+
        return false;
 }
 
 MUTATOR_HOOKFUNCTION(race_PlayerPreThink)
-{
+{SELFPARAM();
        if(IS_SPEC(self) || IS_OBSERVER(self))
        if(g_race_qualifying)
        if(msg_entity.enemy.race_laptime)
@@ -152,7 +158,7 @@ MUTATOR_HOOKFUNCTION(race_PlayerPreThink)
 }
 
 MUTATOR_HOOKFUNCTION(race_ClientConnect)
-{
+{SELFPARAM();
        race_PreparePlayer();
        self.race_checkpoint = -1;
 
@@ -179,7 +185,7 @@ MUTATOR_HOOKFUNCTION(race_ClientConnect)
 }
 
 MUTATOR_HOOKFUNCTION(race_MakePlayerObserver)
-{
+{SELFPARAM();
        if(g_race_qualifying)
        if(PlayerScore_Add(self, SP_RACE_FASTEST, 0))
                self.frags = FRAGS_LMS_LOSER;
@@ -193,7 +199,7 @@ MUTATOR_HOOKFUNCTION(race_MakePlayerObserver)
 }
 
 MUTATOR_HOOKFUNCTION(race_PlayerSpawn)
-{
+{SELFPARAM();
        if(spawn_spot.target == "")
                // Emergency: this wasn't a real spawnpoint. Can this ever happen?
                race_PreparePlayer();
@@ -203,12 +209,12 @@ MUTATOR_HOOKFUNCTION(race_PlayerSpawn)
        self.race_respawn_spotref = spawn_spot;
 
        self.race_place = 0;
-       
+
        return false;
 }
 
 MUTATOR_HOOKFUNCTION(race_PutClientInServer)
-{
+{SELFPARAM();
        if(IS_PLAYER(self))
        if(!gameover)
        {
@@ -223,20 +229,20 @@ MUTATOR_HOOKFUNCTION(race_PutClientInServer)
 }
 
 MUTATOR_HOOKFUNCTION(race_PlayerDies)
-{
+{SELFPARAM();
        self.respawn_flags |= RESPAWN_FORCE;
        race_AbandonRaceCheck(self);
        return false;
 }
 
 MUTATOR_HOOKFUNCTION(race_BotRoles)
-{
+{SELFPARAM();
        self.havocbot_role = havocbot_role_race;
        return true;
 }
 
 MUTATOR_HOOKFUNCTION(race_PlayerPostThink)
-{
+{SELFPARAM();
        if(self.cvar_cl_allow_uidtracking == 1 && self.cvar_cl_allow_uid2name == 1)
        {
                if (!self.stored_netname)
@@ -266,6 +272,15 @@ MUTATOR_HOOKFUNCTION(race_GetTeamCount)
        return false;
 }
 
+MUTATOR_HOOKFUNCTION(race_CountFrags)
+{
+       // announce remaining frags if not in qualifying mode
+       if(!g_race_qualifying)
+               return true;
+
+       return false;
+}
+
 void race_Initialize()
 {
        race_ScoreRules();
@@ -287,6 +302,7 @@ MUTATOR_DEFINITION(gamemode_race)
        MUTATOR_HOOK(GetPressedKeys, race_PlayerPostThink, CBC_ORDER_ANY);
        MUTATOR_HOOK(ForbidPlayerScore_Clear, race_ForbidClearPlayerScore, CBC_ORDER_ANY);
        MUTATOR_HOOK(GetTeamCount, race_GetTeamCount, CBC_ORDER_ANY);
+       MUTATOR_HOOK(Scores_CountFragsRemaining, race_CountFrags, CBC_ORDER_ANY);
 
        MUTATOR_ONADD
        {
@@ -304,7 +320,7 @@ MUTATOR_DEFINITION(gamemode_race)
 
        MUTATOR_ONREMOVE
        {
-               print("This is a game type and it cannot be removed at runtime.");
+               LOG_INFO("This is a game type and it cannot be removed at runtime.");
                return -1;
        }