r124 - in trunk/code: cgame game

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Sep 28 19:18:34 EDT 2005


Author: tma
Date: 2005-09-28 19:18:34 -0400 (Wed, 28 Sep 2005)
New Revision: 124

Modified:
   trunk/code/cgame/cg_servercmds.c
   trunk/code/game/g_client.c
   trunk/code/game/g_main.c
Log:
* Some game bug fixes from http://www.quake3world.com/ubb/Forum4/HTML/006208.html


Modified: trunk/code/cgame/cg_servercmds.c
===================================================================
--- trunk/code/cgame/cg_servercmds.c	2005-09-28 18:55:31 UTC (rev 123)
+++ trunk/code/cgame/cg_servercmds.c	2005-09-28 23:18:34 UTC (rev 124)
@@ -323,7 +323,7 @@
 		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 );
 		}

Modified: trunk/code/game/g_client.c
===================================================================
--- trunk/code/game/g_client.c	2005-09-28 18:55:31 UTC (rev 123)
+++ trunk/code/game/g_client.c	2005-09-28 23:18:34 UTC (rev 124)
@@ -923,7 +923,7 @@
   // 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 @@
 		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;

Modified: trunk/code/game/g_main.c
===================================================================
--- trunk/code/game/g_main.c	2005-09-28 18:55:31 UTC (rev 123)
+++ trunk/code/game/g_main.c	2005-09-28 23:18:34 UTC (rev 124)
@@ -1021,6 +1021,8 @@
 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 @@
 		return;	
 	}
 
+	trap_Cvar_VariableStringBuffer( "nextmap", nextmap, sizeof(nextmap) );
+	trap_Cvar_VariableStringBuffer( "d1", d1, sizeof(d1) );
 
-	trap_SendConsoleCommand( EXEC_APPEND, "vstr nextmap\n" );
+	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" );
+	}
+
 	level.changemap = NULL;
 	level.intermissiontime = 0;
 
@@ -1436,7 +1446,12 @@
 		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;




More information about the quake3-commits mailing list