diff options
Diffstat (limited to 'code')
| -rw-r--r-- | code/cgame/cg_servercmds.c | 2 | ||||
| -rw-r--r-- | code/game/g_client.c | 12 | ||||
| -rw-r--r-- | code/game/g_main.c | 19 | 
3 files changed, 29 insertions, 4 deletions
| diff --git a/code/cgame/cg_servercmds.c b/code/cgame/cg_servercmds.c index 6558d2f..94ad2ad 100644 --- a/code/cgame/cg_servercmds.c +++ b/code/cgame/cg_servercmds.c @@ -323,7 +323,7 @@ static void CG_ConfigStringModified( void ) {  		cg.intermissionStarted = atoi( str );  	} else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) {  		cgs.gameModels[ num-CS_MODELS ] = trap_R_RegisterModel( str ); -	} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_MODELS ) { +	} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_SOUNDS ) {  		if ( str[0] != '*' ) {	// player specific sounds don't register here  			cgs.gameSounds[ num-CS_SOUNDS] = trap_S_RegisterSound( str, qfalse );  		} diff --git a/code/game/g_client.c b/code/game/g_client.c index fe15b11..9dcfaa4 100644 --- a/code/game/g_client.c +++ b/code/game/g_client.c @@ -923,7 +923,7 @@ char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) {    // we don't check password for bots and local client    // NOTE: local client <-> "ip" "localhost"    //   this means this client is not running in our current process -	if ( !( ent->r.svFlags & SVF_BOT ) && (strcmp(value, "localhost") != 0)) { +	if ( !isBot && (strcmp(value, "localhost") != 0)) {  		// check for a password  		value = Info_ValueForKey (userinfo, "password");  		if ( g_password.string[0] && Q_stricmp( g_password.string, "none" ) && @@ -1324,6 +1324,16 @@ void ClientDisconnect( int clientNum ) {  		ClientUserinfoChanged( level.sortedClients[0] );  	} +	if( g_gametype.integer == GT_TOURNAMENT && +		ent->client->sess.sessionTeam == TEAM_FREE && +		level.intermissiontime ) { + +		trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" ); +		level.restarted = qtrue; +		level.changemap = NULL; +		level.intermissiontime = 0; +	} +  	trap_UnlinkEntity (ent);  	ent->s.modelindex = 0;  	ent->inuse = qfalse; diff --git a/code/game/g_main.c b/code/game/g_main.c index d292da1..eed1d81 100644 --- a/code/game/g_main.c +++ b/code/game/g_main.c @@ -1021,6 +1021,8 @@ or moved to a new level based on the "nextmap" cvar  void ExitLevel (void) {  	int		i;  	gclient_t *cl; +	char nextmap[MAX_STRING_CHARS]; +	char d1[MAX_STRING_CHARS];  	//bot interbreeding  	BotInterbreedEndMatch(); @@ -1038,8 +1040,16 @@ void ExitLevel (void) {  		return;	  	} +	trap_Cvar_VariableStringBuffer( "nextmap", nextmap, sizeof(nextmap) ); +	trap_Cvar_VariableStringBuffer( "d1", d1, sizeof(d1) ); + +	if( !Q_stricmp( nextmap, "map_restart 0" ) && Q_stricmp( d1, "" ) ) { +		trap_Cvar_Set( "nextmap", "vstr d2" ); +		trap_SendConsoleCommand( EXEC_APPEND, "vstr d1\n" ); +	} else { +		trap_SendConsoleCommand( EXEC_APPEND, "vstr nextmap\n" ); +	} -	trap_SendConsoleCommand( EXEC_APPEND, "vstr nextmap\n" );  	level.changemap = NULL;  	level.intermissiontime = 0; @@ -1436,7 +1446,12 @@ void CheckTournament( void ) {  		if ( level.warmupTime < 0 ) {  			if ( level.numPlayingClients == 2 ) {  				// fudge by -1 to account for extra delays -				level.warmupTime = level.time + ( g_warmup.integer - 1 ) * 1000; +				if ( g_warmup.integer > 1 ) { +					level.warmupTime = level.time + ( g_warmup.integer - 1 ) * 1000; +				} else { +					level.warmupTime = 0; +				} +  				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );  			}  			return; | 
