]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator/gamemode_race.qc
Merge branch 'TimePath/globalforces' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator / gamemode_race.qc
index f58004f7b3ebb9bb3f2d71069f6dee7147081aa5..04561db369e806d5d6d227d49f56614680bb7f8c 100644 (file)
@@ -57,7 +57,7 @@ void havocbot_role_race(entity this)
                this.bot_strategytime = time + autocvar_bot_ai_strategyinterval;
                navigation_goalrating_start(this);
 
-               for(e = world; (e = find(e, classname, "trigger_race_checkpoint")) != world; )
+               for(e = NULL; (e = find(e, classname, "trigger_race_checkpoint")) != NULL; )
                {
                        if(e.cnt == this.race_checkpoint)
                        {
@@ -78,7 +78,7 @@ void race_ScoreRules()
        ScoreRules_basics(race_teams, 0, 0, false);
        if(race_teams)
        {
-               ScoreInfo_SetLabel_TeamScore(  ST_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
+               ScoreInfo_SetLabel_TeamScore(  ST_RACE_LAPS,    "laps",       SFL_SORT_PRIO_PRIMARY);
                ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
                ScoreInfo_SetLabel_PlayerScore(SP_RACE_TIME,    "time",      SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
                ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_LOWER_IS_BETTER | SFL_TIME);
@@ -99,7 +99,7 @@ void race_ScoreRules()
 void race_EventLog(string mode, entity actor) // use an alias for easy changing and quick editing later
 {
        if(autocvar_sv_eventlog)
-               GameLogEcho(strcat(":race:", mode, ":", ((actor != world) ? (strcat(":", ftos(actor.playerid))) : "")));
+               GameLogEcho(strcat(":race:", mode, ":", ((actor != NULL) ? (strcat(":", ftos(actor.playerid))) : "")));
 }
 
 float WinningCondition_Race(float fraglimit)
@@ -143,8 +143,9 @@ float WinningCondition_QualifyingThenRace(float limit)
 MUTATOR_HOOKFUNCTION(rc, PlayerPhysics)
 {
        entity player = M_ARGV(0, entity);
+       float dt = M_ARGV(1, float);
 
-       player.race_movetime_frac += PHYS_INPUT_TIMELENGTH;
+       player.race_movetime_frac += dt;
        float f = floor(player.race_movetime_frac);
        player.race_movetime_frac -= f;
        player.race_movetime_count += f;
@@ -159,7 +160,7 @@ MUTATOR_HOOKFUNCTION(rc, PlayerPhysics)
                if(player.race_penalty)
                {
                        player.velocity = '0 0 0';
-                       player.movetype = MOVETYPE_NONE;
+                       set_movetype(player, MOVETYPE_NONE);
                        player.disableclientprediction = 2;
                }
        }
@@ -216,7 +217,7 @@ MUTATOR_HOOKFUNCTION(rc, reset_map_global)
 {
        float s;
 
-       Score_NicePrint(world);
+       Score_NicePrint(NULL);
 
        race_ClearRecords();
        PlayerScore_Sort(race_place, 0, 1, 0);
@@ -240,8 +241,6 @@ MUTATOR_HOOKFUNCTION(rc, reset_map_global)
                cvar_set("timelimit", ftos(race_timelimit));
                race_ScoreRules();
        }
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, ClientConnect)
@@ -269,8 +268,6 @@ MUTATOR_HOOKFUNCTION(rc, ClientConnect)
                        race_SendRankings(i, 0, 0, MSG_ONE);
                }
        }
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, MakePlayerObserver)
@@ -301,8 +298,6 @@ MUTATOR_HOOKFUNCTION(rc, PlayerSpawn)
        player.race_respawn_spotref = spawn_spot;
 
        player.race_place = 0;
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, PutClientInServer)
@@ -319,16 +314,14 @@ MUTATOR_HOOKFUNCTION(rc, PutClientInServer)
 
                race_AbandonRaceCheck(player);
        }
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, PlayerDies)
 {
        entity frag_target = M_ARGV(2, entity);
-       
+
        frag_target.respawn_flags |= RESPAWN_FORCE;
        race_AbandonRaceCheck(frag_target);
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, HavocBot_ChooseRole)
@@ -386,8 +379,6 @@ MUTATOR_HOOKFUNCTION(rc, ForbidPlayerScore_Clear)
 {
        if(g_race_qualifying)
                return true; // in qualifying, you don't lose score by observing
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, GetTeamCount, CBC_ORDER_EXCLUSIVE)
@@ -400,8 +391,6 @@ MUTATOR_HOOKFUNCTION(rc, Scores_CountFragsRemaining)
        // announce remaining frags if not in qualifying mode
        if(!g_race_qualifying)
                return true;
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, GetRecords)
@@ -451,15 +440,12 @@ MUTATOR_HOOKFUNCTION(rc, CheckRules_World)
                        return true;
                }
        }
-
-       return false;
 }
 
 MUTATOR_HOOKFUNCTION(rc, ReadLevelCvars)
 {
        if(g_race_qualifying == 2)
                warmup_stage = 0;
-       return false;
 }
 
 void race_Initialize()
@@ -478,6 +464,14 @@ void rc_SetLimits()
        {
                ActivateTeamplay();
                race_teams = bound(2, autocvar_g_race_teams, 4);
+               int teams = 0;
+               if(race_teams >= 1) teams |= BIT(0);
+               if(race_teams >= 2) teams |= BIT(1);
+               if(race_teams >= 3) teams |= BIT(2);
+               if(race_teams >= 4) teams |= BIT(3);
+
+               race_teams = teams; // now set it?
+
                have_team_spawns = -1; // request team spawns
        }
        else