Index: src/game/g_local.h =================================================================== --- src/game/g_local.h (revision 872) +++ src/game/g_local.h (working copy) @@ -1073,6 +1073,7 @@ extern vmCvar_t g_timelimit; extern vmCvar_t g_suddenDeathTime; +extern vmCvar_t g_suddenDeath; extern vmCvar_t g_friendlyFire; extern vmCvar_t g_friendlyFireHumans; extern vmCvar_t g_friendlyFireAliens; Index: src/game/g_active.c =================================================================== --- src/game/g_active.c (revision 872) +++ src/game/g_active.c (working copy) @@ -1676,7 +1676,7 @@ // Give clients some credit periodically if( ent->client->lastKillTime + FREEKILL_PERIOD < level.time ) { - if( G_TimeTilSuddenDeath( ) <= 0 ) + if( g_suddenDeath.integer ) { //gotta love logic like this eh? } Index: src/game/g_main.c =================================================================== --- src/game/g_main.c (revision 872) +++ src/game/g_main.c (working copy) @@ -42,6 +42,7 @@ vmCvar_t g_fraglimit; vmCvar_t g_timelimit; vmCvar_t g_suddenDeathTime; +vmCvar_t g_suddenDeath; vmCvar_t g_capturelimit; vmCvar_t g_friendlyFire; vmCvar_t g_friendlyFireAliens; @@ -150,6 +151,7 @@ // change anytime vars { &g_timelimit, "timelimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue }, { &g_suddenDeathTime, "g_suddenDeathTime", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue }, + { &g_suddenDeath, "g_suddenDeath", "0", 0, 0, qfalse }, { &g_synchronousClients, "g_synchronousClients", "0", CVAR_SYSTEMINFO, 0, qfalse }, @@ -615,6 +617,7 @@ trap_Cvar_Set( "g_humanStage", va( "%d", S1 ) ); trap_Cvar_Set( "g_alienKills", 0 ); trap_Cvar_Set( "g_humanKills", 0 ); + trap_Cvar_Set( "g_suddenDeath", 0 ); G_Printf( "-----------------------------------\n" ); @@ -1012,36 +1015,35 @@ int localHTP = g_humanBuildPoints.integer, localATP = g_alienBuildPoints.integer; - if( g_suddenDeathTime.integer && !level.warmupTime ) + if( g_suddenDeath.integer ) { - if( G_TimeTilSuddenDeath( ) <= 0 ) - { - localHTP = 0; - localATP = 0; + localHTP = 0; + localATP = 0; - //warn about sudden death - if( level.suddenDeathWarning < TW_PASSED ) - { - trap_SendServerCommand( -1, "cp \"Sudden Death!\"" ); - level.suddenDeathWarning = TW_PASSED; - } - } - else + //warn about sudden death + if( level.suddenDeathWarning < TW_PASSED ) { - //warn about sudden death - if( G_TimeTilSuddenDeath( ) <= 60000 && - level.suddenDeathWarning < TW_IMMINENT ) - { - trap_SendServerCommand( -1, "cp \"Sudden Death in 1 minute!\"" ); - level.suddenDeathWarning = TW_IMMINENT; - } + trap_SendServerCommand( -1, "cp \"Sudden Death!\"" ); + level.suddenDeathWarning = TW_PASSED; } } - else + else if( level.suddenDeathWarning == TW_PASSED ) { - localHTP = g_humanBuildPoints.integer; - localATP = g_alienBuildPoints.integer; + if( G_TimeTilSuddenDeath( ) > 0 ) + level.suddenDeathWarning = TW_NOT; } + else if( g_suddenDeathTime.integer && !level.warmupTime ) + { + //warn about sudden death + if( G_TimeTilSuddenDeath( ) <= 60000 && + level.suddenDeathWarning < TW_IMMINENT ) + { + trap_SendServerCommand( -1, "cp \"Sudden Death in 1 minute!\"" ); + level.suddenDeathWarning = TW_IMMINENT; + } + else if( G_TimeTilSuddenDeath( ) <= 0 ) + trap_Cvar_Set( "g_suddenDeath", "1" ); + } level.humanBuildPoints = level.humanBuildPointsPowered = localHTP; level.alienBuildPoints = localATP; Index: src/game/g_cmds.c =================================================================== --- src/game/g_cmds.c (revision 872) +++ src/game/g_cmds.c (working copy) @@ -1751,7 +1751,7 @@ return; // Don't allow destruction of buildables that cannot be rebuilt - if( G_TimeTilSuddenDeath( ) <= 0 && + if( g_suddenDeath.integer && BG_FindBuildPointsForBuildable( traceEnt->s.modelindex ) ) { return;