diff --git a/reaction/game/g_main.c b/reaction/game/g_main.c index 61d9c4ae..455a4ca8 100644 --- a/reaction/game/g_main.c +++ b/reaction/game/g_main.c @@ -1340,7 +1340,7 @@ void G_InitGame(int levelTime, int randomSeed, int restart) // set some level globals memset(&level, 0, sizeof(level)); level.time = levelTime; - level.startTime = levelTime; + level.startTime = 0; // Our start time will be set when we finish "Action" the first time level.snd_fry = G_SoundIndex("sound/player/fry.wav"); // FIXME standing in lava / slime diff --git a/reaction/game/g_teamplay.c b/reaction/game/g_teamplay.c index 9156480c..d6fbc0d9 100644 --- a/reaction/game/g_teamplay.c +++ b/reaction/game/g_teamplay.c @@ -675,7 +675,18 @@ void CheckTeamRules() } if (g_gametype.integer == GT_CTF || g_gametype.integer == GT_TEAM) { - if (level.time - level.startTime >= g_timelimit.integer * 60000) { + qboolean matchOver = qfalse; + if ( g_RQ3_matchmode.integer && g_RQ3_roundtimelimit.integer && + (level.current_round_length > g_RQ3_roundtimelimit.integer * 60 * level.fps)) + { + matchOver = qtrue; + } else if ( !g_RQ3_matchmode.integer && level.time - level.startTime >= g_timelimit.integer * 60000) + { + matchOver = qtrue; + } + + if ( matchOver ) + { trap_SendServerCommand(-1, "print \"^1Timelimit hit.\n\""); trap_SendServerCommand(-1, va("print \"^6Scores:^7 %s [^3%d^7] - %s [^3%d^7]\n\"", g_RQ3_team1name.string, level.teamScores[TEAM_RED], @@ -734,6 +745,9 @@ void ContinueLCA() trap_Cvar_Set("g_RQ3_lca", "0"); level.team_round_going = 1; level.current_round_length = 0; + if ( level.startTime == 0 ) { + level.startTime = level.time; + } } level.lights_camera_action--; }