diff -uwbBEdrN src/game/g_cmds.c src/game/g_cmds.c --- src/game/g_cmds.c 2006-11-17 01:35:27.000000000 -0500 +++ src/game/g_cmds.c 2006-11-17 02:00:53.000000000 -0500 @@ -659,6 +659,16 @@ char s[ MAX_TOKEN_CHARS ]; qboolean force = G_admin_permission(ent, ADMF_FORCETEAMCHANGE); + // do warm up + if( !force && g_doWarmup.integer && + level.time - level.startTime < g_warmup.integer * 1000 ) + { + trap_SendServerCommand( ent - g_entities, va( "print \"team: you can't join" + " a team during warm up (%d seconds remaining)\n\"", + g_warmup.integer - ( level.time - level.startTime ) / 1000 ) ); + return; + } + trap_Argv( 1, s, sizeof( s ) ); if( !strlen( s ) ) diff -uwbBEdrN src/game/g_combat.c src/game/g_combat.c --- src/game/g_combat.c 2006-11-17 01:35:27.000000000 -0500 +++ src/game/g_combat.c 2006-11-17 02:01:08.000000000 -0500 @@ -41,10 +41,6 @@ if( !ent->client ) return; - // no scoring during pre-match warmup - if( level.warmupTime ) - return; - ent->client->ps.persistant[ PERS_SCORE ] += score; CalculateRanks( ); } diff -uwbBEdrN src/game/g_local.h src/game/g_local.h --- src/game/g_local.h 2006-11-17 01:35:27.000000000 -0500 +++ src/game/g_local.h 2006-11-17 02:01:50.000000000 -0500 @@ -514,8 +514,6 @@ int gentitySize; int num_entities; // current number, <= MAX_GENTITIES - int warmupTime; // restart match at this time - fileHandle_t logFile; // store latched cvars here that we want to get at often @@ -543,8 +541,6 @@ int snd_fry; // sound index for standing in lava - int warmupModificationCount; // for detecting if g_warmup is changed - // voting state char voteString[MAX_STRING_CHARS]; char voteDisplayString[MAX_STRING_CHARS]; diff -uwbBEdrN src/game/g_main.c src/game/g_main.c --- src/game/g_main.c 2006-11-17 01:35:27.000000000 -0500 +++ src/game/g_main.c 2006-11-17 02:11:43.000000000 -0500 @@ -425,9 +425,6 @@ if( remapped ) G_RemapTeamShaders( ); - - // check some things - level.warmupModificationCount = g_warmup.modificationCount; } /* @@ -1819,7 +1816,7 @@ return; } - if( g_timelimit.integer && !level.warmupTime ) + if( g_timelimit.integer ) { if( level.time - level.startTime >= g_timelimit.integer * 60000 ) { diff -uwbBEdrN src/game/g_spawn.c src/game/g_spawn.c --- src/game/g_spawn.c 2006-11-17 01:35:27.000000000 -0500 +++ src/game/g_spawn.c 2006-11-17 02:05:50.000000000 -0500 @@ -658,20 +658,8 @@ g_entities[ ENTITYNUM_WORLD ].s.number = ENTITYNUM_WORLD; g_entities[ ENTITYNUM_WORLD ].classname = "worldspawn"; - // see if we want a warmup time - trap_SetConfigstring( CS_WARMUP, "" ); if( g_restarted.integer ) - { trap_Cvar_Set( "g_restarted", "0" ); - level.warmupTime = 0; - } - else if( g_doWarmup.integer ) - { - // Turn it on - level.warmupTime = -1; - trap_SetConfigstring( CS_WARMUP, va( "%i", level.warmupTime ) ); - G_LogPrintf( "Warmup:\n" ); - } } diff -uwbBEdrN src/server/sv_ccmds.c src/server/sv_ccmds.c --- src/server/sv_ccmds.c 2006-11-17 01:35:25.000000000 -0500 +++ src/server/sv_ccmds.c 2006-11-17 02:06:22.000000000 -0500 @@ -233,11 +233,6 @@ else { delay = 5; } - if( delay && !Cvar_VariableValue("g_doWarmup") ) { - sv.restartTime = sv.time + delay * 1000; - SV_SetConfigstring( CS_WARMUP, va("%i", sv.restartTime) ); - return; - } // check for changes in variables that can't just be restarted // check for maxclients change