summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/g_local.h2
-rw-r--r--src/game/g_main.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/src/game/g_local.h b/src/game/g_local.h
index ab19a54..ab0809f 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -676,6 +676,8 @@ typedef struct
int humanStage2Time;
int humanStage3Time;
+ int nextCommandTime;
+
qboolean uncondAlienWin;
qboolean uncondHumanWin;
qboolean alienTeamLocked;
diff --git a/src/game/g_main.c b/src/game/g_main.c
index e60e134..1a4857f 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -185,6 +185,8 @@ vmCvar_t g_KillRewardMultiplierH;
vmCvar_t g_ConstantRewardFactor;
vmCvar_t g_TeamRewardFactor;
vmCvar_t g_PlayerRewardFactor;
+vmCvar_t g_TimerPeriod;
+vmCvar_t g_TimerCommand;
// copy cvars that can be set in worldspawn so they can be restored later
static char cv_gravity[ MAX_CVAR_VALUE_STRING ];
@@ -340,6 +342,8 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_ConstantRewardFactor, "g_ConstantRewardFactor", "0.25", CVAR_ARCHIVE, 0, qfalse },
{ &g_TeamRewardFactor, "g_TeamRewardFactor", "0.5", CVAR_ARCHIVE, 0, qfalse },
{ &g_PlayerRewardFactor, "g_PlayerRewardFactor", "0.25", CVAR_ARCHIVE, 0, qfalse },
+ { &g_TimerPeriod, "g_TimerPeriod", "0", CVAR_ARCHIVE, 0, qfalse },
+ { &g_TimerCommand, "g_TimerCommand", "", CVAR_ARCHIVE, 0, qfalse }
};
static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] );
void G_InitGame( int levelTime, int randomSeed, int restart );
@@ -700,6 +704,7 @@ void G_InitGame( int levelTime, int randomSeed, int restart )
trap_Cvar_Set( "g_humanCredits", 0 );
level.suddenDeathBeginTime = g_suddenDeathTime.integer * 60000;
level.nextArmageddonKillTime = (g_suddenDeathTime.integer+g_armageddonInitialTimeStep.integer) * 60000;
+ level.nextCommandTime = g_TimerPeriod.integer;
G_Printf( "-----------------------------------\n" );
G_Printf( "EDGE LOADED SUCCESSFULLY\n" );
// So the server counts the spawns without a client attached
@@ -2673,6 +2678,15 @@ void G_RunFrame( int levelTime )
G_CalculateAvgPlayers( );
G_UpdateZaps( msec );
+ // Execute timed commands
+ if( !level.intermissiontime &&
+ g_TimerPeriod.integer > 0 &&
+ level.time > level.nextCommandTime)
+ {
+ trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", g_TimerCommand.string ) );
+ level.nextCommandTime += g_TimerPeriod.integer;
+ }
+
// see if it is time to end the level
CheckExitRules( );