]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/race_fix
authorterencehill <piuntn@gmail.com>
Sun, 27 Mar 2016 16:20:20 +0000 (18:20 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 27 Mar 2016 16:20:20 +0000 (18:20 +0200)
qcsrc/server/g_world.qc
qcsrc/server/g_world.qh
qcsrc/server/mutators/mutator/gamemode_race.qc
qcsrc/server/teamplay.qc
qcsrc/server/teamplay.qh

index d4bc83b681d2c63193ce9a71f4b5374fb1380901..99411e0bb24792025366256a0444afef8175c80a 100644 (file)
@@ -562,6 +562,18 @@ void __init_dedicated_server_shutdown() {
        MapInfo_Shutdown();
 }
 
+void SetLimits(int fraglimit_override, int leadlimit_override, float timelimit_override, float qualifying_override)
+{
+       if(!autocvar_g_campaign)
+       {
+               if(fraglimit_override >= 0) cvar_set("fraglimit", ftos(fraglimit_override));
+               if(timelimit_override >= 0) cvar_set("timelimit", ftos(timelimit_override));
+               if(leadlimit_override >= 0) cvar_set("leadlimit", ftos(leadlimit_override));
+               if(qualifying_override >= 0) cvar_set("g_race_qualifying_timelimit", ftos(qualifying_override));
+       }
+       limits_are_set = true;
+}
+
 void Map_MarkAsRecent(string m);
 float world_already_spawned;
 void Nagger_Init();
@@ -718,6 +730,9 @@ spawnfunc(worldspawn)
        readlevelcvars();
        GrappleHookInit();
 
+       if(!limits_are_set)
+               SetLimits(autocvar_fraglimit_override, autocvar_leadlimit_override, autocvar_timelimit_override, -1);
+
        player_count = 0;
        bot_waypoints_for_items = autocvar_g_waypoints_for_items;
        if(bot_waypoints_for_items == 1)
index cd1cafd36a2fd0a5ca60ab1b011391a8a740c559..5366d0a782129ff2cce3e1064a76c14fb877f337 100644 (file)
@@ -10,6 +10,9 @@ const int WINNING_YES = 1; // winner found
 const int WINNING_NEVER = 2; // no winner, enter overtime if time limit is reached
 const int WINNING_STARTSUDDENDEATHOVERTIME = 3; // no winner, enter suddendeath overtime NOW
 
+bool limits_are_set = false;
+void SetLimits(int fraglimit_override, int leadlimit_override, float timelimit_override, float qualifying_override);
+
 float WinningCondition_Scores(float limit, float leadlimit);
 void SetWinners(.float field, float value);
 void CheckRules_Player();
index 3f6a8a85603f6c95dbb7361472d1e457ee5e3b3f..7b769e29ff152f193fd1573c09697da7dede3dd6 100644 (file)
@@ -424,7 +424,7 @@ MUTATOR_HOOKFUNCTION(rc, CheckRules_World)
        {
                if(!g_race_qualifying)
                {
-                       ret_float = WinningCondition_QualifyingThenRace(checkrules_fraglimit);
+                       ret_float = WinningCondition_Race(checkrules_fraglimit);
                        return true;
                }
                else if(g_race_qualifying == 2)
@@ -468,9 +468,8 @@ void rc_SetLimits()
        qualifying_override = autocvar_g_race_qualifying_timelimit_override;
        fraglimit_override = autocvar_g_race_laps_limit;
        leadlimit_override = 0; // currently not supported by race
-       timelimit_override = -1; // use default if we don't set it below
+       timelimit_override = autocvar_timelimit_override;
 
-       // we need to find out the correct value for g_race_qualifying
        float want_qualifying = ((qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit) > 0;
 
        if(autocvar_g_campaign)
@@ -478,20 +477,20 @@ void rc_SetLimits()
                g_race_qualifying = 1;
                independent_players = 1;
        }
-       else if(!autocvar_g_campaign && want_qualifying)
+       else if(want_qualifying)
        {
                g_race_qualifying = 2;
                independent_players = 1;
-               race_fraglimit = (race_fraglimit >= 0) ? fraglimit_override : autocvar_fraglimit;
-               race_leadlimit = (race_leadlimit >= 0) ? leadlimit_override : autocvar_leadlimit;
-               race_timelimit = (race_timelimit >= 0) ? timelimit_override : autocvar_timelimit;
+               race_fraglimit = (fraglimit_override >= 0) ? fraglimit_override : autocvar_fraglimit;
+               race_leadlimit = (leadlimit_override >= 0) ? leadlimit_override : autocvar_leadlimit;
+               race_timelimit = (timelimit_override >= 0) ? timelimit_override : autocvar_timelimit;
+               qualifying_override = (qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit;
                fraglimit_override = 0;
                leadlimit_override = 0;
-               timelimit_override = autocvar_g_race_qualifying_timelimit;
+               timelimit_override = qualifying_override;
        }
        else
                g_race_qualifying = 0;
-
        SetLimits(fraglimit_override, leadlimit_override, timelimit_override, qualifying_override);
 }
 
index 8dd4667117e8d745d12cc62e19fb2fef1add64ff..c275faa7c300b3d97c1115f47603f06317108388 100644 (file)
@@ -44,23 +44,6 @@ void ActivateTeamplay()
        cvar_set("teamplay", "2");  // DP needs this for sending proper getstatus replies.
 }
 
-void SetLimits(int fraglimit_override, int leadlimit_override, float timelimit_override, float qualifying_override)
-{
-       // enforce the server's universal frag/time limits
-       // set to -1 to not change value
-       if(!autocvar_g_campaign)
-       {
-               if(fraglimit_override >= 0)
-                       cvar_set("fraglimit", ftos(fraglimit_override));
-               if(timelimit_override >= 0)
-                       cvar_set("timelimit", ftos(timelimit_override));
-               if(leadlimit_override >= 0)
-                       cvar_set("leadlimit", ftos(leadlimit_override));
-               if(qualifying_override >= 0)
-                       cvar_set("g_race_qualifying_timelimit", ftos(qualifying_override));
-       }
-}
-
 void InitGameplayMode()
 {
        VoteReset();
@@ -89,8 +72,6 @@ void InitGameplayMode()
 
        MapInfo_ClearTemps();
 
-       // set both here, gamemode can override it later
-       SetLimits(autocvar_fraglimit_override, autocvar_leadlimit_override, autocvar_timelimit_override, -1);
        gamemode_name = MapInfo_Type_ToText(MapInfo_LoadedGametype);
 
        cache_mutatormsg = strzone("");
index 2a3a528fea537dd16a59c839f5e6b373415c84e6..df82a9cae6040e830e077a22bee2f13db963db9d 100644 (file)
@@ -20,8 +20,6 @@ void default_delayedinit(entity this);
 
 void ActivateTeamplay();
 
-void SetLimits(int fraglimit_override, int leadlimit_override, float timelimit_override, float qualifying_override);
-
 void InitGameplayMode();
 
 string GetClientVersionMessage();