Only in ioquake3svn1438: botlib.log
Only in ioquake3svn1438/code/cgame: cgame.bat
Only in ioquake3svn1438/code/cgame: cgame.plg
Only in ioquake3svn1438/code/cgame: cgame.q3asm
Only in ioquake3svn1438/code/cgame: cgame.sh
Only in ioquake3svn1438/code/cgame: cgame_ta.bat
Only in ioquake3svn1438/code/cgame: cgame_ta.q3asm
Only in ioquake3svn1438/code/cgame: cgame_ta.sh
diff -upr ioquake3svn1438/code/cgame/cg_consolecmds.c ioquake3serverFix/code/cgame/cg_consolecmds.c
--- ioquake3svn1438/code/cgame/cg_consolecmds.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_consolecmds.c	2008-08-09 11:28:23.000000000 -0500
@@ -299,7 +299,7 @@ static void CG_DenyOrder_f (void ) {
 }
 
 static void CG_TaskOffense_f (void ) {
-	if (cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_1FCTF) {
+	if (cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF) {
 		trap_SendConsoleCommand(va("cmd vsay_team %s\n", VOICECHAT_ONGETFLAG));
 	} else {
 		trap_SendConsoleCommand(va("cmd vsay_team %s\n", VOICECHAT_ONOFFENSE));
diff -upr ioquake3svn1438/code/cgame/cg_draw.c ioquake3serverFix/code/cgame/cg_draw.c
--- ioquake3svn1438/code/cgame/cg_draw.c	2008-07-05 13:25:32.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_draw.c	2008-08-09 11:28:23.000000000 -0500
@@ -390,24 +390,8 @@ void CG_DrawFlagModel( float x, float y,
 
 		if( team == TEAM_RED ) {
 			handle = cgs.media.redFlagModel;
-			if(cgs.gametype == GT_DOUBLE_D){
-				if(cgs.redflag == TEAM_BLUE)
-					handle = cgs.media.blueFlagModel;
-				if(cgs.redflag == TEAM_FREE)
-					handle = cgs.media.neutralFlagModel;
-				if(cgs.redflag == TEAM_NONE)
-					handle = cgs.media.neutralFlagModel;
-			}
 		} else if( team == TEAM_BLUE ) {
 			handle = cgs.media.blueFlagModel;
-			if(cgs.gametype == GT_DOUBLE_D){
-				if(cgs.redflag == TEAM_BLUE)
-					handle = cgs.media.blueFlagModel;
-				if(cgs.redflag == TEAM_FREE)
-					handle = cgs.media.neutralFlagModel;
-				if(cgs.redflag == TEAM_NONE)
-					handle = cgs.media.neutralFlagModel;
-			}
 		} else if( team == TEAM_FREE ) {
 			handle = cgs.media.neutralFlagModel;
 		} else {
@@ -546,7 +530,7 @@ static void CG_DrawStatusBar( void ) {
 	vec4_t		hcolor;
 	vec3_t		angles;
 	vec3_t		origin;
-        
+
 	static float colors[4][4] = { 
 //		{ 0.2, 1.0, 0.2, 1.0 } , { 1.0, 0.2, 0.2, 1.0 }, {0.5, 0.5, 0.5, 1} };
 		{ 1.0f, 0.69f, 0.0f, 1.0f },    // normal
@@ -559,10 +543,7 @@ static void CG_DrawStatusBar( void ) {
 	}
 
 	// draw the team background
-	if ( !(cg.snap->ps.pm_flags & PMF_FOLLOW) ) //If not following anybody:
-		CG_DrawTeamBackground( 0, 420, 640, 60, 0.33f, cg.snap->ps.persistant[PERS_TEAM] );
-	else //Sago: If we follow find the teamcolor of the guy we follow. It might not be our own team!
-		CG_DrawTeamBackground( 0, 420, 640, 60, 0.33f, cgs.clientinfo[ cg.snap->ps.clientNum ].team );
+	CG_DrawTeamBackground( 0, 420, 640, 60, 0.33f, cg.snap->ps.persistant[PERS_TEAM] );
 
 	cent = &cg_entities[cg.snap->ps.clientNum];
 	ps = &cg.snap->ps;
@@ -726,42 +707,6 @@ static float CG_DrawAttacker( float y ) 
 }
 
 /*
-================
-CG_DrawSpeedMeter
-
-================
-*/
-static float CG_DrawSpeedMeter( float y ) {
-	char        *s;
-	int         w;
-	vec_t       *vel;
-	int         speed;
-
-	/* speed meter can get in the way of the scoreboard */
-	if ( cg.scoreBoardShowing ) {
-		return y;
-	}
-
-	vel = cg.snap->ps.velocity;
-	/* ignore vertical component of velocity */
-	speed = sqrt(vel[0] * vel[0] + vel[1] * vel[1]);
-
-	s = va( "%iu/s", speed );
-
-	w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH;
-
-	if (cg_drawSpeed.integer == 1) {
-		/* top left-hand corner of screen */
-		CG_DrawBigString( 635 - w, y + 2, s, 1.0F);
-		return y + BIGCHAR_HEIGHT + 4;
-	} else {
-		/* center of screen */
-		CG_DrawBigString( 320 - w / 2, 300, s, 1.0F);
-		return y;
-	}
-}
-
-/*
 ==================
 CG_DrawSnapshot
 ==================
@@ -850,291 +795,6 @@ static float CG_DrawTimer( float y ) {
 	return y + BIGCHAR_HEIGHT + 4;
 }
 
-/*
-CG_DrawDoubleDominationThings
- *
- *Sago: Might be relevant for debugging missionpack.
-*/
-
-/*static float CG_DrawDoubleDominationThings( float y ) {
-	char		*s;
-	int			w;
-	int 		statusA, statusB;
-	statusA = cgs.redflag;
-	statusB = cgs.blueflag;
-
-	if(statusA == TEAM_NONE) {
-		s = va("Point A not spawned");
-	} else
-	if(statusA == TEAM_FREE) {
-		s = va("Point A is not controlled");
-	} else
-	if(statusA == TEAM_RED) {
-		s = va("Point A is controlled by RED");
-	} else
-	if(statusA == TEAM_BLUE) {
-		s = va("Point A is controlled by BLUE");
-	} else
-		s = va("Point A has an error");
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-	y+=SMALLCHAR_HEIGHT+4;
-
-	if(statusB == TEAM_NONE) {
-		s = va("Point B not spawned");
-	} else
-	if(statusB == TEAM_FREE) {
-		s = va("Point B is not controlled");
-	} else
-	if(statusB == TEAM_RED) {
-		s = va("Point B is controlled by RED");
-	} else
-	if(statusB == TEAM_BLUE) {
-		s = va("Point B is controlled by BLUE");
-	} else
-		s = va("Point B has an error");
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-
-	if( ( ( statusB == statusA ) && ( statusA == TEAM_RED ) ) ||
-		( ( statusB == statusA ) && ( statusA == TEAM_BLUE ) ) ) {
-		s = va("Capture in: %i",(cgs.timetaken+10*1000-cg.time)/1000+1);
-		w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-		y+=SMALLCHAR_HEIGHT+4;
-		CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-	}
-
-	return y + SMALLCHAR_HEIGHT+4;
-}*/
-
-/*
-=================
-CG_DrawLMSmode
-=================
-*/
-
-static float CG_DrawLMSmode( float y ) {
-	char		*s;
-	int		w;
-
-	if(cgs.lms_mode == 0) {
-		s = va("LMS: Point/round + OT");
-	} else
-	if(cgs.lms_mode == 1) {
-		s = va("LMS: Point/round - OT");
-	} else
-	if(cgs.lms_mode == 2) {
-		s = va("LMS: Point/kill + OT");
-	} else
-	if(cgs.lms_mode == 3) {
-		s = va("LMS: Point/kill - OT");
-	} else
-		s = va("LMS: Unknown mode");
-
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-
-	return y + SMALLCHAR_HEIGHT+4;
-}
-
-/*
-=================
-CG_DrawCTFoneway
-=================
-*/
-
-static float CG_DrawCTFoneway( float y ) {
-	char		*s;
-	int		w;
-	vec4_t		color;
-
-	if(cgs.gametype != GT_CTF_ELIMINATION)
-		return y;
-
-	memcpy(color,g_color_table[ColorIndex(COLOR_WHITE)],sizeof(color));
-
-	if(cgs.oneway == 0) {
-		return y; //nothing to draw
-	} else
-	if(cgs.attackingTeam == TEAM_BLUE) {
-		memcpy(color,g_color_table[ColorIndex(COLOR_BLUE)],sizeof(color));
-		s = va("Blue team on offence");
-	} else
-	if(cgs.attackingTeam == TEAM_RED) {
-		memcpy(color,g_color_table[ColorIndex(COLOR_RED)],sizeof(color));
-		s = va("Red team on offence");
-	} else
-		s = va("Unknown team on offence");
-
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallStringColor( 635 - w, y + 2, s, color);
-
-	return y + SMALLCHAR_HEIGHT+4;
-}
-
-/*
-=================
-CG_DrawEliminationDeathMessage
-=================
-*/
-
-/*static float CG_DrawEliminationDeathMessage( float y ) {
-	char		*s;
-	int			w;
-
-	s = va("You are waiting for a new round");
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-
-	return y + SMALLCHAR_HEIGHT+4;
-}*/
-
-/*
-=================
-CG_DrawDomStatus
-=================
-*/
-
-static float CG_DrawDomStatus( float y ) {
-	int 		i,w; 
-	char		*s;
-	vec4_t		color;
-	
-	for(i = 0;i < cgs.domination_points_count;i++) {
-		switch(cgs.domination_points_status[i]) {
-			case TEAM_RED:
-				memcpy(color,g_color_table[ColorIndex(COLOR_RED)],sizeof(color));
-				break;
-			case TEAM_BLUE:
-				memcpy(color,g_color_table[ColorIndex(COLOR_BLUE)],sizeof(color));
-				break;
-			default:
-				memcpy(color,g_color_table[ColorIndex(COLOR_WHITE)],sizeof(color));
-				break;			
-		}
-		
-		s = va("%s",cgs.domination_points_names[i]);
-		w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-		CG_DrawSmallStringColor( 635 - w, y + 2, s, color);
-		y += SMALLCHAR_HEIGHT+4;
-			
-	}
-
-	return y;
-}
-
-
-/*
-=================
-CG_DrawEliminationTimer
-=================
-*/
-static float CG_DrawEliminationTimer( float y ) {
-	char		*s;
-	int			w;
-	int			mins, seconds, tens, sec;
-	int			msec;
-	vec4_t			color;
-	const char	*st;
-	float scale;
-	int cw;
-	int rst;
-	
-	rst = cgs.roundStartTime;
-
-	//default color is white
-	memcpy(color,g_color_table[ColorIndex(COLOR_WHITE)],sizeof(color));
-
-	//msec = cg.time - cgs.levelStartTime;
-	if(cg.time>rst) //We are started
-	{
-		msec = cgs.roundtime*1000 - (cg.time -rst);
-		if(msec<=30*1000-1) //<= 30 seconds
-			memcpy(color,g_color_table[ColorIndex(COLOR_YELLOW)],sizeof(color));
-		if(msec<=10*1000-1) //<= 10 seconds
-			memcpy(color,g_color_table[ColorIndex(COLOR_RED)],sizeof(color));
-		msec += 1000; //120-1 instead of 119-0
-	}
-	else
-	{
-		//Warmup
-		msec = -cg.time +rst;
-		memcpy(color,g_color_table[ColorIndex(COLOR_GREEN)],sizeof(color));
-		sec = msec/1000;
-		msec += 1000; //5-1 instead of 4-0
-/***
-Lots of stuff
-****/
-	if(cg.warmup == 0)
-	{
-		st = va( "Round in: %i", sec + 1 );
-		if ( sec != cg.warmupCount ) {
-			cg.warmupCount = sec;
-			switch ( sec ) {
-			case 0:
-				trap_S_StartLocalSound( cgs.media.count1Sound, CHAN_ANNOUNCER );
-				break;
-			case 1:
-				trap_S_StartLocalSound( cgs.media.count2Sound, CHAN_ANNOUNCER );
-				break;
-			case 2:
-				trap_S_StartLocalSound( cgs.media.count3Sound, CHAN_ANNOUNCER );
-				break;
-			default:
-				break;
-			}
-		} 
-		scale = 0.45f;
-		switch ( cg.warmupCount ) {
-		case 0:
-			cw = 28;
-			scale = 0.54f;
-			break;
-		case 1:
-			cw = 24;
-			scale = 0.51f;
-			break;
-		case 2:
-			cw = 20;
-			scale = 0.48f;
-			break;
-		default:
-			cw = 16;
-			scale = 0.45f;
-			break;
-		}
-
-	#ifdef MISSIONPACK
-			//w = CG_Text_Width(s, scale, 0);
-			//CG_Text_Paint(320 - w / 2, 125, scale, colorWhite, st, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE);
-	#else
-		w = CG_DrawStrlen( st );
-		CG_DrawStringExt( 320 - w * cw/2, 70, st, colorWhite, 
-				qfalse, qtrue, cw, (int)(cw * 1.5), 0 );
-	#endif
-	}
-/*
-Lots of stuff
-*/
-	}
-
-	seconds = msec / 1000;
-	mins = seconds / 60;
-	seconds -= mins * 60;
-	tens = seconds / 10;
-	seconds -= tens * 10;
-
-	if(msec>=0)
-		s = va( " %i:%i%i", mins, tens, seconds );
-	else
-		s = va( " Overtime");
-	w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH;
-	
-	CG_DrawBigStringColor( 635 - w, y + 2, s, color);
-
-	return y + BIGCHAR_HEIGHT + 4;
-}
-
 
 /*
 =================
@@ -1309,21 +969,6 @@ static float CG_DrawTeamOverlay( float y
 //#endif
 }
 
-static float CG_DrawFollowMessage( float y ) {
-	char		*s;
-	int			w;	
-
-	if ( !(cg.snap->ps.pm_flags & PMF_FOLLOW) ) {
-		return y;
-	}
-
-	s = va("USE_ITEM to stop following");
-	w = CG_DrawStrlen( s ) * SMALLCHAR_WIDTH;
-	CG_DrawSmallString( 635 - w, y + 2, s, 1.0F);
-
-	return y + SMALLCHAR_HEIGHT+4;
-}
-
 
 /*
 =====================
@@ -1337,48 +982,21 @@ static void CG_DrawUpperRight(stereoFram
 
 	y = 0;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1 && cg_drawTeamOverlay.integer == 1 ) {
+	if ( cgs.gametype >= GT_TEAM && cg_drawTeamOverlay.integer == 1 ) {
 		y = CG_DrawTeamOverlay( y, qtrue, qtrue );
-	}
-	/*if ( cgs.gametype == GT_DOUBLE_D ) {
-		y = CG_DrawDoubleDominationThings(y);
 	} 
-	else*/
-	if ( cgs.gametype == GT_LMS && cg.showScores ) {
-		y = CG_DrawLMSmode(y);
-	}
-	else
-	if ( cgs.gametype == GT_CTF_ELIMINATION ) {
-		y = CG_DrawCTFoneway(y);
-	}
-	else
-	if ( cgs.gametype == GT_DOMINATION ) {
-		y = CG_DrawDomStatus(y);
-	}
-	
 	if ( cg_drawSnapshot.integer ) {
 		y = CG_DrawSnapshot( y );
 	}
 	if (cg_drawFPS.integer && (stereoFrame == STEREO_CENTER || stereoFrame == STEREO_RIGHT)) {
 		y = CG_DrawFPS( y );
 	}
-	if (cgs.gametype==GT_ELIMINATION || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype==GT_LMS) {
-		y = CG_DrawEliminationTimer( y );
-		/*if (cgs.clientinfo[ cg.clientNum ].isDead)
-			y = CG_DrawEliminationDeathMessage( y);*/
-	}
-
-	y = CG_DrawFollowMessage( y );
-
-	if ( cg_drawTimer.integer) {
+	if ( cg_drawTimer.integer ) {
 		y = CG_DrawTimer( y );
 	}
 	if ( cg_drawAttacker.integer ) {
 		y = CG_DrawAttacker( y );
 	}
-	if ( cg_drawSpeed.integer ) {
-		y = CG_DrawSpeedMeter( y );
-	}
 
 }
 
@@ -1406,10 +1024,6 @@ static float CG_DrawScores( float y ) {
 	vec4_t		color;
 	float		y1;
 	gitem_t		*item;
-        int statusA,statusB;
-        
-        statusA = cgs.redflag;
-        statusB = cgs.blueflag;
 
 	s1 = cgs.scores1;
 	s2 = cgs.scores2;
@@ -1419,7 +1033,7 @@ static float CG_DrawScores( float y ) {
 	y1 = y;
 
 	// draw from the right side to left
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		x = 640;
 		color[0] = 0.0f;
 		color[1] = 0.0f;
@@ -1434,7 +1048,7 @@ static float CG_DrawScores( float y ) {
 		}
 		CG_DrawBigString( x + 4, y, s, 1.0F);
 
-		if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION) {
+		if ( cgs.gametype == GT_CTF ) {
 			// Display flag status
 			item = BG_FindItemForPowerup( PW_BLUEFLAG );
 
@@ -1445,16 +1059,6 @@ static float CG_DrawScores( float y ) {
 				}
 			}
 		}
-                
-                if ( cgs.gametype == GT_DOUBLE_D ) {
-			// Display Domination point status
-			
-				y1 = y - 32;//BIGCHAR_HEIGHT - 8;
-				if( cgs.redflag >= 0 && cgs.redflag <= 3 ) {
-					CG_DrawPic( x, y1-4, w, 32, cgs.media.ddPointSkinB[cgs.blueflag] );
-				}
-		}
-                
 		color[0] = 1.0f;
 		color[1] = 0.0f;
 		color[2] = 0.0f;
@@ -1468,7 +1072,7 @@ static float CG_DrawScores( float y ) {
 		}
 		CG_DrawBigString( x + 4, y, s, 1.0F);
 
-		if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION ) {
+		if ( cgs.gametype == GT_CTF ) {
 			// Display flag status
 			item = BG_FindItemForPowerup( PW_REDFLAG );
 
@@ -1479,29 +1083,8 @@ static float CG_DrawScores( float y ) {
 				}
 			}
 		}
-                
-                if ( cgs.gametype == GT_DOUBLE_D ) {
-			// Display Domination point status
-			
-				y1 = y - 32;//BIGCHAR_HEIGHT - 8;
-				if( cgs.redflag >= 0 && cgs.redflag <= 3 ) {
-					CG_DrawPic( x, y1-4, w, 32, cgs.media.ddPointSkinA[cgs.redflag] );
-				}
-                                
-                        
-                                
-                        //Time till capture:
-                        if( ( ( statusB == statusA ) && ( statusA == TEAM_RED ) ) ||
-                            ( ( statusB == statusA ) && ( statusA == TEAM_BLUE ) ) ) {
-                                s = va("%i",(cgs.timetaken+10*1000-cg.time)/1000+1);
-                                w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH;
-                                CG_DrawBigString( x + 32+8-w/2, y-28, s, 1.0F);
-                        }
-		}
-                
-                
 
-		if ( cgs.gametype >= GT_CTF && cgs.ffa_gt==0) {
+		if ( cgs.gametype >= GT_CTF ) {
 			v = cgs.capturelimit;
 		} else {
 			v = cgs.fraglimit;
@@ -1693,7 +1276,7 @@ static void CG_DrawLowerRight( void ) {
 
 	y = 480 - ICON_SIZE;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1 && cg_drawTeamOverlay.integer == 2 ) {
+	if ( cgs.gametype >= GT_TEAM && cg_drawTeamOverlay.integer == 2 ) {
 		y = CG_DrawTeamOverlay( y, qtrue, qfalse );
 	} 
 
@@ -1746,7 +1329,7 @@ static void CG_DrawLowerLeft( void ) {
 
 	y = 480 - ICON_SIZE;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1 && cg_drawTeamOverlay.integer == 3 ) {
+	if ( cgs.gametype >= GT_TEAM && cg_drawTeamOverlay.integer == 3 ) {
 		y = CG_DrawTeamOverlay( y, qfalse, qfalse );
 	} 
 
@@ -2014,18 +1597,18 @@ static void CG_DrawDisconnect( void ) {
 	int			cmdNum;
 	usercmd_t	cmd;
 	const char		*s;
-	int			w;  // bk010215 - FIXME char message[1024];
+	int			w;
 
 	// draw the phone jack if we are completely past our buffers
 	cmdNum = trap_GetCurrentCmdNumber() - CMD_BACKUP + 1;
 	trap_GetUserCmd( cmdNum, &cmd );
 	if ( cmd.serverTime <= cg.snap->ps.commandTime
-		|| cmd.serverTime > cg.time ) {	// special check for map_restart // bk 0102165 - FIXME
+		|| cmd.serverTime > cg.time ) {	// special check for map_restart
 		return;
 	}
 
 	// also add text in center of screen
-	s = "Connection Interrupted"; // bk 010215 - FIXME
+	s = "Connection Interrupted";
 	w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH;
 	CG_DrawBigString( 320 - w/2, 100, s, 1.0F);
 
@@ -2204,8 +1787,8 @@ static void CG_DrawCenterString( void ) 
 	char	*start;
 	int		l;
 	int		x, y, w;
-#ifdef MISSIONPACK // bk010221 - unused else
-  int h;
+#ifdef MISSIONPACK
+	int h;
 #endif
 	float	*color;
 
@@ -2503,7 +2086,7 @@ static void CG_DrawSpectator(void) {
 	if ( cgs.gametype == GT_TOURNAMENT ) {
 		CG_DrawBigString(320 - 15 * 8, 460, "waiting to play", 1.0F);
 	}
-	else if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	else if ( cgs.gametype >= GT_TEAM ) {
 		CG_DrawBigString(320 - 39 * 8, 460, "press ESC and use the JOIN menu to play", 1.0F);
 	}
 }
@@ -2621,7 +2204,7 @@ static qboolean CG_DrawScoreboard( void 
 
 
 	if (menuScoreboard == NULL) {
-		if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if ( cgs.gametype >= GT_TEAM ) {
 			menuScoreboard = Menus_FindByName("teamscore_menu");
 		} else {
 			menuScoreboard = Menus_FindByName("score_menu");
@@ -2710,10 +2293,6 @@ static void CG_DrawAmmoWarning( void ) {
 	const char	*s;
 	int			w;
 
-	//Don't report in instant gib same with RA
-	if(cgs.instantgib || cgs.rockets)
-		return;
-
 	if ( cg_drawAmmoWarning.integer == 0 ) {
 		return;
 	}
@@ -2837,22 +2416,14 @@ static void CG_DrawWarmup( void ) {
 			s = "Team Deathmatch";
 		} else if ( cgs.gametype == GT_CTF ) {
 			s = "Capture the Flag";
-		} else if ( cgs.gametype == GT_ELIMINATION ) {
-			s = "Elimination";
-		} else if ( cgs.gametype == GT_CTF_ELIMINATION ) {
-			s = "CTF Elimination";
-		} else if ( cgs.gametype == GT_LMS ) {
-			s = "Last Man Standing";
-		} else if ( cgs.gametype == GT_DOUBLE_D ) {
-			s = "Double Domination";
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		} else if ( cgs.gametype == GT_1FCTF ) {
 			s = "One Flag CTF";
 		} else if ( cgs.gametype == GT_OBELISK ) {
 			s = "Overload";
 		} else if ( cgs.gametype == GT_HARVESTER ) {
 			s = "Harvester";
-//#endif
+#endif
 		} else {
 			s = "";
 		}
@@ -2972,7 +2543,7 @@ static void CG_Draw2D(stereoFrame_t ster
 		return;
 	}
 */
-	if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_SPECTATOR /*|| cg.snap->ps.pm_type == PM_SPECTATOR*/ ) {
+	if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_SPECTATOR ) {
 		CG_DrawSpectator();
 
 		if(stereoFrame == STEREO_CENTER)
@@ -3010,7 +2581,7 @@ static void CG_Draw2D(stereoFrame_t ster
 			CG_DrawReward();
 		}
     
-		if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if ( cgs.gametype >= GT_TEAM ) {
 #ifndef MISSIONPACK
 			CG_DrawTeamInfo();
 #endif
Only in ioquake3svn1438/code/cgame: cg_draw.c.orig
Only in ioquake3svn1438/code/cgame: cg_draw.orig.c
diff -upr ioquake3svn1438/code/cgame/cg_drawtools.c ioquake3serverFix/code/cgame/cg_drawtools.c
--- ioquake3svn1438/code/cgame/cg_drawtools.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_drawtools.c	2008-08-09 11:28:23.000000000 -0500
@@ -431,10 +431,6 @@ void CG_ColorForHealth( vec4_t hcolor ) 
 }
 
 
-
-
-// bk001205 - code below duplicated in q3_ui/ui-atoms.c
-// bk001205 - FIXME: does this belong in ui_shared.c?
 /*
 =================
 UI_DrawProportionalString2
@@ -594,7 +590,7 @@ UI_DrawBannerString
 static void UI_DrawBannerString2( int x, int y, const char* str, vec4_t color )
 {
 	const char* s;
-	unsigned char	ch; // bk001204 : array subscript
+	unsigned char	ch;
 	float	ax;
 	float	ay;
 	float	aw;
@@ -704,7 +700,7 @@ int UI_ProportionalStringWidth( const ch
 static void UI_DrawProportionalString2( int x, int y, const char* str, vec4_t color, float sizeScale, qhandle_t charset )
 {
 	const char* s;
-	unsigned char	ch; // bk001204 - unsigned
+	unsigned char	ch;
 	float	ax;
 	float	ay;
 	float	aw;
diff -upr ioquake3svn1438/code/cgame/cg_effects.c ioquake3serverFix/code/cgame/cg_effects.c
--- ioquake3svn1438/code/cgame/cg_effects.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_effects.c	2008-08-09 11:28:23.000000000 -0500
@@ -202,7 +202,7 @@ void CG_SpawnEffect( vec3_t org ) {
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ===============
 CG_LightningBoltBeam
@@ -377,7 +377,7 @@ void CG_InvulnerabilityJuiced( vec3_t or
 	trap_S_StartSound (org, ENTITYNUM_NONE, CHAN_BODY, cgs.media.invulnerabilityJuicedSound );
 }
 
-//#endif
+#endif
 
 /*
 ==================
diff -upr ioquake3svn1438/code/cgame/cg_ents.c ioquake3serverFix/code/cgame/cg_ents.c
--- ioquake3svn1438/code/cgame/cg_ents.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_ents.c	2008-08-09 11:28:23.000000000 -0500
@@ -343,7 +343,7 @@ static void CG_Item( centity_t *cent ) {
 	// add to refresh list
 	trap_R_AddRefEntityToScene(&ent);
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if ( item->giType == IT_WEAPON && wi->barrelModel ) {
 		refEntity_t	barrel;
 
@@ -362,7 +362,7 @@ static void CG_Item( centity_t *cent ) {
 
 		trap_R_AddRefEntityToScene( &barrel );
 	}
-//#endif
+#endif
 
 	// accompanying rings / spheres for powerups
 	if ( !cg_simpleItems.integer ) 
@@ -473,13 +473,13 @@ static void CG_Missile( centity_t *cent 
 	ent.hModel = weapon->missileModel;
 	ent.renderfx = weapon->missileRenderfx | RF_NOSHADOW;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if ( cent->currentState.weapon == WP_PROX_LAUNCHER ) {
 		if (s1->generic1 == TEAM_BLUE) {
 			ent.hModel = cgs.media.blueProxMine;
 		}
 	}
-//#endif
+#endif
 
 	// convert direction of travel into axis
 	if ( VectorNormalize2( s1->pos.trDelta, ent.axis[0] ) == 0 ) {
@@ -490,12 +490,12 @@ static void CG_Missile( centity_t *cent 
 	if ( s1->pos.trType != TR_STATIONARY ) {
 		RotateAroundDirection( ent.axis, cg.time / 4 );
 	} else {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		if ( s1->weapon == WP_PROX_LAUNCHER ) {
 			AnglesToAxis( cent->lerpAngles, ent.axis );
 		}
 		else
-//#endif
+#endif
 		{
 			RotateAroundDirection( ent.axis, s1->time );
 		}
@@ -736,15 +736,6 @@ CG_CalcEntityLerpPositions
 */
 static void CG_CalcEntityLerpPositions( centity_t *cent ) {
 
-//unlagged - projectile nudge
-	// this will be set to how far forward projectiles will be extrapolated
-	int timeshift = 0;
-//unlagged - projectile nudge
-
-//unlagged - smooth clients #2
-	// this is done server-side now - cg_smoothClients is undefined
-	// players will always be TR_INTERPOLATE
-/*
 	// if this player does not want to see extrapolated players
 	if ( !cg_smoothClients.integer ) {
 		// make sure the clients use TR_INTERPOLATE
@@ -753,8 +744,6 @@ static void CG_CalcEntityLerpPositions( 
 			cent->nextState.pos.trType = TR_INTERPOLATE;
 		}
 	}
-*/
-//unlagged - smooth clients #2
 
 	if ( cent->interpolate && cent->currentState.pos.trType == TR_INTERPOLATE ) {
 		CG_InterpolateEntityPosition( cent );
@@ -769,58 +758,9 @@ static void CG_CalcEntityLerpPositions( 
 		return;
 	}
 
-//unlagged - timenudge extrapolation
-	// interpolating failed (probably no nextSnap), so extrapolate
-	// this can also happen if the teleport bit is flipped, but that
-	// won't be noticeable
-	if ( cent->currentState.number < MAX_CLIENTS &&
-			cent->currentState.clientNum != cg.predictedPlayerState.clientNum ) {
-		cent->currentState.pos.trType = TR_LINEAR_STOP;
-		cent->currentState.pos.trTime = cg.snap->serverTime;
-		cent->currentState.pos.trDuration = 1000 / sv_fps.integer;
-	}
-//unlagged - timenudge extrapolation
-
-//unlagged - projectile nudge
-	// if it's a missile but not a grappling hook
-	if ( cent->currentState.eType == ET_MISSILE && cent->currentState.weapon != WP_GRAPPLING_HOOK ) {
-		// if it's one of ours
-		if ( cent->currentState.otherEntityNum == cg.clientNum ) {
-			// extrapolate one server frame's worth - this will correct for tiny
-			// visual inconsistencies introduced by backward-reconciling all players
-			// one server frame before running projectiles
-			timeshift = 1000 / sv_fps.integer;
-		}
-		// if it's not, and it's not a grenade launcher
-		else if ( cent->currentState.weapon != WP_GRENADE_LAUNCHER ) {
-			// extrapolate based on cg_projectileNudge
-			timeshift = cg_projectileNudge.integer + 1000 / sv_fps.integer;
-		}
-	}
-
 	// just use the current frame and evaluate as best we can
-//	BG_EvaluateTrajectory( &cent->currentState.pos, cg.time, cent->lerpOrigin );
-//	BG_EvaluateTrajectory( &cent->currentState.apos, cg.time, cent->lerpAngles );
-	BG_EvaluateTrajectory( &cent->currentState.pos, cg.time + timeshift, cent->lerpOrigin );
-	BG_EvaluateTrajectory( &cent->currentState.apos, cg.time + timeshift, cent->lerpAngles );
-
-	// if there's a time shift
-	if ( timeshift != 0 ) {
-		trace_t tr;
-		vec3_t lastOrigin;
-
-		BG_EvaluateTrajectory( &cent->currentState.pos, cg.time, lastOrigin );
-
-		CG_Trace( &tr, lastOrigin, vec3_origin, vec3_origin, cent->lerpOrigin, cent->currentState.number, MASK_SHOT );
-
-		// don't let the projectile go through the floor
-		if ( tr.fraction < 1.0f ) {
-			cent->lerpOrigin[0] = lastOrigin[0] + tr.fraction * ( cent->lerpOrigin[0] - lastOrigin[0] );
-			cent->lerpOrigin[1] = lastOrigin[1] + tr.fraction * ( cent->lerpOrigin[1] - lastOrigin[1] );
-			cent->lerpOrigin[2] = lastOrigin[2] + tr.fraction * ( cent->lerpOrigin[2] - lastOrigin[2] );
-		}
-	}
-//unlagged - projectile nudge
+	BG_EvaluateTrajectory( &cent->currentState.pos, cg.time, cent->lerpOrigin );
+	BG_EvaluateTrajectory( &cent->currentState.apos, cg.time, cent->lerpAngles );
 
 	// adjust for riding a mover if it wasn't rolled into the predicted
 	// player state
@@ -837,15 +777,15 @@ CG_TeamBase
 */
 static void CG_TeamBase( centity_t *cent ) {
 	refEntity_t model;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	vec3_t angles;
 	int t, h;
 	float c;
 
 	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF ) {
-//#else
-//	if ( cgs.gametype == GT_CTF) {
-//#endif
+#else
+	if ( cgs.gametype == GT_CTF) {
+#endif
 		// show the flag base
 		memset(&model, 0, sizeof(model));
 		model.reType = RT_MODEL;
@@ -863,7 +803,7 @@ static void CG_TeamBase( centity_t *cent
 		}
 		trap_R_AddRefEntityToScene( &model );
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if ( cgs.gametype == GT_OBELISK ) {
 		// show the obelisk
 		memset(&model, 0, sizeof(model));
@@ -980,7 +920,7 @@ static void CG_TeamBase( centity_t *cent
 		}
 		trap_R_AddRefEntityToScene( &model );
 	}
-//#endif
+#endif
 }
 
 /*
@@ -1088,30 +1028,10 @@ void CG_AddPacketEntities( void ) {
 	// lerp the non-predicted value for lightning gun origins
 	CG_CalcEntityLerpPositions( &cg_entities[ cg.snap->ps.clientNum ] );
 
-//unlagged - early transitioning
-	if ( cg.nextSnap ) {
-		// pre-add some of the entities sent over by the server
-		// we have data for them and they don't need to interpolate
-		for ( num = 0 ; num < cg.nextSnap->numEntities ; num++ ) {
-			cent = &cg_entities[ cg.nextSnap->entities[ num ].number ];
-			if ( cent->nextState.eType == ET_MISSILE || cent->nextState.eType == ET_GENERAL ) {
-				// transition it immediately and add it
-				CG_TransitionEntity( cent );
-				cent->interpolate = qtrue;
-				CG_AddCEntity( cent );
-			}
-		}
-	}
-//unlagged - early transitioning
-
 	// add each entity sent over by the server
 	for ( num = 0 ; num < cg.snap->numEntities ; num++ ) {
 		cent = &cg_entities[ cg.snap->entities[ num ].number ];
-//unlagged - early transitioning
-		if ( !cg.nextSnap || (cent->nextState.eType != ET_MISSILE && cent->nextState.eType != ET_GENERAL) ) {
-//unlagged - early transitioning
-			CG_AddCEntity( cent );
-		} //Also unlagged
+		CG_AddCEntity( cent );
 	}
 }
 
diff -upr ioquake3svn1438/code/cgame/cg_event.c ioquake3serverFix/code/cgame/cg_event.c
--- ioquake3svn1438/code/cgame/cg_event.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_event.c	2008-08-09 11:28:23.000000000 -0500
@@ -25,7 +25,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #include "cg_local.h"
 
 // for the voice chats
-#ifdef MISSIONPACK // bk001205
+#ifdef MISSIONPACK
 #include "../../ui/menudef.h"
 #endif
 //==========================================================================
@@ -118,38 +118,35 @@ static void CG_Obituary( entityState_t *
 
 	// check for single client messages
 
-        if(attacker != ENTITYNUM_WORLD)
-            message = NULL;
-        else
-            switch( mod ) {
-            case MOD_SUICIDE:
-                    message = "suicides";
-                    break;
-            case MOD_FALLING:
-                    message = "cratered";
-                    break;
-            case MOD_CRUSH:
-                    message = "was squished";
-                    break;
-            case MOD_WATER:
-                    message = "sank like a rock";
-                    break;
-            case MOD_SLIME:
-                    message = "melted";
-                    break;
-            case MOD_LAVA:
-                    message = "does a back flip into the lava";
-                    break;
-            case MOD_TARGET_LASER:
-                    message = "saw the light";
-                    break;
-            case MOD_TRIGGER_HURT:
-                    message = "was in the wrong place";
-                    break;
-            default:
-                    message = NULL;
-                    break;
-            }
+	switch( mod ) {
+	case MOD_SUICIDE:
+		message = "suicides";
+		break;
+	case MOD_FALLING:
+		message = "cratered";
+		break;
+	case MOD_CRUSH:
+		message = "was squished";
+		break;
+	case MOD_WATER:
+		message = "sank like a rock";
+		break;
+	case MOD_SLIME:
+		message = "melted";
+		break;
+	case MOD_LAVA:
+		message = "does a back flip into the lava";
+		break;
+	case MOD_TARGET_LASER:
+		message = "saw the light";
+		break;
+	case MOD_TRIGGER_HURT:
+		message = "was in the wrong place";
+		break;
+	default:
+		message = NULL;
+		break;
+	}
 
 	if (attacker == target) {
 		gender = ci->gender;
@@ -212,7 +209,6 @@ static void CG_Obituary( entityState_t *
 		CG_Printf( "%s %s.\n", targetName, message);
 		return;
 	}
-        
 
 	// check for kill messages from the current clientNum
 	if ( attacker == cg.snap->ps.clientNum ) {
@@ -298,7 +294,7 @@ static void CG_Obituary( entityState_t *
 			message = "was blasted by";
 			message2 = "'s BFG";
 			break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case MOD_NAIL:
 			message = "was nailed by";
 			break;
@@ -310,7 +306,6 @@ static void CG_Obituary( entityState_t *
 			message = "was too close to";
 			message2 = "'s Prox Mine";
 			break;
-#ifdef MISSIONPACK
 		case MOD_KAMIKAZE:
 			message = "falls to";
 			message2 = "'s Kamikaze blast";
@@ -323,18 +318,6 @@ static void CG_Obituary( entityState_t *
 			message = "tried to invade";
 			message2 = "'s personal space";
 			break;
-                case MOD_LAVA:
-                        message = "was given a hot bath by";
-                        break;
-                case MOD_SLIME:
-                        message = "was given a acid bath by";
-                        break;
-                case MOD_FALLING:
-                        message = "was given a small push by";
-                        break;
-                case MOD_TRIGGER_HURT:
-                        message = "was helped on the way by";
-                        break;
 		default:
 			message = "was killed by";
 			break;
@@ -870,7 +853,7 @@ void CG_EntityEvent( centity_t *cent, ve
 		}
 		break;
 
-
+#ifdef MISSIONPACK
 	case EV_PROXIMITY_MINE_STICK:
 		DEBUGNAME("EV_PROXIMITY_MINE_STICK");
 		if( es->eventParm & SURF_FLESH ) {
@@ -902,8 +885,7 @@ void CG_EntityEvent( centity_t *cent, ve
 		DEBUGNAME("EV_INVUL_IMPACT");
 		CG_InvulnerabilityImpact( cent->lerpOrigin, cent->currentState.angles );
 		break;
-#ifdef MISSIONPACK
-        case EV_JUICED:
+	case EV_JUICED:
 		DEBUGNAME("EV_JUICED");
 		CG_InvulnerabilityJuiced( cent->lerpOrigin );
 		break;
@@ -941,77 +923,28 @@ void CG_EntityEvent( centity_t *cent, ve
 	case EV_RAILTRAIL:
 		DEBUGNAME("EV_RAILTRAIL");
 		cent->currentState.weapon = WP_RAILGUN;
-//unlagged - attack prediction #2
-		// if the client is us, unlagged is on server-side, and we've got it client-side
-		if ( es->clientNum == cg.predictedPlayerState.clientNum && 
-				cgs.delagHitscan && (cg_delag.integer & 1 || cg_delag.integer & 16) ) {
-			// do nothing, because it was already predicted
-			//Com_Printf("Ignoring rail trail event\n");
-		}
-		else {
-			// draw a rail trail, because it wasn't predicted
-			CG_RailTrail( ci, es->origin2, es->pos.trBase );
-
-			// if the end was on a nomark surface, don't make an explosion
-			if ( es->eventParm != 255 ) {
-				ByteToDir( es->eventParm, dir );
-				CG_MissileHitWall( es->weapon, es->clientNum, position, dir, IMPACTSOUND_DEFAULT );
-			}
-			//Com_Printf("Non-predicted rail trail\n");
+		// if the end was on a nomark surface, don't make an explosion
+		CG_RailTrail( ci, es->origin2, es->pos.trBase );
+		if ( es->eventParm != 255 ) {
+			ByteToDir( es->eventParm, dir );
+			CG_MissileHitWall( es->weapon, es->clientNum, position, dir, IMPACTSOUND_DEFAULT );
 		}
-//unlagged - attack prediction #2
 		break;
 
 	case EV_BULLET_HIT_WALL:
 		DEBUGNAME("EV_BULLET_HIT_WALL");
-//unlagged - attack prediction #2
-		// if the client is us, unlagged is on server-side, and we've got it client-side
-		if ( es->clientNum == cg.predictedPlayerState.clientNum && 
-				cgs.delagHitscan && (cg_delag.integer & 1 || cg_delag.integer & 2) ) {
-			// do nothing, because it was already predicted
-			//Com_Printf("Ignoring bullet event\n");
-		}
-		else {
-			// do the bullet, because it wasn't predicted
-			ByteToDir( es->eventParm, dir );
-			CG_Bullet( es->pos.trBase, es->otherEntityNum, dir, qfalse, ENTITYNUM_WORLD );
-			//Com_Printf("Non-predicted bullet\n");
-		}
-//unlagged - attack prediction #2
+		ByteToDir( es->eventParm, dir );
+		CG_Bullet( es->pos.trBase, es->otherEntityNum, dir, qfalse, ENTITYNUM_WORLD );
 		break;
 
 	case EV_BULLET_HIT_FLESH:
 		DEBUGNAME("EV_BULLET_HIT_FLESH");
-//unlagged - attack prediction #2
-		// if the client is us, unlagged is on server-side, and we've got it client-side
-		if ( es->clientNum == cg.predictedPlayerState.clientNum && 
-				cgs.delagHitscan && (cg_delag.integer & 1 || cg_delag.integer & 2) ) {
-			// do nothing, because it was already predicted
-			//Com_Printf("Ignoring bullet event\n");
-		}
-		else {
-			// do the bullet, because it wasn't predicted
-			CG_Bullet( es->pos.trBase, es->otherEntityNum, dir, qtrue, es->eventParm );
-			//Com_Printf("Non-predicted bullet\n");
-		}
-//unlagged - attack prediction #2
+		CG_Bullet( es->pos.trBase, es->otherEntityNum, dir, qtrue, es->eventParm );
 		break;
 
 	case EV_SHOTGUN:
 		DEBUGNAME("EV_SHOTGUN");
-//unlagged - attack prediction #2
-		// if the client is us, unlagged is on server-side, and we've got it client-side
-		if ( es->otherEntityNum == cg.predictedPlayerState.clientNum && 
-				cgs.delagHitscan && (cg_delag.integer & 1 || cg_delag.integer & 4) ) {
-			// do nothing, because it was already predicted
-			//Com_Printf("Ignoring shotgun event\n");
-		}
-		else {
-			// do the shotgun pattern, because it wasn't predicted
-			CG_ShotgunFire( es );
-			//Com_Printf("Non-predicted shotgun pattern\n");
-		}
-//unlagged - attack prediction #2
+		CG_ShotgunFire( es );
 		break;
 
 	case EV_GENERAL_SOUND:
@@ -1073,19 +1006,19 @@ void CG_EntityEvent( centity_t *cent, ve
 					}
 					else {
 					if (cgs.clientinfo[cg.clientNum].team == TEAM_BLUE) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 							if (cgs.gametype == GT_1FCTF) 
 								CG_AddBufferedSound( cgs.media.yourTeamTookTheFlagSound );
 							else
-//#endif
+#endif
 						 	CG_AddBufferedSound( cgs.media.enemyTookYourFlagSound );
 						}
 						else if (cgs.clientinfo[cg.clientNum].team == TEAM_RED) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 							if (cgs.gametype == GT_1FCTF)
 								CG_AddBufferedSound( cgs.media.enemyTookTheFlagSound );
 							else
-//#endif
+#endif
  							CG_AddBufferedSound( cgs.media.yourTeamTookEnemyFlagSound );
 						}
 					}
@@ -1096,19 +1029,19 @@ void CG_EntityEvent( centity_t *cent, ve
 					}
 					else {
 						if (cgs.clientinfo[cg.clientNum].team == TEAM_RED) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 							if (cgs.gametype == GT_1FCTF)
 								CG_AddBufferedSound( cgs.media.yourTeamTookTheFlagSound );
 							else
-//#endif
+#endif
 							CG_AddBufferedSound( cgs.media.enemyTookYourFlagSound );
 						}
 						else if (cgs.clientinfo[cg.clientNum].team == TEAM_BLUE) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 							if (cgs.gametype == GT_1FCTF)
 								CG_AddBufferedSound( cgs.media.enemyTookTheFlagSound );
 							else
-//#endif
+#endif
 							CG_AddBufferedSound( cgs.media.yourTeamTookEnemyFlagSound );
 						}
 					}
diff -upr ioquake3svn1438/code/cgame/cg_info.c ioquake3serverFix/code/cgame/cg_info.c
--- ioquake3svn1438/code/cgame/cg_info.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_info.c	2008-08-09 11:28:23.000000000 -0500
@@ -250,7 +250,7 @@ void CG_DrawInformation( void ) {
 	case GT_CTF:
 		s = "Capture The Flag";
 		break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case GT_1FCTF:
 		s = "One Flag CTF";
 		break;
@@ -260,19 +260,7 @@ void CG_DrawInformation( void ) {
 	case GT_HARVESTER:
 		s = "Harvester";
 		break;
-//#endif
-	case GT_ELIMINATION:
-		s = "Elimination";
-		break;
-	case GT_CTF_ELIMINATION:
-		s = " CTF Elimination";
-		break;
-	case GT_LMS:
-		s = "Last Man Standing";
-		break;
-	case GT_DOUBLE_D:
-		s = "Double Domination";
-		break;
+#endif
 	default:
 		s = "Unknown Gametype";
 		break;
@@ -288,7 +276,7 @@ void CG_DrawInformation( void ) {
 		y += PROP_HEIGHT;
 	}
 
-	if (cgs.gametype < GT_CTF || cgs.ffa_gt>0) {
+	if (cgs.gametype < GT_CTF ) {
 		value = atoi( Info_ValueForKey( info, "fraglimit" ) );
 		if ( value ) {
 			UI_DrawProportionalString( 320, y, va( "fraglimit %i", value ),
@@ -297,7 +285,7 @@ void CG_DrawInformation( void ) {
 		}
 	}
 
-	if (cgs.gametype >= GT_CTF && cgs.ffa_gt == 0) {
+	if (cgs.gametype >= GT_CTF) {
 		value = atoi( Info_ValueForKey( info, "capturelimit" ) );
 		if ( value ) {
 			UI_DrawProportionalString( 320, y, va( "capturelimit %i", value ),
diff -upr ioquake3svn1438/code/cgame/cg_localents.c ioquake3serverFix/code/cgame/cg_localents.c
--- ioquake3svn1438/code/cgame/cg_localents.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_localents.c	2008-08-09 11:28:23.000000000 -0500
@@ -536,7 +536,7 @@ static void CG_AddSpriteExplosion( local
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ====================
 CG_AddKamikaze
@@ -710,7 +710,7 @@ void CG_AddRefEntity( localEntity_t *le 
 	trap_R_AddRefEntityToScene( &le->refEntity );
 }
 
-//#endif
+#endif
 /*
 ===================
 CG_AddScorePlum
@@ -863,7 +863,7 @@ void CG_AddLocalEntities( void ) {
 			CG_AddScorePlum( le );
 			break;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case LE_KAMIKAZE:
 			CG_AddKamikaze( le );
 			break;
@@ -876,7 +876,7 @@ void CG_AddLocalEntities( void ) {
 		case LE_SHOWREFENTITY:
 			CG_AddRefEntity( le );
 			break;
-//#endif
+#endif
 		}
 	}
 }
diff -upr ioquake3svn1438/code/cgame/cg_local.h ioquake3serverFix/code/cgame/cg_local.h
--- ioquake3svn1438/code/cgame/cg_local.h	2008-08-06 12:26:21.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_local.h	2008-08-09 11:28:23.000000000 -0500
@@ -78,15 +78,15 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define	GIANT_WIDTH			32
 #define	GIANT_HEIGHT		48
 
-#define	NUM_CROSSHAIRS		99
+#define	NUM_CROSSHAIRS		10
 
 #define TEAM_OVERLAY_MAXNAME_WIDTH	12
 #define TEAM_OVERLAY_MAXLOCATION_WIDTH	16
 
 #define	DEFAULT_MODEL			"sarge"
 #ifdef MISSIONPACK
-#define	DEFAULT_TEAM_MODEL		"sarge"
-#define	DEFAULT_TEAM_HEAD		"*sarge"
+#define	DEFAULT_TEAM_MODEL		"james"
+#define	DEFAULT_TEAM_HEAD		"*james"
 #else
 #define	DEFAULT_TEAM_MODEL		"sarge"
 #define	DEFAULT_TEAM_HEAD		"sarge"
@@ -226,12 +226,12 @@ typedef enum {
 	LE_FADE_RGB,
 	LE_SCALE_FADE,
 	LE_SCOREPLUM,
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	LE_KAMIKAZE,
 	LE_INVULIMPACT,
 	LE_INVULJUICED,
 	LE_SHOWREFENTITY
-//#endif
+#endif
 } leType_t;
 
 typedef enum {
@@ -301,7 +301,6 @@ typedef struct {
 	int				captures;
 	qboolean	perfect;
 	int				team;
-	int			isDead;
 } score_t;
 
 // each client has an associated clientInfo_t
@@ -375,8 +374,6 @@ typedef struct {
 	animation_t		animations[MAX_TOTALANIMATIONS];
 
 	sfxHandle_t		sounds[MAX_CUSTOM_SOUNDS];
-
-	int		isDead;
 } clientInfo_t;
 
 
@@ -453,10 +450,6 @@ typedef struct {
 // occurs, and they will have visible effects for #define STEP_TIME or whatever msec after
 
 #define MAX_PREDICTED_EVENTS	16
-
-//unlagged - optimized prediction
-#define NUM_SAVED_STATES (CMD_BACKUP + 2)
-//unlagged - optimized prediction
  
 typedef struct {
 	int			clientFrame;		// incremented each frame
@@ -652,13 +645,6 @@ typedef struct {
 	char			testModelName[MAX_QPATH];
 	qboolean		testGun;
 
-//unlagged - optimized prediction
-	int			lastPredictedCommand;
-	int			lastServerTime;
-	playerState_t savedPmoveStates[NUM_SAVED_STATES];
-	int			stateHead, stateTail;
-//unlagged - optimized prediction
-
 } cg_t;
 
 
@@ -684,12 +670,6 @@ typedef struct {
 	qhandle_t	blueFlagShader[3];
 	qhandle_t	flagShader[4];
 
-//For Double Domination:
-	//qhandle_t	ddPointA;
-	//qhandle_t	ddPointB;
-	qhandle_t	ddPointSkinA[4]; //white,red,blue,none
-        qhandle_t	ddPointSkinB[4]; //white,red,blue,none
-
 	qhandle_t	flagPoleModel;
 	qhandle_t	flagFlapModel;
 
@@ -701,7 +681,7 @@ typedef struct {
 	qhandle_t	blueFlagBaseModel;
 	qhandle_t	neutralFlagBaseModel;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	qhandle_t	overloadBaseModel;
 	qhandle_t	overloadTargetModel;
 	qhandle_t	overloadLightsModel;
@@ -711,7 +691,7 @@ typedef struct {
 	qhandle_t	harvesterRedSkin;
 	qhandle_t	harvesterBlueSkin;
 	qhandle_t	harvesterNeutralModel;
-//#endif
+#endif
 
 	qhandle_t	armorModel;
 	qhandle_t	armorIcon;
@@ -761,10 +741,10 @@ typedef struct {
 	qhandle_t	plasmaBallShader;
 	qhandle_t	waterBubbleShader;
 	qhandle_t	bloodTrailShader;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	qhandle_t	nailPuffShader;
 	qhandle_t	blueProxMine;
-//#endif
+#endif
 
 	qhandle_t	numberShaders[11];
 
@@ -810,7 +790,7 @@ typedef struct {
 	// special effects models
 	qhandle_t	teleportEffectModel;
 	qhandle_t	teleportEffectShader;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	qhandle_t	kamikazeEffectModel;
 	qhandle_t	kamikazeShockWave;
 	qhandle_t	kamikazeHeadModel;
@@ -824,7 +804,7 @@ typedef struct {
 	qhandle_t	medkitUsageModel;
 	qhandle_t	dustPuffShader;
 	qhandle_t	heartShader;
-//#endif
+#endif
 	qhandle_t	invulnerabilityPowerupModel;
 
 	// scoreboard headers
@@ -857,7 +837,7 @@ typedef struct {
 	sfxHandle_t	sfx_railg;
 	sfxHandle_t	sfx_rockexp;
 	sfxHandle_t	sfx_plasmaexp;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	sfxHandle_t	sfx_proxexp;
 	sfxHandle_t	sfx_nghit;
 	sfxHandle_t	sfx_nghitflesh;
@@ -880,7 +860,7 @@ typedef struct {
 	sfxHandle_t	winnerSound;
 	sfxHandle_t	loserSound;
 	sfxHandle_t	youSuckSound;
-//#endif
+#endif
 	sfxHandle_t	gibSound;
 	sfxHandle_t	gibBounce1Sound;
 	sfxHandle_t	gibBounce2Sound;
@@ -966,7 +946,7 @@ typedef struct {
 	sfxHandle_t	countFightSound;
 	sfxHandle_t	countPrepareSound;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	// new stuff
 	qhandle_t patrolShader;
 	qhandle_t assaultShader;
@@ -983,7 +963,7 @@ typedef struct {
 	sfxHandle_t doublerSound;
 	sfxHandle_t guardSound;
 	sfxHandle_t scoutSound;
-//#endif
+#endif
 	qhandle_t cursor;
 	qhandle_t selectCursor;
 	qhandle_t sizeCursor;
@@ -1043,35 +1023,6 @@ typedef struct {
 
 	int				levelStartTime;
 
-//Forced FFA
-	int			ffa_gt;
-
-//Elimination
-	int				roundStartTime;	
-	int				roundtime;
-
-//CTF Elimination
-	qboolean			oneway;
-	int				attackingTeam;
-
-//Last Man Standing
-	int				lms_mode;
-
-//instantgib:
-	int				instantgib;
-
-//nexuiz style rocket arena
-	int				rockets;
-
-//Double Domination DD
-	int 				timetaken;
-
-//Domination
-	int domination_points_count;
-	char domination_points_names[MAX_DOMINATION_POINTS][MAX_DOMINATION_POINTS_NAMES];
-	int domination_points_status[MAX_DOMINATION_POINTS];
-
-
 	int				scores1, scores2;		// from configstrings
 	int				redflag, blueflag;		// flag status from configstrings
 	int				flagStatus;
@@ -1117,10 +1068,6 @@ typedef struct {
 	// media
 	cgMedia_t		media;
 
-//unlagged - client options
-	// this will be set to the server's g_delagHitscan
-	int				delagHitscan;
-//unlagged - client options
 } cgs_t;
 
 //==============================================================================
@@ -1189,7 +1136,6 @@ extern	vmCvar_t		cg_thirdPersonAngle;
 extern	vmCvar_t		cg_thirdPerson;
 extern	vmCvar_t		cg_lagometer;
 extern	vmCvar_t		cg_drawAttacker;
-extern	vmCvar_t		cg_drawSpeed;
 extern	vmCvar_t		cg_synchronousClients;
 extern	vmCvar_t		cg_teamChatTime;
 extern	vmCvar_t		cg_teamChatHeight;
@@ -1205,10 +1151,7 @@ extern	vmCvar_t		cg_teamChatsOnly;
 extern	vmCvar_t		cg_noVoiceChats;
 extern	vmCvar_t		cg_noVoiceText;
 extern  vmCvar_t		cg_scorePlum;
-//unlagged - smooth clients #2
-// this is done server-side now
-//extern	vmCvar_t		cg_smoothClients;
-//unlagged - smooth clients #2
+extern	vmCvar_t		cg_smoothClients;
 extern	vmCvar_t		pmove_fixed;
 extern	vmCvar_t		pmove_msec;
 //extern	vmCvar_t		cg_pmove_fixed;
@@ -1226,7 +1169,6 @@ extern	vmCvar_t		cg_oldRail;
 extern	vmCvar_t		cg_oldRocket;
 extern	vmCvar_t		cg_oldPlasma;
 extern	vmCvar_t		cg_trueLightning;
-extern	vmCvar_t		cg_music;
 #ifdef MISSIONPACK
 extern	vmCvar_t		cg_redTeamName;
 extern	vmCvar_t		cg_blueTeamName;
@@ -1238,33 +1180,8 @@ extern	vmCvar_t		cg_enableBreath;
 extern	vmCvar_t		cg_singlePlayerActive;
 extern  vmCvar_t		cg_recordSPDemo;
 extern  vmCvar_t		cg_recordSPDemoName;
-#endif
-//Sago: Moved outside
 extern	vmCvar_t		cg_obeliskRespawnDelay;
-
-
-//unlagged - client options
-extern	vmCvar_t		cg_delag;
-//extern	vmCvar_t		cg_debugDelag;
-//extern	vmCvar_t		cg_drawBBox;
-extern	vmCvar_t		cg_cmdTimeNudge;
-extern	vmCvar_t		sv_fps;
-extern	vmCvar_t		cg_projectileNudge;
-extern	vmCvar_t		cg_optimizePrediction;
-extern	vmCvar_t		cl_timeNudge;
-//extern	vmCvar_t		cg_latentSnaps;
-//extern	vmCvar_t		cg_latentCmds;
-//extern	vmCvar_t		cg_plOut;
-//unlagged - client options
-
-//extra CVARS elimination
-extern	vmCvar_t		cg_alwaysWeaponBar;
-
-//unlagged - cg_unlagged.c
-void CG_PredictWeaponEffects( centity_t *cent );
-//void CG_AddBoundingBox( centity_t *cent );
-qboolean CG_Cvar_ClampInt( const char *name, vmCvar_t *vmCvar, int min, int max );
-//unlagged - cg_unlagged.c
+#endif
 
 //
 // cg_main.c
@@ -1290,9 +1207,6 @@ void CG_SetScoreSelection(void *menu);
 score_t *CG_GetSelectedScore( void );
 void CG_BuildSpectatorString( void );
 
-//unlagged, sagos modfication
-void SnapVectorTowards( vec3_t v, vec3_t to );
-
 
 //
 // cg_view.c
@@ -1484,14 +1398,14 @@ localEntity_t *CG_SmokePuff( const vec3_
 				   qhandle_t hShader );
 void CG_BubbleTrail( vec3_t start, vec3_t end, float spacing );
 void CG_SpawnEffect( vec3_t org );
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 void CG_KamikazeEffect( vec3_t org );
 void CG_ObeliskExplode( vec3_t org, int entityNum );
 void CG_ObeliskPain( vec3_t org );
 void CG_InvulnerabilityImpact( vec3_t org, vec3_t angles );
 void CG_InvulnerabilityJuiced( vec3_t org );
 void CG_LightningBoltBeam( vec3_t start, vec3_t end );
-//#endif
+#endif
 void CG_ScorePlum( int client, vec3_t org, int score );
 
 void CG_GibPlayer( vec3_t playerOrigin );
@@ -1507,9 +1421,6 @@ localEntity_t *CG_MakeExplosion( vec3_t 
 // cg_snapshot.c
 //
 void CG_ProcessSnapshots( void );
-//unlagged - early transitioning
-void CG_TransitionEntity( centity_t *cent );
-//unlagged - early transitioning
 
 //
 // cg_info.c
@@ -1723,7 +1634,7 @@ typedef enum {
   SYSTEM_PRINT,
   CHAT_PRINT,
   TEAMCHAT_PRINT
-} q3print_t; // bk001201 - warning: useless keyword or type name in empty declaration
+} q3print_t;
 
 
 int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits);
Only in ioquake3svn1438/code/cgame: cg_local.h.orig
Only in ioquake3svn1438/code/cgame: cg_local.orig.h
diff -upr ioquake3svn1438/code/cgame/cg_main.c ioquake3serverFix/code/cgame/cg_main.c
--- ioquake3svn1438/code/cgame/cg_main.c	2008-08-03 12:48:06.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_main.c	2008-08-09 11:28:23.000000000 -0500
@@ -144,7 +144,6 @@ vmCvar_t	cg_thirdPersonRange;
 vmCvar_t	cg_thirdPersonAngle;
 vmCvar_t	cg_lagometer;
 vmCvar_t	cg_drawAttacker;
-vmCvar_t	cg_drawSpeed;
 vmCvar_t	cg_synchronousClients;
 vmCvar_t 	cg_teamChatTime;
 vmCvar_t 	cg_teamChatHeight;
@@ -163,10 +162,7 @@ vmCvar_t	cg_noVoiceChats;
 vmCvar_t	cg_noVoiceText;
 vmCvar_t	cg_hudFiles;
 vmCvar_t 	cg_scorePlum;
-//unlagged - smooth clients #2
-// this is done server-side now
-//vmCvar_t 	cg_smoothClients;
-//unlagged - smooth clients #2
+vmCvar_t 	cg_smoothClients;
 vmCvar_t	pmove_fixed;
 //vmCvar_t	cg_pmove_fixed;
 vmCvar_t	pmove_msec;
@@ -185,8 +181,6 @@ vmCvar_t	cg_oldRail;
 vmCvar_t	cg_oldRocket;
 vmCvar_t	cg_oldPlasma;
 vmCvar_t	cg_trueLightning;
-vmCvar_t        cg_music;
-
 
 #ifdef MISSIONPACK
 vmCvar_t 	cg_redTeamName;
@@ -199,25 +193,8 @@ vmCvar_t	cg_enableBreath;
 vmCvar_t	cg_singlePlayerActive;
 vmCvar_t	cg_recordSPDemo;
 vmCvar_t	cg_recordSPDemoName;
-#endif
 vmCvar_t	cg_obeliskRespawnDelay;
-
-//unlagged - client options
-vmCvar_t	cg_delag;
-//vmCvar_t	cg_debugDelag;
-//vmCvar_t	cg_drawBBox;
-vmCvar_t	cg_cmdTimeNudge;
-vmCvar_t	sv_fps;
-vmCvar_t	cg_projectileNudge;
-vmCvar_t	cg_optimizePrediction;
-vmCvar_t	cl_timeNudge;
-//vmCvar_t	cg_latentSnaps;
-//vmCvar_t	cg_latentCmds;
-//vmCvar_t	cg_plOut;
-//unlagged - client options
-
-//elimination addition
-vmCvar_t	cg_alwaysWeaponBar;
+#endif
 
 typedef struct {
 	vmCvar_t	*vmCvar;
@@ -226,7 +203,7 @@ typedef struct {
 	int			cvarFlags;
 } cvarTable_t;
 
-static cvarTable_t cvarTable[] = { // bk001129
+static cvarTable_t cvarTable[] = {
 	{ &cg_ignore, "cg_ignore", "0", 0 },	// used for debugging
 	{ &cg_autoswitch, "cg_autoswitch", "1", CVAR_ARCHIVE },
 	{ &cg_drawGun, "cg_drawGun", "1", CVAR_ARCHIVE },
@@ -244,7 +221,6 @@ static cvarTable_t cvarTable[] = { // bk
 	{ &cg_drawIcons, "cg_drawIcons", "1", CVAR_ARCHIVE  },
 	{ &cg_drawAmmoWarning, "cg_drawAmmoWarning", "1", CVAR_ARCHIVE  },
 	{ &cg_drawAttacker, "cg_drawAttacker", "1", CVAR_ARCHIVE  },
-	{ &cg_drawSpeed, "cg_drawSpeed", "0", CVAR_ARCHIVE  },
 	{ &cg_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE },
 	{ &cg_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE },
 	{ &cg_drawRewards, "cg_drawRewards", "1", CVAR_ARCHIVE },
@@ -303,7 +279,6 @@ static cvarTable_t cvarTable[] = { // bk
 	{ &cg_buildScript, "com_buildScript", "0", 0 },	// force loading of all possible data amd error on failures
 	{ &cg_paused, "cl_paused", "0", CVAR_ROM },
 	{ &cg_blood, "com_blood", "1", CVAR_ARCHIVE },
-	{ &cg_alwaysWeaponBar, "cg_alwaysWeaponBar", "0", CVAR_ARCHIVE},	//Elimination
 	{ &cg_synchronousClients, "g_synchronousClients", "0", 0 },	// communicated by systeminfo
 #ifdef MISSIONPACK
 	{ &cg_redTeamName, "g_redteam", DEFAULT_REDTEAM_NAME, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO },
@@ -319,17 +294,13 @@ static cvarTable_t cvarTable[] = { // bk
 	{ &cg_obeliskRespawnDelay, "g_obeliskRespawnDelay", "10", CVAR_SERVERINFO},
 	{ &cg_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE},
 #endif
-
 	{ &cg_cameraOrbit, "cg_cameraOrbit", "0", CVAR_CHEAT},
 	{ &cg_cameraOrbitDelay, "cg_cameraOrbitDelay", "50", CVAR_ARCHIVE},
 	{ &cg_timescaleFadeEnd, "cg_timescaleFadeEnd", "1", 0},
 	{ &cg_timescaleFadeSpeed, "cg_timescaleFadeSpeed", "0", 0},
 	{ &cg_timescale, "timescale", "1", 0},
 	{ &cg_scorePlum, "cg_scorePlums", "1", CVAR_USERINFO | CVAR_ARCHIVE},
-//unlagged - smooth clients #2
-// this is done server-side now
-//	{ &cg_smoothClients, "cg_smoothClients", "0", CVAR_USERINFO | CVAR_ARCHIVE},
-//unlagged - smooth clients #2
+	{ &cg_smoothClients, "cg_smoothClients", "0", CVAR_USERINFO | CVAR_ARCHIVE},
 	{ &cg_cameraMode, "com_cameraMode", "0", CVAR_CHEAT},
 
 	{ &pmove_fixed, "pmove_fixed", "0", 0},
@@ -341,22 +312,7 @@ static cvarTable_t cvarTable[] = { // bk
 	{ &cg_oldRail, "cg_oldRail", "1", CVAR_ARCHIVE},
 	{ &cg_oldRocket, "cg_oldRocket", "1", CVAR_ARCHIVE},
 	{ &cg_oldPlasma, "cg_oldPlasma", "1", CVAR_ARCHIVE},
-//unlagged - client options
-	{ &cg_delag, "cg_delag", "0", CVAR_ARCHIVE | CVAR_USERINFO },
-//	{ &cg_debugDelag, "cg_debugDelag", "0", CVAR_USERINFO | CVAR_CHEAT },
-//	{ &cg_drawBBox, "cg_drawBBox", "0", CVAR_CHEAT },
-	{ &cg_cmdTimeNudge, "cg_cmdTimeNudge", "0", CVAR_ARCHIVE | CVAR_USERINFO },
-	// this will be automagically copied from the server
-	{ &sv_fps, "sv_fps", "20", 0 },
-	{ &cg_projectileNudge, "cg_projectileNudge", "0", CVAR_ARCHIVE },
-	{ &cg_optimizePrediction, "cg_optimizePrediction", "1", CVAR_ARCHIVE },
-	{ &cl_timeNudge, "cl_timeNudge", "0", CVAR_ARCHIVE },
-//	{ &cg_latentSnaps, "cg_latentSnaps", "0", CVAR_USERINFO | CVAR_CHEAT },
-//	{ &cg_latentCmds, "cg_latentCmds", "0", CVAR_USERINFO | CVAR_CHEAT },
-//	{ &cg_plOut, "cg_plOut", "0", CVAR_USERINFO | CVAR_CHEAT },
-//unlagged - client options
-	{ &cg_trueLightning, "cg_trueLightning", "0.0", CVAR_ARCHIVE},
-        { &cg_music, "cg_music", "", CVAR_ARCHIVE},
+	{ &cg_trueLightning, "cg_trueLightning", "0.0", CVAR_ARCHIVE}
 //	{ &cg_pmove_fixed, "cg_pmove_fixed", "0", CVAR_USERINFO | CVAR_ARCHIVE }
 };
 
@@ -418,33 +374,6 @@ void CG_UpdateCvars( void ) {
 	cvarTable_t	*cv;
 
 	for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) {
-//unlagged - client options
-		// clamp the value between 0 and 999
-		// negative values would suck - people could conceivably shoot other
-		// players *long* after they had left the area, on purpose
-		if ( cv->vmCvar == &cg_cmdTimeNudge ) {
-			CG_Cvar_ClampInt( cv->cvarName, cv->vmCvar, 0, 999 );
-		}
-		// cl_timenudge less than -50 or greater than 50 doesn't actually
-		// do anything more than -50 or 50 (actually the numbers are probably
-		// closer to -30 and 30, but 50 is nice and round-ish)
-		// might as well not feed the myth, eh?
-		else if ( cv->vmCvar == &cl_timeNudge ) {
-			CG_Cvar_ClampInt( cv->cvarName, cv->vmCvar, -50, 50 );
-		}
-		// don't let this go too high - no point
-		/*else if ( cv->vmCvar == &cg_latentSnaps ) {
-			CG_Cvar_ClampInt( cv->cvarName, cv->vmCvar, 0, 10 );
-		}*/
-		// don't let this get too large
-		/*else if ( cv->vmCvar == &cg_latentCmds ) {
-			CG_Cvar_ClampInt( cv->cvarName, cv->vmCvar, 0, MAX_LATENT_CMDS - 1 );
-		}*/
-		// no more than 100% packet loss
-		/*else if ( cv->vmCvar == &cg_plOut ) {
-			CG_Cvar_ClampInt( cv->cvarName, cv->vmCvar, 0, 100 );
-		}*/
-//unlagged - client options
 		trap_Cvar_Update( cv->vmCvar );
 	}
 
@@ -625,11 +554,7 @@ static void CG_RegisterSounds( void ) {
 	cgs.media.countPrepareTeamSound = trap_S_RegisterSound( "sound/feedback/prepare_team.wav", qtrue );
 #endif
 
-	// N_G: Another condition that makes no sense to me, see for
-	// yourself if you really meant this
-	// Sago: Makes perfect sense: Load team game stuff if the gametype is a teamgame and not an exception (like GT_LMS)
-	if ( ( ( cgs.gametype >= GT_TEAM ) && ( cgs.ffa_gt != 1 ) ) ||
-		cg_buildScript.integer ) {
+	if ( cgs.gametype >= GT_TEAM || cg_buildScript.integer ) {
 
 		cgs.media.captureAwardSound = trap_S_RegisterSound( "sound/teamplay/flagcapture_yourteam.wav", qtrue );
 		cgs.media.redLeadsSound = trap_S_RegisterSound( "sound/feedback/redleads.wav", qtrue );
@@ -649,7 +574,7 @@ static void CG_RegisterSounds( void ) {
 		cgs.media.takenYourTeamSound = trap_S_RegisterSound( "sound/teamplay/flagtaken_yourteam.wav", qtrue );
 		cgs.media.takenOpponentSound = trap_S_RegisterSound( "sound/teamplay/flagtaken_opponent.wav", qtrue );
 
-		if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION|| cg_buildScript.integer ) {
+		if ( cgs.gametype == GT_CTF || cg_buildScript.integer ) {
 			cgs.media.redFlagReturnedSound = trap_S_RegisterSound( "sound/teamplay/voc_red_returned.wav", qtrue );
 			cgs.media.blueFlagReturnedSound = trap_S_RegisterSound( "sound/teamplay/voc_blue_returned.wav", qtrue );
 			cgs.media.enemyTookYourFlagSound = trap_S_RegisterSound( "sound/teamplay/voc_enemy_flag.wav", qtrue );
@@ -664,7 +589,7 @@ static void CG_RegisterSounds( void ) {
 			cgs.media.enemyTookTheFlagSound = trap_S_RegisterSound( "sound/teamplay/voc_enemy_1flag.wav", qtrue );
 		}
 
-		if ( cgs.gametype == GT_1FCTF || cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION ||cg_buildScript.integer ) {
+		if ( cgs.gametype == GT_1FCTF || cgs.gametype == GT_CTF || cg_buildScript.integer ) {
 			cgs.media.youHaveFlagSound = trap_S_RegisterSound( "sound/teamplay/voc_you_flag.wav", qtrue );
 			cgs.media.holyShitSound = trap_S_RegisterSound("sound/feedback/voc_holyshit.wav", qtrue);
 		}
@@ -803,7 +728,7 @@ static void CG_RegisterSounds( void ) {
 	cgs.media.sfx_railg = trap_S_RegisterSound ("sound/weapons/railgun/railgf1a.wav", qfalse);
 	cgs.media.sfx_rockexp = trap_S_RegisterSound ("sound/weapons/rocket/rocklx1a.wav", qfalse);
 	cgs.media.sfx_plasmaexp = trap_S_RegisterSound ("sound/weapons/plasma/plasmx1a.wav", qfalse);
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	cgs.media.sfx_proxexp = trap_S_RegisterSound( "sound/weapons/proxmine/wstbexpl.wav" , qfalse);
 	cgs.media.sfx_nghit = trap_S_RegisterSound( "sound/weapons/nailgun/wnalimpd.wav" , qfalse);
 	cgs.media.sfx_nghitflesh = trap_S_RegisterSound( "sound/weapons/nailgun/wnalimpl.wav" , qfalse);
@@ -823,7 +748,7 @@ static void CG_RegisterSounds( void ) {
 	cgs.media.wstbimpmSound = trap_S_RegisterSound("sound/weapons/proxmine/wstbimpm.wav", qfalse);
 	cgs.media.wstbimpdSound = trap_S_RegisterSound("sound/weapons/proxmine/wstbimpd.wav", qfalse);
 	cgs.media.wstbactvSound = trap_S_RegisterSound("sound/weapons/proxmine/wstbactv.wav", qfalse);
-//#endif
+#endif
 
 	cgs.media.regenSound = trap_S_RegisterSound("sound/items/regen.wav", qfalse);
 	cgs.media.protectSound = trap_S_RegisterSound("sound/items/protect3.wav", qfalse);
@@ -832,31 +757,31 @@ static void CG_RegisterSounds( void ) {
 	cgs.media.hgrenb2aSound = trap_S_RegisterSound("sound/weapons/grenade/hgrenb2a.wav", qfalse);
 
 #ifdef MISSIONPACK
-	trap_S_RegisterSound("sound/player/sergei/death1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/death2.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/death3.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/jump1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/pain25_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/pain75_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/pain100_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/falling1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/gasp.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/drown.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/fall1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/sergei/taunt.wav", qfalse );
-
-	trap_S_RegisterSound("sound/player/kyonshi/death1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/death2.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/death3.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/jump1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/pain25_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/pain75_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/pain100_1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/falling1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/gasp.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/drown.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/fall1.wav", qfalse );
-	trap_S_RegisterSound("sound/player/kyonshi/taunt.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/death1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/death2.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/death3.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/jump1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/pain25_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/pain75_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/pain100_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/falling1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/gasp.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/drown.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/fall1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/james/taunt.wav", qfalse );
+
+	trap_S_RegisterSound("sound/player/janet/death1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/death2.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/death3.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/jump1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/pain25_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/pain75_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/pain100_1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/falling1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/gasp.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/drown.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/fall1.wav", qfalse );
+	trap_S_RegisterSound("sound/player/janet/taunt.wav", qfalse );
 #endif
 
 }
@@ -922,10 +847,10 @@ static void CG_RegisterGraphics( void ) 
 	cgs.media.smokePuffShader = trap_R_RegisterShader( "smokePuff" );
 	cgs.media.smokePuffRageProShader = trap_R_RegisterShader( "smokePuffRagePro" );
 	cgs.media.shotgunSmokePuffShader = trap_R_RegisterShader( "shotgunSmokePuff" );
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	cgs.media.nailPuffShader = trap_R_RegisterShader( "nailtrail" );
 	cgs.media.blueProxMine = trap_R_RegisterModel( "models/weaphits/proxmineb.md3" );
-//#endif
+#endif
 	cgs.media.plasmaBallShader = trap_R_RegisterShader( "sprites/plasma1" );
 	cgs.media.bloodTrailShader = trap_R_RegisterShader( "bloodTrail" );
 	cgs.media.lagometerShader = trap_R_RegisterShader("lagometer" );
@@ -936,12 +861,9 @@ static void CG_RegisterGraphics( void ) 
 	cgs.media.tracerShader = trap_R_RegisterShader( "gfx/misc/tracer" );
 	cgs.media.selectShader = trap_R_RegisterShader( "gfx/2d/select" );
 
-	for (i = 0; i < NUM_CROSSHAIRS; i++ ) {
-		if (i < 10)
-			cgs.media.crosshairShader[i] = trap_R_RegisterShader( va("gfx/2d/crosshair%c", 'a'+i) );
-		else
-			cgs.media.crosshairShader[i] = trap_R_RegisterShader( va("gfx/2d/crosshair%02d", i - 10) );
- 	}
+	for ( i = 0 ; i < NUM_CROSSHAIRS ; i++ ) {
+		cgs.media.crosshairShader[i] = trap_R_RegisterShader( va("gfx/2d/crosshair%c", 'a'+i) );
+	}
 
 	cgs.media.backTileShader = trap_R_RegisterShader( "gfx/2d/backtile" );
 	cgs.media.noammoShader = trap_R_RegisterShader( "icons/noammo" );
@@ -955,38 +877,24 @@ static void CG_RegisterGraphics( void ) 
 	cgs.media.regenShader = trap_R_RegisterShader("powerups/regen" );
 	cgs.media.hastePuffShader = trap_R_RegisterShader("hasteSmokePuff" );
 
-//#ifdef MISSIONPACK
-	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION|| cgs.gametype == GT_1FCTF || cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) {
-//#else
-//	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION|| cg_buildScript.integer ) {
-//#endif
+#ifdef MISSIONPACK
+	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF || cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) {
+#else
+	if ( cgs.gametype == GT_CTF || cg_buildScript.integer ) {
+#endif
 		cgs.media.redCubeModel = trap_R_RegisterModel( "models/powerups/orb/r_orb.md3" );
 		cgs.media.blueCubeModel = trap_R_RegisterModel( "models/powerups/orb/b_orb.md3" );
 		cgs.media.redCubeIcon = trap_R_RegisterShader( "icons/skull_red" );
 		cgs.media.blueCubeIcon = trap_R_RegisterShader( "icons/skull_blue" );
 	}
 
-//For Double Domination:
-	if ( cgs.gametype == GT_DOUBLE_D ) {
-		cgs.media.ddPointSkinA[TEAM_RED] = trap_R_RegisterShaderNoMip( "icons/icona_red" );
-                cgs.media.ddPointSkinA[TEAM_BLUE] = trap_R_RegisterShaderNoMip( "icons/icona_blue" );
-                cgs.media.ddPointSkinA[TEAM_FREE] = trap_R_RegisterShaderNoMip( "icons/icona_white" );
-                cgs.media.ddPointSkinA[TEAM_NONE] = trap_R_RegisterShaderNoMip( "icons/noammo" );
-                
-                cgs.media.ddPointSkinB[TEAM_RED] = trap_R_RegisterShaderNoMip( "icons/iconb_red" );
-                cgs.media.ddPointSkinB[TEAM_BLUE] = trap_R_RegisterShaderNoMip( "icons/iconb_blue" );
-                cgs.media.ddPointSkinB[TEAM_FREE] = trap_R_RegisterShaderNoMip( "icons/iconb_white" );
-                cgs.media.ddPointSkinB[TEAM_NONE] = trap_R_RegisterShaderNoMip( "icons/noammo" );
-	}
-
-//#ifdef MISSIONPACK
-	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_1FCTF || cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) {
-//#else
-//	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cg_buildScript.integer ) {
-//#endif
+#ifdef MISSIONPACK
+	if ( cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF || cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) {
+#else
+	if ( cgs.gametype == GT_CTF || cg_buildScript.integer ) {
+#endif
 		cgs.media.redFlagModel = trap_R_RegisterModel( "models/flags/r_flag.md3" );
 		cgs.media.blueFlagModel = trap_R_RegisterModel( "models/flags/b_flag.md3" );
-                cgs.media.neutralFlagModel = trap_R_RegisterModel( "models/flags/n_flag.md3" );
 		cgs.media.redFlagShader[0] = trap_R_RegisterShaderNoMip( "icons/iconf_red1" );
 		cgs.media.redFlagShader[1] = trap_R_RegisterShaderNoMip( "icons/iconf_red2" );
 		cgs.media.redFlagShader[2] = trap_R_RegisterShaderNoMip( "icons/iconf_red3" );
@@ -1007,7 +915,7 @@ static void CG_RegisterGraphics( void ) 
 #endif
 	}
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if ( cgs.gametype == GT_1FCTF || cg_buildScript.integer ) {
 		cgs.media.neutralFlagModel = trap_R_RegisterModel( "models/flags/n_flag.md3" );
 		cgs.media.flagShader[0] = trap_R_RegisterShaderNoMip( "icons/iconf_neutral1" );
@@ -1032,11 +940,9 @@ static void CG_RegisterGraphics( void ) 
 
 	cgs.media.redKamikazeShader = trap_R_RegisterShader( "models/weaphits/kamikred" );
 	cgs.media.dustPuffShader = trap_R_RegisterShader("hasteSmokePuff" );
-//#endif
-
-	if ( ( ( cgs.gametype >= GT_TEAM ) && ( cgs.ffa_gt != 1 ) ) ||
-		cg_buildScript.integer ) {
+#endif
 
+	if ( cgs.gametype >= GT_TEAM || cg_buildScript.integer ) {
 		cgs.media.friendShader = trap_R_RegisterShader( "sprites/foe" );
 		cgs.media.redQuadShader = trap_R_RegisterShader("powerups/blueflag" );
 		cgs.media.teamStatusBar = trap_R_RegisterShader( "gfx/2d/colorbar.tga" );
@@ -1167,13 +1073,13 @@ static void CG_RegisterGraphics( void ) 
 	cgs.media.flagShaders[1] = trap_R_RegisterShaderNoMip("ui/assets/statusbar/flag_capture.tga");
 	cgs.media.flagShaders[2] = trap_R_RegisterShaderNoMip("ui/assets/statusbar/flag_missing.tga");
 
-	trap_R_RegisterModel( "models/players/sergei/lower.md3" );
-	trap_R_RegisterModel( "models/players/sergei/upper.md3" );
-	trap_R_RegisterModel( "models/players/sergei/head.md3" );
-
-	trap_R_RegisterModel( "models/players/kyonshi/lower.md3" );
-	trap_R_RegisterModel( "models/players/kyonshi/upper.md3" );
-	trap_R_RegisterModel( "models/players/kyonshi/head.md3" );
+	trap_R_RegisterModel( "models/players/james/lower.md3" );
+	trap_R_RegisterModel( "models/players/james/upper.md3" );
+	trap_R_RegisterModel( "models/players/heads/james/james.md3" );
+
+	trap_R_RegisterModel( "models/players/janet/lower.md3" );
+	trap_R_RegisterModel( "models/players/janet/upper.md3" );
+	trap_R_RegisterModel( "models/players/heads/janet/janet.md3" );
 
 #endif
 	CG_ClearParticles ();
@@ -1270,15 +1176,11 @@ void CG_StartMusic( void ) {
 	char	parm1[MAX_QPATH], parm2[MAX_QPATH];
 
 	// start the background music
-	if ( *cg_music.string && Q_stricmp( cg_music.string, "none" ) ) {
-		s = (char *)cg_music.string;
-	} else {
-		s = (char *)CG_ConfigString( CS_MUSIC );
+	s = (char *)CG_ConfigString( CS_MUSIC );
 	Q_strncpyz( parm1, COM_Parse( &s ), sizeof( parm1 ) );
 	Q_strncpyz( parm2, COM_Parse( &s ), sizeof( parm2 ) );
 
 	trap_S_StartBackgroundTrack( parm1, parm2 );
-        }
 }
 #ifdef MISSIONPACK
 char *CG_GetMenuBuffer(const char *filename) {
@@ -1453,7 +1355,7 @@ qboolean CG_Asset_Parse(int handle) {
 			continue;
 		}
 	}
-	return qfalse; // bk001204 - why not?
+	return qfalse;
 }
 
 void CG_ParseMenu(const char *menuFile) {
@@ -1647,7 +1549,7 @@ void CG_SetScoreSelection(void *p) {
 		return;
 	}
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		int feeder = FEEDER_REDTEAM_LIST;
 		i = red;
 		if (cg.scores[cg.selectedScore].team == TEAM_BLUE) {
@@ -1663,7 +1565,7 @@ void CG_SetScoreSelection(void *p) {
 // FIXME: might need to cache this info
 static clientInfo_t * CG_InfoFromScoreIndex(int index, int team, int *scoreIndex) {
 	int i, count;
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		count = 0;
 		for (i = 0; i < cg.numScores; i++) {
 			if (cg.scores[i].team == team) {
@@ -1768,7 +1670,7 @@ static qhandle_t CG_FeederItemImage(floa
 }
 
 static void CG_FeederSelection(float feederID, int index) {
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		int i, count;
 		int team = (feederID == FEEDER_REDTEAM_LIST) ? TEAM_RED : TEAM_BLUE;
 		count = 0;
@@ -1786,7 +1688,7 @@ static void CG_FeederSelection(float fee
 }
 #endif
 
-#ifdef MISSIONPACK // bk001204 - only needed there
+#ifdef MISSIONPACK
 static float CG_Cvar_Get(const char *cvar) {
 	char buff[128];
 	memset(buff, 0, sizeof(buff));
@@ -2084,28 +1986,3 @@ void CG_MouseEvent(int x, int y) {
 }
 #endif
 
-//unlagged - attack prediction #3
-// moved from g_weapon.c
-/*
-======================
-SnapVectorTowards
-
-Round a vector to integers for more efficient network
-transmission, but make sure that it rounds towards a given point
-rather than blindly truncating.  This prevents it from truncating 
-into a wall.
-======================
-*/
-void SnapVectorTowards( vec3_t v, vec3_t to ) {
-	int		i;
-
-	for ( i = 0 ; i < 3 ; i++ ) {
-		if ( to[i] <= v[i] ) {
-			v[i] = (int)v[i];
-		} else {
-			v[i] = (int)v[i] + 1;
-		}
-	}
-}
-//unlagged - attack prediction #3
-
Only in ioquake3svn1438/code/cgame: cg_main.c.orig
Only in ioquake3svn1438/code/cgame: cg_main.orig.c
diff -upr ioquake3svn1438/code/cgame/cg_newdraw.c ioquake3serverFix/code/cgame/cg_newdraw.c
--- ioquake3svn1438/code/cgame/cg_newdraw.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_newdraw.c	2008-08-09 11:28:23.000000000 -0500
@@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 ===========================================================================
 */
 
-#ifndef MISSIONPACK // bk001204
+#ifndef MISSIONPACK
 #error This file not be used for classic Q3A.
 #endif
 
@@ -56,7 +56,7 @@ void CG_SetPrintString(int type, const c
 }
 
 void CG_CheckOrderPending(void) {
-	if (cgs.gametype < GT_CTF || cgs.ffa_gt>0) {
+	if (cgs.gametype < GT_CTF) {
 		return;
 	}
 	if (cgs.orderPending) {
@@ -172,7 +172,7 @@ static void CG_DrawPlayerArmorIcon( rect
 	cent = &cg_entities[cg.snap->ps.clientNum];
 	ps = &cg.snap->ps;
 
-	if ( draw2D || ( !cg_draw3dIcons.integer && cg_drawIcons.integer) ) { // bk001206 - parentheses
+	if ( draw2D || ( !cg_draw3dIcons.integer && cg_drawIcons.integer) ) {
 		CG_DrawPic( rect->x, rect->y + rect->h/2 + 1, rect->w, rect->h, cgs.media.armorIcon );
   } else if (cg_draw3dIcons.integer) {
 	  VectorClear( angles );
@@ -209,10 +209,9 @@ static void CG_DrawPlayerArmorValue(rect
 	}
 }
 
-#ifndef MISSIONPACK // bk001206 
+#ifndef MISSIONPACK
 static float healthColors[4][4] = { 
 //		{ 0.2, 1.0, 0.2, 1.0 } , { 1.0, 0.2, 0.2, 1.0 }, {0.5, 0.5, 0.5, 1} };
-  // bk0101016 - float const
   { 1.0f, 0.69f, 0.0f, 1.0f } ,		// normal
   { 1.0f, 0.2f, 0.2f, 1.0f },		// low health
   { 0.5f, 0.5f, 0.5f, 1.0f},		// weapon firing
@@ -228,7 +227,7 @@ static void CG_DrawPlayerAmmoIcon( rectD
 	cent = &cg_entities[cg.snap->ps.clientNum];
 	ps = &cg.snap->ps;
 
-	if ( draw2D || (!cg_draw3dIcons.integer && cg_drawIcons.integer) ) { // bk001206 - parentheses
+	if ( draw2D || (!cg_draw3dIcons.integer && cg_drawIcons.integer) ) {
 	  qhandle_t	icon;
     icon = cg_weapons[ cg.predictedPlayerState.weapon ].ammoIcon;
 		if ( icon ) {
@@ -651,7 +650,7 @@ static void CG_DrawBlueFlagName(rectDef_
 }
 
 static void CG_DrawBlueFlagStatus(rectDef_t *rect, qhandle_t shader) {
-	if (cgs.gametype != GT_CTF && cgs.gametype != GT_CTF_ELIMINATION && cgs.gametype != GT_1FCTF) {
+	if (cgs.gametype != GT_CTF && cgs.gametype != GT_1FCTF) {
 		if (cgs.gametype == GT_HARVESTER) {
 		  vec4_t color = {0, 0, 1, 1};
 		  trap_R_SetColor(color);
@@ -701,7 +700,7 @@ static void CG_DrawRedFlagName(rectDef_t
 }
 
 static void CG_DrawRedFlagStatus(rectDef_t *rect, qhandle_t shader) {
-	if (cgs.gametype != GT_CTF && cgs.gametype != GT_CTF_ELIMINATION && cgs.gametype != GT_1FCTF) {
+	if (cgs.gametype != GT_CTF && cgs.gametype != GT_1FCTF) {
 		if (cgs.gametype == GT_HARVESTER) {
 		  vec4_t color = {1, 0, 0, 1};
 		  trap_R_SetColor(color);
@@ -811,7 +810,7 @@ static void CG_OneFlagStatus(rectDef_t *
 static void CG_DrawCTFPowerUp(rectDef_t *rect) {
 	int		value;
 
-	if (cgs.gametype < GT_CTF || cgs.ffa_gt>0) {
+	if (cgs.gametype < GT_CTF) {
 		return;
 	}
 	value = cg.snap->ps.stats[STAT_PERSISTANT_POWERUP];
@@ -953,7 +952,7 @@ float CG_GetValue(int ownerDraw) {
 }
 
 qboolean CG_OtherTeamHasFlag(void) {
-	if (cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_1FCTF) {
+	if (cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF) {
 		int team = cg.snap->ps.persistant[PERS_TEAM];
 		if (cgs.gametype == GT_1FCTF) {
 			if (team == TEAM_RED && cgs.flagStatus == FLAG_TAKEN_BLUE) {
@@ -977,7 +976,7 @@ qboolean CG_OtherTeamHasFlag(void) {
 }
 
 qboolean CG_YourTeamHasFlag(void) {
-	if (cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_1FCTF) {
+	if (cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF) {
 		int team = cg.snap->ps.persistant[PERS_TEAM];
 		if (cgs.gametype == GT_1FCTF) {
 			if (team == TEAM_RED && cgs.flagStatus == FLAG_TAKEN_RED) {
@@ -1030,13 +1029,13 @@ qboolean CG_OwnerDrawVisible(int flags) 
 	}
 
 	if (flags & CG_SHOW_ANYTEAMGAME) {
-		if( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if( cgs.gametype >= GT_TEAM) {
 			return qtrue;
 		}
 	}
 
 	if (flags & CG_SHOW_ANYNONTEAMGAME) {
-		if( cgs.gametype < GT_TEAM || cgs.ffa_gt==1) {
+		if( cgs.gametype < GT_TEAM) {
 			return qtrue;
 		}
 	}
@@ -1058,7 +1057,7 @@ qboolean CG_OwnerDrawVisible(int flags) 
 	}
 
 	if (flags & CG_SHOW_CTF) {
-		if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION) {
+		if( cgs.gametype == GT_CTF ) {
 			return qtrue;
 		}
 	}
@@ -1151,7 +1150,7 @@ static void CG_DrawKiller(rectDef_t *rec
 
 
 static void CG_DrawCapFragLimit(rectDef_t *rect, float scale, vec4_t color, qhandle_t shader, int textStyle) {
-	int limit = (cgs.gametype >= GT_CTF && cgs.ffa_gt==0) ? cgs.capturelimit : cgs.fraglimit;
+	int limit = (cgs.gametype >= GT_CTF) ? cgs.capturelimit : cgs.fraglimit;
 	CG_Text_Paint(rect->x, rect->y, scale, color, va("%2i", limit),0, 0, textStyle); 
 }
 
@@ -1169,7 +1168,7 @@ static void CG_Draw2ndPlace(rectDef_t *r
 
 const char *CG_GetGameStatusText(void) {
 	const char *s = "";
-	if ( cgs.gametype < GT_TEAM || cgs.ffa_gt==1) {
+	if ( cgs.gametype < GT_TEAM) {
 		if (cg.snap->ps.persistant[PERS_TEAM] != TEAM_SPECTATOR ) {
 			s = va("%s place with %i",CG_PlaceString( cg.snap->ps.persistant[PERS_RANK] + 1 ),cg.snap->ps.persistant[PERS_SCORE] );
 		}
@@ -1202,14 +1201,6 @@ const char *CG_GameTypeString(void) {
 		return "Overload";
 	} else if ( cgs.gametype == GT_HARVESTER ) {
 		return "Harvester";
-	} else if ( cgs.gametype == GT_ELIMINATION ) {
-		return "Elimination";
-	} else if ( cgs.gametype == GT_CTF_ELIMINATION ) {
-		return "CTF Elimination";
-	} else if ( cgs.gametype == GT_LMS ) {
-		return "Last Man Standing";
-	} else if ( cgs.gametype == GT_DOUBLE_D ) {
-		return "Double Domination";
 	}
 	return "";
 }
@@ -1222,8 +1213,6 @@ static void CG_Text_Paint_Limit(float *m
 	vec4_t newColor;
 	glyphInfo_t *glyph;
   if (text) {
-// TTimo: FIXME
-//    const unsigned char *s = text; // bk001206 - unsigned
     const char *s = text;
 		float max = *maxX;
 		float useScale;
diff -upr ioquake3svn1438/code/cgame/cg_players.c ioquake3serverFix/code/cgame/cg_players.c
--- ioquake3svn1438/code/cgame/cg_players.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_players.c	2008-08-09 11:28:23.000000000 -0500
@@ -314,7 +314,7 @@ static qboolean	CG_FindClientModelFile( 
 	char *team, *charactersFolder;
 	int i;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		switch ( ci->team ) {
 			case TEAM_BLUE: {
 				team = "blue";
@@ -333,33 +333,33 @@ static qboolean	CG_FindClientModelFile( 
 	while(1) {
 		for ( i = 0; i < 2; i++ ) {
 			if ( i == 0 && teamName && *teamName ) {
-				//								"models/players/characters/sergei/stroggs/lower_lily_red.skin"
+				//								"models/players/characters/james/stroggs/lower_lily_red.skin"
 				Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s_%s.%s", charactersFolder, modelName, teamName, base, skinName, team, ext );
 			}
 			else {
-				//								"models/players/characters/sergei/lower_lily_red.skin"
+				//								"models/players/characters/james/lower_lily_red.skin"
 				Com_sprintf( filename, length, "models/players/%s%s/%s_%s_%s.%s", charactersFolder, modelName, base, skinName, team, ext );
 			}
 			if ( CG_FileExists( filename ) ) {
 				return qtrue;
 			}
-			if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+			if ( cgs.gametype >= GT_TEAM ) {
 				if ( i == 0 && teamName && *teamName ) {
-					//								"models/players/characters/sergei/stroggs/lower_red.skin"
+					//								"models/players/characters/james/stroggs/lower_red.skin"
 					Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", charactersFolder, modelName, teamName, base, team, ext );
 				}
 				else {
-					//								"models/players/characters/sergei/lower_red.skin"
+					//								"models/players/characters/james/lower_red.skin"
 					Com_sprintf( filename, length, "models/players/%s%s/%s_%s.%s", charactersFolder, modelName, base, team, ext );
 				}
 			}
 			else {
 				if ( i == 0 && teamName && *teamName ) {
-					//								"models/players/characters/sergei/stroggs/lower_lily.skin"
+					//								"models/players/characters/james/stroggs/lower_lily.skin"
 					Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", charactersFolder, modelName, teamName, base, skinName, ext );
 				}
 				else {
-					//								"models/players/characters/sergei/lower_lily.skin"
+					//								"models/players/characters/james/lower_lily.skin"
 					Com_sprintf( filename, length, "models/players/%s%s/%s_%s.%s", charactersFolder, modelName, base, skinName, ext );
 				}
 			}
@@ -389,7 +389,7 @@ static qboolean	CG_FindClientHeadFile( c
 	char *team, *headsFolder;
 	int i;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		switch ( ci->team ) {
 			case TEAM_BLUE: {
 				team = "blue";
@@ -423,7 +423,7 @@ static qboolean	CG_FindClientHeadFile( c
 			if ( CG_FileExists( filename ) ) {
 				return qtrue;
 			}
-			if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+			if ( cgs.gametype >= GT_TEAM ) {
 				if ( i == 0 &&  teamName && *teamName ) {
 					Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", headsFolder, headModelName, teamName, base, team, ext );
 				}
@@ -657,7 +657,7 @@ static void CG_LoadClientInfo( int clien
 
 	teamname[0] = 0;
 #ifdef MISSIONPACK
-	if( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if( cgs.gametype >= GT_TEAM) {
 		if( ci->team == TEAM_BLUE ) {
 			Q_strncpyz(teamname, cg_blueTeamName.string, sizeof(teamname) );
 		} else {
@@ -675,7 +675,7 @@ static void CG_LoadClientInfo( int clien
 		}
 
 		// fall back to default team name
-		if( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if( cgs.gametype >= GT_TEAM) {
 			// keep skin name
 			if( ci->team == TEAM_BLUE ) {
 				Q_strncpyz(teamname, DEFAULT_BLUETEAM_NAME, sizeof(teamname) );
@@ -704,7 +704,7 @@ static void CG_LoadClientInfo( int clien
 
 	// sounds
 	dir = ci->modelName;
-	fallback = (cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) ? DEFAULT_TEAM_MODEL : DEFAULT_MODEL;
+	fallback = (cgs.gametype >= GT_TEAM) ? DEFAULT_TEAM_MODEL : DEFAULT_MODEL;
 
 	for ( i = 0 ; i < MAX_CUSTOM_SOUNDS ; i++ ) {
 		s = cg_customSoundNames[i];
@@ -780,7 +780,7 @@ static qboolean CG_ScanForExistingClient
 			&& !Q_stricmp( ci->headSkinName, match->headSkinName ) 
 			&& !Q_stricmp( ci->blueTeam, match->blueTeam ) 
 			&& !Q_stricmp( ci->redTeam, match->redTeam )
-			&& (cgs.gametype < GT_TEAM || cgs.ffa_gt==1 || ci->team == match->team) ) {
+			&& (cgs.gametype < GT_TEAM || ci->team == match->team) ) {
 			// this clientinfo is identical, so use it's handles
 
 			ci->deferred = qfalse;
@@ -818,7 +818,7 @@ static void CG_SetDeferredClientInfo( in
 			 Q_stricmp( ci->modelName, match->modelName ) ||
 //			 Q_stricmp( ci->headModelName, match->headModelName ) ||
 //			 Q_stricmp( ci->headSkinName, match->headSkinName ) ||
-			 (cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1 && ci->team != match->team) ) {
+			 (cgs.gametype >= GT_TEAM && ci->team != match->team) ) {
 			continue;
 		}
 		// just load the real info cause it uses the same models and skins
@@ -827,14 +827,14 @@ static void CG_SetDeferredClientInfo( in
 	}
 
 	// if we are in teamplay, only grab a model if the skin is correct
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		for ( i = 0 ; i < cgs.maxclients ; i++ ) {
 			match = &cgs.clientinfo[ i ];
 			if ( !match->infoValid || match->deferred ) {
 				continue;
 			}
 			if ( Q_stricmp( ci->skinName, match->skinName ) ||
-				(cgs.gametype >= GT_TEAM && cgs.ffa_gt != 1 && ci->team != match->team) ) {
+				(cgs.gametype >= GT_TEAM && ci->team != match->team) ) {
 				continue;
 			}
 			ci->deferred = qtrue;
@@ -945,7 +945,7 @@ void CG_NewClientInfo( int clientNum ) {
 		char modelStr[MAX_QPATH];
 		char *skin;
 
-		if( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if( cgs.gametype >= GT_TEAM ) {
 			Q_strncpyz( newInfo.modelName, DEFAULT_TEAM_MODEL, sizeof( newInfo.modelName ) );
 			Q_strncpyz( newInfo.skinName, "default", sizeof( newInfo.skinName ) );
 		} else {
@@ -960,7 +960,7 @@ void CG_NewClientInfo( int clientNum ) {
 			Q_strncpyz( newInfo.modelName, modelStr, sizeof( newInfo.modelName ) );
 		}
 
-		if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1 ) {
+		if ( cgs.gametype >= GT_TEAM ) {
 			// keep skin name
 			slash = strchr( v, '/' );
 			if ( slash ) {
@@ -989,7 +989,7 @@ void CG_NewClientInfo( int clientNum ) {
 		char modelStr[MAX_QPATH];
 		char *skin;
 
-		if( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if( cgs.gametype >= GT_TEAM ) {
 			Q_strncpyz( newInfo.headModelName, DEFAULT_TEAM_MODEL, sizeof( newInfo.headModelName ) );
 			Q_strncpyz( newInfo.headSkinName, "default", sizeof( newInfo.headSkinName ) );
 		} else {
@@ -1004,7 +1004,7 @@ void CG_NewClientInfo( int clientNum ) {
 			Q_strncpyz( newInfo.headModelName, modelStr, sizeof( newInfo.headModelName ) );
 		}
 
-		if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		if ( cgs.gametype >= GT_TEAM ) {
 			// keep skin name
 			slash = strchr( v, '/' );
 			if ( slash ) {
@@ -1752,7 +1752,7 @@ static void CG_PlayerFlag( centity_t *ce
 }
 
 
-#ifdef MISSIONPACK // bk001204
+#ifdef MISSIONPACK
 /*
 ===============
 CG_PlayerTokens
@@ -1971,7 +1971,7 @@ static void CG_PlayerSprites( centity_t 
 	team = cgs.clientinfo[ cent->currentState.clientNum ].team;
 	if ( !(cent->currentState.eFlags & EF_DEAD) && 
 		cg.snap->ps.persistant[PERS_TEAM] == team &&
-		cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+		cgs.gametype >= GT_TEAM) {
 		if (cg_drawFriend.integer) {
 			CG_PlayerFloatSprite( cent, cgs.media.friendShader );
 		}
@@ -2025,7 +2025,7 @@ static qboolean CG_PlayerShadow( centity
 	// fade the shadow out with height
 	alpha = 1.0 - trace.fraction;
 
-	// bk0101022 - hack / FPE - bogus planes?
+	// hack / FPE - bogus planes?
 	//assert( DotProduct( trace.plane.normal, trace.plane.normal ) != 0.0f ) 
 
 	// add the mark as a temporary, so it goes directly to the renderer
diff -upr ioquake3svn1438/code/cgame/cg_playerstate.c ioquake3serverFix/code/cgame/cg_playerstate.c
--- ioquake3svn1438/code/cgame/cg_playerstate.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_playerstate.c	2008-08-09 11:28:23.000000000 -0500
@@ -427,7 +427,7 @@ void CG_CheckLocalSounds( playerState_t 
 		if ( !cg.warmup ) {
 			// never play lead changes during warmup
 			if ( ps->persistant[PERS_RANK] != ops->persistant[PERS_RANK] ) {
-				if ( cgs.gametype < GT_TEAM || cgs.ffa_gt==1) {
+				if ( cgs.gametype < GT_TEAM) {
 					if (  ps->persistant[PERS_RANK] == 0 ) {
 						CG_AddBufferedSound(cgs.media.takenLeadSound);
 					} else if ( ps->persistant[PERS_RANK] == RANK_TIED_FLAG ) {
diff -upr ioquake3svn1438/code/cgame/cg_predict.c ioquake3serverFix/code/cgame/cg_predict.c
--- ioquake3svn1438/code/cgame/cg_predict.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_predict.c	2008-08-09 11:28:23.000000000 -0500
@@ -260,18 +260,6 @@ CG_TouchItem
 */
 static void CG_TouchItem( centity_t *cent ) {
 	gitem_t		*item;
-	//For instantgib
-	qboolean	canBePicked;
-
-	if(cgs.gametype == GT_ELIMINATION || cgs.gametype == GT_LMS)
-		return; //No weapon pickup in elimination
-
-	//normally we can
-	canBePicked = qtrue;
-
-	//But in instantgib, rocket arena, and CTF_ELIMINATION we normally can't:
-	if(cgs.instantgib || cgs.rockets || cgs.gametype == GT_CTF_ELIMINATION)
-		canBePicked = qfalse;
 
 	if ( !cg_predictItems.integer ) {
 		return;
@@ -293,15 +281,15 @@ static void CG_TouchItem( centity_t *cen
 
 	// Special case for flags.  
 	// We don't predict touching our own flag
-#if 1 //MISSIONPACK
+#ifdef MISSIONPACK
 	if( cgs.gametype == GT_1FCTF ) {
 		if( item->giTag != PW_NEUTRALFLAG ) {
 			return;
 		}
 	}
-	if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_HARVESTER ) {
+	if( cgs.gametype == GT_CTF || cgs.gametype == GT_HARVESTER ) {
 #else
-	if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION ) {
+	if( cgs.gametype == GT_CTF ) {
 #endif
 		if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_RED &&
 			item->giTag == PW_REDFLAG)
@@ -309,50 +297,22 @@ static void CG_TouchItem( centity_t *cen
 		if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_BLUE &&
 			item->giTag == PW_BLUEFLAG)
 			return;
-		//Even in instantgib, we can predict our enemy flag
-		if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_RED &&
-			item->giTag == PW_BLUEFLAG && (!cgs.oneway || cgs.attackingTeam == TEAM_RED))
-			canBePicked = qtrue;
-		if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_BLUE &&
-			item->giTag == PW_REDFLAG && (!cgs.oneway || cgs.attackingTeam == TEAM_BLUE))
-			canBePicked = qtrue;
-		if (item->giTag == WP_RAILGUN)
-			canBePicked = qfalse;
-		if (item->giTag == WP_PLASMAGUN)
-			canBePicked = qfalse;
-	}
-
-	//Currently we don't predict anything in Double Domination because it looks like we take a flag
-	if( cgs.gametype == GT_DOUBLE_D ) {
-		if(cgs.redflag == TEAM_NONE)
-			return; //Can never pick if just one flag is NONE (because then the other is too)
-		if(item->giTag == PW_REDFLAG){ //at point A
-			//if(cgs.redflag == cg.predictedPlayerState.persistant[PERS_TEAM]) //already taken
-				return;
-		}	
-		if(item->giTag == PW_BLUEFLAG){ //at point B
-			//if(cgs.blueflag == cg.predictedPlayerState.persistant[PERS_TEAM]) //already taken
-				return;
-		}	
 	}
 
 	// grab it
-	if(canBePicked)
-	{
-		BG_AddPredictableEventToPlayerstate( EV_ITEM_PICKUP, cent->currentState.modelindex , &cg.predictedPlayerState);
-
-		// remove it from the frame so it won't be drawn
-		cent->currentState.eFlags |= EF_NODRAW;
-
-		// don't touch it again this prediction
-		cent->miscTime = cg.time;
-
-		// if its a weapon, give them some predicted ammo so the autoswitch will work
-		if ( item->giType == IT_WEAPON ) {
-			cg.predictedPlayerState.stats[ STAT_WEAPONS ] |= 1 << item->giTag;
-			if ( !cg.predictedPlayerState.ammo[ item->giTag ] ) {
-				cg.predictedPlayerState.ammo[ item->giTag ] = 1;
-			}
+	BG_AddPredictableEventToPlayerstate( EV_ITEM_PICKUP, cent->currentState.modelindex , &cg.predictedPlayerState);
+
+	// remove it from the frame so it won't be drawn
+	cent->currentState.eFlags |= EF_NODRAW;
+
+	// don't touch it again this prediction
+	cent->miscTime = cg.time;
+
+	// if its a weapon, give them some predicted ammo so the autoswitch will work
+	if ( item->giType == IT_WEAPON ) {
+		cg.predictedPlayerState.stats[ STAT_WEAPONS ] |= 1 << item->giTag;
+		if ( !cg.predictedPlayerState.ammo[ item->giTag ] ) {
+			cg.predictedPlayerState.ammo[ item->giTag ] = 1;
 		}
 	}
 }
@@ -423,135 +383,7 @@ static void CG_TouchTriggerPrediction( v
 	}
 }
 
-//unlagged - optimized prediction
-#define ABS(x) ((x) < 0 ? (-(x)) : (x))
-
-static int IsUnacceptableError( playerState_t *ps, playerState_t *pps ) {
-	vec3_t delta;
-	int i;
-
-	if ( pps->pm_type != ps->pm_type ||
-			pps->pm_flags != ps->pm_flags ||
-			pps->pm_time != ps->pm_time ) {
-		return 1;
-	}
-
-	VectorSubtract( pps->origin, ps->origin, delta );
-	if ( VectorLengthSquared( delta ) > 0.1f * 0.1f ) {
-		if ( cg_showmiss.integer ) {
-			CG_Printf("delta: %.2f  ", VectorLength(delta) );
-		}
-		return 2;
-	}
-
-	VectorSubtract( pps->velocity, ps->velocity, delta );
-	if ( VectorLengthSquared( delta ) > 0.1f * 0.1f ) {
-		if ( cg_showmiss.integer ) {
-			CG_Printf("delta: %.2f  ", VectorLength(delta) );
-		}
-		return 3;
-	}
-
-	if ( pps->weaponTime != ps->weaponTime ||
-			pps->gravity != ps->gravity ||
-			pps->speed != ps->speed ||
-			pps->delta_angles[0] != ps->delta_angles[0] ||
-			pps->delta_angles[1] != ps->delta_angles[1] ||
-			pps->delta_angles[2] != ps->delta_angles[2] || 
-			pps->groundEntityNum != ps->groundEntityNum ) {
-		return 4;
-	}
-
-	if ( pps->legsTimer != ps->legsTimer ||
-			pps->legsAnim != ps->legsAnim ||
-			pps->torsoTimer != ps->torsoTimer ||
-			pps->torsoAnim != ps->torsoAnim ||
-			pps->movementDir != ps->movementDir ) {
-		return 5;
-	}
-
-	VectorSubtract( pps->grapplePoint, ps->grapplePoint, delta );
-	if ( VectorLengthSquared( delta ) > 0.1f * 0.1f ) {
-		return 6;
-	}
-
-	if ( pps->eFlags != ps->eFlags ) {
-		return 7;
-	}
-
-	if ( pps->eventSequence != ps->eventSequence ) {
-		return 8;
-	}
-
-	for ( i = 0; i < MAX_PS_EVENTS; i++ ) {
-		if ( pps->events[i] != ps->events[i] ||
-				pps->eventParms[i] != ps->eventParms[i] ) {
-			return 9;
-		}
-	}
-
-	if ( pps->externalEvent != ps->externalEvent ||
-			pps->externalEventParm != ps->externalEventParm ||
-			pps->externalEventTime != ps->externalEventTime ) {
-		return 10;
-	}
-
-	if ( pps->clientNum != ps->clientNum ||
-			pps->weapon != ps->weapon ||
-			pps->weaponstate != ps->weaponstate ) {
-		return 11;
-	}
-
-	if ( ABS(pps->viewangles[0] - ps->viewangles[0]) > 1.0f ||
-			ABS(pps->viewangles[1] - ps->viewangles[1]) > 1.0f ||
-			ABS(pps->viewangles[2] - ps->viewangles[2]) > 1.0f ) {
-		return 12;
-	}
-
-	if ( pps->viewheight != ps->viewheight ) {
-		return 13;
-	}
-
-	if ( pps->damageEvent != ps->damageEvent ||
-			pps->damageYaw != ps->damageYaw ||
-			pps->damagePitch != ps->damagePitch ||
-			pps->damageCount != ps->damageCount ) {
-		return 14;
-	}
-
-	for ( i = 0; i < MAX_STATS; i++ ) {
-		if ( pps->stats[i] != ps->stats[i] ) {
-			return 15;
-		}
-	}
-
-	for ( i = 0; i < MAX_PERSISTANT; i++ ) {
-		if ( pps->persistant[i] != ps->persistant[i] ) {
-			return 16;
-		}
-	}
-
-	for ( i = 0; i < MAX_POWERUPS; i++ ) {
-		if ( pps->powerups[i] != ps->powerups[i] ) {
-			return 17;
-		}
-	}
-
-	for ( i = 0; i < MAX_WEAPONS; i++ ) {
-		if ( pps->ammo[i] != ps->ammo[i] ) {
-			return 18;
-		}
-	}
 
-	if ( pps->generic1 != ps->generic1 ||
-			pps->loopSound != ps->loopSound ||
-			pps->jumppad_ent != ps->jumppad_ent ) {
-		return 19;
-	}
-
-	return 0;
-}
-//unlagged - optimized prediction
 
 /*
 =================
@@ -585,10 +417,6 @@ void CG_PredictPlayerState( void ) {
 	qboolean	moved;
 	usercmd_t	oldestCmd;
 	usercmd_t	latestCmd;
-//unlagged - optimized prediction
-	int stateIndex = 0, predictCmd = 0; //Sago: added initializing
-	int numPredicted = 0, numPlayedBack = 0; // debug code
-//unlagged - optimized prediction
 
 	cg.hyperspace = qfalse;	// will be set if touching a trigger_teleport
 
@@ -671,91 +499,6 @@ void CG_PredictPlayerState( void ) {
 	cg_pmove.pmove_fixed = pmove_fixed.integer;// | cg_pmove_fixed.integer;
 	cg_pmove.pmove_msec = pmove_msec.integer;
 
-//unlagged - optimized prediction
-	// Like the comments described above, a player's state is entirely
-	// re-predicted from the last valid snapshot every client frame, which
-	// can be really, really, really slow.  Every old command has to be
-	// run again.  For every client frame that is *not* directly after a
-	// snapshot, this is unnecessary, since we have no new information.
-	// For those, we'll play back the predictions from the last frame and
-	// predict only the newest commands.  Essentially, we'll be doing
-	// an incremental predict instead of a full predict.
-	//
-	// If we have a new snapshot, we can compare its player state's command
-	// time to the command times in the queue to find a match.  If we find
-	// a matching state, and the predicted version has not deviated, we can
-	// use the predicted state as a base - and also do an incremental predict.
-	//
-	// With this method, we get incremental predicts on every client frame
-	// except a frame following a new snapshot in which there was a prediction
-	// error.  This yeilds anywhere from a 15% to 40% performance increase,
-	// depending on how much of a bottleneck the CPU is.
-
-	if ( cg_optimizePrediction.integer ) {
-		if ( cg.nextFrameTeleport || cg.thisFrameTeleport ) {
-			// do a full predict
-			cg.lastPredictedCommand = 0;
-			cg.stateTail = cg.stateHead;
-			predictCmd = current - CMD_BACKUP + 1;
-		}
-		// cg.physicsTime is the current snapshot's serverTime
-		// if it's the same as the last one
-		else if ( cg.physicsTime == cg.lastServerTime ) {
-			// we have no new information, so do an incremental predict
-			predictCmd = cg.lastPredictedCommand + 1;
-		}
-		else {
-			// we have a new snapshot
-
-			int i;
-			qboolean error = qtrue;
-
-			// loop through the saved states queue
-			for ( i = cg.stateHead; i != cg.stateTail; i = (i + 1) % NUM_SAVED_STATES ) {
-				// if we find a predicted state whose commandTime matches the snapshot player state's commandTime
-				if ( cg.savedPmoveStates[i].commandTime == cg.predictedPlayerState.commandTime ) {
-					// make sure the state differences are acceptable
-					int errorcode = IsUnacceptableError( &cg.predictedPlayerState, &cg.savedPmoveStates[i] );
-
-					// too much change?
-					if ( errorcode ) {
-						if ( cg_showmiss.integer ) {
-							CG_Printf("errorcode %d at %d\n", errorcode, cg.time);
-						}
-						// yeah, so do a full predict
-						break;
-					}
-
-					// this one is almost exact, so we'll copy it in as the starting point
-					*cg_pmove.ps = cg.savedPmoveStates[i];
-					// advance the head
-					cg.stateHead = (i + 1) % NUM_SAVED_STATES;
-
-					// set the next command to predict
-					predictCmd = cg.lastPredictedCommand + 1;
-
-					// a saved state matched, so flag it
-					error = qfalse;
-					break;
-				}
-			}
-
-			// if no saved states matched
-			if ( error ) {
-				// do a full predict
-				cg.lastPredictedCommand = 0;
-				cg.stateTail = cg.stateHead;
-				predictCmd = current - CMD_BACKUP + 1;
-			}
-		}
-
-		// keep track of the server time of the last snapshot so we
-		// know when we're starting from a new one in future calls
-		cg.lastServerTime = cg.physicsTime;
-		stateIndex = cg.stateHead;
-	}
-//unlagged - optimized prediction
-
 	// run cmds
 	moved = qfalse;
 	for ( cmdNum = current - CMD_BACKUP + 1 ; cmdNum <= current ; cmdNum++ ) {
@@ -838,50 +581,7 @@ void CG_PredictPlayerState( void ) {
 			cg_pmove.cmd.serverTime = ((cg_pmove.cmd.serverTime + pmove_msec.integer-1) / pmove_msec.integer) * pmove_msec.integer;
 		}
 
-//unlagged - optimized prediction
-		if ( cg_optimizePrediction.integer ) {
-			// if we need to predict this command, or we've run out of space in the saved states queue
-			if ( cmdNum >= predictCmd || (stateIndex + 1) % NUM_SAVED_STATES == cg.stateHead ) {
-				// run the Pmove
-				Pmove (&cg_pmove);
-
-				numPredicted++; // debug code
-
-				// record the last predicted command
-				cg.lastPredictedCommand = cmdNum;
-
-				// if we haven't run out of space in the saved states queue
-				if ( (stateIndex + 1) % NUM_SAVED_STATES != cg.stateHead ) {
-					// save the state for the false case (of cmdNum >= predictCmd)
-					// in later calls to this function
-					cg.savedPmoveStates[stateIndex] = *cg_pmove.ps;
-					stateIndex = (stateIndex + 1) % NUM_SAVED_STATES;
-					cg.stateTail = stateIndex;
-				}
-			}
-			else {
-				numPlayedBack++; // debug code
-
-				if ( cg_showmiss.integer && 
-						cg.savedPmoveStates[stateIndex].commandTime != cg_pmove.cmd.serverTime) {
-					// this should ONLY happen just after changing the value of pmove_fixed
-					CG_Printf( "saved state miss\n" );
-				}
-
-				// play back the command from the saved states
-				*cg_pmove.ps = cg.savedPmoveStates[stateIndex];
-
-				// go to the next element in the saved states array
-				stateIndex = (stateIndex + 1) % NUM_SAVED_STATES;
-			}
-		}
-		else {
-			// run the Pmove
-			Pmove (&cg_pmove);
-
-			numPredicted++; // debug code
-		}
-//unlagged - optimized prediction
+		Pmove (&cg_pmove);
 
 		moved = qtrue;
 
@@ -892,15 +592,6 @@ void CG_PredictPlayerState( void ) {
 		//CG_CheckChangedPredictableEvents(&cg.predictedPlayerState);
 	}
 
-//unlagged - optimized prediction
-	// do a /condump after a few seconds of this
-	//CG_Printf("cg.time: %d, numPredicted: %d, numPlayedBack: %d\n", cg.time, numPredicted, numPlayedBack); // debug code
-	// if everything is working right, numPredicted should be 1 more than 98%
-	// of the time, meaning only ONE predicted move was done in the frame
-	// you should see other values for numPredicted after IsUnacceptableError
-	// returns nonzero, and that's it
-//unlagged - optimized prediction
-
 	if ( cg_showmiss.integer > 1 ) {
 		CG_Printf( "[%i : %i] ", cg_pmove.cmd.serverTime, cg.time );
 	}
Only in ioquake3svn1438/code/cgame: cg_predict.orig.c
diff -upr ioquake3svn1438/code/cgame/cg_scoreboard.c ioquake3serverFix/code/cgame/cg_scoreboard.c
--- ioquake3svn1438/code/cgame/cg_scoreboard.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_scoreboard.c	2008-08-09 11:28:23.000000000 -0500
@@ -176,16 +176,8 @@ static void CG_DrawClientScore( int y, s
 		Com_sprintf(string, sizeof(string),
 			" SPECT %3i %4i %s", score->ping, score->time, ci->name);
 	} else {
-		if(cgs.gametype == GT_LMS)
-			Com_sprintf(string, sizeof(string),
-				"%5i %4i %4i %s *%i*", score->score, score->ping, score->time, ci->name, ci->isDead);
-		else
-		if(ci->isDead)
-			Com_sprintf(string, sizeof(string),
-				"%5i %4i %4i %s *DEAD*", score->score, score->ping, score->time, ci->name);
-		else
-			Com_sprintf(string, sizeof(string),
-				"%5i %4i %4i %s", score->score, score->ping, score->time, ci->name);
+		Com_sprintf(string, sizeof(string),
+			"%5i %4i %4i %s", score->score, score->ping, score->time, ci->name);
 	}
 
 	// highlight your position
@@ -195,10 +187,8 @@ static void CG_DrawClientScore( int y, s
 
 		localClient = qtrue;
 
-		if ( ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_SPECTATOR ) ||
-			( ( cgs.gametype >= GT_TEAM ) &&
-			( cgs.ffa_gt != 1 ) ) ) {
-			// Sago: I think this means that it doesn't matter if to players are tied in team game - only team score counts
+		if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_SPECTATOR 
+			|| cgs.gametype >= GT_TEAM ) {
 			rank = -1;
 		} else {
 			rank = cg.snap->ps.persistant[PERS_RANK] & ~RANK_TIED_FLAG;
@@ -325,7 +315,7 @@ qboolean CG_DrawOldScoreboard( void ) {
 	}
 
 	// current rank
-	if ( cgs.gametype < GT_TEAM || cgs.ffa_gt == 1) {
+	if ( cgs.gametype < GT_TEAM) {
 		if (cg.snap->ps.persistant[PERS_TEAM] != TEAM_SPECTATOR ) {
 			s = va("%s place with %i",
 				CG_PlaceString( cg.snap->ps.persistant[PERS_RANK] + 1 ),
@@ -375,7 +365,7 @@ qboolean CG_DrawOldScoreboard( void ) {
 
 	localClient = qfalse;
 
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		//
 		// teamplay scoreboard
 		//
@@ -506,7 +496,7 @@ void CG_DrawOldTourneyScoreboard( void )
 	// print the two scores
 
 	y = 160;
-	if ( cgs.gametype >= GT_TEAM && cgs.ffa_gt!=1) {
+	if ( cgs.gametype >= GT_TEAM ) {
 		//
 		// teamplay scoreboard
 		//
Only in ioquake3svn1438/code/cgame: cg_scoreboard.orig.c
diff -upr ioquake3svn1438/code/cgame/cg_servercmds.c ioquake3serverFix/code/cgame/cg_servercmds.c
--- ioquake3svn1438/code/cgame/cg_servercmds.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_servercmds.c	2008-08-09 11:28:23.000000000 -0500
@@ -25,7 +25,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 // be a valid snapshot this frame
 
 #include "cg_local.h"
-#include "../../ui/menudef.h" // bk001205 - for Q3_ui as well
+#include "../../ui/menudef.h"
 
 typedef struct {
 	const char *order;
@@ -46,7 +46,7 @@ static const orderTask_t validOrders[] =
 
 static const int numValidOrders = sizeof(validOrders) / sizeof(orderTask_t);
 
-#ifdef MISSIONPACK // bk001204
+#ifdef MISSIONPACK
 static int CG_ValidOrder(const char *p) {
 	int i;
 	for (i = 0; i < numValidOrders; i++) {
@@ -75,45 +75,29 @@ static void CG_ParseScores( void ) {
 	cg.teamScores[0] = atoi( CG_Argv( 2 ) );
 	cg.teamScores[1] = atoi( CG_Argv( 3 ) );
 
-	cgs.roundStartTime = atoi( CG_Argv( 4 ) );
-
-	//Update thing in lower-right corner
-	if(cgs.gametype == GT_ELIMINATION || cgs.gametype == GT_CTF_ELIMINATION)
-	{
-		cgs.scores1 = cg.teamScores[0];
-		cgs.scores2 = cg.teamScores[1];
-	}
-
 	memset( cg.scores, 0, sizeof( cg.scores ) );
-
-#define NUM_DATA 15
-#define FIRST_DATA 4
-
 	for ( i = 0 ; i < cg.numScores ; i++ ) {
 		//
-		cg.scores[i].client = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 1 ) );
-		cg.scores[i].score = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 2 ) );
-		cg.scores[i].ping = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 3 ) );
-		cg.scores[i].time = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 4 ) );
-		cg.scores[i].scoreFlags = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 5 ) );
-		powerups = atoi( CG_Argv( i * NUM_DATA + FIRST_DATA + 6 ) );
-		cg.scores[i].accuracy = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 7));
-		cg.scores[i].impressiveCount = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 8));
-		cg.scores[i].excellentCount = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 9));
-		cg.scores[i].guantletCount = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 10));
-		cg.scores[i].defendCount = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 11));
-		cg.scores[i].assistCount = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 12));
-		cg.scores[i].perfect = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 13));
-		cg.scores[i].captures = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 14));
-		cg.scores[i].isDead = atoi(CG_Argv(i * NUM_DATA + FIRST_DATA + 15));
-		//cgs.roundStartTime = 
+		cg.scores[i].client = atoi( CG_Argv( i * 14 + 4 ) );
+		cg.scores[i].score = atoi( CG_Argv( i * 14 + 5 ) );
+		cg.scores[i].ping = atoi( CG_Argv( i * 14 + 6 ) );
+		cg.scores[i].time = atoi( CG_Argv( i * 14 + 7 ) );
+		cg.scores[i].scoreFlags = atoi( CG_Argv( i * 14 + 8 ) );
+		powerups = atoi( CG_Argv( i * 14 + 9 ) );
+		cg.scores[i].accuracy = atoi(CG_Argv(i * 14 + 10));
+		cg.scores[i].impressiveCount = atoi(CG_Argv(i * 14 + 11));
+		cg.scores[i].excellentCount = atoi(CG_Argv(i * 14 + 12));
+		cg.scores[i].guantletCount = atoi(CG_Argv(i * 14 + 13));
+		cg.scores[i].defendCount = atoi(CG_Argv(i * 14 + 14));
+		cg.scores[i].assistCount = atoi(CG_Argv(i * 14 + 15));
+		cg.scores[i].perfect = atoi(CG_Argv(i * 14 + 16));
+		cg.scores[i].captures = atoi(CG_Argv(i * 14 + 17));
 
 		if ( cg.scores[i].client < 0 || cg.scores[i].client >= MAX_CLIENTS ) {
 			cg.scores[i].client = 0;
 		}
 		cgs.clientinfo[ cg.scores[i].client ].score = cg.scores[i].score;
 		cgs.clientinfo[ cg.scores[i].client ].powerups = powerups;
-		cgs.clientinfo[ cg.scores[i].client ].isDead = cg.scores[i].isDead;
 
 		cg.scores[i].team = cgs.clientinfo[cg.scores[i].client].team;
 	}
@@ -125,85 +109,6 @@ static void CG_ParseScores( void ) {
 
 /*
 =================
-CG_ParseElimination
-
-=================
-*/
-static void CG_ParseElimination( void ) {
-	if(cgs.gametype == GT_ELIMINATION || cgs.gametype == GT_CTF_ELIMINATION)
-	{
-		cgs.scores1 = atoi( CG_Argv( 1 ) );
-		cgs.scores2 = atoi( CG_Argv( 2 ) );
-	}
-	cgs.roundStartTime = atoi( CG_Argv( 3 ) );
-}
-
-/*
-=================
-CG_ParseDDtimetaken
-
-=================
-*/
-static void CG_ParseDDtimetaken( void ) {
-	cgs.timetaken = atoi( CG_Argv( 1 ) );
-}
-
-/*
-=================
-CG_ParseDomPointNames
-=================
-*/
-
-static void CG_ParseDomPointNames( void ) {
-	int i,j;
-	cgs.domination_points_count = atoi( CG_Argv( 1 ) );
-	if(cgs.domination_points_count>=MAX_DOMINATION_POINTS)
-		cgs.domination_points_count = MAX_DOMINATION_POINTS;
-	for(i = 0;i<cgs.domination_points_count;i++) {
-		Q_strncpyz(cgs.domination_points_names[i],CG_Argv(2)+i*MAX_DOMINATION_POINTS_NAMES,MAX_DOMINATION_POINTS_NAMES-1);
-		for(j=MAX_DOMINATION_POINTS_NAMES-1; cgs.domination_points_names[i][j] < '0' && j>0; j--) {
-			cgs.domination_points_names[i][j] = 0;
-		}
-	}
-}
-
-/*
-=================
-CG_ParseDomScores
-=================
-*/
-
-static void CG_ParseDomStatus( void ) {
-	int i;
-	if( cgs.domination_points_count!=atoi( CG_Argv(1) ) ) {
-		cgs.domination_points_count = 0;
-		return;
-	}
-	for(i = 0;i<cgs.domination_points_count;i++) {
-		cgs.domination_points_status[i] = atoi( CG_Argv(2+i) );
-	}
-}
-
-
-/*
-=================
-CG_ParseAttackingTeam
-
-=================
-*/
-static void CG_ParseAttackingTeam( void ) {
-	int temp;
-	temp = atoi( CG_Argv( 1 ) );
-	if(temp==TEAM_RED)
-		cgs.attackingTeam = TEAM_RED;
-	else if (temp==TEAM_BLUE)
-		cgs.attackingTeam = TEAM_BLUE;
-	else
-		cgs.attackingTeam = TEAM_NONE; //Should never happen.
-}
-
-/*
-=================
 CG_ParseTeamInfo
 
 =================
@@ -242,11 +147,6 @@ void CG_ParseServerinfo( void ) {
 
 	info = CG_ConfigString( CS_SERVERINFO );
 	cgs.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
-	//By default do as normal:
-	cgs.ffa_gt = 0;
-	//See if ffa gametype
-	if(cgs.gametype == GT_LMS)	
-		cgs.ffa_gt = 1;
 	trap_Cvar_Set("g_gametype", va("%i", cgs.gametype));
 	cgs.dmflags = atoi( Info_ValueForKey( info, "dmflags" ) );
 	cgs.teamflags = atoi( Info_ValueForKey( info, "teamflags" ) );
@@ -254,23 +154,12 @@ void CG_ParseServerinfo( void ) {
 	cgs.capturelimit = atoi( Info_ValueForKey( info, "capturelimit" ) );
 	cgs.timelimit = atoi( Info_ValueForKey( info, "timelimit" ) );
 	cgs.maxclients = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
-	cgs.roundtime = atoi( Info_ValueForKey( info, "elimination_roundtime" ) );
-	cgs.instantgib = atoi( Info_ValueForKey( info, "g_instantgib" ) );
-	cgs.rockets = atoi( Info_ValueForKey( info, "g_rockets" ) );
-	cgs.lms_mode = atoi( Info_ValueForKey( info, "g_lms_mode" ) );
-	cgs.oneway = atoi( Info_ValueForKey( info, "elimination_ctf_oneway" ) )? qtrue : qfalse;
 	mapname = Info_ValueForKey( info, "mapname" );
 	Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname );
 	Q_strncpyz( cgs.redTeam, Info_ValueForKey( info, "g_redTeam" ), sizeof(cgs.redTeam) );
 	trap_Cvar_Set("g_redTeam", cgs.redTeam);
 	Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) );
 	trap_Cvar_Set("g_blueTeam", cgs.blueTeam);
-
-//unlagged - server options
-	// we'll need this for deciding whether or not to predict weapon effects
-	cgs.delagHitscan = atoi( Info_ValueForKey( info, "g_delagHitscan" ) );
-	trap_Cvar_Set("g_delagHitscan", va("%i", cgs.delagHitscan));
-//unlagged - server options
 }
 
 /*
@@ -316,7 +205,7 @@ void CG_SetConfigValues( void ) {
 	cgs.scores1 = atoi( CG_ConfigString( CS_SCORES1 ) );
 	cgs.scores2 = atoi( CG_ConfigString( CS_SCORES2 ) );
 	cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) );
-	if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_DOUBLE_D) {
+	if( cgs.gametype == GT_CTF ) {
 		s = CG_ConfigString( CS_FLAGSTATUS );
 		cgs.redflag = s[0] - '0';
 		cgs.blueflag = s[1] - '0';
@@ -442,7 +331,7 @@ static void CG_ConfigStringModified( voi
 		CG_NewClientInfo( num - CS_PLAYERS );
 		CG_BuildSpectatorString();
 	} else if ( num == CS_FLAGSTATUS ) {
-		if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTF_ELIMINATION || cgs.gametype == GT_DOUBLE_D) {
+		if( cgs.gametype == GT_CTF ) {
 			// format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped
 			cgs.redflag = str[0] - '0';
 			cgs.blueflag = str[1] - '0';
@@ -1159,31 +1048,6 @@ static void CG_ServerCommand( void ) {
 		return;
 	}
 
-	if ( !strcmp( cmd, "ddtaken" ) ) {
-		CG_ParseDDtimetaken();
-		return;
-	}
-
-	if ( !strcmp( cmd, "dompointnames" ) ) {
-		CG_ParseDomPointNames();
-		return;
-	}
-
-	if ( !strcmp( cmd, "domStatus" ) ) {
-		CG_ParseDomStatus();
-		return;
-	}
-
-	if ( !strcmp( cmd, "elimination" ) ) {
-		CG_ParseElimination();
-		return;
-	}
-
-	if ( !strcmp( cmd, "attackingteam" ) ) {
-		CG_ParseAttackingTeam();
-		return;
-	}
-
 	if ( !strcmp( cmd, "tinfo" ) ) {
 		CG_ParseTeamInfo();
 		return;
Only in ioquake3svn1438/code/cgame: cg_servercmds.orig.c
diff -upr ioquake3svn1438/code/cgame/cg_snapshot.c ioquake3serverFix/code/cgame/cg_snapshot.c
--- ioquake3svn1438/code/cgame/cg_snapshot.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_snapshot.c	2008-08-09 11:28:23.000000000 -0500
@@ -55,9 +55,7 @@ CG_TransitionEntity
 cent->nextState is moved to cent->currentState and events are fired
 ===============
 */
-//unlagged - early transitioning
-// used to be static, now needed to transition entities from within cg_ents.c
-void CG_TransitionEntity( centity_t *cent ) {
+static void CG_TransitionEntity( centity_t *cent ) {
 	cent->currentState = cent->nextState;
 	cent->currentValid = qtrue;
 
Only in ioquake3svn1438/code/cgame: cg_unlagged.c
diff -upr ioquake3svn1438/code/cgame/cg_view.c ioquake3serverFix/code/cgame/cg_view.c
--- ioquake3svn1438/code/cgame/cg_view.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_view.c	2008-08-09 11:28:23.000000000 -0500
@@ -234,8 +234,7 @@ static void CG_OffsetThirdPersonView( vo
 	VectorCopy( cg.refdefViewAngles, focusAngles );
 
 	// if dead, look at killer
-	if ( (cg.predictedPlayerState.stats[STAT_HEALTH] <= 0) && 
-				(cgs.gametype !=GT_ELIMINATION && cgs.gametype !=GT_CTF_ELIMINATION && cgs.gametype !=GT_LMS) ) {
+	if ( cg.predictedPlayerState.stats[STAT_HEALTH] <= 0 ) {
 		focusAngles[YAW] = cg.predictedPlayerState.stats[STAT_DEAD_YAW];
 		cg.refdefViewAngles[YAW] = cg.predictedPlayerState.stats[STAT_DEAD_YAW];
 	}
@@ -340,7 +339,7 @@ static void CG_OffsetFirstPersonView( vo
 	VectorAdd (angles, cg.kick_angles, angles);
 
 	// add angles based on damage kick
-	if ( cg.damageTime && cgs.gametype!=GT_ELIMINATION && cgs.gametype!=GT_CTF_ELIMINATION && cgs.gametype!=GT_LMS) {
+	if ( cg.damageTime ) {
 		ratio = cg.time - cg.damageTime;
 		if ( ratio < DAMAGE_DEFLECT_TIME ) {
 			ratio /= DAMAGE_DEFLECT_TIME;
diff -upr ioquake3svn1438/code/cgame/cg_weapons.c ioquake3serverFix/code/cgame/cg_weapons.c
--- ioquake3svn1438/code/cgame/cg_weapons.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/cgame/cg_weapons.c	2008-08-09 11:28:23.000000000 -0500
@@ -173,7 +173,7 @@ static void CG_ShotgunEjectBrass( centit
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==========================
 CG_NailgunEjectBrass
@@ -204,7 +204,7 @@ static void CG_NailgunEjectBrass( centit
 	// use the optimized local entity add
 	smoke->leType = LE_SCALE_FADE;
 }
-//#endif
+#endif
 
 
 /*
@@ -384,7 +384,7 @@ static void CG_RocketTrail( centity_t *e
 
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==========================
 CG_NailTrail
@@ -451,7 +451,7 @@ static void CG_NailTrail( centity_t *ent
 	}
 
 }
-//#endif
+#endif
 
 /*
 ==========================
@@ -709,7 +709,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		weaponInfo->firingSound = trap_S_RegisterSound( "sound/weapons/melee/fstrun.wav", qfalse );
 		break;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_CHAINGUN:
 		weaponInfo->firingSound = trap_S_RegisterSound( "sound/weapons/vulcan/wvulfire.wav", qfalse );
 		weaponInfo->loopFireSound = qtrue;
@@ -721,7 +721,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
 		cgs.media.bulletExplosionShader = trap_R_RegisterShader( "bulletExplosion" );
 		break;
-//#endif
+#endif
 
 	case WP_MACHINEGUN:
 		MAKERGB( weaponInfo->flashDlightColor, 1, 1, 0 );
@@ -754,7 +754,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		cgs.media.rocketExplosionShader = trap_R_RegisterShader( "rocketExplosion" );
 		break;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_PROX_LAUNCHER:
 		weaponInfo->missileModel = trap_R_RegisterModel( "models/weaphits/proxmine.md3" );
 		weaponInfo->missileTrailFunc = CG_GrenadeTrail;
@@ -764,7 +764,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		weaponInfo->flashSound[0] = trap_S_RegisterSound( "sound/weapons/proxmine/wstbfire.wav", qfalse );
 		cgs.media.grenadeExplosionShader = trap_R_RegisterShader( "grenadeExplosion" );
 		break;
-//#endif
+#endif
 
 	case WP_GRENADE_LAUNCHER:
 		weaponInfo->missileModel = trap_R_RegisterModel( "models/ammo/grenade1.md3" );
@@ -776,7 +776,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		cgs.media.grenadeExplosionShader = trap_R_RegisterShader( "grenadeExplosion" );
 		break;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_NAILGUN:
 		weaponInfo->ejectBrassFunc = CG_NailgunEjectBrass;
 		weaponInfo->missileTrailFunc = CG_NailTrail;
@@ -787,7 +787,7 @@ void CG_RegisterWeapon( int weaponNum ) 
 		MAKERGB( weaponInfo->flashDlightColor, 1, 0.75f, 0 );
 		weaponInfo->flashSound[0] = trap_S_RegisterSound( "sound/weapons/nailgun/wnalfire.wav", qfalse );
 		break;
-//#endif
+#endif
 
 	case WP_PLASMAGUN:
 //		weaponInfo->missileModel = cgs.media.invulnerabilityPowerupModel;
@@ -983,28 +983,11 @@ static void CG_LightningBolt( centity_t 
 
 	memset( &beam, 0, sizeof( beam ) );
 
-//unlagged - attack prediction #1
-	// if the entity is us, unlagged is on server-side, and we've got it on for the lightning gun
-	if ( (cent->currentState.number == cg.predictedPlayerState.clientNum) && cgs.delagHitscan &&
-			( cg_delag.integer & 1 || cg_delag.integer & 8 ) ) {
-		// always shoot straight forward from our current position
-		AngleVectors( cg.predictedPlayerState.viewangles, forward, NULL, NULL );
-		VectorCopy( cg.predictedPlayerState.origin, muzzlePoint );
-	}
-	else
-//unlagged - attack prediction #1
-
 	// CPMA  "true" lightning
 	if ((cent->currentState.number == cg.predictedPlayerState.clientNum) && (cg_trueLightning.value != 0)) {
 		vec3_t angle;
 		int i;
 
-//unlagged - true lightning
-		// might as well fix up true lightning while we're at it
-		vec3_t viewangles;
-		VectorCopy( cg.predictedPlayerState.viewangles, viewangles );
-//unlagged - true lightning
-
 		for (i = 0; i < 3; i++) {
 			float a = cent->lerpAngles[i] - cg.refdefViewAngles[i];
 			if (a > 180) {
@@ -1024,12 +1007,8 @@ static void CG_LightningBolt( centity_t 
 		}
 
 		AngleVectors(angle, forward, NULL, NULL );
-//unlagged - true lightning
-//		VectorCopy(cent->lerpOrigin, muzzlePoint );
+		VectorCopy(cent->lerpOrigin, muzzlePoint );
 //		VectorCopy(cg.refdef.vieworg, muzzlePoint );
-		// *this* is the correct origin for true lightning
-		VectorCopy(cg.predictedPlayerState.origin, muzzlePoint );
-//unlagged - true lightning
 	} else {
 		// !CPMA
 		AngleVectors( cent->lerpAngles, forward, NULL, NULL );
@@ -1195,11 +1174,11 @@ static float	CG_MachinegunSpinAngle( cen
 		cent->pe.barrelTime = cg.time;
 		cent->pe.barrelAngle = AngleMod( angle );
 		cent->pe.barrelSpinning = !!(cent->currentState.eFlags & EF_FIRING);
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		if ( cent->currentState.weapon == WP_CHAINGUN && !cent->pe.barrelSpinning ) {
 			trap_S_StartSound( NULL, cent->currentState.number, CHAN_WEAPON, trap_S_RegisterSound( "sound/weapons/vulcan/wvulwind.wav", qfalse ) );
 		}
-//#endif
+#endif
 	}
 
 	return angle;
@@ -1492,7 +1471,6 @@ void CG_DrawWeaponSelect( void ) {
 	int		x, y, w;
 	char	*name;
 	float	*color;
-	vec4_t	realColor; 
 
 	// don't display if dead
 	if ( cg.predictedPlayerState.stats[STAT_HEALTH] <= 0 ) {
@@ -1500,16 +1478,6 @@ void CG_DrawWeaponSelect( void ) {
 	}
 
 	color = CG_FadeColor( cg.weaponSelectTime, WEAPON_SELECT_TIME );
-
-	//Elimination: Always show weapon bar
-	if(cg_alwaysWeaponBar.integer) {
-		realColor[0] = 1.0;
-		realColor[1] = 1.0;
-		realColor[2] = 1.0;
-		realColor[3] = 1.0;
-		color = realColor;
-	}
-
 	if ( !color ) {
 		return;
 	}
@@ -1727,9 +1695,6 @@ void CG_FireWeapon( centity_t *cent ) {
 	int				c;
 	weaponInfo_t	*weap;
 
-	if((cgs.gametype == GT_ELIMINATION || cgs.gametype == GT_CTF_ELIMINATION) && cgs.roundStartTime>=cg.time)
-		return; //if we havn't started in ELIMINATION then do not fire
-
 	ent = &cent->currentState;
 	if ( ent->weapon == WP_NONE ) {
 		return;
@@ -1774,10 +1739,6 @@ void CG_FireWeapon( centity_t *cent ) {
 	if ( weap->ejectBrassFunc && cg_brassTime.integer > 0 ) {
 		weap->ejectBrassFunc( cent );
 	}
-
-//unlagged - attack prediction #1
-	CG_PredictWeaponEffects( cent );
-//unlagged - attack prediction #1
 }
 
 
@@ -1820,7 +1781,7 @@ void CG_MissileHitWall( int weapon, int 
 
 	switch ( weapon ) {
 	default:
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_NAILGUN:
 		if( soundType == IMPACTSOUND_FLESH ) {
 			sfx = cgs.media.sfx_nghitflesh;
@@ -1832,7 +1793,7 @@ void CG_MissileHitWall( int weapon, int 
 		mark = cgs.media.holeMarkShader;
 		radius = 12;
 		break;
-//#endif
+#endif
 	case WP_LIGHTNING:
 		// no explosion at LG impact, it is added with the beam
 		r = rand() & 3;
@@ -1846,7 +1807,7 @@ void CG_MissileHitWall( int weapon, int 
 		mark = cgs.media.holeMarkShader;
 		radius = 12;
 		break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_PROX_LAUNCHER:
 		mod = cgs.media.dishFlashModel;
 		shader = cgs.media.grenadeExplosionShader;
@@ -1856,7 +1817,7 @@ void CG_MissileHitWall( int weapon, int 
 		light = 300;
 		isSprite = qtrue;
 		break;
-//#endif
+#endif
 	case WP_GRENADE_LAUNCHER:
 		mod = cgs.media.dishFlashModel;
 		shader = cgs.media.grenadeExplosionShader;
@@ -1916,7 +1877,7 @@ void CG_MissileHitWall( int weapon, int 
 		radius = 4;
 		break;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_CHAINGUN:
 		mod = cgs.media.bulletFlashModel;
 		if( soundType == IMPACTSOUND_FLESH ) {
@@ -1939,7 +1900,7 @@ void CG_MissileHitWall( int weapon, int 
 
 		radius = 8;
 		break;
-//#endif
+#endif
 
 	case WP_MACHINEGUN:
 		mod = cgs.media.bulletFlashModel;
@@ -2007,11 +1968,11 @@ void CG_MissileHitPlayer( int weapon, ve
 	switch ( weapon ) {
 	case WP_GRENADE_LAUNCHER:
 	case WP_ROCKET_LAUNCHER:
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_NAILGUN:
 	case WP_CHAINGUN:
 	case WP_PROX_LAUNCHER:
-//#endif
+#endif
 		CG_MissileHitWall( weapon, 0, origin, dir, IMPACTSOUND_FLESH );
 		break;
 	default:
@@ -2087,9 +2048,7 @@ Perform the same traces the server did t
 hit splashes
 ================
 */
-//unlagged - attack prediction
-// made this non-static for access from cg_unlagged.c
-void CG_ShotgunPattern( vec3_t origin, vec3_t origin2, int seed, int otherEntNum ) {
+static void CG_ShotgunPattern( vec3_t origin, vec3_t origin2, int seed, int otherEntNum ) {
 	int			i;
 	float		r, u;
 	vec3_t		end;
diff -upr ioquake3svn1438/code/client/cl_main.c ioquake3serverFix/code/client/cl_main.c
--- ioquake3svn1438/code/client/cl_main.c	2008-08-05 14:57:04.000000000 -0500
+++ ioquake3serverFix/code/client/cl_main.c	2008-08-09 15:22:37.000000000 -0500
@@ -3240,6 +3240,7 @@ static void CL_SetServerInfo(serverInfo_
 			server->maxPing = atoi(Info_ValueForKey(info, "maxping"));
 			server->g_humanplayers = atoi(Info_ValueForKey(info, "g_humanplayers"));
 			server->g_needpass = atoi(Info_ValueForKey(info, "g_needpass"));
+			//server->punkbuster = atoi(Info_ValueForKey(info, "punkbuster"));
 		}
 		server->ping = ping;
 	}
@@ -3357,6 +3358,7 @@ void CL_ServerInfoPacket( netadr_t from,
 	cls.localServers[i].game[0] = '\0';
 	cls.localServers[i].gameType = 0;
 	cls.localServers[i].netType = from.type;
+	//cls.localServers[i].punkbuster = 0;
 									 
 	Q_strncpyz( info, MSG_ReadString( msg ), MAX_INFO_STRING );
 	if (strlen(info)) {
Only in ioquake3serverFix/code/client: cl_main.c.orig
diff -upr ioquake3svn1438/code/client/snd_openal.c ioquake3serverFix/code/client/snd_openal.c
--- ioquake3svn1438/code/client/snd_openal.c	2008-08-05 14:48:55.000000000 -0500
+++ ioquake3serverFix/code/client/snd_openal.c	2008-08-09 15:22:37.000000000 -0500
@@ -1969,7 +1969,7 @@ qboolean S_AL_Init( soundInterface_t *si
 
 	// New console variables
 	s_alPrecache = Cvar_Get( "s_alPrecache", "1", CVAR_ARCHIVE );
-	s_alGain = Cvar_Get( "s_alGain", "0.4", CVAR_ARCHIVE );
+	s_alGain = Cvar_Get( "s_alGain", "1.0", CVAR_ARCHIVE );
 	s_alSources = Cvar_Get( "s_alSources", "96", CVAR_ARCHIVE );
 	s_alDopplerFactor = Cvar_Get( "s_alDopplerFactor", "1.0", CVAR_ARCHIVE );
 	s_alDopplerSpeed = Cvar_Get( "s_alDopplerSpeed", "2200", CVAR_ARCHIVE );
diff -upr ioquake3svn1438/code/game/ai_chat.c ioquake3serverFix/code/game/ai_chat.c
--- ioquake3svn1438/code/game/ai_chat.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_chat.c	2008-08-09 11:28:21.000000000 -0500
@@ -53,7 +53,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #include "match.h"				//string matching types and vars
 
 // for the voice chats
-#ifdef MISSIONPACK // bk001205
+#ifdef MISSIONPACK
 #include "../../ui/menudef.h"
 #endif
 
@@ -293,11 +293,10 @@ char *BotWeaponNameForMeansOfDeath(int m
 		case MOD_LIGHTNING: return "Lightning Gun";
 		case MOD_BFG:
 		case MOD_BFG_SPLASH: return "BFG10K";
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case MOD_NAIL: return "Nailgun";
 		case MOD_CHAINGUN: return "Chaingun";
 		case MOD_PROXIMITY_MINE: return "Proximity Launcher";
-#ifdef MISSIONPACK
 		case MOD_KAMIKAZE: return "Kamikaze";
 		case MOD_JUICED: return "Prox mine";
 #endif
@@ -314,7 +313,7 @@ BotRandomWeaponName
 char *BotRandomWeaponName(void) {
 	int rnd;
 
-#if 1 //MISSIONPACK
+#ifdef MISSIONPACK
 	rnd = random() * 11.9;
 #else
 	rnd = random() * 8.9;
@@ -328,11 +327,11 @@ char *BotRandomWeaponName(void) {
 		case 5: return "Plasmagun";
 		case 6: return "Railgun";
 		case 7: return "Lightning Gun";
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case 8: return "Nailgun";
 		case 9: return "Chaingun";
 		case 10: return "Proximity Launcher";
-//#endif
+#endif
 		default: return "BFG10K";
 	}
 }
diff -upr ioquake3svn1438/code/game/ai_cmd.c ioquake3serverFix/code/game/ai_cmd.c
--- ioquake3svn1438/code/game/ai_cmd.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_cmd.c	2008-08-09 11:28:21.000000000 -0500
@@ -134,16 +134,6 @@ void BotPrintTeamGoal(bot_state_t *bs) {
 			BotAI_Print(PRT_MESSAGE, "%s: I'm gonna patrol for %1.0f secs\n", netname, t);
 			break;
 		}
-		case LTG_POINTA:
-		{
-			BotAI_Print(PRT_MESSAGE, "%s: I'm gonna take care of point A for %1.0f secs\n", netname, t);
-			break;
-		}
-		case LTG_POINTB:
-		{
-			BotAI_Print(PRT_MESSAGE, "%s: I'm gonna take care of point B for %1.0f secs\n", netname, t);
-			break;
-		}
 		default:
 		{
 			if (bs->ctfroam_time > FloatTime()) {
@@ -662,104 +652,6 @@ void BotMatch_DefendKeyArea(bot_state_t 
 
 /*
 ==================
-BotMatch_TakeA
-For Double Domination
-==================
-*/
-void BotMatch_TakeA(bot_state_t *bs, bot_match_t *match) {
-// 	char itemname[MAX_MESSAGE_SIZE];
-	char netname[MAX_MESSAGE_SIZE];
-	int client;
-
-	if (!TeamPlayIsOn()) return;
-	//if not addressed to this bot
-	if (!BotAddressedToBot(bs, match)) return;
-	//get the match variable
-	/*trap_BotMatchVariable(match, KEYAREA, itemname, sizeof(itemname));
-	//
-	if (!BotGetMessageTeamGoal(bs, itemname, &bs->teamgoal)) {
-		//BotAI_BotInitialChat(bs, "cannotfind", itemname, NULL);
-		//trap_BotEnterChat(bs->cs, bs->client, CHAT_TEAM);
-		return;
-	}*/
-	//
-	trap_BotMatchVariable(match, NETNAME, netname, sizeof(netname));
-	//
-	client = ClientFromName(netname);
-	//the team mate who ordered
-	bs->decisionmaker = client;
-	bs->ordered = qtrue;
-	bs->order_time = FloatTime();
-	//set the time to send a message to the team mates
-	bs->teammessage_time = FloatTime() + 2 * random();
-	//set the ltg type
-	bs->ltgtype = LTG_POINTA;
-	//get the team goal time
-	bs->teamgoal_time = BotGetTime(match);
-	//set the team goal time
-	if (!bs->teamgoal_time) bs->teamgoal_time = FloatTime() + DD_POINTA;
-	//away from defending
-	bs->defendaway_time = 0;
-	//
-	BotSetTeamStatus(bs);
-	// remember last ordered task
-	BotRememberLastOrderedTask(bs);
-#ifdef DEBUG
-	BotPrintTeamGoal(bs);
-#endif //DEBUG
-}
-
-/*
-==================
-BotMatch_TakeB
-For Double Domination
-==================
-*/
-void BotMatch_TakeB(bot_state_t *bs, bot_match_t *match) {
-// 	char itemname[MAX_MESSAGE_SIZE];
-	char netname[MAX_MESSAGE_SIZE];
-	int client;
-
-	if (!TeamPlayIsOn()) return;
-	//if not addressed to this bot
-	if (!BotAddressedToBot(bs, match)) return;
-	//get the match variable
-	/*trap_BotMatchVariable(match, KEYAREA, itemname, sizeof(itemname));
-	//
-	if (!BotGetMessageTeamGoal(bs, itemname, &bs->teamgoal)) {
-		//BotAI_BotInitialChat(bs, "cannotfind", itemname, NULL);
-		//trap_BotEnterChat(bs->cs, bs->client, CHAT_TEAM);
-		//return;
-	}*/
-	//
-	trap_BotMatchVariable(match, NETNAME, netname, sizeof(netname));
-	//
-	client = ClientFromName(netname);
-	//the team mate who ordered
-	bs->decisionmaker = client;
-	bs->ordered = qtrue;
-	bs->order_time = FloatTime();
-	//set the time to send a message to the team mates
-	bs->teammessage_time = FloatTime() + 2 * random();
-	//set the ltg type
-	bs->ltgtype = LTG_POINTB;
-	//get the team goal time
-	bs->teamgoal_time = BotGetTime(match);
-	//set the team goal time
-	if (!bs->teamgoal_time) bs->teamgoal_time = FloatTime() + DD_POINTA;
-	//away from defending
-	bs->defendaway_time = 0;
-	//
-	BotSetTeamStatus(bs);
-	// remember last ordered task
-	BotRememberLastOrderedTask(bs);
-#ifdef DEBUG
-	BotPrintTeamGoal(bs);
-#endif //DEBUG
-}
-
-/*
-==================
 BotMatch_GetItem
 ==================
 */
@@ -938,16 +830,16 @@ void BotMatch_GetFlag(bot_state_t *bs, b
 	char netname[MAX_MESSAGE_SIZE];
 	int client;
 
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (!ctf_redflag.areanum || !ctf_blueflag.areanum)
 			return;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (!ctf_neutralflag.areanum || !ctf_redflag.areanum || !ctf_blueflag.areanum)
 			return;
 	}
-//#endif
+#endif
 	else {
 		return;
 	}
@@ -968,7 +860,7 @@ void BotMatch_GetFlag(bot_state_t *bs, b
 	//set the team goal time
 	bs->teamgoal_time = FloatTime() + CTF_GETFLAG_TIME;
 	// get an alternate route in ctf
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//get an alternative route goal towards the enemy base
 		BotGetAlternateRouteGoal(bs, BotOppositeTeam(bs));
 	}
@@ -990,15 +882,15 @@ void BotMatch_AttackEnemyBase(bot_state_
 	char netname[MAX_MESSAGE_SIZE];
 	int client;
 
-	if (gametype == GT_CTF|| gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		BotMatch_GetFlag(bs, match);
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF || gametype == GT_OBELISK || gametype == GT_HARVESTER) {
 		if (!redobelisk.areanum || !blueobelisk.areanum)
 			return;
 	}
-//#endif
+#endif
 	else {
 		return;
 	}
@@ -1028,7 +920,7 @@ void BotMatch_AttackEnemyBase(bot_state_
 #endif //DEBUG
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==================
 BotMatch_Harvest
@@ -1070,7 +962,7 @@ void BotMatch_Harvest(bot_state_t *bs, b
 	BotPrintTeamGoal(bs);
 #endif //DEBUG
 }
-//#endif
+#endif
 
 /*
 ==================
@@ -1081,16 +973,16 @@ void BotMatch_RushBase(bot_state_t *bs, 
 	char netname[MAX_MESSAGE_SIZE];
 	int client;
 
-	if (gametype == GT_CTF|| gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (!ctf_redflag.areanum || !ctf_blueflag.areanum)
 			return;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF || gametype == GT_HARVESTER) {
 		if (!redobelisk.areanum || !blueobelisk.areanum)
 			return;
 	}
-//#endif
+#endif
 	else {
 		return;
 	}
@@ -1176,10 +1068,10 @@ void BotMatch_ReturnFlag(bot_state_t *bs
 
 	//if not in CTF mode
 	if (
-		gametype != GT_CTF && gametype != GT_CTF_ELIMINATION
-//#ifdef MISSIONPACK
+		gametype != GT_CTF
+#ifdef MISSIONPACK
 		&& gametype != GT_1FCTF
-//#endif
+#endif
 		)
 		return;
 	//if not addressed to this bot
@@ -1544,7 +1436,7 @@ void BotMatch_WhatAreYouDoing(bot_state_
 			BotAI_BotInitialChat(bs, "returningflag", NULL);
 			break;
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case LTG_ATTACKENEMYBASE:
 		{
 			BotAI_BotInitialChat(bs, "attackingenemybase", NULL);
@@ -1555,17 +1447,7 @@ void BotMatch_WhatAreYouDoing(bot_state_
 			BotAI_BotInitialChat(bs, "harvesting", NULL);
 			break;
 		}
-//#endif
-		case LTG_POINTA:
-		{
-			BotAI_BotInitialChat(bs, "dd_pointa", NULL);
-			break;
-		}
-		case LTG_POINTB:
-		{
-			BotAI_BotInitialChat(bs, "dd_pointb", NULL);
-			break;
-		}
+#endif
 		default:
 		{
 			BotAI_BotInitialChat(bs, "roaming", NULL);
@@ -1653,7 +1535,7 @@ void BotMatch_WhereAreYou(bot_state_t *b
 		"Heavy Armor",
 		"Red Flag",
 		"Blue Flag",
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		"Nailgun",
 		"Prox Launcher",
 		"Chaingun",
@@ -1665,7 +1547,7 @@ void BotMatch_WhereAreYou(bot_state_t *b
 		"Red Obelisk",
 		"Blue Obelisk",
 		"Neutral Obelisk",
-//#endif
+#endif
 		NULL
 	};
 	//
@@ -1685,10 +1567,10 @@ void BotMatch_WhereAreYou(bot_state_t *b
 		}
 	}
 	if (bestitem != -1) {
-		if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION
-//#ifdef MISSIONPACK
+		if (gametype == GT_CTF
+#ifdef MISSIONPACK
 			|| gametype == GT_1FCTF
-//#endif
+#endif
 			) {
 			redtt = trap_AAS_AreaTravelTimeToGoalArea(bs->areanum, bs->origin, ctf_redflag.areanum, TFL_DEFAULT);
 			bluett = trap_AAS_AreaTravelTimeToGoalArea(bs->areanum, bs->origin, ctf_blueflag.areanum, TFL_DEFAULT);
@@ -1702,7 +1584,7 @@ void BotMatch_WhereAreYou(bot_state_t *b
 				BotAI_BotInitialChat(bs, "location", nearbyitems[bestitem], NULL);
 			}
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		else if (gametype == GT_OBELISK || gametype == GT_HARVESTER) {
 			redtt = trap_AAS_AreaTravelTimeToGoalArea(bs->areanum, bs->origin, redobelisk.areanum, TFL_DEFAULT);
 			bluett = trap_AAS_AreaTravelTimeToGoalArea(bs->areanum, bs->origin, blueobelisk.areanum, TFL_DEFAULT);
@@ -1716,7 +1598,7 @@ void BotMatch_WhereAreYou(bot_state_t *b
 				BotAI_BotInitialChat(bs, "location", nearbyitems[bestitem], NULL);
 			}
 		}
-//#endif
+#endif
 		else {
 			BotAI_BotInitialChat(bs, "location", nearbyitems[bestitem], NULL);
 		}
@@ -1842,7 +1724,7 @@ void BotMatch_CTF(bot_state_t *bs, bot_m
 
 	char flag[128], netname[MAX_NETNAME];
 
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		trap_BotMatchVariable(match, FLAG, flag, sizeof(flag));
 		if (match->subtype & ST_GOTFLAG) {
 			if (!Q_stricmp(flag, "red")) {
@@ -1874,14 +1756,14 @@ void BotMatch_CTF(bot_state_t *bs, bot_m
 			bs->flagstatuschanged = 1;
 		}
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (match->subtype & ST_1FCTFGOTFLAG) {
 			trap_BotMatchVariable(match, NETNAME, netname, sizeof(netname));
 			bs->flagcarrier = ClientFromName(netname);
 		}
 	}
-//#endif
+#endif
 }
 
 void BotMatch_EnterGame(bot_state_t *bs, bot_match_t *match) {
@@ -1920,9 +1802,8 @@ int BotMatchMessage(bot_state_t *bs, cha
 	match.type = 0;
 	//if it is an unknown message
 	if (!trap_BotFindMatch(message, &match, MTCONTEXT_MISC
-	|MTCONTEXT_INITIALTEAMCHAT
-	|MTCONTEXT_CTF
-	|MTCONTEXT_DD)) {
+											|MTCONTEXT_INITIALTEAMCHAT
+											|MTCONTEXT_CTF)) {
 		return qfalse;
 	}
 	//react to the found message
@@ -1955,7 +1836,7 @@ int BotMatchMessage(bot_state_t *bs, cha
 			BotMatch_GetFlag(bs, &match);
 			break;
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		//CTF & 1FCTF & Obelisk & Harvester
 		case MSG_ATTACKENEMYBASE:
 		{
@@ -1968,7 +1849,7 @@ int BotMatchMessage(bot_state_t *bs, cha
 			BotMatch_Harvest(bs, &match);
 			break;
 		}
-//#endif
+#endif
 		//CTF & 1FCTF & Harvester
 		case MSG_RUSHBASE:				//ctf rush to the base
 		{
@@ -2101,16 +1982,6 @@ int BotMatchMessage(bot_state_t *bs, cha
 			BotMatch_Suicide(bs, &match);
 			break;
 		}
-		case MSG_TAKEA:
-		{
-			BotMatch_TakeA(bs, &match);
-			break;
-		}
-		case MSG_TAKEB:
-		{
-			BotMatch_TakeB(bs, &match);
-			break;
-		}
 		default:
 		{
 			BotAI_Print(PRT_MESSAGE, "unknown match type\n");
diff -upr ioquake3svn1438/code/game/ai_dmnet.c ioquake3serverFix/code/game/ai_dmnet.c
--- ioquake3svn1438/code/game/ai_dmnet.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_dmnet.c	2008-08-09 11:28:21.000000000 -0500
@@ -525,59 +525,6 @@ int BotGetLongTermGoal(bot_state_t *bs, 
 			bs->defendaway_time = 0;
 		}
 	}
-	//For double domination
-	if (bs->ltgtype == LTG_POINTA &&
-				bs->defendaway_time < FloatTime()) {
-		//check for bot typing status message
-		if (bs->teammessage_time && bs->teammessage_time < FloatTime()) {
-			trap_BotGoalName(bs->teamgoal.number, buf, sizeof(buf));
-			BotAI_BotInitialChat(bs, "dd_start_pointa", buf, NULL);
-			trap_BotEnterChat(bs->cs, 0, CHAT_TEAM);
-			//BotVoiceChatOnly(bs, -1, VOICECHAT_ONDEFENSE);
-			bs->teammessage_time = 0;
-		}
-		//set the bot goal
-		memcpy(goal, &ctf_redflag, sizeof(bot_goal_t));
-		//if very close... go away for some time
-		VectorSubtract(goal->origin, bs->origin, dir);
-		if (VectorLengthSquared(dir) < Square(70)) {
-			trap_BotResetAvoidReach(bs->ms);
-			bs->defendaway_time = FloatTime() + 3 + 3 * random();
-			if (BotHasPersistantPowerupAndWeapon(bs)) {
-				bs->defendaway_range = 100;
-			}
-			else {
-				bs->defendaway_range = 350;
-			}
-		}
-		return qtrue;
-	}
-	if (bs->ltgtype == LTG_POINTB &&
-				bs->defendaway_time < FloatTime()) {
-		//check for bot typing status message
-		if (bs->teammessage_time && bs->teammessage_time < FloatTime()) {
-			trap_BotGoalName(bs->teamgoal.number, buf, sizeof(buf));
-			BotAI_BotInitialChat(bs, "dd_start_pointb", buf, NULL);
-			trap_BotEnterChat(bs->cs, 0, CHAT_TEAM);
-			//BotVoiceChatOnly(bs, -1, VOICECHAT_ONDEFENSE);
-			bs->teammessage_time = 0;
-		}
-		//set the bot goal
-		memcpy(goal, &ctf_blueflag, sizeof(bot_goal_t));
-		//if very close... go away for some time
-		VectorSubtract(goal->origin, bs->origin, dir);
-		if (VectorLengthSquared(dir) < Square(70)) {
-			trap_BotResetAvoidReach(bs->ms);
-			bs->defendaway_time = FloatTime() + 3 + 3 * random();
-			if (BotHasPersistantPowerupAndWeapon(bs)) {
-				bs->defendaway_range = 100;
-			}
-			else {
-				bs->defendaway_range = 350;
-			}
-		}
-		return qtrue;
-	}
 	//if defending a key area
 	if (bs->ltgtype == LTG_DEFENDKEYAREA && !retreat &&
 				bs->defendaway_time < FloatTime()) {
@@ -801,7 +748,7 @@ int BotGetLongTermGoal(bot_state_t *bs, 
 		return qtrue;
 	}
 #ifdef CTF
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//if going for enemy flag
 		if (bs->ltgtype == LTG_GETFLAG) {
 			//check for bot typing status message
@@ -886,7 +833,7 @@ int BotGetLongTermGoal(bot_state_t *bs, 
 		}
 	}
 #endif //CTF
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (bs->ltgtype == LTG_GETFLAG) {
 			//check for bot typing status message
@@ -1082,7 +1029,7 @@ int BotGetLongTermGoal(bot_state_t *bs, 
 			return qtrue;
 		}
 	}
-//#endif
+#endif
 	//normal goal stuff
 	return BotGetItemLongTermGoal(bs, tfl, goal);
 }
@@ -1353,12 +1300,12 @@ int BotSelectActivateWeapon(bot_state_t 
 		return WEAPONINDEX_PLASMAGUN;
 	else if (bs->inventory[INVENTORY_LIGHTNING] > 0 && bs->inventory[INVENTORY_LIGHTNINGAMMO] > 0)
 		return WEAPONINDEX_LIGHTNING;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (bs->inventory[INVENTORY_CHAINGUN] > 0 && bs->inventory[INVENTORY_BELT] > 0)
 		return WEAPONINDEX_CHAINGUN;
 	else if (bs->inventory[INVENTORY_NAILGUN] > 0 && bs->inventory[INVENTORY_NAILS] > 0)
 		return WEAPONINDEX_NAILGUN;
-//#endif
+#endif
 	else if (bs->inventory[INVENTORY_RAILGUN] > 0 && bs->inventory[INVENTORY_SLUGS] > 0)
 		return WEAPONINDEX_RAILGUN;
 	else if (bs->inventory[INVENTORY_ROCKETLAUNCHER] > 0 && bs->inventory[INVENTORY_ROCKETS] > 0)
@@ -1925,13 +1872,13 @@ int AINode_Seek_LTG(bot_state_t *bs)
 		else range = 150;
 		//
 #ifdef CTF
-		if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+		if (gametype == GT_CTF) {
 			//if carrying a flag the bot shouldn't be distracted too much
 			if (BotCTFCarryingFlag(bs))
 				range = 50;
 		}
 #endif //CTF
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		else if (gametype == GT_1FCTF) {
 			if (Bot1FCTFCarryingFlag(bs))
 				range = 50;
@@ -1940,7 +1887,7 @@ int AINode_Seek_LTG(bot_state_t *bs)
 			if (BotHarvesterCarryingCubes(bs))
 				range = 80;
 		}
-//#endif
+#endif
 		//
 		if (BotNearbyGoal(bs, bs->tfl, &goal, range)) {
 			trap_BotResetLastAvoidReach(bs->ms);
@@ -2444,7 +2391,7 @@ int AINode_Battle_Retreat(bot_state_t *b
 		bs->check_time = FloatTime() + 1;
 		range = 150;
 #ifdef CTF
-		if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+		if (gametype == GT_CTF) {
 			//if carrying a flag the bot shouldn't be distracted too much
 			if (BotCTFCarryingFlag(bs))
 				range = 50;
diff -upr ioquake3svn1438/code/game/ai_dmq3.c ioquake3serverFix/code/game/ai_dmq3.c
--- ioquake3svn1438/code/game/ai_dmq3.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_dmq3.c	2008-08-09 11:28:21.000000000 -0500
@@ -92,14 +92,12 @@ int max_bspmodelindex;			//maximum BSP m
 //CTF flag goals
 bot_goal_t ctf_redflag;
 bot_goal_t ctf_blueflag;
-//Domination goals:
-bot_goal_t dom_points_bot[MAX_DOMINATION_POINTS];
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 bot_goal_t ctf_neutralflag;
 bot_goal_t redobelisk;
 bot_goal_t blueobelisk;
 bot_goal_t neutralobelisk;
-//#endif
+#endif
 
 #define MAX_ALTROUTEGOALS		32
 
@@ -130,7 +128,7 @@ BotCTFCarryingFlag
 ==================
 */
 int BotCTFCarryingFlag(bot_state_t *bs) {
-	if (gametype != GT_CTF && gametype!=GT_CTF_ELIMINATION) return CTF_FLAG_NONE;
+	if (gametype != GT_CTF) return CTF_FLAG_NONE;
 
 	if (bs->inventory[INVENTORY_REDFLAG] > 0) return CTF_FLAG_RED;
 	else if (bs->inventory[INVENTORY_BLUEFLAG] > 0) return CTF_FLAG_BLUE;
@@ -283,7 +281,7 @@ qboolean EntityHasQuad(aas_entityinfo_t 
 	return qfalse;
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==================
 EntityHasKamikze
@@ -337,7 +335,7 @@ int BotHarvesterCarryingCubes(bot_state_
 	if (bs->inventory[INVENTORY_BLUECUBE] > 0) return qtrue;
 	return qfalse;
 }
-//#endif
+#endif
 
 /*
 ==================
@@ -360,7 +358,7 @@ BotSetTeamStatus
 ==================
 */
 void BotSetTeamStatus(bot_state_t *bs) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	int teamtask;
 	aas_entityinfo_t entinfo;
 
@@ -371,7 +369,7 @@ void BotSetTeamStatus(bot_state_t *bs) {
 			break;
 		case LTG_TEAMACCOMPANY:
 			BotEntityInfo(bs->teammate, &entinfo);
-			if ( ( (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION || gametype == GT_1FCTF) && EntityCarriesFlag(&entinfo))
+			if ( ( (gametype == GT_CTF || gametype == GT_1FCTF) && EntityCarriesFlag(&entinfo))
 				|| ( gametype == GT_HARVESTER && EntityCarriesCubes(&entinfo)) ) {
 				teamtask = TEAMTASK_ESCORT;
 			}
@@ -410,22 +408,12 @@ void BotSetTeamStatus(bot_state_t *bs) {
 		case LTG_ATTACKENEMYBASE:
 			teamtask = TEAMTASK_OFFENSE;
 			break;
-		case LTG_POINTA:
-			if(BotTeam(bs) == TEAM_BLUE)
-				teamtask = TEAMTASK_OFFENSE;
-			else
-				teamtask = TEAMTASK_DEFENSE;
-		case LTG_POINTB:
-			if(BotTeam(bs) == TEAM_RED)
-				teamtask = TEAMTASK_OFFENSE;
-			else
-				teamtask = TEAMTASK_DEFENSE;
 		default:
 			teamtask = TEAMTASK_PATROL;
 			break;
 	}
 	BotSetUserInfo(bs, "teamtask", va("%d", teamtask));
-//#endif
+#endif
 }
 
 /*
@@ -435,7 +423,7 @@ BotSetLastOrderedTask
 */
 int BotSetLastOrderedTask(bot_state_t *bs) {
 
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		// don't go back to returning the flag if it's at the base
 		if ( bs->lastgoal_ltgtype == LTG_RETURNFLAG ) {
 			if ( BotTeam(bs) == TEAM_RED ) {
@@ -460,7 +448,7 @@ int BotSetLastOrderedTask(bot_state_t *b
 		bs->teamgoal_time = FloatTime() + 300;
 		BotSetTeamStatus(bs);
 		//
-		if ( gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+		if ( gametype == GT_CTF ) {
 			if ( bs->ltgtype == LTG_GETFLAG ) {
 				bot_goal_t *tb, *eb;
 				int tt, et;
@@ -801,79 +789,7 @@ void BotCTFRetreatGoals(bot_state_t *bs)
 	}
 }
 
-/*
-==================
-BotDomSeekGoals
-==================
- */
-
-void BotDomSeekGoals(bot_state_t *bs) {
-    int index;
-    bs->ltgtype = LTG_DOMHOLD; //For debugging we are forcing roam
-    
-    index=0;
-    //dom_points_bot[i]
-    
-    if(bs->ltgtype == LTG_DOMHOLD) {
-        index = ((rand()) % (level.domination_points_count));
-    }
-    
-    if(bs->ltgtype == LTG_DOMROAM) {
-        
-    }
-     
-        
-    memcpy(&bs->teamgoal, &dom_points_bot[index], sizeof(bot_goal_t));
-}
-
-/*
-==================
-BotDDSeekGoals
-==================
-*/
-
-void BotDDSeekGoals(bot_state_t *bs) {
-
-	/*if (bs->ltgtype == LTG_TEAMHELP ||
-			bs->ltgtype == LTG_TEAMACCOMPANY ||
-			bs->ltgtype == LTG_CAMPORDER ||
-			bs->ltgtype == LTG_PATROL ||
-			bs->ltgtype == LTG_GETITEM) {
-		return;
-	}*/
-
-	if(bs->ltgtype == LTG_POINTA)
-		memcpy(&bs->teamgoal, &ctf_redflag, sizeof(bot_goal_t));
-	if(bs->ltgtype == LTG_POINTB)
-		memcpy(&bs->teamgoal, &ctf_blueflag, sizeof(bot_goal_t));
-
-	if(bs->ltgtype == LTG_POINTA || bs->ltgtype == LTG_POINTB)
-		return;
-
-	if(rand()%2==0)
-		bs->ltgtype = LTG_POINTA;
-	else
-		bs->ltgtype = LTG_POINTB;
-
-	if(bs->ltgtype == LTG_POINTA) {
-		memcpy(&bs->teamgoal, &ctf_redflag, sizeof(bot_goal_t));
-		if(BotTeam(bs) == TEAM_BLUE)
-			BotSetUserInfo(bs, "teamtask", va("%d", TEAMTASK_OFFENSE));
-		else
-			BotSetUserInfo(bs, "teamtask", va("%d", TEAMTASK_DEFENSE));
-	} else
-	if(bs->ltgtype == LTG_POINTB) {
-		memcpy(&bs->teamgoal, &ctf_blueflag, sizeof(bot_goal_t));
-		if(BotTeam(bs) == TEAM_RED)
-			BotSetUserInfo(bs, "teamtask", va("%d", TEAMTASK_OFFENSE));
-		else
-			BotSetUserInfo(bs, "teamtask", va("%d", TEAMTASK_DEFENSE));
-	}
-
-
-}
-
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==================
 Bot1FCTFSeekGoals
@@ -1400,7 +1316,7 @@ void BotHarvesterRetreatGoals(bot_state_
 		return;
 	}
 }
-//#endif
+#endif
 
 /*
 ==================
@@ -1410,10 +1326,10 @@ BotTeamGoals
 void BotTeamGoals(bot_state_t *bs, int retreat) {
 
 	if ( retreat ) {
-		if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION ) {
+		if (gametype == GT_CTF) {
 			BotCTFRetreatGoals(bs);
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		else if (gametype == GT_1FCTF) {
 			Bot1FCTFRetreatGoals(bs);
 		}
@@ -1423,14 +1339,14 @@ void BotTeamGoals(bot_state_t *bs, int r
 		else if (gametype == GT_HARVESTER) {
 			BotHarvesterRetreatGoals(bs);
 		}
-//#endif
+#endif
 	}
 	else {
-		if (gametype == GT_CTF|| gametype == GT_CTF_ELIMINATION) {
+		if (gametype == GT_CTF) {
 			//decide what to do in CTF mode
 			BotCTFSeekGoals(bs);
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		else if (gametype == GT_1FCTF) {
 			Bot1FCTFSeekGoals(bs);
 		}
@@ -1440,15 +1356,8 @@ void BotTeamGoals(bot_state_t *bs, int r
 		else if (gametype == GT_HARVESTER) {
 			BotHarvesterSeekGoals(bs);
 		}
-//#endif
+#endif
 	}
-
-	if(gametype == GT_DOUBLE_D) //Don't care about retreat
-		BotDDSeekGoals(bs);
-        
-        //if(gametype == GT_DOMINATION) //Don't care about retreat
-	//	BotDomSeekGoals(bs);
-
 	// reset the order time which is used to see if
 	// we decided to refuse an order
 	bs->order_time = 0;
@@ -1628,7 +1537,7 @@ int BotSynonymContext(bot_state_t *bs) {
 
 	context = CONTEXT_NORMAL|CONTEXT_NEARBYITEM|CONTEXT_NAMES;
 	//
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION
+	if (gametype == GT_CTF
 #ifdef MISSIONPACK
 		|| gametype == GT_1FCTF
 #endif
@@ -1713,10 +1622,10 @@ BotCheckItemPickup
 ==================
 */
 void BotCheckItemPickup(bot_state_t *bs, int *oldinventory) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	int offence, leader;
 
-	if (gametype <= GT_TEAM && g_ffa_gt==0)
+	if (gametype <= GT_TEAM)
 		return;
 
 	offence = -1;
@@ -1755,20 +1664,18 @@ void BotCheckItemPickup(bot_state_t *bs,
 					//trap_BotEnterChat(bs->cs, leader, CHAT_TELL);
 				}
 				else if (g_spSkill.integer <= 3) {
-					if ( ( bs->ltgtype != LTG_GETFLAG ) &&
-						( bs->ltgtype != LTG_ATTACKENEMYBASE ) &&
-						( bs->ltgtype != LTG_HARVEST ) &&
-						( ( ( gametype != GT_CTF ) &&
-						( gametype != GT_CTF_ELIMINATION ) ) ||
-						( ( bs->redflagstatus == 0 ) &&
-						( bs->blueflagstatus == 0 ) ) ) &&
-						( ( gametype != GT_1FCTF ) ||
-						( bs->neutralflagstatus == 0 ) ) ) {
+					if ( bs->ltgtype != LTG_GETFLAG &&
+						 bs->ltgtype != LTG_ATTACKENEMYBASE &&
+						 bs->ltgtype != LTG_HARVEST ) {
+						//
+						if ((gametype != GT_CTF || (bs->redflagstatus == 0 && bs->blueflagstatus == 0)) &&
+							(gametype != GT_1FCTF || bs->neutralflagstatus == 0) ) {
 							// tell the leader we want to be on offence
 							BotVoiceChat(bs, leader, VOICECHAT_WANTONOFFENSE);
 							//BotAI_BotInitialChat(bs, "wantoffence", NULL);
 							//trap_BotEnterChat(bs->cs, leader, CHAT_TELL);
 						}
+					}
 					bs->teamtaskpreference |= TEAMTP_ATTACKER;
 				}
 			}
@@ -1783,26 +1690,24 @@ void BotCheckItemPickup(bot_state_t *bs,
 					//BotAI_BotInitialChat(bs, "wantdefence", NULL);
 					//trap_BotEnterChat(bs->cs, leader, CHAT_TELL);
 				}
-				else if ( (g_spSkill.integer <= 3) &&
-					( bs->ltgtype != LTG_DEFENDKEYAREA ) &&
-					( ( ( gametype != GT_CTF ) &&
-					( gametype != GT_CTF_ELIMINATION ) ) ||
-					( ( bs->redflagstatus == 0 ) &&
-					( bs->blueflagstatus == 0 ) ) ) &&
-					( ( gametype != GT_1FCTF ) ||
-					( bs->neutralflagstatus == 0 ) ) ) {
-
-					// tell the leader we want to be on defense
-					BotVoiceChat(bs, -1, VOICECHAT_WANTONDEFENSE);
-					//BotAI_BotInitialChat(bs, "wantdefence", NULL);
-					//trap_BotEnterChat(bs->cs, leader, CHAT_TELL);
+				else if (g_spSkill.integer <= 3) {
+					if ( bs->ltgtype != LTG_DEFENDKEYAREA ) {
+						//
+						if ((gametype != GT_CTF || (bs->redflagstatus == 0 && bs->blueflagstatus == 0)) &&
+							(gametype != GT_1FCTF || bs->neutralflagstatus == 0) ) {
+							// tell the leader we want to be on defense
+							BotVoiceChat(bs, -1, VOICECHAT_WANTONDEFENSE);
+							//BotAI_BotInitialChat(bs, "wantdefence", NULL);
+							//trap_BotEnterChat(bs->cs, leader, CHAT_TELL);
+						}
+					}
 				}
 				bs->teamtaskpreference |= TEAMTP_DEFENDER;
 			}
 			bs->teamtaskpreference &= ~TEAMTP_ATTACKER;
 		}
 	}
-//#endif
+#endif
 }
 
 /*
@@ -1827,11 +1732,11 @@ void BotUpdateInventory(bot_state_t *bs)
 	bs->inventory[INVENTORY_PLASMAGUN] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_PLASMAGUN)) != 0;
 	bs->inventory[INVENTORY_BFG10K] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_BFG)) != 0;
 	bs->inventory[INVENTORY_GRAPPLINGHOOK] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_GRAPPLING_HOOK)) != 0;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	bs->inventory[INVENTORY_NAILGUN] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_NAILGUN)) != 0;;
 	bs->inventory[INVENTORY_PROXLAUNCHER] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_PROX_LAUNCHER)) != 0;;
 	bs->inventory[INVENTORY_CHAINGUN] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_CHAINGUN)) != 0;;
-//#endif
+#endif
 	//ammo
 	bs->inventory[INVENTORY_SHELLS] = bs->cur_ps.ammo[WP_SHOTGUN];
 	bs->inventory[INVENTORY_BULLETS] = bs->cur_ps.ammo[WP_MACHINEGUN];
@@ -1841,11 +1746,11 @@ void BotUpdateInventory(bot_state_t *bs)
 	bs->inventory[INVENTORY_ROCKETS] = bs->cur_ps.ammo[WP_ROCKET_LAUNCHER];
 	bs->inventory[INVENTORY_SLUGS] = bs->cur_ps.ammo[WP_RAILGUN];
 	bs->inventory[INVENTORY_BFGAMMO] = bs->cur_ps.ammo[WP_BFG];
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	bs->inventory[INVENTORY_NAILS] = bs->cur_ps.ammo[WP_NAILGUN];
 	bs->inventory[INVENTORY_MINES] = bs->cur_ps.ammo[WP_PROX_LAUNCHER];
 	bs->inventory[INVENTORY_BELT] = bs->cur_ps.ammo[WP_CHAINGUN];
-//#endif
+#endif
 	//powerups
 	bs->inventory[INVENTORY_HEALTH] = bs->cur_ps.stats[STAT_HEALTH];
 	bs->inventory[INVENTORY_TELEPORTER] = bs->cur_ps.stats[STAT_HOLDABLE_ITEM] == MODELINDEX_TELEPORTER;
@@ -1869,7 +1774,7 @@ void BotUpdateInventory(bot_state_t *bs)
 #endif
 	bs->inventory[INVENTORY_REDFLAG] = bs->cur_ps.powerups[PW_REDFLAG] != 0;
 	bs->inventory[INVENTORY_BLUEFLAG] = bs->cur_ps.powerups[PW_BLUEFLAG] != 0;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	bs->inventory[INVENTORY_NEUTRALFLAG] = bs->cur_ps.powerups[PW_NEUTRALFLAG] != 0;
 	if (BotTeam(bs) == TEAM_RED) {
 		bs->inventory[INVENTORY_REDCUBE] = bs->cur_ps.generic1;
@@ -1879,7 +1784,7 @@ void BotUpdateInventory(bot_state_t *bs)
 		bs->inventory[INVENTORY_REDCUBE] = 0;
 		bs->inventory[INVENTORY_BLUECUBE] = bs->cur_ps.generic1;
 	}
-//#endif
+#endif
 	BotCheckItemPickup(bs, oldinventory);
 }
 
@@ -1921,7 +1826,7 @@ void BotUseKamikaze(bot_state_t *bs) {
 	if (bs->kamikaze_time > FloatTime())
 		return;
 	bs->kamikaze_time = FloatTime() + 0.2;
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//never use kamikaze if the team flag carrier is visible
 		if (BotCTFCarryingFlag(bs))
 			return;
@@ -2028,7 +1933,7 @@ void BotUseInvulnerability(bot_state_t *
 	if (bs->invulnerability_time > FloatTime())
 		return;
 	bs->invulnerability_time = FloatTime() + 0.2;
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//never use kamikaze if the team flag carrier is visible
 		if (BotCTFCarryingFlag(bs))
 			return;
@@ -2283,7 +2188,7 @@ TeamPlayIsOn
 ==================
 */
 int TeamPlayIsOn(void) {
-	return ( gametype >= GT_TEAM && g_ffa_gt!=1);
+	return ( gametype >= GT_TEAM );
 }
 
 /*
@@ -2363,7 +2268,7 @@ BotWantsToRetreat
 int BotWantsToRetreat(bot_state_t *bs) {
 	aas_entityinfo_t entinfo;
 
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//always retreat when carrying a CTF flag
 		if (BotCTFCarryingFlag(bs))
 			return qtrue;
@@ -2416,7 +2321,7 @@ BotWantsToChase
 int BotWantsToChase(bot_state_t *bs) {
 	aas_entityinfo_t entinfo;
 
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//never chase when carrying a CTF flag
 		if (BotCTFCarryingFlag(bs))
 			return qfalse;
@@ -2871,7 +2776,7 @@ int BotSameTeam(bot_state_t *bs, int ent
 		//BotAI_Print(PRT_ERROR, "BotSameTeam: client out of range\n");
 		return qfalse;
 	}
-	if ( gametype >= GT_TEAM && g_ffa_gt!=1) {
+	if ( gametype >= GT_TEAM ) {
 		trap_GetConfigstring(CS_PLAYERS+bs->client, info1, sizeof(info1));
 		trap_GetConfigstring(CS_PLAYERS+entnum, info2, sizeof(info2));
 		//
@@ -3087,11 +2992,6 @@ int BotFindEnemy(bot_state_t *bs, int cu
 		if (EntityIsInvisible(&entinfo) && !EntityIsShooting(&entinfo)) {
 			continue;
 		}
-//Neil Torontos unlagged
-//unlagged - misc
-		// this has nothing to do with lag compensation, but it's great for testing
-		if ( g_entities[i].flags & FL_NOTARGET ) continue;
-//unlagged - misc
 		//if not an easy fragger don't shoot at chatting players
 		if (easyfragger < 0.5 && EntityIsChatting(&entinfo)) continue;
 		//
@@ -3289,7 +3189,7 @@ void BotVisibleTeamMatesAndEnemies(bot_s
 	}
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ==================
 BotTeamCubeCarrierVisible
@@ -3351,7 +3251,7 @@ int BotEnemyCubeCarrierVisible(bot_state
 	}
 	return -1;
 }
-//#endif
+#endif
 
 /*
 ==================
@@ -3379,13 +3279,13 @@ void BotAimAtEnemy(bot_state_t *bs) {
 	if (bs->enemy >= MAX_CLIENTS) {
 		//if the obelisk is visible
 		VectorCopy(entinfo.origin, target);
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		// if attacking an obelisk
 		if ( bs->enemy == redobelisk.entitynum ||
 			bs->enemy == blueobelisk.entitynum ) {
 			target[2] += 32;
 		}
-//#endif
+#endif
 		//aim at the obelisk
 		VectorSubtract(target, bs->eye, dir);
 		vectoangles(dir, bs->ideal_viewangles);
@@ -3851,7 +3751,6 @@ void BotMapScripts(bot_state_t *bs) {
 BotSetMovedir
 ==================
 */
-// bk001205 - made these static
 static vec3_t VEC_UP		= {0, -1,  0};
 static vec3_t MOVEDIR_UP	= {0,  0,  1};
 static vec3_t VEC_DOWN		= {0, -2,  0};
@@ -4965,7 +4864,7 @@ void BotCheckEvents(bot_state_t *bs, ent
 		}
 		case EV_GLOBAL_TEAM_SOUND:
 		{
-			if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+			if (gametype == GT_CTF) {
 				switch(state->eventParm) {
 					case GTS_RED_CAPTURE:
 						bs->blueflagstatus = 0;
@@ -5229,8 +5128,8 @@ void BotSetupAlternativeRouteGoals(void)
 
 	if (altroutegoals_setup)
 		return;
-//#ifdef MISSIONPACK
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+#ifdef MISSIONPACK
+	if (gametype == GT_CTF) {
 		if (trap_BotGetLevelItemGoal(-1, "Neutral Flag", &ctf_neutralflag) < 0)
 			BotAI_Print(PRT_WARNING, "no alt routes without Neutral Flag\n");
 		if (ctf_neutralflag.areanum) {
@@ -5296,7 +5195,7 @@ void BotSetupAlternativeRouteGoals(void)
 									ALTROUTEGOAL_CLUSTERPORTALS|
 									ALTROUTEGOAL_VIEWPORTALS);
 	}
-//#endif
+#endif
 	altroutegoals_setup = qtrue;
 }
 
@@ -5487,7 +5386,7 @@ BotSetupDeathmatchAI
 ==================
 */
 void BotSetupDeathmatchAI(void) {
-	int ent, modelnum,i;
+	int ent, modelnum;
 	char model[128];
 
 	gametype = trap_Cvar_VariableIntegerValue("g_gametype");
@@ -5502,29 +5401,13 @@ void BotSetupDeathmatchAI(void) {
 	trap_Cvar_Register(&bot_predictobstacles, "bot_predictobstacles", "1", 0);
 	trap_Cvar_Register(&g_spSkill, "g_spSkill", "2", 0);
 	//
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (trap_BotGetLevelItemGoal(-1, "Red Flag", &ctf_redflag) < 0)
 			BotAI_Print(PRT_WARNING, "CTF without Red Flag\n");
 		if (trap_BotGetLevelItemGoal(-1, "Blue Flag", &ctf_blueflag) < 0)
 			BotAI_Print(PRT_WARNING, "CTF without Blue Flag\n");
 	}
-	else if (gametype == GT_DOUBLE_D) {
-		if (trap_BotGetLevelItemGoal(-1, "Red Flag", &ctf_redflag) < 0)
-			BotAI_Print(PRT_WARNING, "DD without Point A\n");
-		if (trap_BotGetLevelItemGoal(-1, "Blue Flag", &ctf_blueflag) < 0)
-			BotAI_Print(PRT_WARNING, "DD without Point B\n");
-	}
-        else if (gametype == GT_DOMINATION) {
-            ent = trap_BotGetLevelItemGoal(-1, "Domination Point", &dom_points_bot[0]); 
-            if(ent < 0)
-		BotAI_Print(PRT_WARNING, "Domination without a single domination point\n");
-            for(i=1;i<level.domination_points_count;i++) {
-                //Find next from the privius found entity
-                ent = trap_BotGetLevelItemGoal(ent, "Domination Point", &dom_points_bot[i]);
-            }
-            //MAX_DOMINATION_POINTS
-	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (trap_BotGetLevelItemGoal(-1, "Neutral Flag", &ctf_neutralflag) < 0)
 			BotAI_Print(PRT_WARNING, "One Flag CTF without Neutral Flag\n");
@@ -5552,7 +5435,7 @@ void BotSetupDeathmatchAI(void) {
 			BotAI_Print(PRT_WARNING, "Harvester without neutral obelisk\n");
 		BotSetEntityNumForGoal(&neutralobelisk, "team_neutralobelisk");
 	}
-//#endif
+#endif
 
 	max_bspmodelindex = 0;
 	for (ent = trap_AAS_NextBSPEntity(0); ent; ent = trap_AAS_NextBSPEntity(ent)) {
diff -upr ioquake3svn1438/code/game/ai_dmq3.h ioquake3serverFix/code/game/ai_dmq3.h
--- ioquake3svn1438/code/game/ai_dmq3.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_dmq3.h	2008-08-09 11:28:21.000000000 -0500
@@ -147,7 +147,7 @@ void BotCTFSeekGoals(bot_state_t *bs);
 //set ctf goals (defend base, get enemy flag) during retreat
 void BotCTFRetreatGoals(bot_state_t *bs);
 //
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 int Bot1FCTFCarryingFlag(bot_state_t *bs);
 int BotHarvesterCarryingCubes(bot_state_t *bs);
 void Bot1FCTFSeekGoals(bot_state_t *bs);
@@ -159,7 +159,7 @@ void BotHarvesterSeekGoals(bot_state_t *
 void BotHarvesterRetreatGoals(bot_state_t *bs);
 int BotTeamCubeCarrierVisible(bot_state_t *bs);
 int BotEnemyCubeCarrierVisible(bot_state_t *bs);
-//#endif
+#endif
 //get a random alternate route goal towards the given base
 int BotGetAlternateRouteGoal(bot_state_t *bs, int base);
 //returns either the alternate route goal or the given goal
@@ -198,9 +198,9 @@ extern vmCvar_t bot_challenge;
 
 extern bot_goal_t ctf_redflag;
 extern bot_goal_t ctf_blueflag;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 extern bot_goal_t ctf_neutralflag;
 extern bot_goal_t redobelisk;
 extern bot_goal_t blueobelisk;
 extern bot_goal_t neutralobelisk;
-//#endif
+#endif
diff -upr ioquake3svn1438/code/game/ai_main.c ioquake3serverFix/code/game/ai_main.c
--- ioquake3svn1438/code/game/ai_main.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_main.c	2008-08-09 11:28:21.000000000 -0500
@@ -285,13 +285,13 @@ void BotReportStatus(bot_state_t *bs) {
 	else leader = " ";
 
 	strcpy(flagstatus, "  ");
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (BotCTFCarryingFlag(bs)) {
 			if (BotTeam(bs) == TEAM_RED) strcpy(flagstatus, S_COLOR_RED"F ");
 			else strcpy(flagstatus, S_COLOR_BLUE"F ");
 		}
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (Bot1FCTFCarryingFlag(bs)) {
 			if (BotTeam(bs) == TEAM_RED) strcpy(flagstatus, S_COLOR_RED"F ");
@@ -304,7 +304,7 @@ void BotReportStatus(bot_state_t *bs) {
 			else Com_sprintf(flagstatus, sizeof(flagstatus), S_COLOR_BLUE"%2d", bs->inventory[INVENTORY_BLUECUBE]);
 		}
 	}
-//#endif
+#endif
 
 	switch(bs->ltgtype) {
 		case LTG_TEAMHELP:
@@ -373,16 +373,6 @@ void BotReportStatus(bot_state_t *bs) {
 			BotAI_Print(PRT_MESSAGE, "%-20s%s%s: harvesting\n", netname, leader, flagstatus);
 			break;
 		}
-		case LTG_POINTA:
-		{
-			BotAI_Print(PRT_MESSAGE, "%-20s%s%s: going for point A\n", netname, leader, flagstatus);
-			break;
-		}
-		case LTG_POINTB:
-		{
-			BotAI_Print(PRT_MESSAGE, "%-20s%s%s: going for point B\n", netname, leader, flagstatus);
-			break;
-		}
 		default:
 		{
 			BotAI_Print(PRT_MESSAGE, "%-20s%s%s: roaming\n", netname, leader, flagstatus);
@@ -445,12 +435,12 @@ void BotSetInfoConfigString(bot_state_t 
 	else leader = " ";
 
 	strcpy(carrying, "  ");
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (BotCTFCarryingFlag(bs)) {
 			strcpy(carrying, "F ");
 		}
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (Bot1FCTFCarryingFlag(bs)) {
 			strcpy(carrying, "F ");
@@ -462,7 +452,7 @@ void BotSetInfoConfigString(bot_state_t 
 			else Com_sprintf(carrying, sizeof(carrying), "%2d", bs->inventory[INVENTORY_BLUECUBE]);
 		}
 	}
-//#endif
+#endif
 
 	switch(bs->ltgtype) {
 		case LTG_TEAMHELP:
@@ -531,16 +521,6 @@ void BotSetInfoConfigString(bot_state_t 
 			Com_sprintf(action, sizeof(action), "harvesting");
 			break;
 		}
-		case LTG_POINTA:
-		{
-			Com_sprintf(action, sizeof(action), "going for point A");
-			break;
-		}
-		case LTG_POINTB:
-		{
-			Com_sprintf(action, sizeof(action), "going for point B");
-			break;
-		}
 		default:
 		{
 			trap_BotGetTopGoal(bs->gs, &goal);
diff -upr ioquake3svn1438/code/game/ai_main.h ioquake3serverFix/code/game/ai_main.h
--- ioquake3svn1438/code/game/ai_main.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_main.h	2008-08-09 11:28:21.000000000 -0500
@@ -58,12 +58,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define LTG_ATTACKENEMYBASE			13	//attack the enemy base
 #define LTG_MAKELOVE_UNDER			14
 #define LTG_MAKELOVE_ONTOP			15
-//Long term DD goals
-#define LTG_POINTA				16	//Take/Defend point A
-#define LTG_POINTB				17	//Take/Defend point B
-//Long term DD goals
-#define LTG_DOMROAM                             18      //Go for a non taken point.
-#define LTG_DOMHOLD                             19      //Pick a point and hold it.
 //some goal dedication times
 #define TEAM_HELP_TIME				60	//1 minute teamplay help time
 #define TEAM_ACCOMPANY_TIME			600	//10 minutes teamplay accompany time
@@ -79,9 +73,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define CTF_RUSHBASE_TIME			120	//2 minutes ctf rush base time
 #define CTF_RETURNFLAG_TIME			180	//3 minutes to return the flag
 #define CTF_ROAM_TIME				60	//1 minute ctf roam time
-//Time for Double Domination tasks
-#define DD_POINTA				600
-#define DD_POINTB				600
 //patrol flags
 #define PATROL_LOOP					1
 #define PATROL_REVERSE				2
diff -upr ioquake3svn1438/code/game/ai_team.c ioquake3serverFix/code/game/ai_team.c
--- ioquake3svn1438/code/game/ai_team.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_team.c	2008-08-09 11:28:21.000000000 -0500
@@ -131,20 +131,20 @@ int BotSortTeamMatesByBaseTravelTime(bot
 	int traveltimes[MAX_CLIENTS];
 	bot_goal_t *goal = NULL;
 
-	if (gametype == GT_CTF || gametype == GT_1FCTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF || gametype == GT_1FCTF) {
 		if (BotTeam(bs) == TEAM_RED)
 			goal = &ctf_redflag;
 		else
 			goal = &ctf_blueflag;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else {
 		if (BotTeam(bs) == TEAM_RED)
 			goal = &redobelisk;
 		else
 			goal = &blueobelisk;
 	}
-//#endif
+#endif
 	if (!maxclients)
 		maxclients = trap_Cvar_VariableIntegerValue("sv_maxclients");
 
@@ -180,57 +180,6 @@ int BotSortTeamMatesByBaseTravelTime(bot
 
 /*
 ==================
-BotSortTeamMatesByReletiveTravelTime2ddA
-For Double Domination
-==================
-*/
-int BotSortTeamMatesByRelativeTravelTime2ddA(bot_state_t *bs, int *teammates, int maxteammates) {
-	int i, j, k, numteammates;
-	double traveltime, traveltime2b;
-	char buf[MAX_INFO_STRING];
-	static int maxclients;
-	double traveltimes[MAX_CLIENTS];
-	//int traveltimes2b[MAX_CLIENTS];
-	bot_goal_t *goalA = &ctf_redflag;
-	bot_goal_t *goalB = &ctf_blueflag;
-
-	if (!maxclients)
-		maxclients = trap_Cvar_VariableIntegerValue("sv_maxclients");
-
-	numteammates = 0;
-
-	for (i = 0; i < maxclients && i < MAX_CLIENTS; i++) {
-		trap_GetConfigstring(CS_PLAYERS+i, buf, sizeof(buf));
-		//if no config string or no name
-		if (!strlen(buf) || !strlen(Info_ValueForKey(buf, "n"))) continue;
-		//skip spectators
-		if (atoi(Info_ValueForKey(buf, "t")) == TEAM_SPECTATOR) continue;
-		if (BotSameTeam(bs, i)) {
-			traveltime = (double)BotClientTravelTimeToGoal(i, goalA);
-			traveltime2b = (double)BotClientTravelTimeToGoal(i, goalB);
-			traveltime = traveltime/traveltime2b;
-
-			for (j = 0; j < numteammates; j++) {
-				if (traveltime < traveltimes[j]) {
-					for (k = numteammates; k > j; k--) {
-						traveltimes[k] = traveltimes[k-1];
-						teammates[k] = teammates[k-1];
-					}
-					break;
-				}
-			}
-			traveltimes[j] = traveltime;
-			teammates[j] = i;
-			numteammates++;
-			if (numteammates >= maxteammates) break;
-		}
-	}
-
-	return numteammates;
-}
-
-/*
-==================
 BotSetTeamMateTaskPreference
 ==================
 */
@@ -499,26 +448,9 @@ void BotCTFOrders_FlagNotAtBase(bot_stat
 	int numteammates, defenders, attackers, i;
 	int teammates[MAX_CLIENTS];
 	char name[MAX_NETNAME];
-	qboolean weAreAttacking;
 
 	numteammates = BotSortTeamMatesByBaseTravelTime(bs, teammates, sizeof(teammates));
 	BotSortTeamMatesByTaskPreference(bs, teammates, numteammates);
-
-	weAreAttacking = qfalse;
-
-	//In oneway ctf we must all move out of the base (only one strategi, maybe we can also send some to the enemy base  to meet the flag carier?)
-	//We must be defending
-	if(g_elimination_ctf_oneway.integer > 0) {
-		for (i = 0; i < numteammates; i++) {
-			//
-			ClientName(teammates[i], name, sizeof(name));
-			BotAI_BotInitialChat(bs, "cmd_getflag", name, NULL);
-			BotSayTeamOrder(bs, teammates[i]);
-			BotSayVoiceTeamOrder(bs, teammates[i], VOICECHAT_GETFLAG);
-		}
-		return;
-	}
-
 	//passive strategy
 	if (!(bs->ctfstrategy & CTFS_AGRESSIVE)) {
 		//different orders based on the number of team mates
@@ -750,54 +682,6 @@ void BotCTFOrders_EnemyFlagNotAtBase(bot
 	}
 }
 
-/*
-==================
-BotDDorders
-==================
-*/
-
-void BotDDorders_Standard(bot_state_t *bs) {
-	int numteammates, i;
-	int teammates[MAX_CLIENTS];
-	char name[MAX_NETNAME];
-
-	//sort team mates by travel time to base
-	numteammates = BotSortTeamMatesByRelativeTravelTime2ddA(bs, teammates, sizeof(teammates));
-
-	switch(numteammates) {
-		case 1: break;
-		/*case 2: 
-		{
-			//the one closest to point A will take that
-			ClientName(teammates[0], name, sizeof(name));
-			BotAI_BotInitialChat(bs, "cmd_takea", name, NULL);
-			BotSayTeamOrder(bs, teammates[0]);
-			//BotSayVoiceTeamOrder(bs, teammates[0], VOICECHAT_TAKEA);
-			//the other goes for point B
-			ClientName(teammates[1], name, sizeof(name));
-			BotAI_BotInitialChat(bs, "cmd_takeb", name, NULL);
-			BotSayTeamOrder(bs, teammates[1]);
-			//BotSayVoiceTeamOrder(bs, teammates[1], VOICECHAT_TAKEB);
-			break;
-		}*/
-		default:
-		{
-			for(i=0;i<numteammates/2;i++) { //Half take point A
-				ClientName(teammates[i], name, sizeof(name));
-				BotAI_BotInitialChat(bs, "cmd_takea", name, NULL);
-				BotSayTeamOrder(bs, teammates[i]);
-				//BotSayVoiceTeamOrder(bs, teammates[0], VOICECHAT_TAKEA);
-			}
-			for(i=numteammates/2+1;i<numteammates;i++) { //Rest takes point B
-				ClientName(teammates[i], name, sizeof(name));
-				BotAI_BotInitialChat(bs, "cmd_takeb", name, NULL);
-				BotSayTeamOrder(bs, teammates[i]);
-				//BotSayVoiceTeamOrder(bs, teammates[0], VOICECHAT_TAKEB);
-			}
-			break;
-		}
-	}
-}
 
 /*
 ==================
@@ -808,40 +692,11 @@ void BotCTFOrders_BothFlagsAtBase(bot_st
 	int numteammates, defenders, attackers, i;
 	int teammates[MAX_CLIENTS];
 	char name[MAX_NETNAME];
-	qboolean weAreAttacking;
 
 	//sort team mates by travel time to base
 	numteammates = BotSortTeamMatesByBaseTravelTime(bs, teammates, sizeof(teammates));
 	//sort team mates by CTF preference
 	BotSortTeamMatesByTaskPreference(bs, teammates, numteammates);
-
-	weAreAttacking = qfalse;
-
-	if(g_elimination_ctf_oneway.integer > 0) {
-		//See if we are attacking:
-		if( ( (level.eliminationSides+level.roundNumber)%2 == 0 ) && (BotTeam(bs) == TEAM_RED))
-			weAreAttacking = qtrue;
-		
-		if(weAreAttacking) {
-			for (i = 0; i < numteammates; i++) {
-				//
-				ClientName(teammates[i], name, sizeof(name));
-				BotAI_BotInitialChat(bs, "cmd_getflag", name, NULL);
-				BotSayTeamOrder(bs, teammates[i]);
-				BotSayVoiceTeamOrder(bs, teammates[i], VOICECHAT_GETFLAG);
-			}
-		} else {
-			for (i = 0; i < numteammates; i++) {
-				//
-				ClientName(teammates[i], name, sizeof(name));
-				BotAI_BotInitialChat(bs, "cmd_defendbase", name, NULL);
-				BotSayTeamOrder(bs, teammates[i]);
-				BotSayVoiceTeamOrder(bs, teammates[i], VOICECHAT_DEFEND);
-			}
-		}
-		return; //Sago: Or the leader will make a counter order.
-	}
-
 	//passive strategy
 	if (!(bs->ctfstrategy & CTFS_AGRESSIVE)) {
 		//different orders based on the number of team mates
@@ -989,15 +844,6 @@ void BotCTFOrders(bot_state_t *bs) {
 	}
 }
 
-/*
-==================
-BotDDorders
-==================
-*/
-void BotDDorders(bot_state_t *bs) {
-	BotDDorders_Standard(bs);	
-}
-
 
 /*
 ==================
@@ -1090,7 +936,7 @@ void BotTeamOrders(bot_state_t *bs) {
 	}
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 
 /*
 ==================
@@ -2043,7 +1889,7 @@ void BotHarvesterOrders(bot_state_t *bs)
 		}
 	}
 }
-//#endif
+#endif
 
 /*
 ==================
@@ -2076,8 +1922,6 @@ int FindHumanTeamLeader(bot_state_t *bs)
 	return qfalse;
 }
 
-int lastRoundNumber; //used to give new orders every round
-
 /*
 ==================
 BotTeamAI
@@ -2088,7 +1932,7 @@ void BotTeamAI(bot_state_t *bs) {
 	char netname[MAX_NETNAME];
 
 	//
-	if ( gametype < GT_TEAM || g_ffa_gt == 1 )
+	if ( gametype < GT_TEAM  )
 		return;
 	// make sure we've got a valid team leader
 	if (!BotValidTeamLeader(bs)) {
@@ -2148,16 +1992,14 @@ void BotTeamAI(bot_state_t *bs) {
 			break;
 		}
 		case GT_CTF:
-		case GT_CTF_ELIMINATION:
 		{
 			//if the number of team mates changed or the flag status changed
 			//or someone wants to know what to do
-			if (bs->numteammates != numteammates || bs->flagstatuschanged || bs->forceorders || lastRoundNumber != level.roundNumber) {
+			if (bs->numteammates != numteammates || bs->flagstatuschanged || bs->forceorders) {
 				bs->teamgiveorders_time = FloatTime();
 				bs->numteammates = numteammates;
 				bs->flagstatuschanged = qfalse;
 				bs->forceorders = qfalse;
-				lastRoundNumber = level.roundNumber;
 			}
 			//if there were no flag captures the last 3 minutes
 			if (bs->lastflagcapture_time < FloatTime() - 240) {
@@ -2176,25 +2018,7 @@ void BotTeamAI(bot_state_t *bs) {
 			}
 			break;
 		}
-		case GT_DOUBLE_D:
-		{
-			//if the number of team mates changed or the domination point status changed
-			//or someone wants to know what to do
-			if (bs->numteammates != numteammates || bs->flagstatuschanged || bs->forceorders) {
-				bs->teamgiveorders_time = FloatTime();
-				bs->numteammates = numteammates;
-				bs->flagstatuschanged = qfalse;
-				bs->forceorders = qfalse;
-			}
-			//if it's time to give orders
-			if (bs->teamgiveorders_time && bs->teamgiveorders_time < FloatTime() - 3) {
-				BotDDorders(bs);
-				//
-				bs->teamgiveorders_time = 0;
-			}
-			break;
-		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		case GT_1FCTF:
 		{
 			if (bs->numteammates != numteammates || bs->flagstatuschanged || bs->forceorders) {
@@ -2250,7 +2074,7 @@ void BotTeamAI(bot_state_t *bs) {
 			}
 			break;
 		}
-//#endif
+#endif
 	}
 }
 
diff -upr ioquake3svn1438/code/game/ai_vcmd.c ioquake3serverFix/code/game/ai_vcmd.c
--- ioquake3svn1438/code/game/ai_vcmd.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/ai_vcmd.c	2008-08-09 11:28:21.000000000 -0500
@@ -71,16 +71,16 @@ BotVoiceChat_GetFlag
 */
 void BotVoiceChat_GetFlag(bot_state_t *bs, int client, int mode) {
 	//
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		if (!ctf_redflag.areanum || !ctf_blueflag.areanum)
 			return;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if (gametype == GT_1FCTF) {
 		if (!ctf_neutralflag.areanum || !ctf_redflag.areanum || !ctf_blueflag.areanum)
 			return;
 	}
-//#endif
+#endif
 	else {
 		return;
 	}
@@ -95,7 +95,7 @@ void BotVoiceChat_GetFlag(bot_state_t *b
 	//set the team goal time
 	bs->teamgoal_time = FloatTime() + CTF_GETFLAG_TIME;
 	// get an alternate route in ctf
-	if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+	if (gametype == GT_CTF) {
 		//get an alternative route goal towards the enemy base
 		BotGetAlternateRouteGoal(bs, BotOppositeTeam(bs));
 	}
@@ -114,7 +114,7 @@ BotVoiceChat_Offense
 ==================
 */
 void BotVoiceChat_Offense(bot_state_t *bs, int client, int mode) {
-	if ( gametype == GT_CTF || gametype == GT_CTF_ELIMINATION
+	if ( gametype == GT_CTF
 #ifdef MISSIONPACK
 		|| gametype == GT_1FCTF
 #endif
@@ -181,7 +181,7 @@ void BotVoiceChat_Defend(bot_state_t *bs
 	}
 	else
 #endif
-		if (gametype == GT_CTF || gametype == GT_CTF_ELIMINATION
+		if (gametype == GT_CTF
 #ifdef MISSIONPACK
 			|| gametype == GT_1FCTF
 #endif
@@ -383,7 +383,7 @@ BotVoiceChat_ReturnFlag
 void BotVoiceChat_ReturnFlag(bot_state_t *bs, int client, int mode) {
 	//if not in CTF mode
 	if (
-		gametype != GT_CTF && gametype != GT_CTF_ELIMINATION
+		gametype != GT_CTF
 #ifdef MISSIONPACK
 		&& gametype != GT_1FCTF
 #endif
diff -upr ioquake3svn1438/code/game/bg_lib.c ioquake3serverFix/code/game/bg_lib.c
--- ioquake3svn1438/code/game/bg_lib.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_lib.c	2008-08-09 11:28:21.000000000 -0500
@@ -1791,5 +1791,3 @@ int sscanf( const char *buffer, const ch
 }
 
 #endif
-
-
diff -upr ioquake3svn1438/code/game/bg_lib.h ioquake3serverFix/code/game/bg_lib.h
--- ioquake3svn1438/code/game/bg_lib.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_lib.h	2008-08-09 11:28:21.000000000 -0500
@@ -121,4 +121,3 @@ double fabs( double x );
 double acos( double x );
 
 #endif // BG_LIB_H
-
diff -upr ioquake3svn1438/code/game/bg_local.h ioquake3serverFix/code/game/bg_local.h
--- ioquake3svn1438/code/game/bg_local.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_local.h	2008-08-09 11:28:21.000000000 -0500
@@ -73,10 +73,6 @@ extern	float	pm_flightfriction;
 
 extern	int		c_pmove;
 
-//Repeting airjumps/no bunny, elimination B5
-extern	int	pm_airjumps;
-extern	int	pm_nobunny;
-
 void PM_ClipVelocity( vec3_t in, vec3_t normal, vec3_t out, float overbounce );
 void PM_AddTouchEnt( int entityNum );
 void PM_AddEvent( int newEvent );
diff -upr ioquake3svn1438/code/game/bg_misc.c ioquake3serverFix/code/game/bg_misc.c
--- ioquake3svn1438/code/game/bg_misc.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_misc.c	2008-08-09 11:28:21.000000000 -0500
@@ -702,7 +702,7 @@ Only in CTF games
 /* precache */ "",
 /* sounds */ ""
 	},
-#endif
+
 /*QUAKED ammo_nails (.3 .3 1) (-16 -16 -16) (16 16 16) suspended
 */
 	{
@@ -751,7 +751,6 @@ Only in CTF games
 /* sounds */ ""
 	},
 
-#ifdef MISSIONPACK
 	//
 	// PERSISTANT POWERUP ITEMS
 	//
@@ -819,8 +818,6 @@ Only in CTF games
 /* sounds */ ""
 	},
 
-#endif
-        
 	/*QUAKED team_CTF_neutralflag (0 0 1) (-16 -16 -16) (16 16 16)
 Only in One Flag CTF games
 */
@@ -917,162 +914,7 @@ Only in One Flag CTF games
 /* precache */ "",
 /* sounds */ "sound/weapons/vulcan/wvulwind.wav"
 	},
-//#endif
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointAblue",
-		NULL,
-        { "models/dpoints/a_blue.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_blue",
-/* pickup */	"Point A (Blue)",
-		0,
-		IT_TEAM,
-		DD_POINTABLUE,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointBblue",
-		NULL,
-        { "models/dpoints/b_blue.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/iconb_blue",
-/* pickup */	"Point B (Blue)",
-		0,
-		IT_TEAM,
-		DD_POINTBBLUE,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointAred",
-		NULL,
-        { "models/dpoints/a_red.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_red",
-/* pickup */	"Point A (Red)",
-		0,
-		IT_TEAM,
-		DD_POINTARED,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointBred",
-		NULL,
-        { "models/dpoints/b_red.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/iconb_red",
-/* pickup */	"Point B (Red)",
-		0,
-		IT_TEAM,
-		DD_POINTBRED,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointAwhite",
-		NULL,
-        { "models/dpoints/a_white.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_white",
-/* pickup */	"Point A (White)",
-		0,
-		IT_TEAM,
-		DD_POINTAWHITE,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED team_DD_point
-Only in DD games
-*/
-	{
-		"team_DD_pointBwhite",
-		NULL,
-        { "models/dpoints/b_white.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/iconb_white",
-/* pickup */	"Point B (White)",
-		0,
-		IT_TEAM,
-		DD_POINTBWHITE,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-//Now things for standard domination:
-
-/*QUAKED 
-Only in Domination games
-*/
-	{
-		"team_dom_pointWhite",
-		NULL,
-        { "models/dpoints/a_white.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_white",
-/* pickup */	"Neutral domination point",
-		0,
-		IT_TEAM,
-		DOM_POINTWHITE,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED 
-Only in Domination games
-*/
-	{
-		"team_dom_pointRed",
-		NULL,
-        { "models/dpoints/a_red.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_red",
-/* pickup */	"Red domination point",
-		0,
-		IT_TEAM,
-		DOM_POINTRED,
-/* precache */ "",
-/* sounds */ ""
-	},
-
-/*QUAKED 
-Only in Domination games
-*/
-	{
-		"team_dom_pointBlue",
-		NULL,
-        { "models/dpoints/a_blue.md3",
-		NULL, NULL, NULL },
-/* icon */		"icons/icona_blue",
-/* pickup */	"Blue domination point",
-		0,
-		IT_TEAM,
-		DOM_POINTBLUE,
-/* precache */ "",
-/* sounds */ ""
-	},
+#endif
 
 	// end of list marker
 	{NULL}
@@ -1266,11 +1108,6 @@ qboolean BG_CanItemBeGrabbed( int gamety
 
 #ifdef MISSIONPACK
 	case IT_PERSISTANT_POWERUP:
-
-		//In Double D we don't want persistant Powerups (or maybe, can be discussed)
-		if(gametype == GT_DOUBLE_D)
-			return qfalse;
-
 		// can only hold one item at a time
 		if ( ps->stats[STAT_PERSISTANT_POWERUP] ) {
 			return qfalse;
@@ -1288,7 +1125,7 @@ qboolean BG_CanItemBeGrabbed( int gamety
 #endif
 
 	case IT_TEAM: // team items, such as flags
-//#ifdef MISSIONPACK		
+#ifdef MISSIONPACK		
 		if( gametype == GT_1FCTF ) {
 			// neutral flag can always be picked up
 			if( item->giTag == PW_NEUTRALFLAG ) {
@@ -1304,8 +1141,8 @@ qboolean BG_CanItemBeGrabbed( int gamety
 				}
 			}
 		}
-//#endif
-		if( gametype == GT_CTF || gametype == GT_CTF_ELIMINATION) {
+#endif
+		if( gametype == GT_CTF ) {
 			// ent->modelindex2 is non-zero on items if they are dropped
 			// we need to know this because we can pick up our dropped flag (and return it)
 			// but we can't pick up our flag at base
@@ -1322,24 +1159,6 @@ qboolean BG_CanItemBeGrabbed( int gamety
 			}
 		}
 
-		if( gametype == GT_DOUBLE_D) {
-			//We can touch both flags
-			if(item->giTag == PW_BLUEFLAG || item->giTag == PW_REDFLAG)
-				return qtrue;
-		}
-
-		if( gametype == GT_DOMINATION ) {
-			if(item->giTag == DOM_POINTWHITE)
-				return qtrue;
-			if (ps->persistant[PERS_TEAM] == TEAM_RED) {
-				if(item->giTag == DOM_POINTBLUE)
-					return qtrue;
-			} else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) {
-				if(item->giTag == DOM_POINTRED)
-					return qtrue;
-			}
-		}
-
 #ifdef MISSIONPACK
 		if( gametype == GT_HARVESTER ) {
 			return qtrue;
@@ -1358,7 +1177,7 @@ qboolean BG_CanItemBeGrabbed( int gamety
             Com_Error( ERR_DROP, "BG_CanItemBeGrabbed: IT_BAD" );
         default:
 #ifndef Q3_VM
-#ifndef NDEBUG // bk0001204
+#ifndef NDEBUG
           Com_Printf("BG_CanItemBeGrabbed: unknown enum %d\n", item->giType );
 #endif
 #endif
diff -upr ioquake3svn1438/code/game/bg_pmove.c ioquake3serverFix/code/game/bg_pmove.c
--- ioquake3svn1438/code/game/bg_pmove.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_pmove.c	2008-08-09 11:28:21.000000000 -0500
@@ -48,6 +48,7 @@ float	pm_spectatorfriction = 5.0f;
 
 int		c_pmove = 0;
 
+
 /*
 ===============
 PM_AddEvent
@@ -233,14 +234,11 @@ static void PM_Friction( void ) {
 ==============
 PM_Accelerate
 
-TODO: bunny hoping
-
 Handles user intended acceleration
 ==============
 */
 static void PM_Accelerate( vec3_t wishdir, float wishspeed, float accel ) {
 #if 1
-
 	// q2 style
 	int			i;
 	float		addspeed, accelspeed, currentspeed;
@@ -275,7 +273,6 @@ static void PM_Accelerate( vec3_t wishdi
 	}
 
 	VectorMA( pm->ps->velocity, canPush, pushDir, pm->ps->velocity );
-}
 #endif
 }
 
@@ -360,8 +357,6 @@ PM_CheckJump
 =============
 */
 static qboolean PM_CheckJump( void ) {
-
-
 	if ( pm->ps->pm_flags & PMF_RESPAWNED ) {
 		return qfalse;		// don't allow jump until all buttons are up
 	}
@@ -371,7 +366,6 @@ static qboolean PM_CheckJump( void ) {
 		return qfalse;
 	}
 
-
 	// must wait for jump to be released
 	if ( pm->ps->pm_flags & PMF_JUMP_HELD ) {
 		// clear upmove so cmdscale doesn't lower running speed
@@ -379,9 +373,6 @@ static qboolean PM_CheckJump( void ) {
 		return qfalse;
 	}
 
-	
-
-
 	pml.groundPlane = qfalse;		// jumping away
 	pml.walking = qfalse;
 	pm->ps->pm_flags |= PMF_JUMP_HELD;
@@ -1542,9 +1533,6 @@ static void PM_TorsoAnimation( void ) {
 PM_Weapon
 
 Generates weapon events and modifes the weapon counter
-
-Elimination TODO:
-Make this thing stop during warmup (done)
 ==============
 */
 static void PM_Weapon( void ) {
@@ -1556,7 +1544,7 @@ static void PM_Weapon( void ) {
 	}
 
 	// ignore if spectator
-	if ( pm->ps->persistant[PERS_TEAM] == TEAM_SPECTATOR || pm->ps->pm_type == PM_SPECTATOR) {
+	if ( pm->ps->persistant[PERS_TEAM] == TEAM_SPECTATOR ) {
 		return;
 	}
 
@@ -1647,8 +1635,8 @@ static void PM_Weapon( void ) {
 		return;
 	}
 
-	// take an ammo away if not infinite, 999 or up
-	if ( !(pm->ps->ammo[ pm->ps->weapon ] == -1 || pm->ps->ammo[ pm->ps->weapon ] >=999 )) {
+	// take an ammo away if not infinite
+	if ( pm->ps->ammo[ pm->ps->weapon ] != -1 ) {
 		pm->ps->ammo[ pm->ps->weapon ]--;
 	}
 
@@ -1687,7 +1675,7 @@ static void PM_Weapon( void ) {
 	case WP_GRAPPLING_HOOK:
 		addTime = 400;
 		break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_NAILGUN:
 		addTime = 1000;
 		break;
@@ -1697,7 +1685,7 @@ static void PM_Weapon( void ) {
 	case WP_CHAINGUN:
 		addTime = 30;
 		break;
-//#endif
+#endif
 	}
 
 #ifdef MISSIONPACK
@@ -2012,7 +2000,6 @@ void PmoveSingle (pmove_t *pmove) {
 	PM_SetWaterLevel();
 
 	// weapons
-	if(!(pm->ps->pm_flags & PMF_ELIMWARMUP))
 	PM_Weapon();
 
 	// torso animation
diff -upr ioquake3svn1438/code/game/bg_public.h ioquake3serverFix/code/game/bg_public.h
--- ioquake3svn1438/code/game/bg_public.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/bg_public.h	2008-08-09 11:28:21.000000000 -0500
@@ -51,10 +51,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define CROUCH_VIEWHEIGHT	12
 #define	DEAD_VIEWHEIGHT		-16
 
-//Domination points
-#define MAX_DOMINATION_POINTS 6
-#define MAX_DOMINATION_POINTS_NAMES 20
-
 //
 // config strings are a general means of communicating variable length strings
 // from the server to all connected clients.
@@ -106,23 +102,11 @@ typedef enum {
 	//-- team games go after this --
 
 	GT_TEAM,			// team deathmatch
-
-	//-- team games that uses bases go after this
-
-	GT_CTF,				// capture the flag	
+	GT_CTF,				// capture the flag
 	GT_1FCTF,
 	GT_OBELISK,
-	GT_HARVESTER,	
-	
-	//-- custom game types, there will be a variable in 
-	
-	GT_ELIMINATION,			// team elimination (custom)
-	GT_CTF_ELIMINATION,		// ctf elimination
-	GT_LMS,				// Last man standing
-	GT_DOUBLE_D,			// Double Domination
-	GT_DOMINATION,			// Standard domination 12
+	GT_HARVESTER,
 	GT_MAX_GAME_TYPE
-	
 } gametype_t;
 
 typedef enum { GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER } gender_t;
@@ -169,9 +153,6 @@ typedef enum {
 #define PMF_FOLLOW			4096	// spectate following another player
 #define PMF_SCOREBOARD		8192	// spectate as a scoreboard
 #define PMF_INVULEXPAND		16384	// invulnerability sphere set to full size
-//Elimination players cannot fire in warmup
-#define PMF_ELIMWARMUP		32768	//I hope this is more than 16 signed bits! (it's not but it just works anyway...)
-//Don't add anymore, I have already set the sign bit :-(
 
 #define	PMF_ALL_TIMES	(PMF_TIME_WATERJUMP|PMF_TIME_LAND|PMF_TIME_KNOCKBACK)
 
@@ -259,9 +240,9 @@ typedef enum {
 
 // entityState_t->eFlags
 #define	EF_DEAD				0x00000001		// don't draw a foe marker over players with EF_DEAD
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 #define EF_TICKING			0x00000002		// used to make players play the prox mine ticking sound
-//#endif
+#endif
 #define	EF_TELEPORT_BIT		0x00000004		// toggled every time the origin abruptly changes
 #define	EF_AWARD_EXCELLENT	0x00000008		// draw an excellent sprite
 #define EF_PLAYER_EVENT		0x00000010
@@ -319,25 +300,6 @@ typedef enum {
 	HI_NUM_HOLDABLE
 } holdable_t;
 
-typedef enum {
-	DD_NONE,
-
-	DD_POINTARED,
-	DD_POINTABLUE,
-	DD_POINTAWHITE,
-	DD_POINTBRED,
-	DD_POINTBBLUE,
-	DD_POINTBWHITE
-} doubled_t;
-
-typedef enum {
-	DOM_NONE,
-
-	DOM_POINTRED,
-	DOM_POINTBLUE,
-	DOM_POINTWHITE
-} domination_t;
-
 
 typedef enum {
 	WP_NONE,
@@ -352,11 +314,11 @@ typedef enum {
 	WP_PLASMAGUN,
 	WP_BFG,
 	WP_GRAPPLING_HOOK,
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	WP_NAILGUN,
 	WP_PROX_LAUNCHER,
 	WP_CHAINGUN,
-//#endif
+#endif
 
 	WP_NUM_WEAPONS
 } weapon_t;
@@ -588,9 +550,6 @@ typedef enum {
 	TEAM_NUM_TEAMS
 } team_t;
 
-// This is a fair assumption for Double Domination:
-#define TEAM_NONE TEAM_SPECTATOR
-
 // Time between location updates
 #define TEAM_LOCATION_UPDATE_TIME		1000
 
@@ -634,13 +593,13 @@ typedef enum {
 	MOD_SUICIDE,
 	MOD_TARGET_LASER,
 	MOD_TRIGGER_HURT,
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	MOD_NAIL,
 	MOD_CHAINGUN,
 	MOD_PROXIMITY_MINE,
 	MOD_KAMIKAZE,
 	MOD_JUICED,
-//#endif
+#endif
 	MOD_GRAPPLE
 } meansOfDeath_t;
 
@@ -777,4 +736,3 @@ qboolean	BG_PlayerTouchesItem( playerSta
 #define KAMI_BOOMSPHERE_MAXRADIUS		720
 #define KAMI_SHOCKWAVE2_MAXRADIUS		704
 
-
diff -upr ioquake3svn1438/code/game/g_active.c ioquake3serverFix/code/game/g_active.c
--- ioquake3svn1438/code/game/g_active.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_active.c	2008-08-09 11:28:21.000000000 -0500
@@ -182,12 +182,12 @@ G_SetClientSound
 ===============
 */
 void G_SetClientSound( gentity_t *ent ) {
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( ent->s.eFlags & EF_TICKING ) {
 		ent->client->ps.loopSound = G_SoundIndex( "sound/weapons/proxmine/wstbtick.wav");
 	}
 	else
-//#endif
+#endif
 	if (ent->waterlevel && (ent->watertype&(CONTENTS_LAVA|CONTENTS_SLIME)) ) {
 		ent->client->ps.loopSound = level.snd_fry;
 	} else {
@@ -254,9 +254,8 @@ void	G_TouchTriggers( gentity_t *ent ) {
 		return;
 	}
 
-	//ELIMINATION LMS
-	// dead clients don't activate triggers! The reason our pm_spectators can't do anything
-	if ( ent->client->ps.stats[STAT_HEALTH] <= 0 && ent->client->ps.pm_type != PM_SPECTATOR) {
+	// dead clients don't activate triggers!
+	if ( ent->client->ps.stats[STAT_HEALTH] <= 0 ) {
 		return;
 	}
 
@@ -280,12 +279,11 @@ void	G_TouchTriggers( gentity_t *ent ) {
 		}
 
 		// ignore most entities if a spectator
-		if ( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) || ent->client->ps.pm_type == PM_SPECTATOR ) {
+		if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) {
 			if ( hit->s.eType != ET_TELEPORT_TRIGGER &&
 				// this is ugly but adding a new ET_? type will
 				// most likely cause network incompatibilities
-				//We need to stop eliminated players from opening doors somewhere else /Sago007 20070814
-				hit->touch != Touch_DoorTrigger ) {
+				hit->touch != Touch_DoorTrigger) {
 				continue;
 			}
 		}
@@ -352,11 +350,6 @@ void SpectatorThink( gentity_t *ent, use
 		trap_UnlinkEntity( ent );
 	}
 
-	/* Stopped players from going into follow mode in B5, should be fixed in B9
-	if(ent->client->sess.sessionTeam != TEAM_SPECTATOR && g_gametype.integer>=GT_ELIMINATION && g_gametype.integer<=GT_LMS)
-		return;
-	*/
-	
 	client->oldbuttons = client->buttons;
 	client->buttons = ucmd->buttons;
 
@@ -364,14 +357,6 @@ void SpectatorThink( gentity_t *ent, use
 	if ( ( client->buttons & BUTTON_ATTACK ) && ! ( client->oldbuttons & BUTTON_ATTACK ) ) {
 		Cmd_FollowCycle_f( ent, 1 );
 	}
-
-	if ( ( client->buttons & BUTTON_USE_HOLDABLE ) && ! ( client->oldbuttons & BUTTON_USE_HOLDABLE ) ) {
-		//Cmd_FollowCycle_f( ent, 1 );
-		//client->sess.spectatorState = SPECTATOR_FREE;
-		StopFollowing(ent);
-		//ent->client->ps.stats[STAT_HEALTH] = 0;
-		//ClientBegin( ent->client - level.clients );
-	}
 }
 
 
@@ -427,10 +412,6 @@ void ClientTimerActions( gentity_t *ent,
 	while ( client->timeResidual >= 1000 ) {
 		client->timeResidual -= 1000;
 
-		//Stop in elimination!!!
-		if (client->ps.pm_flags & PMF_ELIMWARMUP)
-			continue;
-
 		// regenerate
 #ifdef MISSIONPACK
 		if( bg_itemlist[client->ps.stats[STAT_PERSISTANT_POWERUP]].giTag == PW_GUARD ) {
@@ -477,18 +458,6 @@ void ClientTimerActions( gentity_t *ent,
 			if ( ent->health > client->ps.stats[STAT_MAX_HEALTH] ) {
 				ent->health--;
 			}
-			//Start killing players in LMS, if we are in overtime
-			if(g_gametype.integer==GT_LMS && TeamHealthCount( -1, TEAM_FREE ) != ent->health &&(level.roundNumber==level.roundNumberStarted)&&(level.time>=level.roundStartTime+1000*g_elimination_roundtime.integer)) {
-				ent->damage=5;
-				G_Damage (ent, NULL, NULL, NULL, NULL, 
-					ent->damage, DAMAGE_NO_ARMOR, MOD_UNKNOWN);
-			}
-			else
-			if ( ent->health < client->ps.stats[STAT_MAX_HEALTH] ) {
-				ent->health+=g_regen.integer;
-				if(ent->health>client->ps.stats[STAT_MAX_HEALTH])
-					ent->health= client->ps.stats[STAT_MAX_HEALTH];
-			}
 		}
 
 		// count down armor when over max
@@ -810,118 +779,6 @@ void ClientThink_real( gentity_t *ent ) 
 //		G_Printf("serverTime >>>>>\n" );
 	} 
 
-//Here comes the unlagged bit!
-//unlagged - backward reconciliation #4
-	// frameOffset should be about the number of milliseconds into a frame 
-	// this command packet was received, depending on how fast the server
-	// does a G_RunFrame()
-	client->frameOffset = trap_Milliseconds() - level.frameStartTime;
-//unlagged - backward reconciliation #4
-
-
-//unlagged - lag simulation #3
-	// if the client wants to simulate outgoing packet loss
-/*	if ( client->pers.plOut ) {
-		// see if a random value is below the threshhold
-		float thresh = (float)client->pers.plOut / 100.0f;
-		if ( random() < thresh ) {
-			// do nothing at all if it is - this is a lost command
-			return;
-		}
-	}*/
-//unlagged - lag simulation #3
-
-
-//unlagged - true ping
-	// save the estimated ping in a queue for averaging later
-
-	// we use level.previousTime to account for 50ms lag correction
-	// besides, this will turn out numbers more like what players are used to
-	client->pers.pingsamples[client->pers.samplehead] = level.previousTime + client->frameOffset - ucmd->serverTime;
-	client->pers.samplehead++;
-	if ( client->pers.samplehead >= NUM_PING_SAMPLES ) {
-		client->pers.samplehead -= NUM_PING_SAMPLES;
-	}
-
-	// initialize the real ping
-	if ( g_truePing.integer ) {
-		int i, sum = 0;
-
-		// get an average of the samples we saved up
-		for ( i = 0; i < NUM_PING_SAMPLES; i++ ) {
-			sum += client->pers.pingsamples[i];
-		}
-
-		client->pers.realPing = sum / NUM_PING_SAMPLES;
-	}
-	else {
-		// if g_truePing is off, use the normal ping
-		client->pers.realPing = client->ps.ping;
-	}
-//unlagged - true ping
-
-
-//unlagged - lag simulation #2
-	// keep a queue of past commands
-/*	client->pers.cmdqueue[client->pers.cmdhead] = client->pers.cmd;
-	client->pers.cmdhead++;
-	if ( client->pers.cmdhead >= MAX_LATENT_CMDS ) {
-		client->pers.cmdhead -= MAX_LATENT_CMDS;
-	}
-
-	// if the client wants latency in commands (client-to-server latency)
-	if ( client->pers.latentCmds ) {
-		// save the actual command time
-		int time = ucmd->serverTime;
-
-		// find out which index in the queue we want
-		int cmdindex = client->pers.cmdhead - client->pers.latentCmds - 1;
-		while ( cmdindex < 0 ) {
-			cmdindex += MAX_LATENT_CMDS;
-		}
-
-		// read in the old command
-		client->pers.cmd = client->pers.cmdqueue[cmdindex];
-
-		// adjust the real ping to reflect the new latency
-		client->pers.realPing += time - ucmd->serverTime;
-	}*/
-//unlagged - lag simulation #2
-
-
-//unlagged - backward reconciliation #4
-	// save the command time *before* pmove_fixed messes with the serverTime,
-	// and *after* lag simulation messes with it :)
-	// attackTime will be used for backward reconciliation later (time shift)
-	client->attackTime = ucmd->serverTime;
-//unlagged - backward reconciliation #4
-
-
-//unlagged - smooth clients #1
-	// keep track of this for later - we'll use this to decide whether or not
-	// to send extrapolated positions for this client
-	client->lastUpdateFrame = level.framenum;
-//unlagged - smooth clients #1
-
-
-//unlagged - lag simulation #1
-	// if the client is adding latency to received snapshots (server-to-client latency)
-	/*if ( client->pers.latentSnaps ) {
-		// adjust the real ping
-		client->pers.realPing += client->pers.latentSnaps * (1000 / sv_fps.integer);
-		// adjust the attack time so backward reconciliation will work
-		client->attackTime -= client->pers.latentSnaps * (1000 / sv_fps.integer);
-	}*/
-//unlagged - lag simulation #1
-
-
-//unlagged - true ping
-	// make sure the true ping is over 0 - with cl_timenudge it can be less
-	if ( client->pers.realPing < 0 ) {
-		client->pers.realPing = 0;
-	}
-//unlagged - true ping
-
 	msec = ucmd->serverTime - client->ps.commandTime;
 	// following others may result in bad times, but we still want
 	// to check for follow toggles
@@ -954,7 +811,7 @@ void ClientThink_real( gentity_t *ent ) 
 	}
 
 	// spectators don't do much
-	if ( (client->sess.sessionTeam == TEAM_SPECTATOR) || client->isEliminated ) {
+	if ( client->sess.sessionTeam == TEAM_SPECTATOR ) {
 		if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD ) {
 			return;
 		}
@@ -1088,20 +945,12 @@ void ClientThink_real( gentity_t *ent ) 
 	if ( ent->client->ps.eventSequence != oldEventSequence ) {
 		ent->eventTime = level.time;
 	}
-//unlagged - smooth clients #2
-	// clients no longer do extrapolation if cg_smoothClients is 1, because
-	// skip correction is all handled server-side now
-	// since that's the case, it makes no sense to store the extra info
-	// in the client's snapshot entity, so let's save a little bandwidth
-/*
 	if (g_smoothClients.integer) {
 		BG_PlayerStateToEntityStateExtraPolate( &ent->client->ps, &ent->s, ent->client->ps.commandTime, qtrue );
 	}
 	else {
-*/
 		BG_PlayerStateToEntityState( &ent->client->ps, &ent->s, qtrue );
-//	}
-//unlagged - smooth clients #2
+	}
 	SendPendingPredictableEvents( &ent->client->ps );
 
 	if ( !( ent->client->ps.eFlags & EF_FIRING ) ) {
@@ -1148,20 +997,18 @@ void ClientThink_real( gentity_t *ent ) 
 	// check for respawning
 	if ( client->ps.stats[STAT_HEALTH] <= 0 ) {
 		// wait for the attack button to be pressed
-		// forcerespawn is to prevent users from waiting out powerups
-		// In Last man standing, we force a quick respawn, since
-		// the player must be able to loose health
-		// pressing attack or use is the normal respawn method
-		if ( ( level.time > client->respawnTime ) &&
-			( ( ( g_forcerespawn.integer > 0 ) && 
-			( level.time - client->respawnTime  > g_forcerespawn.integer * 1000 ) ) ||
-			( ( ( g_gametype.integer == GT_LMS ) ||
-			( g_gametype.integer == GT_ELIMINATION ) ||
-			( g_gametype.integer == GT_CTF_ELIMINATION ) ) &&
-			( level.time - client->respawnTime > 0 ) ) ||	
-			( ucmd->buttons & ( BUTTON_ATTACK | BUTTON_USE_HOLDABLE ) ) ) ) {
-
-			respawn( ent );
+		if ( level.time > client->respawnTime ) {
+			// forcerespawn is to prevent users from waiting out powerups
+			if ( g_forcerespawn.integer > 0 && 
+				( level.time - client->respawnTime ) > g_forcerespawn.integer * 1000 ) {
+				respawn( ent );
+				return;
+			}
+		
+			// pressing attack or use is the normal respawn method
+			if ( ucmd->buttons & ( BUTTON_ATTACK | BUTTON_USE_HOLDABLE ) ) {
+				respawn( ent );
+			}
 		}
 		return;
 	}
@@ -1183,10 +1030,9 @@ void ClientThink( int clientNum ) {
 	ent = g_entities + clientNum;
 	trap_GetUsercmd( clientNum, &ent->client->pers.cmd );
 
-	//Unlagged: commented out
 	// mark the time we got info, so we can display the
 	// phone jack if they don't get any for a while
-	//ent->client->lastCmdTime = level.time;
+	ent->client->lastCmdTime = level.time;
 
 	if ( !(ent->r.svFlags & SVF_BOT) && !g_synchronousClients.integer ) {
 		ClientThink_real( ent );
@@ -1211,7 +1057,6 @@ SpectatorClientEndFrame
 */
 void SpectatorClientEndFrame( gentity_t *ent ) {
 	gclient_t	*cl;
-	int i, preservedScore[MAX_PERSISTANT]; //for keeping in elimination
 
 	// if we are doing a chase cam or a remote view, grab the latest info
 	if ( ent->client->sess.spectatorState == SPECTATOR_FOLLOW ) {
@@ -1229,16 +1074,7 @@ void SpectatorClientEndFrame( gentity_t 
 			cl = &level.clients[ clientNum ];
 			if ( cl->pers.connected == CON_CONNECTED && cl->sess.sessionTeam != TEAM_SPECTATOR ) {
 				flags = (cl->ps.eFlags & ~(EF_VOTED | EF_TEAMVOTED)) | (ent->client->ps.eFlags & (EF_VOTED | EF_TEAMVOTED));
-				//this is here LMS/Elimination goes wrong with player follow
-				if(ent->client->sess.sessionTeam!=TEAM_SPECTATOR){
-					for(i = 0; i < MAX_PERSISTANT; i++)
-						preservedScore[i] = ent->client->ps.persistant[i];
-					ent->client->ps = cl->ps;
-					for(i = 0; i < MAX_PERSISTANT; i++)
-						ent->client->ps.persistant[i] = preservedScore[i];
-				}
-				else
-					ent->client->ps = cl->ps;
+				ent->client->ps = cl->ps;
 				ent->client->ps.pm_flags |= PMF_FOLLOW;
 				ent->client->ps.eFlags = flags;
 				return;
@@ -1250,9 +1086,6 @@ void SpectatorClientEndFrame( gentity_t 
 				}
 			}
 		}
-	
-		
-			
 	}
 
 	if ( ent->client->sess.spectatorState == SPECTATOR_SCOREBOARD ) {
@@ -1275,11 +1108,7 @@ void ClientEndFrame( gentity_t *ent ) {
 	int			i;
 	clientPersistant_t	*pers;
 
-//unlagged - smooth clients #1
-	int frames;
-//unlagged - smooth clients #1
-
-	if ( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) || ent->client->isEliminated ) {
+	if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) {
 		SpectatorClientEndFrame( ent );
 		return;
 	}
@@ -1334,57 +1163,25 @@ void ClientEndFrame( gentity_t *ent ) {
 	// apply all the damage taken this frame
 	P_DamageFeedback (ent);
 
-	//Unlagged: Commented out
 	// add the EF_CONNECTION flag if we haven't gotten commands recently
-	/*if ( level.time - ent->client->lastCmdTime > 1000 ) {
+	if ( level.time - ent->client->lastCmdTime > 1000 ) {
 		ent->s.eFlags |= EF_CONNECTION;
 	} else {
 		ent->s.eFlags &= ~EF_CONNECTION;
-	}*/
+	}
 
 	ent->client->ps.stats[STAT_HEALTH] = ent->health;	// FIXME: get rid of ent->health...
 
 	G_SetClientSound (ent);
 
-//Unlagged: Always do the else clause
 	// set the latest infor
-/*	if (g_smoothClients.integer) {
+	if (g_smoothClients.integer) {
 		BG_PlayerStateToEntityStateExtraPolate( &ent->client->ps, &ent->s, ent->client->ps.commandTime, qtrue );
 	}
-	else { */
+	else {
 		BG_PlayerStateToEntityState( &ent->client->ps, &ent->s, qtrue );
-//	}
-	SendPendingPredictableEvents( &ent->client->ps );
-
-//unlagged - smooth clients #1
-	// mark as not missing updates initially
-	ent->client->ps.eFlags &= ~EF_CONNECTION;
-
-	// see how many frames the client has missed
-	frames = level.framenum - ent->client->lastUpdateFrame - 1;
-
-	// don't extrapolate more than two frames
-	if ( frames > 2 ) {
-		frames = 2;
-
-		// if they missed more than two in a row, show the phone jack
-		ent->client->ps.eFlags |= EF_CONNECTION;
-		ent->s.eFlags |= EF_CONNECTION;
 	}
-
-	// did the client miss any frames?
-	if ( frames > 0 && g_smoothClients.integer ) {
-		// yep, missed one or more, so extrapolate the player's movement
-		G_PredictPlayerMove( ent, (float)frames / sv_fps.integer );
-		// save network bandwidth
-		SnapVector( ent->s.pos.trBase );
-	}
-//unlagged - smooth clients #1
-
-//unlagged - backward reconciliation #1
-	// store the client's position for backward reconciliation later
-	G_StoreHistory( ent );
-//unlagged - backward reconciliation #1
+	SendPendingPredictableEvents( &ent->client->ps );
 
 	// set the bit for the reachability area the client is currently in
 //	i = trap_AAS_PointReachabilityAreaIndex( ent->client->ps.origin );
Only in ioquake3svn1438/code/game: game.bat
Only in ioquake3svn1438/code/game: game.q3asm
Only in ioquake3svn1438/code/game: game.sh
Only in ioquake3svn1438/code/game: game_ta.bat
Only in ioquake3svn1438/code/game: game_ta.q3asm
Only in ioquake3svn1438/code/game: game_ta.sh
diff -upr ioquake3svn1438/code/game/g_arenas.c ioquake3serverFix/code/game/g_arenas.c
--- ioquake3svn1438/code/game/g_arenas.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_arenas.c	2008-08-09 11:28:21.000000000 -0500
@@ -43,7 +43,7 @@ void UpdateTournamentInfo( void ) {
 	int			playerClientNum;
 	int			n, accuracy, perfect,	msglen;
 	int			buflen;
-#ifdef MISSIONPACK // bk001205
+#ifdef MISSIONPACK
   int score1, score2;
 	qboolean won;
 #endif
@@ -85,7 +85,7 @@ void UpdateTournamentInfo( void ) {
 		}
 #ifdef MISSIONPACK
 		won = qfalse;
-		if (g_gametype.integer >= GT_CTF && g_ffa_gt==0) {
+		if (g_gametype.integer >= GT_CTF) {
 			score1 = level.teamScores[TEAM_RED];
 			score2 = level.teamScores[TEAM_BLUE];
 			if (level.clients[playerClientNum].sess.sessionTeam	== TEAM_RED) {
diff -upr ioquake3svn1438/code/game/g_bot.c ioquake3serverFix/code/game/g_bot.c
--- ioquake3svn1438/code/game/g_bot.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_bot.c	2008-08-09 11:28:21.000000000 -0500
@@ -43,7 +43,6 @@ typedef struct {
 	int		spawnTime;
 } botSpawnQueue_t;
 
-//static int			botBeginDelay = 0;  // bk001206 - unused, init
 static botSpawnQueue_t	botSpawnQueue[BOT_SPAWN_QUEUE_DEPTH];
 
 vmCvar_t bot_minplayers;
@@ -406,7 +405,7 @@ void G_CheckMinimumPlayers( void ) {
 	minplayers = bot_minplayers.integer;
 	if (minplayers <= 0) return;
 
-	if (g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if (g_gametype.integer >= GT_TEAM) {
 		if (minplayers >= g_maxclients.integer / 2) {
 			minplayers = (g_maxclients.integer / 2) -1;
 		}
@@ -446,7 +445,7 @@ void G_CheckMinimumPlayers( void ) {
 			}
 		}
 	}
-	else if (g_gametype.integer == GT_FFA || g_gametype.integer == GT_LMS) {
+	else if (g_gametype.integer == GT_FFA) {
 		if (minplayers >= g_maxclients.integer) {
 			minplayers = g_maxclients.integer-1;
 		}
@@ -659,7 +658,7 @@ static void G_AddBot( const char *name, 
 
 	// initialize the bot settings
 	if( !team || !*team ) {
-		if( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+		if( g_gametype.integer >= GT_TEAM ) {
 			if( PickTeam(clientNum) == TEAM_RED) {
 				team = "red";
 			}
diff -upr ioquake3svn1438/code/game/g_client.c ioquake3serverFix/code/game/g_client.c
--- ioquake3svn1438/code/game/g_client.c	2008-08-04 13:20:03.000000000 -0500
+++ ioquake3serverFix/code/game/g_client.c	2008-08-09 11:28:21.000000000 -0500
@@ -55,18 +55,6 @@ void SP_info_player_start(gentity_t *ent
 	SP_info_player_deathmatch( ent );
 }
 
-//Three for Double_D
-void SP_info_player_dd(gentity_t *ent) {
-}
-void SP_info_player_dd_red(gentity_t *ent) {
-}
-void SP_info_player_dd_blue(gentity_t *ent) {
-}
-
-//One for Standard Domination, not really a player spawn point
-void SP_domination_point(gentity_t *ent) {
-}
-
 /*QUAKED info_player_intermission (1 0 1) (-16 -16 -24) (16 16 32)
 The intermission will be viewed from this point.  Target an info_notnull for the view direction.
 */
@@ -318,24 +306,12 @@ SelectSpectatorSpawnPoint
 ============
 */
 gentity_t *SelectSpectatorSpawnPoint( vec3_t origin, vec3_t angles ) {
-	//gentity_t	*spot;
-
 	FindIntermissionPoint();
 
 	VectorCopy( level.intermission_origin, origin );
 	VectorCopy( level.intermission_angle, angles );
 
-
-
-	//for some reason we need to return an specific point in elimination (this might not be neccecary anymore but to be sure...)
-	//if(g_gametype.integer == GT_ELIMINATION)
-	//	return SelectSpawnPoint( vec3_origin, origin, angles );
-
-	//VectorCopy (origin,spot->s.origin);
-	//spot->s.origin[2] += 9;
-	//VectorCopy (angles, spot->s.angles);
-
-	return NULL; //spot;
+	return NULL;
 }
 
 /*
@@ -523,72 +499,12 @@ respawn
 void respawn( gentity_t *ent ) {
 	gentity_t	*tent;
 
-	if((g_gametype.integer!=GT_ELIMINATION && g_gametype.integer!=GT_CTF_ELIMINATION && g_gametype.integer !=GT_LMS) && !ent->client->isEliminated)
-	{
-		ent->client->isEliminated = qtrue; //must not be true in warmup
-		//Tried moving CopyToBodyQue
-	}
-        CopyToBodyQue (ent); //Unlinks ent
-
-	if(g_gametype.integer==GT_LMS) {
-		if(ent->client->pers.livesLeft>0)
-		{
-			//ent->client->pers.livesLeft--; Coutned down somewhere else
-			ent->client->isEliminated = qfalse;
-		}
-		else //We have used all our lives
-		{
-			if( ent->client->isEliminated!=qtrue) {
-				ent->client->isEliminated = qtrue;
-				if((g_lms_mode.integer == 2 || g_lms_mode.integer == 3) && level.roundNumber == level.roundNumberStarted)
-					LMSpoint();	
-                                //Sago: This is really bad
-                                //TODO: Try not to make people spectators here
-				ent->client->sess.spectatorState = PM_SPECTATOR;
-                                //We have to force spawn imidiantly to precent lag.
-                                ClientSpawn(ent);
-			}
-			return;
-		}
-	}
+	CopyToBodyQue (ent);
+	ClientSpawn(ent);
 
-	if((g_gametype.integer==GT_ELIMINATION || g_gametype.integer==GT_CTF_ELIMINATION || g_gametype.integer==GT_LMS) 
-			&& ent->client->ps.pm_type == PM_SPECTATOR && ent->client->ps.stats[STAT_HEALTH] > 0)
-		return;
-		ClientSpawn(ent);
-
-		// add a teleportation effect
-		if(g_gametype.integer!=GT_ELIMINATION && g_gametype.integer!=GT_CTF_ELIMINATION && g_gametype.integer!=GT_LMS)
-		{	
-			tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN );
-			tent->s.clientNum = ent->s.clientNum;
-		}
-}
-
-/*
-================
-respawnRound
-================
-*/
-void respawnRound( gentity_t *ent ) {
-	gentity_t	*tent;
-
-	//if(g_gametype.integer!=GT_ELIMINATION || !ent->client->isEliminated)
-	//{
-	//	ent->client->isEliminated  = qtrue;
-		//CopyToBodyQue (ent);
-	//}
-
-	//if(g_gametype.integer==GT_ELIMINATION && ent->client->ps.pm_type == PM_SPECTATOR && ent->client->ps.stats[STAT_HEALTH] > 0)
-	//	return;
-		ClientSpawn(ent);
-
-		// add a teleportation effect
-		if(g_gametype.integer!=GT_ELIMINATION && g_gametype.integer!=GT_CTF_ELIMINATION && g_gametype.integer!=GT_LMS)
-		{	
-			tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN );
-			tent->s.clientNum = ent->s.clientNum;
-		}
+	// add a teleportation effect
+	tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN );
+	tent->s.clientNum = ent->s.clientNum;
 }
 
 /*
@@ -619,227 +535,6 @@ team_t TeamCount( int ignoreClientNum, i
 
 /*
 ================
-TeamLivingCount
-
-Returns number of living players on a team
-================
-*/
-team_t TeamLivingCount( int ignoreClientNum, int team ) {
-	int		i;
-	int		count = 0;
-	qboolean	LMS = (g_gametype.integer==GT_LMS);
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( i == ignoreClientNum ) {
-			continue;
-		}
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-		//crash if g_gametype.integer is used here, why?
-		if ( level.clients[i].sess.sessionTeam == team && (level.clients[i].ps.stats[STAT_HEALTH]>0 || LMS) && !(level.clients[i].isEliminated)) {
-			count++;
-		}
-	}
-
-	return count;
-}
-
-/*
-================
-TeamHealthCount
-
-Count total number of healthpoints on teh teams used for draws in Elimination
-================
-*/
-
-team_t TeamHealthCount(int ignoreClientNum, int team ) {
-	int 		i;
-	int 		count = 0;
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( i == ignoreClientNum ) {
-			continue;
-		}
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-		//only count clients with positive health
-		if ( level.clients[i].sess.sessionTeam == team && (level.clients[i].ps.stats[STAT_HEALTH]>0)&& !(level.clients[i].isEliminated)) {
-			count+=level.clients[i].ps.stats[STAT_HEALTH];
-		}
-	}
-
-	return count;
-}
-
-
-/*
-================
-RespawnAll
-
-Forces all clients to respawn.
-================
-*/
-
-void RespawnAll(void)
-{
-	int i;
-	gentity_t	*client;
-	for(i=0;i<level.maxclients;i++)
-	{
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-
-		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR ) {
-			continue;
-		}
-		client = g_entities + i;
-		client->client->ps.pm_type = PM_NORMAL;
-		client->client->pers.livesLeft = g_lms_lives.integer;
-		respawnRound(client);
-	}
-	return;
-}
-
-/*
-================
-RespawnDead
-
-Forces all *DEAD* clients to respawn.
-================
-*/
-
-void RespawnDead(void)
-{
-	int i;
-	gentity_t	*client;
-	for(i=0;i<level.maxclients;i++)
-	{
-		
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-                client = g_entities + i;
-                client->client->pers.livesLeft = g_lms_lives.integer-1;
-		if ( level.clients[i].isEliminated == qfalse ){
-			continue;
-		}
-		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR ) {
-			continue;
-		}
-		
-		client->client->pers.livesLeft = g_lms_lives.integer;
-                
-		respawnRound(client);
-	}
-	return;
-}
-
-/*
-================
-DisableWeapons
-
-disables all weapons
-================
-*/
-
-void DisableWeapons(void)
-{
-	int i;
-	gentity_t	*client;
-	for(i=0;i<level.maxclients;i++)
-	{
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-
-		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR ) {
-			continue;
-		}
-		client = g_entities + i;
-		client->client->ps.pm_flags |= PMF_ELIMWARMUP;
-	}
-        ProximityMine_RemoveAll(); //Remove all the prox mines
-	return;
-}
-
-/*
-================
-EnableWeapons
-
-enables all weapons
-================
-*/
-
-void EnableWeapons(void)
-{
-	int i;
-	gentity_t	*client;
-	for(i=0;i<level.maxclients;i++)
-	{
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-
-		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR ) {
-			continue;
-		}
-
-		/*if ( level.clients[i].isEliminated == qtrue ){
-			continue;
-		}*/
-
-		client = g_entities + i;
-		client->client->ps.pm_flags &= ~PMF_ELIMWARMUP;
-	}
-	return;
-}
-
-/*
-================
-LMSpoint
-
-Gives a point to the lucky survivor
-================
-*/
-
-void LMSpoint(void)
-{
-	int i;
-	gentity_t	*client;
-	for(i=0;i<level.maxclients;i++)
-	{
-		if ( level.clients[i].pers.connected == CON_DISCONNECTED ) {
-			continue;
-		}
-
-		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR ) {
-			continue;
-		}
-
-		if ( level.clients[i].isEliminated == qtrue ){
-			continue;
-		}
-		
-		client = g_entities + i;
-		/*
-		Not good in mode 2 & 3
-		if ( client->health <= 0 ){
-			continue;
-		}
-		*/
-	
-		client->client->ps.persistant[PERS_SCORE] += 1;
-	}
-	
-	CalculateRanks();
-	return;
-}
-
-/*
-================
 TeamLeader
 
 Returns the client number of the team leader
@@ -964,12 +659,12 @@ static void ClientCleanName( const char 
 
 		// don't allow too many consecutive spaces
 		// don't count spaces in colorlessLen
-                if( ch == ' ' ) {
+		if( ch == ' ' ) {
 			spaces++;
 			if( spaces > 3 ) {
 				continue;
 			}
-                        *out++ = ch;
+			*out++ = ch;
 			len++;
 			continue;
 		}
@@ -1043,59 +738,15 @@ void ClientUserinfoChanged( int clientNu
 		client->pers.predictItemPickup = qtrue;
 	}
 
-//unlagged - client options
-	// see if the player has opted out
-	s = Info_ValueForKey( userinfo, "cg_delag" );
-	if ( !atoi( s ) ) {
-		client->pers.delag = 0;
-	} else {
-		client->pers.delag = atoi( s );
-	}
-
-	// see if the player is nudging his shots
-	s = Info_ValueForKey( userinfo, "cg_cmdTimeNudge" );
-	client->pers.cmdTimeNudge = atoi( s );
-
-	// see if the player wants to debug the backward reconciliation
-	/*s = Info_ValueForKey( userinfo, "cg_debugDelag" );
-	if ( !atoi( s ) ) {
-		client->pers.debugDelag = qfalse;
-	}
-	else {
-		client->pers.debugDelag = qtrue;
-	}*/
-
-	// see if the player is simulating incoming latency
-	//s = Info_ValueForKey( userinfo, "cg_latentSnaps" );
-	//client->pers.latentSnaps = atoi( s );
-
-	// see if the player is simulating outgoing latency
-	//s = Info_ValueForKey( userinfo, "cg_latentCmds" );
-	//client->pers.latentCmds = atoi( s );
-
-	// see if the player is simulating outgoing packet loss
-	//s = Info_ValueForKey( userinfo, "cg_plOut" );
-	//client->pers.plOut = atoi( s );
-//unlagged - client options
-
 	// set name
 	Q_strncpyz ( oldname, client->pers.netname, sizeof( oldname ) );
 	s = Info_ValueForKey (userinfo, "name");
 	ClientCleanName( s, client->pers.netname, sizeof(client->pers.netname) );
 
-	// N_G: this condition makes no sense to me and I'm not going to
-	// try finding out what it means, I've added parentheses according to
-	// evaluation rules of the original code so grab a
-	// parentheses pairing highlighting text editor and see for yourself
-	// if you got it right
-	//Sago: One redundant check and CTF Elim and LMS was missing. Not an important function and I might never have noticed, should properly be ||
-	if ( ( ( client->sess.sessionTeam == TEAM_SPECTATOR ) ||
-		( ( ( client->isEliminated ) /*||
-		( client->ps.pm_type == PM_SPECTATOR )*/ ) &&   //Sago: If this is true client.isEliminated or TEAM_SPECTATOR is true to and this is redundant
-		( g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) ) ) &&
-		( client->sess.spectatorState == SPECTATOR_SCOREBOARD ) ) {
-
-		Q_strncpyz( client->pers.netname, "scoreboard", sizeof(client->pers.netname) );
+	if ( client->sess.sessionTeam == TEAM_SPECTATOR ) {
+		if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD ) {
+			Q_strncpyz( client->pers.netname, "scoreboard", sizeof(client->pers.netname) );
+		}
 	}
 
 	if ( client->pers.connected == CON_CONNECTED ) {
@@ -1126,7 +777,7 @@ void ClientUserinfoChanged( int clientNu
 	client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth;
 
 	// set model
-	if( g_gametype.integer >= GT_TEAM && g_ffa_gt==0) {
+	if( g_gametype.integer >= GT_TEAM ) {
 		Q_strncpyz( model, Info_ValueForKey (userinfo, "team_model"), sizeof( model ) );
 		Q_strncpyz( headModel, Info_ValueForKey (userinfo, "team_headmodel"), sizeof( headModel ) );
 	} else {
@@ -1135,7 +786,7 @@ void ClientUserinfoChanged( int clientNu
 	}
 
 	// bots set their team a few frames later
-	if (g_gametype.integer >= GT_TEAM && g_ffa_gt==0 && g_entities[clientNum].r.svFlags & SVF_BOT) {
+	if (g_gametype.integer >= GT_TEAM && g_entities[clientNum].r.svFlags & SVF_BOT) {
 		s = Info_ValueForKey( userinfo, "team" );
 		if ( !Q_stricmp( s, "red" ) || !Q_stricmp( s, "r" ) ) {
 			team = TEAM_RED;
@@ -1151,8 +802,7 @@ void ClientUserinfoChanged( int clientNu
 	}
 
 /*	NOTE: all client side now
-Sago: I am not happy with this exception
- 
+
 	// team
 	switch( team ) {
 	case TEAM_RED:
@@ -1173,7 +823,7 @@ Sago: I am not happy with this exception
 */
 
 #ifdef MISSIONPACK
-	if (g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if (g_gametype.integer >= GT_TEAM) {
 		client->pers.teamInfo = qtrue;
 	} else {
 		s = Info_ValueForKey( userinfo, "teamoverlay" );
@@ -1208,27 +858,8 @@ Sago: I am not happy with this exception
 	teamLeader = client->sess.teamLeader;
 
 	// colors
-        if( g_gametype.integer >= GT_TEAM && g_ffa_gt==0 && g_instantgib.integer) {
-            switch(team) {
-                case TEAM_RED:
-                    c1[0] = COLOR_BLUE;
-                    c2[0] = COLOR_BLUE;
-                    c1[1] = 0;
-                    c2[1] = 0;
-                    break;
-                case TEAM_BLUE:
-                    c1[0] = COLOR_RED;
-                    c2[0] = COLOR_RED;
-                    c1[1] = 0;
-                    c2[1] = 0;
-                    break;
-                default:
-                    break;
-            }
-        } else {
-            strcpy(c1, Info_ValueForKey( userinfo, "color1" ));
-            strcpy(c2, Info_ValueForKey( userinfo, "color2" ));
-        }
+	strcpy(c1, Info_ValueForKey( userinfo, "color1" ));
+	strcpy(c2, Info_ValueForKey( userinfo, "color2" ));
 
 	strcpy(redTeam, Info_ValueForKey( userinfo, "g_redteam" ));
 	strcpy(blueTeam, Info_ValueForKey( userinfo, "g_blueteam" ));
@@ -1351,47 +982,9 @@ char *ClientConnect( int clientNum, qboo
 //	if ( !client->areabits )
 //		client->areabits = G_Alloc( (trap_AAS_PointReachabilityAreaIndex( NULL ) + 7) / 8 );
 
-//Sago: Changed the message
-//unlagged - backward reconciliation #5
-	// announce it
-	if ( g_delagHitscan.integer ) {
-		trap_SendServerCommand( clientNum, "print \"Full lag compensation is ON!\n\"" );
-	}
-	else {
-		trap_SendServerCommand( clientNum, "print \"Full lag compensation is OFF!\n\"" );
-	}
-//unlagged - backward reconciliation #5
-
 	return NULL;
 }
 
-void motd (gentity_t *ent)
-{
-	char motd[1024];
-	fileHandle_t motdFile;
-	int motdLen;
-	int fileLen;
-
-	strcpy (motd, "cp \"");
-	fileLen = trap_FS_FOpenFile("motd.cfg", &motdFile, FS_READ);
-	if(motdFile)
-	{
-		char * p;
-
-		motdLen = strlen(motd);
-		if((motdLen + fileLen) > (sizeof(motd) - 2))
-			fileLen = (sizeof(motd) - 2 - motdLen);
-		trap_FS_Read(motd + motdLen, fileLen, motdFile);
-		motd[motdLen + fileLen] = '"';
-		motd[motdLen + fileLen + 1] = 0;
-		trap_FS_FCloseFile(motdFile);
-
-		while((p = strchr(motd, '\r'))) //Remove carrier return. 0x0D
-		memmove(p, p + 1, motdLen + fileLen - (p - motd));
-	}
-	trap_SendServerCommand(ent - g_entities, motd);
-}
-
 /*
 ===========
 ClientBegin
@@ -1423,13 +1016,6 @@ void ClientBegin( int clientNum ) {
 	client->pers.enterTime = level.time;
 	client->pers.teamState.state = TEAM_BEGIN;
 
-	//Elimination:
-	client->pers.roundReached = 0; //We will spawn in next round
-	if(g_gametype.integer == GT_LMS) {
-		client->isEliminated = qtrue; //So player does not give a point in gamemode 2 and 3
-		//trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " will start dead\n\"", client->pers.netname) );
-	}
-
 	// save eflags around this, because changing teams will
 	// cause this to happen with a valid entity, and we
 	// want to make sure the teleport bit is set right
@@ -1442,13 +1028,7 @@ void ClientBegin( int clientNum ) {
 	// locate ent at a spawn point
 	ClientSpawn( ent );
 
-	// N_G: I'm really sure line 1333 is not what you meant
-	if( ( client->sess.sessionTeam != TEAM_SPECTATOR ) &&
-		( ( !( client->isEliminated ) /*&&
-		( ( !client->ps.pm_type ) == PM_SPECTATOR ) */ ) || //Sago: Yes, it made no sense 
-		( ( g_gametype.integer != GT_ELIMINATION ) &&
-		( g_gametype.integer != GT_CTF_ELIMINATION ) &&
-		( g_gametype.integer != GT_LMS ) ) ) ) {
+	if ( client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		// send event
 		tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN );
 		tent->s.clientNum = ent->s.clientNum;
@@ -1457,17 +1037,8 @@ void ClientBegin( int clientNum ) {
 			trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " entered the game\n\"", client->pers.netname) );
 		}
 	}
-        
-        motd ( ent );
-        
 	G_LogPrintf( "ClientBegin: %i\n", clientNum );
 
-	//Send domination point names:
-	if(g_gametype.integer == GT_DOMINATION) {
-		DominationPointNamesMessage(ent);
-		DominationPointStatusMessage(ent);
-	}
-
 	// count current clients and rank for scoreboard
 	CalculateRanks();
 }
@@ -1500,72 +1071,13 @@ void ClientSpawn(gentity_t *ent) {
 	index = ent - g_entities;
 	client = ent->client;
 
-	//In Elimination the player should not spawn if he have already spawned in the round (but not for spectators)
-	// N_G: You've obviously wanted something ELSE
-	//Sago: Yes, the !level.intermissiontime is currently redundant but it might still be the bast place to make the test, CheckElimination in g_main makes sure the next if will fail and the rest of the things this block does might not affect if in Intermission (I'll just test that)
-	if( 
-	( 
-		( 
-			g_gametype.integer == GT_ELIMINATION ||
-			g_gametype.integer == GT_CTF_ELIMINATION || (g_gametype.integer == GT_LMS && client->isEliminated)) &&
-			(!level.intermissiontime || level.warmupTime != 0)
-		) &&
-		( client->sess.sessionTeam != TEAM_SPECTATOR ) 
-	)
-	{
-		// N_G: Another condition that makes no sense to me, see for
-		// yourself if you really meant this
-		// Sago: I beleive the TeamCount is to make sure people can join even if the game can't start
-		if( ( level.roundNumber == level.roundNumberStarted ) ||
-			( (level.time < level.roundStartTime - g_elimination_activewarmup.integer*1000 ) &&
-			TeamCount( -1, TEAM_BLUE ) &&
-			TeamCount( -1, TEAM_RED )  ) )
-		{	
-			client->sess.spectatorState = SPECTATOR_FREE;
-			client->isEliminated = qtrue;
-			client->ps.pm_type = PM_SPECTATOR;
-			return;
-		}
-		else
-		{
-			client->pers.roundReached = level.roundNumber+1;
-			client->sess.spectatorState = SPECTATOR_NOT;
-			client->ps.pm_type = PM_NORMAL;
-			client->isEliminated = qfalse;
-		}
-	}
-
-	if(g_gametype.integer == GT_LMS && client->sess.sessionTeam != TEAM_SPECTATOR && (!level.intermissiontime || level.warmupTime != 0))
-	{
-		if(level.roundNumber==level.roundNumberStarted /*|| level.time<level.roundStartTime-g_elimination_activewarmup.integer*1000*/ && 1>client->pers.livesLeft)
-		{	
-			client->sess.spectatorState = SPECTATOR_FREE;
-			if( ent->client->isEliminated!=qtrue) {
-				client->isEliminated = qtrue;
-				if((g_lms_mode.integer == 2 || g_lms_mode.integer == 3) && level.roundNumber == level.roundNumberStarted)
-					LMSpoint();
-			}
-			client->ps.pm_type = PM_SPECTATOR;
-			return;
-		}
-		
-		client->sess.spectatorState = SPECTATOR_NOT;
-		client->ps.pm_type = PM_NORMAL;
-		client->isEliminated = qfalse;
-		if(client->pers.livesLeft>0)
-			client->pers.livesLeft--;
-	}
-
 	// find a spawn point
 	// do it before setting health back up, so farthest
 	// ranging doesn't count this client
-	if ((client->sess.sessionTeam == TEAM_SPECTATOR) 
-			|| ( (client->ps.pm_type == PM_SPECTATOR || client->isEliminated )  && (g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION) ) ) {
-		spawnPoint = SelectSpectatorSpawnPoint ( spawn_origin, spawn_angles);
-	} else if (g_gametype.integer == GT_DOUBLE_D) {
-		//Double Domination uses special spawn points:
-		spawnPoint = SelectDoubleDominationSpawnPoint (client->sess.sessionTeam, spawn_origin, spawn_angles);
-	} else if (g_gametype.integer >= GT_CTF && g_ffa_gt==0) {
+	if ( client->sess.sessionTeam == TEAM_SPECTATOR ) {
+		spawnPoint = SelectSpectatorSpawnPoint ( 
+						spawn_origin, spawn_angles);
+	} else if (g_gametype.integer >= GT_CTF ) {
 		// all base oriented team games use the CTF spawn points
 		spawnPoint = SelectCTFSpawnPoint ( 
 						client->sess.sessionTeam, 
@@ -1608,13 +1120,6 @@ void ClientSpawn(gentity_t *ent) {
 	flags = ent->client->ps.eFlags & (EF_TELEPORT_BIT | EF_VOTED | EF_TEAMVOTED);
 	flags ^= EF_TELEPORT_BIT;
 
-//unlagged - backward reconciliation #3
-	// we don't want players being backward-reconciled to the place they died
-	G_ResetHistory( ent );
-	// and this is as good a time as any to clear the saved state
-	ent->client->saved.leveltime = 0;
-//unlagged - backward reconciliation #3
-
 	// clear everything but the persistant data
 
 	saved = client->pers;
@@ -1669,17 +1174,12 @@ void ClientSpawn(gentity_t *ent) {
 	ent->waterlevel = 0;
 	ent->watertype = 0;
 	ent->flags = 0;
-        
-        //Sago: No one has hit the client yet!
-        client->lastSentFlying = -1;
 	
 	VectorCopy (playerMins, ent->r.mins);
 	VectorCopy (playerMaxs, ent->r.maxs);
 
 	client->ps.clientNum = index;
 
-if(g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION && g_gametype.integer != GT_LMS)
-{
 	client->ps.stats[STAT_WEAPONS] = ( 1 << WP_MACHINEGUN );
 	if ( g_gametype.integer == GT_TEAM ) {
 		client->ps.ammo[WP_MACHINEGUN] = 50;
@@ -1693,102 +1193,18 @@ if(g_gametype.integer != GT_ELIMINATION 
 
 	// health will count down towards max_health
 	ent->health = client->ps.stats[STAT_HEALTH] = client->ps.stats[STAT_MAX_HEALTH] + 25;
-}
-else
-{
-	client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GAUNTLET );
-	client->ps.ammo[WP_GAUNTLET] = -1;
-	client->ps.ammo[WP_GRAPPLING_HOOK] = -1;
-	if (g_elimination_machinegun.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_MACHINEGUN );
-		client->ps.ammo[WP_MACHINEGUN] = g_elimination_machinegun.integer;
-	}
-	if (g_elimination_shotgun.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_SHOTGUN );
-		client->ps.ammo[WP_SHOTGUN] = g_elimination_shotgun.integer;
-	}
-	if (g_elimination_grenade.integer > 0) {	
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GRENADE_LAUNCHER );
-		client->ps.ammo[WP_GRENADE_LAUNCHER] = g_elimination_grenade.integer;
-	}
-	if (g_elimination_rocket.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_ROCKET_LAUNCHER );
-		client->ps.ammo[WP_ROCKET_LAUNCHER] = g_elimination_rocket.integer;
-	}
-	if (g_elimination_lightning.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_LIGHTNING );
-		client->ps.ammo[WP_LIGHTNING] = g_elimination_lightning.integer;
-	}
-	if (g_elimination_railgun.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_RAILGUN );
-		client->ps.ammo[WP_RAILGUN] = g_elimination_railgun.integer;
-	}
-	if (g_elimination_plasmagun.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_PLASMAGUN );
-		client->ps.ammo[WP_PLASMAGUN] = g_elimination_plasmagun.integer;
-	}
-	if (g_elimination_bfg.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_BFG );
-		client->ps.ammo[WP_BFG] = g_elimination_bfg.integer;
-	}
-//#ifdef MISSIONPACK
-	if (g_elimination_nail.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_NAILGUN );
-		client->ps.ammo[WP_NAILGUN] = g_elimination_nail.integer;
-	}
-	if (g_elimination_mine.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_PROX_LAUNCHER );
-		client->ps.ammo[WP_PROX_LAUNCHER] = g_elimination_mine.integer;
-	}
-	if (g_elimination_chain.integer > 0) {
-		client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_CHAINGUN );
-		client->ps.ammo[WP_CHAINGUN] = g_elimination_chain.integer;
-	}
-//#endif
-	
-	ent->health = client->ps.stats[STAT_ARMOR] = g_elimination_startArmor.integer; //client->ps.stats[STAT_MAX_HEALTH]*2;
-	ent->health = client->ps.stats[STAT_HEALTH] = g_elimination_startHealth.integer; //client->ps.stats[STAT_MAX_HEALTH]*2;	
-
-	
-	//	ent->health = client->ps.stats[STAT_HEALTH] = 0;
-}
-	//Instantgib mode, replace weapons with rail (and maybe gauntlet)
-	if(g_instantgib.integer)
-	{
-		client->ps.stats[STAT_WEAPONS] = ( 1 << WP_RAILGUN );
-		client->ps.ammo[WP_RAILGUN] = 999; //Don't display any ammo
-		if(g_instantgib.integer>1)
-		{
-			 client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GAUNTLET );
-	              	client->ps.ammo[WP_GAUNTLET] = -1;
-		}
-	}
-
-	//nexuiz style rocket arena (rocket launcher only)
-	if(g_rockets.integer) 
-	{
-		client->ps.stats[STAT_WEAPONS] = ( 1 << WP_ROCKET_LAUNCHER );
-		client->ps.ammo[WP_ROCKET_LAUNCHER] = 999;
-	}
 
 	G_SetOrigin( ent, spawn_origin );
 	VectorCopy( spawn_origin, client->ps.origin );
 
 	// the respawned flag will be cleared after the attack and jump keys come up
 	client->ps.pm_flags |= PMF_RESPAWNED;
-	if(g_gametype.integer==GT_ELIMINATION || g_gametype.integer==GT_CTF_ELIMINATION || g_gametype.integer==GT_LMS)	
-		client->ps.pm_flags |= PMF_ELIMWARMUP;
 
 	trap_GetUsercmd( client - level.clients, &ent->client->pers.cmd );
 	SetClientViewAngle( ent, spawn_angles );
 
-	if ( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) || ((client->ps.pm_type == PM_SPECTATOR || client->isEliminated) && 
-		(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) ) ) {
-                //Sago: Lets see if this fixes the bots only bug - loose all point on dead bug. (It didn't)
-            /*if(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) {
-                G_KillBox( ent );
-		trap_LinkEntity (ent);
-            }*/
+	if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) {
+
 	} else {
 		G_KillBox( ent );
 		trap_LinkEntity (ent);
@@ -1835,8 +1251,7 @@ else
 	ClientThink( ent-g_entities );
 
 	// positively link the client, even if the command times are weird
-	if ( (ent->client->sess.sessionTeam != TEAM_SPECTATOR) || ( (!client->isEliminated || client->ps.pm_type != PM_SPECTATOR)&& 
-		(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) ) ) {
+	if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		BG_PlayerStateToEntityState( &client->ps, &ent->s, qtrue );
 		VectorCopy( ent->client->ps.origin, ent->r.currentOrigin );
 		trap_LinkEntity( ent );
@@ -1878,7 +1293,7 @@ void ClientDisconnect( int clientNum ) {
 
 	// stop any following clients
 	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( (level.clients[i].sess.sessionTeam == TEAM_SPECTATOR || level.clients[i].ps.pm_type == PM_SPECTATOR)
+		if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR
 			&& level.clients[i].sess.spectatorState == SPECTATOR_FOLLOW
 			&& level.clients[i].sess.spectatorClient == clientNum ) {
 			StopFollowing( &g_entities[i] );
diff -upr ioquake3svn1438/code/game/g_cmds.c ioquake3serverFix/code/game/g_cmds.c
--- ioquake3svn1438/code/game/g_cmds.c	2008-06-29 17:03:27.000000000 -0500
+++ ioquake3serverFix/code/game/g_cmds.c	2008-08-09 11:28:21.000000000 -0500
@@ -53,10 +53,7 @@ void DeathmatchScoreboardMessage( gentit
 		if ( cl->pers.connected == CON_CONNECTING ) {
 			ping = -1;
 		} else {
-//unlagged - true ping
-			//ping = cl->ps.ping < 999 ? cl->ps.ping : 999;
-			ping = cl->pers.realPing < 999 ? cl->pers.realPing : 999;
-//unlagged - true ping
+			ping = cl->ps.ping < 999 ? cl->ps.ping : 999;
 		}
 
 		if( cl->accuracy_shots ) {
@@ -67,34 +64,17 @@ void DeathmatchScoreboardMessage( gentit
 		}
 		perfect = ( cl->ps.persistant[PERS_RANK] == 0 && cl->ps.persistant[PERS_KILLED] == 0 ) ? 1 : 0;
 
-		if(g_gametype.integer == GT_LMS) {
-			Com_sprintf (entry, sizeof(entry),
-				" %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i", level.sortedClients[i],
-				cl->ps.persistant[PERS_SCORE], ping, (level.time - cl->pers.enterTime)/60000,
-				scoreFlags, g_entities[level.sortedClients[i]].s.powerups, accuracy, 
-				cl->ps.persistant[PERS_IMPRESSIVE_COUNT],
-				cl->ps.persistant[PERS_EXCELLENT_COUNT],
-				cl->ps.persistant[PERS_GAUNTLET_FRAG_COUNT], 
-				cl->ps.persistant[PERS_DEFEND_COUNT], 
-				cl->ps.persistant[PERS_ASSIST_COUNT], 
-				perfect,
-				cl->ps.persistant[PERS_CAPTURES],
-				cl->pers.livesLeft + (cl->isEliminated?0:1));
-		}
-		else {
-			Com_sprintf (entry, sizeof(entry),
-				" %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i", level.sortedClients[i],
-				cl->ps.persistant[PERS_SCORE], ping, (level.time - cl->pers.enterTime)/60000,
-				scoreFlags, g_entities[level.sortedClients[i]].s.powerups, accuracy, 
-				cl->ps.persistant[PERS_IMPRESSIVE_COUNT],
-				cl->ps.persistant[PERS_EXCELLENT_COUNT],
-				cl->ps.persistant[PERS_GAUNTLET_FRAG_COUNT], 
-				cl->ps.persistant[PERS_DEFEND_COUNT], 
-				cl->ps.persistant[PERS_ASSIST_COUNT], 
-				perfect,
-				cl->ps.persistant[PERS_CAPTURES],
-				cl->isEliminated);
-		}
+		Com_sprintf (entry, sizeof(entry),
+			" %i %i %i %i %i %i %i %i %i %i %i %i %i %i", level.sortedClients[i],
+			cl->ps.persistant[PERS_SCORE], ping, (level.time - cl->pers.enterTime)/60000,
+			scoreFlags, g_entities[level.sortedClients[i]].s.powerups, accuracy, 
+			cl->ps.persistant[PERS_IMPRESSIVE_COUNT],
+			cl->ps.persistant[PERS_EXCELLENT_COUNT],
+			cl->ps.persistant[PERS_GAUNTLET_FRAG_COUNT], 
+			cl->ps.persistant[PERS_DEFEND_COUNT], 
+			cl->ps.persistant[PERS_ASSIST_COUNT], 
+			perfect,
+			cl->ps.persistant[PERS_CAPTURES]);
 		j = strlen(entry);
 		if (stringlength + j > 1024)
 			break;
@@ -102,102 +82,11 @@ void DeathmatchScoreboardMessage( gentit
 		stringlength += j;
 	}
 
-	trap_SendServerCommand( ent-g_entities, va("scores %i %i %i %i%s", i, 
-		level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE], level.roundStartTime,
+	trap_SendServerCommand( ent-g_entities, va("scores %i %i %i%s", i, 
+		level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE],
 		string ) );
 }
 
-/*
-==================
-DominationPointStatusMessage
-
-==================
-*/
-void DominationPointStatusMessage( gentity_t *ent ) {
-	char		entry[20]; //Will more likely be 2... in fact cannot be more since we are the server
-	char		string[20*(MAX_DOMINATION_POINTS+1)];
-	int			stringlength;
-	int i, j;
-
-	string[0] = 0;
-	stringlength = 0;
-
-	for(i = 0;i<MAX_DOMINATION_POINTS && i<level.domination_points_count; i++) {
-		Com_sprintf (entry, sizeof(entry)," %i",level.pointStatusDom[i]);
-		j = strlen(entry);
-		if (stringlength + j > 20*MAX_DOMINATION_POINTS)
-			break;
-		strcpy (string + stringlength, entry);
-		stringlength += j;
-	}
-
-	trap_SendServerCommand( ent-g_entities, va("domStatus %i%s", level.domination_points_count, string ) );
-}
-
-/*
-==================
-EliminationMessage
-
-==================
-*/
-
-void EliminationMessage(gentity_t *ent) {
-	trap_SendServerCommand( ent-g_entities, va("elimination %i %i %i", 
-		level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE], level.roundStartTime) );
-}
-
-/*
-==================
-DoubleDominationScoreTime
-
-==================
-*/
-void DoubleDominationScoreTimeMessage( gentity_t *ent ) {
-	trap_SendServerCommand( ent-g_entities, va("ddtaken %i", level.timeTaken));
-}
-
-/*
-==================
-DominationPointNames
-==================
-*/
-
-void DominationPointNamesMessage( gentity_t *ent ) {
-	char text[MAX_DOMINATION_POINTS_NAMES*MAX_DOMINATION_POINTS];
-	int i,j;	
-	qboolean nullFound;
-	for(i=0;i<MAX_DOMINATION_POINTS;i++) {
-		Q_strncpyz(text+i*MAX_DOMINATION_POINTS_NAMES,level.domination_points_names[i],MAX_DOMINATION_POINTS_NAMES-1);
-		if(i!=MAX_DOMINATION_POINTS-1) {
-			//Don't allow "/0"!
-			nullFound = qfalse;
-			for(j=i*MAX_DOMINATION_POINTS_NAMES; j<(i+1)*MAX_DOMINATION_POINTS_NAMES;j++) {
-				if(text[j]==0)
-					nullFound = qtrue;
-				if(nullFound)
-					text[j] = ' ';
-			}
-		}
-		text[MAX_DOMINATION_POINTS_NAMES*MAX_DOMINATION_POINTS-2]=0x19;
-		text[MAX_DOMINATION_POINTS_NAMES*MAX_DOMINATION_POINTS-1]=0;
-	}
-	trap_SendServerCommand( ent-g_entities, va("dompointnames %i \"%s\"", level.domination_points_count, text));
-}
-
-/*
-==================
-AttackingTeamMessage
-
-==================
-*/
-void AttackingTeamMessage( gentity_t *ent ) {
-	int team;
-	if ( (level.eliminationSides+level.roundNumber)%2 == 0 )
-		team = TEAM_RED;
-	else
-		team = TEAM_BLUE;
-	trap_SendServerCommand( ent-g_entities, va("attackingteam %i", team));
-}
 
 /*
 ==================
@@ -573,7 +462,7 @@ Cmd_Kill_f
 =================
 */
 void Cmd_Kill_f( gentity_t *ent ) {
-	if ( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) || ent->client->isEliminated ) {
+	if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) {
 		return;
 	}
 	if (ent->health <= 0) {
@@ -643,7 +532,7 @@ void SetTeam( gentity_t *ent, char *s ) 
 	} else if ( !Q_stricmp( s, "spectator" ) || !Q_stricmp( s, "s" ) ) {
 		team = TEAM_SPECTATOR;
 		specState = SPECTATOR_FREE;
-	} else if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	} else if ( g_gametype.integer >= GT_TEAM ) {
 		// if running a team game, assign player to one of the teams
 		specState = SPECTATOR_NOT;
 		if ( !Q_stricmp( s, "red" ) || !Q_stricmp( s, "r" ) ) {
@@ -755,16 +644,8 @@ to free floating spectator mode
 =================
 */
 void StopFollowing( gentity_t *ent ) {
-	if(g_gametype.integer<GT_ELIMINATION || g_gametype.integer>GT_LMS)
-	{
-		//Shouldn't this already be the case?
-		ent->client->ps.persistant[ PERS_TEAM ] = TEAM_SPECTATOR;	
-		ent->client->sess.sessionTeam = TEAM_SPECTATOR;	
-	}
-	else {
-		ent->client->ps.stats[STAT_HEALTH] = 0;
-		ent->health = 0;
-	}
+	ent->client->ps.persistant[ PERS_TEAM ] = TEAM_SPECTATOR;	
+	ent->client->sess.sessionTeam = TEAM_SPECTATOR;	
 	ent->client->sess.spectatorState = SPECTATOR_FREE;
 	ent->client->ps.pm_flags &= ~PMF_FOLLOW;
 	ent->r.svFlags &= ~SVF_BOT;
@@ -827,10 +708,6 @@ void Cmd_Follow_f( gentity_t *ent ) {
 	int		i;
 	char	arg[MAX_TOKEN_CHARS];
 
-	//Don't folow in elimination mode, or player will get wrong score
-	/*if(ent->client->sess.sessionTeam != TEAM_SPECTATOR && g_gametype.integer>=GT_ELIMINATION && g_gametype.integer<=GT_LMS)
-		return;*/
-	
 	if ( trap_Argc() != 2 ) {
 		if ( ent->client->sess.spectatorState == SPECTATOR_FOLLOW ) {
 			StopFollowing( ent );
@@ -838,22 +715,19 @@ void Cmd_Follow_f( gentity_t *ent ) {
 		return;
 	}
 
-
 	trap_Argv( 1, arg, sizeof( arg ) );
 	i = ClientNumberFromString( ent, arg );
 	if ( i == -1 ) {
 		return;
 	}
 
-	
-
 	// can't follow self
 	if ( &level.clients[ i ] == ent->client ) {
 		return;
 	}
 
-	// can't follow another spectator (or an eliminated player)
-	if ( (level.clients[ i ].sess.sessionTeam == TEAM_SPECTATOR) || level.clients[ i ].isEliminated) {
+	// can't follow another spectator
+	if ( level.clients[ i ].sess.sessionTeam == TEAM_SPECTATOR ) {
 		return;
 	}
 
@@ -864,8 +738,7 @@ void Cmd_Follow_f( gentity_t *ent ) {
 	}
 
 	// first set them to spectator
-	//if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR ) {
-	if ( ent->client->sess.spectatorState == SPECTATOR_NOT ) {
+	if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		SetTeam( ent, "spectator" );
 	}
 
@@ -913,7 +786,7 @@ void Cmd_FollowCycle_f( gentity_t *ent, 
 		}
 
 		// can't follow another spectator
-		if ( (level.clients[ clientnum ].sess.sessionTeam == TEAM_SPECTATOR) || level.clients[ clientnum ].isEliminated) {
+		if ( level.clients[ clientnum ].sess.sessionTeam == TEAM_SPECTATOR ) {
 			continue;
 		}
 
@@ -972,7 +845,7 @@ void G_Say( gentity_t *ent, gentity_t *t
 	char		text[MAX_SAY_TEXT];
 	char		location[64];
 
-	if ( (g_gametype.integer < GT_TEAM || g_ffa_gt == 1) && mode == SAY_TEAM ) {
+	if ( g_gametype.integer < GT_TEAM && mode == SAY_TEAM ) {
 		mode = SAY_ALL;
 	}
 
@@ -994,7 +867,7 @@ void G_Say( gentity_t *ent, gentity_t *t
 		color = COLOR_CYAN;
 		break;
 	case SAY_TELL:
-		if (target && g_gametype.integer >= GT_TEAM && g_ffa_gt != 1 &&
+		if (target && g_gametype.integer >= GT_TEAM &&
 			target->client->sess.sessionTeam == ent->client->sess.sessionTeam &&
 			Team_GetLocationMsg(ent, location, sizeof(location)))
 			Com_sprintf (name, sizeof(name), EC"[%s%c%c"EC"] (%s)"EC": ", ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE, location );
@@ -1127,7 +1000,7 @@ void G_Voice( gentity_t *ent, gentity_t 
 	int			j;
 	gentity_t	*other;
 
-	if ( (g_gametype.integer < GT_TEAM || g_ffa_gt==1 ) && mode == SAY_TEAM ) {
+	if ( g_gametype.integer < GT_TEAM && mode == SAY_TEAM ) {
 		mode = SAY_ALL;
 	}
 
@@ -1260,7 +1133,7 @@ static void Cmd_VoiceTaunt_f( gentity_t 
 		}
 	}
 
-	if (g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if (g_gametype.integer >= GT_TEAM) {
 		// praise a team mate who just got a reward
 		for(i = 0; i < MAX_CLIENTS; i++) {
 			who = g_entities + i;
@@ -1331,169 +1204,11 @@ static const char *gameNames[] = {
 	"Capture the Flag",
 	"One Flag CTF",
 	"Overload",
-	"Harvester",
-	"Elimination",
-	"CTF Elimination",
-	"Last Man Standing",
-	"Double Domination",
-	"Domination"
+	"Harvester"
 };
 
 /*
 ==================
-allowedVote
-==================
- */
-#define MAX_VOTENAME_LENGTH 14 //currently the longest string is "/map_restart/\0" (14 chars)
-int allowedVote(char *commandStr) {
-    char tempStr[MAX_VOTENAME_LENGTH]; 
-    int length;
-    char voteNames[MAX_CVAR_VALUE_STRING];
-    trap_Cvar_VariableStringBuffer( "g_voteNames", voteNames, sizeof( voteNames ) );
-    if(!Q_stricmp(voteNames, "*" ))
-        return qtrue; //if star, everything is allowed
-    length = strlen(commandStr);
-    if(length>MAX_VOTENAME_LENGTH-3)
-    {
-        //Error: too long
-        return qfalse;
-    }
-    tempStr[0] = '/';
-    strncpy(&tempStr[1],commandStr,length);
-    tempStr[length+1] = '/';
-    tempStr[length+2] = '\0';
-    if(Q_stristr(voteNames,tempStr) != NULL)
-        return qtrue;
-    else
-        return qfalse;
-}
-
-/*
-==================
-allowedMap
-==================
- */
-#define MAX_MAPNAME_LENGTH 34
-int allowedMap(char *mapname) {
-    char tempStr[MAX_MAPNAME_LENGTH]; 
-    int length;
-    char voteMaps[MAX_CVAR_VALUE_STRING]; //= g_voteMaps.string;
-    trap_Cvar_VariableStringBuffer( "g_voteMaps", voteMaps, sizeof( voteMaps ) );
-    
-    if(!Q_stricmp(voteMaps, "*" ))
-        return qtrue; //if star, everything is allowed
-    length = strlen(mapname);
-    if(length>MAX_MAPNAME_LENGTH-3)
-    {
-        //Error: too long
-        return qfalse;
-    }
-    tempStr[0] = '/';
-    strncpy(&tempStr[1],mapname,length);
-    tempStr[length+1] = '/';
-    tempStr[length+2] = '\0';
-    
-    if(Q_stristr(voteMaps,tempStr) != NULL) {
-        return qtrue;
-    }
-    trap_Cvar_VariableStringBuffer( "g_voteMaps1", voteMaps, sizeof( voteMaps ) );
-    if(Q_stristr(voteMaps,tempStr) != NULL) {
-        return qtrue;
-    }
-    trap_Cvar_VariableStringBuffer( "g_voteMaps2", voteMaps, sizeof( voteMaps ) );
-    if(Q_stristr(voteMaps,tempStr) != NULL) {
-        return qtrue;
-    }
-    trap_Cvar_VariableStringBuffer( "g_voteMaps3", voteMaps, sizeof( voteMaps ) );
-    if(Q_stristr(voteMaps,tempStr) != NULL) {
-        return qtrue;
-    }
-    trap_Cvar_VariableStringBuffer( "g_voteMaps4", voteMaps, sizeof( voteMaps ) );
-    if(Q_stristr(voteMaps,tempStr) != NULL) {
-        return qtrue;
-    }
-    trap_Cvar_VariableStringBuffer( "g_voteMaps", voteMaps, sizeof( voteMaps ) );
-    G_Printf("Maps on server: %s ",voteMaps);
-    trap_Cvar_VariableStringBuffer( "g_voteMaps1", voteMaps, sizeof( voteMaps ) );
-    G_Printf("%s ",voteMaps);
-    trap_Cvar_VariableStringBuffer( "g_voteMaps2", voteMaps, sizeof( voteMaps ) );
-    G_Printf("%s ",voteMaps);
-    trap_Cvar_VariableStringBuffer( "g_voteMaps3", voteMaps, sizeof( voteMaps ) );
-    G_Printf("%s ",voteMaps);
-    trap_Cvar_VariableStringBuffer( "g_voteMaps4", voteMaps, sizeof( voteMaps ) );
-    G_Printf("%s\n",voteMaps);
-    //The map was not found
-    return qfalse;
-}
-
-/*
-==================
-allowedGametype
-==================
- */
-#define MAX_GAMETYPENAME_LENGTH 5 //currently the longest string is "/12/\0" (5 chars)
-int allowedGametype(char *gametypeStr) {
-    char tempStr[MAX_GAMETYPENAME_LENGTH]; 
-    int length;
-    char voteGametypes[MAX_CVAR_VALUE_STRING];
-    trap_Cvar_VariableStringBuffer( "g_voteGametypes", voteGametypes, sizeof( voteGametypes ) );
-    if(!Q_stricmp(voteGametypes, "*" ))
-        return qtrue; //if star, everything is allowed
-    length = strlen(gametypeStr);
-    if(length>MAX_GAMETYPENAME_LENGTH-3)
-    {
-        //Error: too long
-        return qfalse;
-    }
-    tempStr[0] = '/';
-    strncpy(&tempStr[1],gametypeStr,length);
-    tempStr[length+1] = '/';
-    tempStr[length+2] = '\0';
-    if(Q_stristr(voteGametypes,tempStr) != NULL)
-        return qtrue;
-    else {
-        return qfalse;
-    }
-}
-
-/*
-==================
-allowedTimelimit
-==================
- */
-int allowedTimelimit(int limit) {
-    int min, max;
-    min = g_voteMinTimelimit.integer;
-    max = g_voteMaxTimelimit.integer;
-    if(limit<min && limit != 0)
-        return qfalse;
-    if(max!=0 && limit>max)
-        return qfalse;
-    if(limit==0 && max > 0)
-        return qfalse;
-    return qtrue;
-}
-
-/*
-==================
-allowedFraglimit
-==================
- */
-int allowedFraglimit(int limit) {
-    int min, max;
-    min = g_voteMinFraglimit.integer;
-    max = g_voteMaxFraglimit.integer;
-    if(limit<min && limit != 0)
-        return qfalse;
-    if(max != 0 && limit>max)
-        return qfalse;
-    if(limit==0 && max > 0)
-        return qfalse;
-    return qtrue;
-}
-
-/*
-==================
 Cmd_CallVote_f
 ==================
 */
@@ -1501,7 +1216,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 	int		i;
 	char	arg1[MAX_STRING_TOKENS];
 	char	arg2[MAX_STRING_TOKENS];
-        char    buffer[256];
 
 	if ( !g_allowVote.integer ) {
 		trap_SendServerCommand( ent-g_entities, "print \"Voting not allowed here.\n\"" );
@@ -1529,8 +1243,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 		trap_SendServerCommand( ent-g_entities, "print \"Invalid vote string.\n\"" );
 		return;
 	}
-        
-        
 
 	if ( !Q_stricmp( arg1, "map_restart" ) ) {
 	} else if ( !Q_stricmp( arg1, "nextmap" ) ) {
@@ -1543,60 +1255,9 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 	} else if ( !Q_stricmp( arg1, "fraglimit" ) ) {
 	} else {
 		trap_SendServerCommand( ent-g_entities, "print \"Invalid vote string.\n\"" );
-		//trap_SendServerCommand( ent-g_entities, "print \"Vote commands are: map_restart, nextmap, map <mapname>, g_gametype <n>, kick <player>, clientkick <clientnum>, g_doWarmup, timelimit <time>, fraglimit <frags>.\n\"" );
-                buffer[0] = 0;
-                strcat(buffer,"print \"Vote commands are: ");
-                if(allowedVote("map_restart"))
-                    strcat(buffer, "map_restart, ");
-                if(allowedVote("nextmap"))
-                    strcat(buffer, "nextmap, ");
-                if(allowedVote("map"))
-                    strcat(buffer, "map <mapname>, ");
-                if(allowedVote("g_gametype"))
-                    strcat(buffer, "g_gametype <n>, ");
-                if(allowedVote("kick"))
-                    strcat(buffer, "kick <player>, ");
-                if(allowedVote("clientkick"))
-                    strcat(buffer, "clientkick <clientnum>, ");
-                if(allowedVote("g_doWarmup"))
-                    strcat(buffer, "g_doWarmup, ");
-                if(allowedVote("timelimit"))
-                    strcat(buffer, "timelimit <time>, ");
-                if(allowedVote("fraglimit"))
-                    strcat(buffer, "fraglimit <frags>, ");
-                buffer[strlen(buffer)-2] = 0;
-                strcat(buffer, ".\"");
-                trap_SendServerCommand( ent-g_entities, buffer);
-		return;
-	}
-        
-        if(!allowedVote(arg1)) {
-                trap_SendServerCommand( ent-g_entities, "print \"Not allowed here.\n\"" );
-                buffer[0] = 0;
-                strcat(buffer,"print \"Vote commands are: ");
-                if(allowedVote("map_restart"))
-                    strcat(buffer, "map_restart, ");
-                if(allowedVote("nextmap"))
-                    strcat(buffer, "nextmap, ");
-                if(allowedVote("map"))
-                    strcat(buffer, "map <mapname>, ");
-                if(allowedVote("g_gametype"))
-                    strcat(buffer, "g_gametype <n>, ");
-                if(allowedVote("kick"))
-                    strcat(buffer, "kick <player>, ");
-                if(allowedVote("clientkick"))
-                    strcat(buffer, "clientkick <clientnum>, ");
-                if(allowedVote("g_doWarmup"))
-                    strcat(buffer, "g_doWarmup, ");
-                if(allowedVote("timelimit"))
-                    strcat(buffer, "timelimit <time>, ");
-                if(allowedVote("fraglimit"))
-                    strcat(buffer, "fraglimit <frags>, ");
-                buffer[strlen(buffer)-2] = 0;
-                strcat(buffer, ".\"");
-                trap_SendServerCommand( ent-g_entities, buffer);
+		trap_SendServerCommand( ent-g_entities, "print \"Vote commands are: map_restart, nextmap, map <mapname>, g_gametype <n>, kick <player>, clientkick <clientnum>, g_doWarmup, timelimit <time>, fraglimit <frags>.\n\"" );
 		return;
-        }
+	}
 
 	// if there is still a vote to be executed
 	if ( level.voteExecuteTime ) {
@@ -1611,11 +1272,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 			trap_SendServerCommand( ent-g_entities, "print \"Invalid gametype.\n\"" );
 			return;
 		}
-                
-                if(!allowedGametype(arg2)){
-                    trap_SendServerCommand( ent-g_entities, "print \"Gametype is not available.\n\"" );
-                    return;
-                }
 
 		Com_sprintf( level.voteString, sizeof( level.voteString ), "%s %d", arg1, i );
 		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s %s", arg1, gameNames[i] );
@@ -1623,11 +1279,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 		// special case for map changes, we want to reset the nextmap setting
 		// this allows a player to change maps, but not upset the map rotation
 		char	s[MAX_STRING_CHARS];
-                
-                if(!allowedMap(arg2)){
-                    trap_SendServerCommand( ent-g_entities, "print \"Map is not available.\n\"" );
-                    return;
-                }
 
 		trap_Cvar_VariableStringBuffer( "nextmap", s, sizeof(s) );
 		if (*s) {
@@ -1638,11 +1289,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s", level.voteString );
 	} else if ( !Q_stricmp( arg1, "nextmap" ) ) {
 		char	s[MAX_STRING_CHARS];
-                
-                if(!allowedMap(arg2)){
-                    trap_SendServerCommand( ent-g_entities, "print \"Map is not available.\n\"" );
-                    return;
-                }
 
 		trap_Cvar_VariableStringBuffer( "nextmap", s, sizeof(s) );
 		if (!*s) {
@@ -1651,24 +1297,6 @@ void Cmd_CallVote_f( gentity_t *ent ) {
 		}
 		Com_sprintf( level.voteString, sizeof( level.voteString ), "vstr nextmap");
 		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s", level.voteString );
-        } else if ( !Q_stricmp( arg1, "fraglimit" ) ) {
-                i = atoi(arg2);
-                if(!allowedFraglimit(i)) {
-                    trap_SendServerCommand( ent-g_entities, "print \"Cannot set fraglimit.\n\"" );
-                    return;
-                }
-            
-                Com_sprintf( level.voteString, sizeof( level.voteString ), "%s \"%s\"", arg1, arg2 );
-		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s", level.voteString );
-        } else if ( !Q_stricmp( arg1, "timelimit" ) ) {
-                i = atoi(arg2);
-                if(!allowedTimelimit(i)) {
-                    trap_SendServerCommand( ent-g_entities, "print \"Cannot set timelimit.\n\"" );
-                    return;
-                }
-            
-                Com_sprintf( level.voteString, sizeof( level.voteString ), "%s \"%s\"", arg1, arg2 );
-		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s", level.voteString );
 	} else {
 		Com_sprintf( level.voteString, sizeof( level.voteString ), "%s \"%s\"", arg1, arg2 );
 		Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ), "%s", level.voteString );
@@ -2068,8 +1696,6 @@ void ClientCommand( int clientNum ) {
 		Cmd_SetViewpos_f( ent );
 	else if (Q_stricmp (cmd, "stats") == 0)
 		Cmd_Stats_f( ent );
-	else if (Q_stricmp (cmd, "free_spectator") == 0)
-		StopFollowing( ent );
 	else
 		trap_SendServerCommand( clientNum, va("print \"unknown cmd %s\n\"", cmd ) );
 }
diff -upr ioquake3svn1438/code/game/g_combat.c ioquake3serverFix/code/game/g_combat.c
--- ioquake3svn1438/code/game/g_combat.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_combat.c	2008-08-09 11:28:21.000000000 -0500
@@ -83,10 +83,6 @@ void TossClientItems( gentity_t *self ) 
 	// drop the weapon if not a gauntlet or machinegun
 	weapon = self->s.weapon;
 
-	//Never drop in elimination or last man standing mode!
-	if( g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS)
-		return;
-
 	// make a special check to see if they are changing to a new
 	// weapon that isn't the mg or gauntlet.  Without this, a client
 	// can pick up a weapon, be killed, and not drop the weapon because
@@ -100,10 +96,6 @@ void TossClientItems( gentity_t *self ) 
 		}
 	}
 
-	if (g_instantgib.integer || g_rockets.integer || g_gametype.integer == GT_CTF_ELIMINATION){
-	//Nothing!	
-	}
-	else
 	if ( weapon > WP_MACHINEGUN && weapon != WP_GRAPPLING_HOOK && 
 		self->client->ps.ammo[ weapon ] ) {
 		// find the item type for this weapon
@@ -134,7 +126,7 @@ void TossClientItems( gentity_t *self ) 
 	}
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 
 /*
 =================
@@ -187,8 +179,6 @@ void TossClientCubes( gentity_t *self ) 
 	drop->spawnflags = self->client->sess.sessionTeam;
 }
 
-//Sago: moved to here
-#ifdef MISSIONPACK
 
 /*
 =================
@@ -317,13 +307,13 @@ char	*modNames[] = {
 	"MOD_SUICIDE",
 	"MOD_TARGET_LASER",
 	"MOD_TRIGGER_HURT",
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	"MOD_NAIL",
 	"MOD_CHAINGUN",
 	"MOD_PROXIMITY_MINE",
 	"MOD_KAMIKAZE",
 	"MOD_JUICED",
-//#endif
+#endif
 	"MOD_GRAPPLE"
 };
 
@@ -373,7 +363,7 @@ void CheckAlmostCapture( gentity_t *self
 		self->client->ps.powerups[PW_BLUEFLAG] ||
 		self->client->ps.powerups[PW_NEUTRALFLAG] ) {
 		// get the goal flag this player should have been going for
-		if ( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION) {
+		if ( g_gametype.integer == GT_CTF ) {
 			if ( self->client->sess.sessionTeam == TEAM_BLUE ) {
 				classname = "team_CTF_blueflag";
 			}
@@ -462,11 +452,6 @@ void player_die( gentity_t *self, gentit
 		return;
 	}
 
-//unlagged - backward reconciliation #2
-	// make sure the body shows up in the client's current position
-	G_UnTimeShiftClient( self );
-//unlagged - backward reconciliation #2
-
 	// check for an almost capture
 	CheckAlmostCapture( self, attacker );
 	// check for a player that almost brought in cubes
@@ -526,17 +511,14 @@ void player_die( gentity_t *self, gentit
 		attacker->client->lastkilled_client = self->s.number;
 
 		if ( attacker == self || OnSameTeam (self, attacker ) ) {
-			if(g_gametype.integer!=GT_LMS && !((g_gametype.integer==GT_ELIMINATION || g_gametype.integer==GT_CTF_ELIMINATION) && level.time < level.roundStartTime))
-				AddScore( attacker, self->r.currentOrigin, -1 );
+			AddScore( attacker, self->r.currentOrigin, -1 );
 		} else {
-			if(g_gametype.integer!=GT_LMS)
-				AddScore( attacker, self->r.currentOrigin, 1 );
+			AddScore( attacker, self->r.currentOrigin, 1 );
 
 			if( meansOfDeath == MOD_GAUNTLET ) {
 				
 				// play humiliation on player
 				attacker->client->ps.persistant[PERS_GAUNTLET_FRAG_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 0, attacker->client->pers.netname, "GAUNTLET" );
 
 				// add the sprite over the player's head
 				attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
@@ -552,7 +534,6 @@ void player_die( gentity_t *self, gentit
 			if ( level.time - attacker->client->lastKillTime < CARNAGE_REWARD_TIME ) {
 				// play excellent on player
 				attacker->client->ps.persistant[PERS_EXCELLENT_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 1, attacker->client->pers.netname, "EXCELLENT" );
 
 				// add the sprite over the player's head
 				attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
@@ -563,8 +544,7 @@ void player_die( gentity_t *self, gentit
 
 		}
 	} else {
-		if(g_gametype.integer!=GT_LMS && !((g_gametype.integer==GT_ELIMINATION || g_gametype.integer==GT_CTF_ELIMINATION) && level.time < level.roundStartTime))
-			AddScore( self, self->r.currentOrigin, -1 );
+		AddScore( self, self->r.currentOrigin, -1 );
 	}
 
 	// Add team bonuses
@@ -646,11 +626,6 @@ void player_die( gentity_t *self, gentit
 	// don't allow respawn until the death anim is done
 	// g_forcerespawn may force spawning at some later time
 	self->client->respawnTime = level.time + 1700;
-	//However during warm up, we should respawn quicker!
-	if(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS)
-		if(level.time<=level.roundStartTime && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer)
-			self->client->respawnTime = level.time + rand()%800;
-		
 
 	// remove powerups
 	memset( self->client->ps.powerups, 0, sizeof(self->client->ps.powerups) );
@@ -780,7 +755,7 @@ int RaySphereIntersections( vec3_t origi
 	return 0;
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ================
 G_InvulnerabilityEffect
@@ -818,7 +793,7 @@ int G_InvulnerabilityEffect( gentity_t *
 		return qfalse;
 	}
 }
-//#endif
+#endif
 /*
 ============
 T_Damage
@@ -851,8 +826,6 @@ void G_Damage( gentity_t *targ, gentity_
 	int			asave;
 	int			knockback;
 	int			max;
-        
-        
 #ifdef MISSIONPACK
 	vec3_t		bouncedir, impactpoint;
 #endif
@@ -876,20 +849,6 @@ void G_Damage( gentity_t *targ, gentity_
 		}
 	}
 #endif
-        //Sago: This was moved up
-        client = targ->client;
-        
-        //Sago: See if the client was sent flying
-        //Check if damage is by somebody who is not a player!
-        if( (!attacker || attacker->s.eType != ET_PLAYER) && client->lastSentFlying>-1 && ( mod==MOD_FALLING || mod==MOD_LAVA || mod==MOD_SLIME || mod==MOD_TRIGGER_HURT ) )  {
-            if(client->lastSentFlyingTime+3000<level.time) {
-                client->lastSentFlying = -1; //More than 3 seconds, not a kill!
-            } else {
-                //G_Printf("LastSentFlying %i\n",client->lastSentFlying);
-                attacker = &g_entities[client->lastSentFlying];
-            }
-        }
-        
 	if ( !inflictor ) {
 		inflictor = &g_entities[ENTITYNUM_WORLD];
 	}
@@ -904,11 +863,11 @@ void G_Damage( gentity_t *targ, gentity_
 		}
 		return;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_OBELISK && CheckObeliskAttack( targ, attacker ) ) {
 		return;
 	}
-//#endif
+#endif
 	// reduce damage by the attacker's handicap value
 	// unless they are rocket jumping
 	if ( attacker->client && attacker != targ ) {
@@ -921,8 +880,7 @@ void G_Damage( gentity_t *targ, gentity_
 		damage = damage * max / 100;
 	}
 
-        //Sago: I have moved this up
-	//client = targ->client;
+	client = targ->client;
 
 	if ( client ) {
 		if ( client->noclip ) {
@@ -972,13 +930,6 @@ void G_Damage( gentity_t *targ, gentity_
 			targ->client->ps.pm_time = t;
 			targ->client->ps.pm_flags |= PMF_TIME_KNOCKBACK;
 		}
-                //Remeber the last person to hurt the player
-                if( g_awardpushing.integer==0 || targ==attacker || OnSameTeam (targ, attacker)) {
-                    targ->client->lastSentFlying = -1;
-                } else {
-                    targ->client->lastSentFlying = attacker->s.number;
-                    targ->client->lastSentFlyingTime = level.time;
-                }
 	}
 
 	// check for completely getting out of the damage
@@ -991,11 +942,11 @@ void G_Damage( gentity_t *targ, gentity_
 #else	
 		if ( targ != attacker && OnSameTeam (targ, attacker)  ) {
 #endif
-			if ( ( !g_friendlyFire.integer && g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION ) || ( g_elimination_selfdamage.integer<2 &&	(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION) ) ) {
+			if ( !g_friendlyFire.integer ) {
 				return;
 			}
 		}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 		if (mod == MOD_PROXIMITY_MINE) {
 			if (inflictor && inflictor->parent && OnSameTeam(targ, inflictor->parent)) {
 				return;
@@ -1004,7 +955,7 @@ void G_Damage( gentity_t *targ, gentity_
 				return;
 			}
 		}
-//#endif
+#endif
 
 		// check for godmode
 		if ( targ->flags & FL_GODMODE ) {
@@ -1043,19 +994,6 @@ void G_Damage( gentity_t *targ, gentity_
 	if ( damage < 1 ) {
 		damage = 1;
 	}
-
-	if ((g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) 
-				&& g_elimination_selfdamage.integer<1 && ( targ == attacker ||  mod == MOD_FALLING )) {
-		damage = 0;
-	}
-
-
-//So people can be telefragged!
-	if ((g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS) && level.time < level.roundStartTime && ((mod == MOD_LAVA) || (mod == MOD_SLIME)) ) {
-		damage = 1000;
-	}
-
-
 	take = damage;
 	save = 0;
 
@@ -1074,9 +1012,7 @@ void G_Damage( gentity_t *targ, gentity_
 	if ( client ) {
 		if ( attacker ) {
 			client->ps.persistant[PERS_ATTACKER] = attacker->s.number;
-                } else if(client->lastSentFlying) {
-                        client->ps.persistant[PERS_ATTACKER] = client->lastSentFlying;
-                } else {
+		} else {
 			client->ps.persistant[PERS_ATTACKER] = ENTITYNUM_WORLD;
 		}
 		client->damage_armor += asave;
@@ -1093,9 +1029,9 @@ void G_Damage( gentity_t *targ, gentity_
 
 	// See if it's the player hurting the emeny flag carrier
 #ifdef MISSIONPACK
-	if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_1FCTF || g_gametype.integer == GT_CTF_ELIMINATION) {
+	if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_1FCTF ) {
 #else	
-	if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION) {
+	if( g_gametype.integer == GT_CTF) {
 #endif
 		Team_CheckHurtCarrier(targ, attacker);
 	}
@@ -1106,17 +1042,6 @@ void G_Damage( gentity_t *targ, gentity_
 		targ->client->lasthurt_mod = mod;
 	}
 
-	//If vampire is enabled, gain health but not from self or teammate, cannot steal more than targ has
-	if((targ != attacker) && !(OnSameTeam(targ, attacker)) && g_vampire.value>0.0)
-	{
-		if(take<targ->health)
-			attacker->health += (int)(((float)take)*g_vampire.value);
-		else
-			attacker->health += (int)(((float)targ->health)*g_vampire.value);
-		if(attacker->health>g_vampireMaxHealth.integer)
-			attacker->health = g_vampireMaxHealth.integer;
-	}
-
 	// do the damage
 	if (take) {
 		targ->health = targ->health - take;
@@ -1130,7 +1055,7 @@ void G_Damage( gentity_t *targ, gentity_
 
 			if (targ->health < -999)
 				targ->health = -999;
-                        
+
 			targ->enemy = attacker;
 			targ->die (targ, inflictor, attacker, take, mod);
 			return;
@@ -1139,7 +1064,6 @@ void G_Damage( gentity_t *targ, gentity_
 		}
 	}
 
-	
 }
 
 
diff -upr ioquake3svn1438/code/game/g_items.c ioquake3serverFix/code/game/g_items.c
--- ioquake3svn1438/code/game/g_items.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_items.c	2008-08-09 11:28:21.000000000 -0500
@@ -86,7 +86,7 @@ int Pickup_Powerup( gentity_t *ent, gent
 
     // if same team in team game, no sound
     // cannot use OnSameTeam as it expects to g_entities, not clients
-  	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt==0 && other->client->sess.sessionTeam == client->sess.sessionTeam  ) {
+  	if ( g_gametype.integer >= GT_TEAM && other->client->sess.sessionTeam == client->sess.sessionTeam  ) {
       continue;
     }
 
@@ -419,23 +419,6 @@ void Touch_Item (gentity_t *ent, gentity
 	int			respawn;
 	qboolean	predict;
 
-	//instant gib
-	if ((g_instantgib.integer || g_rockets.integer || g_gametype.integer == GT_CTF_ELIMINATION) && ent->item->giType != IT_TEAM)
-		return;
-
-	//Cannot touch flag before round starts
-	if(g_gametype.integer == GT_CTF_ELIMINATION && level.roundNumber != level.roundNumberStarted)
-		return;
-
-	//Cannot take ctf elimination oneway
-	if(g_gametype.integer == GT_CTF_ELIMINATION && g_elimination_ctf_oneway.integer!=0 && (
-			(other->client->sess.sessionTeam==TEAM_BLUE && (level.eliminationSides+level.roundNumber)%2 == 0 ) ||
-			(other->client->sess.sessionTeam==TEAM_RED && (level.eliminationSides+level.roundNumber)%2 != 0 ) ))
-		return;
-
-	if (g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS)
-		return;		//nothing to pick up in elimination
-
 	if (!other->client)
 		return;
 	if (other->health < 1)
@@ -446,16 +429,6 @@ void Touch_Item (gentity_t *ent, gentity
 		return;
 	}
 
-	//In double DD we cannot "pick up" a flag we already got
-	if(g_gametype.integer == GT_DOUBLE_D) {
-		if( strcmp(ent->classname, "team_CTF_redflag") == 0 )
-			if(other->client->sess.sessionTeam == level.pointStatusA)
-				return;
-		if( strcmp(ent->classname, "team_CTF_blueflag") == 0 )
-			if(other->client->sess.sessionTeam == level.pointStatusB)
-				return;
-	}
-
 	G_LogPrintf( "Item: %i %s\n", other->s.number, ent->item->classname );
 
 	predict = other->client->pers.predictItemPickup;
@@ -610,10 +583,10 @@ gentity_t *LaunchItem( gitem_t *item, ve
 	VectorCopy( velocity, dropped->s.pos.trDelta );
 
 	dropped->s.eFlags |= EF_BOUNCE_HALF;
-#if 1 //MISSIONPACK
-	if ((g_gametype.integer == GT_CTF || g_gametype.integer == GT_1FCTF || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_DOUBLE_D)			&& item->giType == IT_TEAM) { // Special case for CTF flags
+#ifdef MISSIONPACK
+	if ((g_gametype.integer == GT_CTF || g_gametype.integer == GT_1FCTF)			&& item->giType == IT_TEAM) { // Special case for CTF flags
 #else
-	if ((g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_DOUBLE_D)&& item->giType == IT_TEAM) { // Special case for CTF flags
+	if (g_gametype.integer == GT_CTF && item->giType == IT_TEAM) { // Special case for CTF flags
 #endif
 		dropped->think = Team_DroppedFlagThink;
 		dropped->nextthink = level.time + 30000;
@@ -716,9 +689,7 @@ void FinishSpawningItem( gentity_t *ent 
 		return;
 	}
 
-	
-	// powerups don't spawn in for a while (but not in elimination)
-	if(g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION && g_gametype.integer != GT_LMS && !g_instantgib.integer && !g_rockets.integer )	
+	// powerups don't spawn in for a while
 	if ( ent->item->giType == IT_POWERUP ) {
 		float	respawn;
 
@@ -747,7 +718,7 @@ void G_CheckTeamItems( void ) {
 	// Set up team stuff
 	Team_InitGame();
 
-	if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_DOUBLE_D) {
+	if( g_gametype.integer == GT_CTF ) {
 		gitem_t	*item;
 
 		// check for the two flags
@@ -760,7 +731,7 @@ void G_CheckTeamItems( void ) {
 			G_Printf( S_COLOR_YELLOW "WARNING: No team_CTF_blueflag in map" );
 		}
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_1FCTF ) {
 		gitem_t	*item;
 
@@ -818,7 +789,7 @@ void G_CheckTeamItems( void ) {
 			G_Printf( S_COLOR_YELLOW "WARNING: No team_neutralobelisk in map" );
 		}
 	}
-//#endif
+#endif
 }
 
 /*
@@ -829,59 +800,15 @@ ClearRegisteredItems
 void ClearRegisteredItems( void ) {
 	memset( itemRegistered, 0, sizeof( itemRegistered ) );
 
-	if(g_instantgib.integer) {
-		//Always load Gauntlet and machine gun because g_instantgib might suddenly change
-		RegisterItem( BG_FindItemForWeapon( WP_GAUNTLET ) );
-		RegisterItem( BG_FindItemForWeapon( WP_MACHINEGUN ) );
-		RegisterItem( BG_FindItemForWeapon( WP_RAILGUN ) );
-	}
-	if(g_rockets.integer) {
-		RegisterItem( BG_FindItemForWeapon( WP_GAUNTLET ) );
-		RegisterItem( BG_FindItemForWeapon( WP_MACHINEGUN ) );
-		RegisterItem( BG_FindItemForWeapon( WP_ROCKET_LAUNCHER ) );
-	}
-	else
-	{
-		// players always start with the base weapon
-		RegisterItem( BG_FindItemForWeapon( WP_MACHINEGUN ) );
-		RegisterItem( BG_FindItemForWeapon( WP_GAUNTLET ) );
-		if(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION || g_gametype.integer == GT_LMS)
-		{
-			RegisterItem( BG_FindItemForWeapon( WP_SHOTGUN ) );
-			RegisterItem( BG_FindItemForWeapon( WP_GRENADE_LAUNCHER ) );
-			RegisterItem( BG_FindItemForWeapon( WP_ROCKET_LAUNCHER ) );
-			RegisterItem( BG_FindItemForWeapon( WP_LIGHTNING ) );
-			RegisterItem( BG_FindItemForWeapon( WP_RAILGUN ) );
-			RegisterItem( BG_FindItemForWeapon( WP_PLASMAGUN ) );
-			RegisterItem( BG_FindItemForWeapon( WP_BFG ) );
-//#ifdef MISSIONPACK
-			RegisterItem( BG_FindItemForWeapon( WP_NAILGUN ) );
-			RegisterItem( BG_FindItemForWeapon( WP_PROX_LAUNCHER ) );
-			RegisterItem( BG_FindItemForWeapon( WP_CHAINGUN ) );
-//#endif
-		}
-	}
-//#ifdef MISSIONPACK
+	// players always start with the base weapon
+	RegisterItem( BG_FindItemForWeapon( WP_MACHINEGUN ) );
+	RegisterItem( BG_FindItemForWeapon( WP_GAUNTLET ) );
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_HARVESTER ) {
 		RegisterItem( BG_FindItem( "Red Cube" ) );
 		RegisterItem( BG_FindItem( "Blue Cube" ) );
 	}
-//#endif
-	if(g_gametype.integer == GT_DOUBLE_D ) {
-		RegisterItem( BG_FindItem( "Point A (Blue)" ) );
-		RegisterItem( BG_FindItem( "Point A (Red)" ) );
-		RegisterItem( BG_FindItem( "Point A (White)" ) );
-		RegisterItem( BG_FindItem( "Point B (Blue)" ) );
-		RegisterItem( BG_FindItem( "Point B (Red)" ) );
-		RegisterItem( BG_FindItem( "Point B (White)" ) );
-	}
-
-	if(g_gametype.integer == GT_DOMINATION ) {
-		RegisterItem( BG_FindItem( "Neutral domination point" ) );
-		RegisterItem( BG_FindItem( "Red domination point" ) );
-		RegisterItem( BG_FindItem( "Blue domination point" ) );
-	}
-	
+#endif
 }
 
 /*
@@ -954,18 +881,9 @@ void G_SpawnItem (gentity_t *ent, gitem_
 	G_SpawnFloat( "random", "0", &ent->random );
 	G_SpawnFloat( "wait", "0", &ent->wait );
 
-	//Load all items in instantgib anyway or we will be in trouble if it is suddenly disabled!
-	//if((item->giType == IT_TEAM && g_instantgib.integer) || !g_instantgib.integer)
-	{
-		//Don't load pickups in Elimination (or maybe... gives warnings)
-		if (g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION && g_gametype.integer != GT_LMS)
-			RegisterItem( item );
-		//Registrer flags anyway in CTF Elimination:
-		if (g_gametype.integer == GT_CTF_ELIMINATION && item->giType == IT_TEAM)
-			RegisterItem( item );
-		if ( G_ItemDisabled(item) )
-			return;
-	}
+	RegisterItem( item );
+	if ( G_ItemDisabled(item) )
+		return;
 
 	ent->item = item;
 	// some movers spawn on the second frame, so delay item
@@ -975,17 +893,6 @@ void G_SpawnItem (gentity_t *ent, gitem_
 
 	ent->physicsBounce = 0.50;		// items are bouncy
 
-	if (g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS || 
-			( item->giType != IT_TEAM && (g_instantgib.integer || g_rockets.integer || g_gametype.integer==GT_CTF_ELIMINATION) ) )
-		ent->s.eFlags |= EF_NODRAW; //Invisible in elimination
-
-	if(g_gametype.integer == GT_DOUBLE_D && (strcmp(ent->classname, "team_CTF_redflag")==0 || strcmp(ent->classname, "team_CTF_blueflag")==0 || strcmp(ent->classname, "team_CTF_neutralflag") == 0 || item->giType == IT_PERSISTANT_POWERUP  ))
-		ent->s.eFlags |= EF_NODRAW; //Don't draw the flag models/persistant powerups
-
-//#ifdef MISSIONPACK
-	if(g_gametype.integer == GT_CTF_ELIMINATION && strcmp(ent->classname, "team_CTF_neutralflag") == 0)
-		ent->s.eFlags |= EF_NODRAW; // Don't draw the flag in CTF_elimination
-//#endif
 	if ( item->giType == IT_POWERUP ) {
 		G_SoundIndex( "sound/items/poweruprespawn.wav" );
 		G_SpawnFloat( "noglobalsound", "0", &ent->speed);
diff -upr ioquake3svn1438/code/game/g_local.h ioquake3serverFix/code/game/g_local.h
--- ioquake3svn1438/code/game/g_local.h	2008-07-07 15:53:23.000000000 -0500
+++ ioquake3serverFix/code/game/g_local.h	2008-08-09 11:28:21.000000000 -0500
@@ -42,9 +42,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define	INTERMISSION_DELAY_TIME	1000
 #define	SP_INTERMISSION_DELAY_TIME	5000
 
-//Domination how many seconds between awarded a point
-#define DOM_SECSPERPOINT	2000
-
 // gentity->flags
 #define	FL_GODMODE				0x00000010
 #define	FL_NOTARGET				0x00000020
@@ -239,10 +236,6 @@ typedef struct {
 #define MAX_NETNAME			36
 #define	MAX_VOTE_COUNT		3
 
-//unlagged - true ping
-#define NUM_PING_SAMPLES 64
-//unlagged - true ping
-
 // client data that stays across multiple respawns, but is cleared
 // on each level change or team change at ClientBegin()
 typedef struct {
@@ -259,41 +252,8 @@ typedef struct {
 	int			voteCount;			// to prevent people from constantly calling votes
 	int			teamVoteCount;		// to prevent people from constantly calling votes
 	qboolean	teamInfo;			// send team overlay updates?
-	//elimination:
-	int		roundReached;			//Only spawn if we are new to this round
-	int		livesLeft;			//lives in LMS
-
-//unlagged - client options
-	// these correspond with variables in the userinfo string
-	int			delag;
-//	int			debugDelag;
-	int			cmdTimeNudge;
-//unlagged - client options
-//unlagged - lag simulation #2
-/*	int			latentSnaps;
-	int			latentCmds;
-	int			plOut;
-	usercmd_t	cmdqueue[MAX_LATENT_CMDS];
-	int			cmdhead;*/
-//unlagged - lag simulation #2
-//unlagged - true ping
-	int			realPing;
-	int			pingsamples[NUM_PING_SAMPLES];
-	int			samplehead;
-//unlagged - true ping
 } clientPersistant_t;
 
-//unlagged - backward reconciliation #1
-// the size of history we'll keep
-#define NUM_CLIENT_HISTORY 17
-
-// everything we need to know to backward reconcile
-typedef struct {
-	vec3_t		mins, maxs;
-	vec3_t		currentOrigin;
-	int			leveltime;
-} clientHistory_t;
-//unlagged - backward reconciliation #1
 
 // this structure is cleared on each ClientSpawn(),
 // except for 'client->pers' and 'client->sess'
@@ -309,8 +269,7 @@ struct gclient_s {
 
 	qboolean	noclip;
 
-	//Unlagged - commented out - handled differently
-	//int			lastCmdTime;		// level.time of last usercmd_t, for EF_CONNECTION
+	int			lastCmdTime;		// level.time of last usercmd_t, for EF_CONNECTION
 									// we can't just use pers.lastCommand.time, because
 									// of the g_sycronousclients case
 	int			buttons;
@@ -360,36 +319,10 @@ struct gclient_s {
 	gentity_t	*persistantPowerup;
 	int			portalID;
 	int			ammoTimes[WP_NUM_WEAPONS];
+	int			invulnerabilityTime;
 #endif
-        int			invulnerabilityTime;
-
 
 	char		*areabits;
-
-	qboolean	isEliminated;			//Has been killed in this round
-        
-        int lastSentFlying;                             //The last client that sent the player flying
-        int lastSentFlyingTime;                         //So we can time out
-
-	//unlagged - backward reconciliation #1
-	// the serverTime the button was pressed
-	// (stored before pmove_fixed changes serverTime)
-	int			attackTime;
-	// the head of the history queue
-	int			historyHead;
-	// the history queue
-	clientHistory_t	history[NUM_CLIENT_HISTORY];
-	// the client's saved position
-	clientHistory_t	saved;			// used to restore after time shift
-	// an approximation of the actual server time we received this
-	// command (not in 50ms increments)
-	int			frameOffset;
-//unlagged - backward reconciliation #1
-
-//unlagged - smooth clients #1
-	// the last frame number we got an update from this client
-	int			lastUpdateFrame;
-//unlagged - smooth clients #1
 };
 
 
@@ -480,32 +413,6 @@ typedef struct {
 #ifdef MISSIONPACK
 	int			portalSequence;
 #endif
-	//Added for elimination:
-	int roundStartTime;		//time the current round was started
-	int roundNumber;			//The round number we have reached
-	int roundNumberStarted;			//1 less than roundNumber if we are allowed to spawn
-	int roundRedPlayers;			//How many players was there at start of round
-	int roundBluePlayers;			//used to find winners in a draw.
-	qboolean roundRespawned;		//We have respawned for this round!
-	int eliminationSides;			//Random, change red/blue bases
-
-	//Added for Double Domination
-	//Points get status: TEAM_FREE for not taking, TEAM_RED/TEAM_BLUE for taken and TEAM_NONE for not spawned yet
-	int pointStatusA;			//Status of the RED (A) domination point
-	int pointStatusB;			//Status of the BLUE (B) doimination point
-	int timeTaken;				//Time team started having both points
-	//use roundStartTime for telling, then the points respawn
-
-	//Added for standard domination
-	int pointStatusDom[MAX_DOMINATION_POINTS]; //Holds the owner of all the points
-	int dom_scoreGiven;				//Number of times we have provided scores
-	int domination_points_count;
-	char domination_points_names[MAX_DOMINATION_POINTS][MAX_DOMINATION_POINTS_NAMES];
-
-//unlagged - backward reconciliation #4
-	// actual time this server frame started
-	int			frameStartTime;
-//unlagged - backward reconciliation #4
 } level_locals_t;
 
 
@@ -612,7 +519,6 @@ void TossClientCubes( gentity_t *self );
 // g_missile.c
 //
 void G_RunMissile( gentity_t *ent );
-void ProximityMine_RemoveAll( void );
 
 gentity_t *fire_blaster (gentity_t *self, vec3_t start, vec3_t aimdir);
 gentity_t *fire_plasma (gentity_t *self, vec3_t start, vec3_t aimdir);
@@ -620,10 +526,10 @@ gentity_t *fire_grenade (gentity_t *self
 gentity_t *fire_rocket (gentity_t *self, vec3_t start, vec3_t dir);
 gentity_t *fire_bfg (gentity_t *self, vec3_t start, vec3_t dir);
 gentity_t *fire_grapple (gentity_t *self, vec3_t start, vec3_t dir);
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 gentity_t *fire_nail( gentity_t *self, vec3_t start, vec3_t forward, vec3_t right, vec3_t up );
 gentity_t *fire_prox( gentity_t *self, vec3_t start, vec3_t aimdir );
-//#endif
+#endif
 
 
 //
@@ -653,38 +559,16 @@ void DropPortalDestination( gentity_t *e
 //
 qboolean LogAccuracyHit( gentity_t *target, gentity_t *attacker );
 void CalcMuzzlePoint ( gentity_t *ent, vec3_t forward, vec3_t right, vec3_t up, vec3_t muzzlePoint );
-//unlagged - attack prediction #3
-// we're making this available to both games
 void SnapVectorTowards( vec3_t v, vec3_t to );
-//unlagged - attack prediction #3
 qboolean CheckGauntletAttack( gentity_t *ent );
 void Weapon_HookFree (gentity_t *ent);
 void Weapon_HookThink (gentity_t *ent);
 
-//unlagged - g_unlagged.c
-void G_ResetHistory( gentity_t *ent );
-void G_StoreHistory( gentity_t *ent );
-void G_TimeShiftAllClients( int time, gentity_t *skip );
-void G_UnTimeShiftAllClients( gentity_t *skip );
-void G_DoTimeShiftFor( gentity_t *ent );
-void G_UndoTimeShiftFor( gentity_t *ent );
-void G_UnTimeShiftClient( gentity_t *client );
-void G_PredictPlayerMove( gentity_t *ent, float frametime );
-//unlagged - g_unlagged.c
 
 //
 // g_client.c
 //
 team_t TeamCount( int ignoreClientNum, int team );
-team_t TeamLivingCount( int ignoreClientNum, int team ); //Elimination
-team_t TeamHealthCount( int ignoreClientNum, int team ); //Elimination
-void RespawnAll(void); //For round elimination
-void RespawnDead(void);
-void EnableWeapons(void);
-void DisableWeapons(void);
-void EndEliminationRound(void);
-void LMSpoint(void);
-//void wins2score(void);
 int TeamLeader( int team );
 team_t PickTeam( int ignoreClientNum );
 void SetClientViewAngle( gentity_t *ent, vec3_t angle );
@@ -721,17 +605,11 @@ void G_StartKamikaze( gentity_t *ent );
 //
 void MoveClientToIntermission (gentity_t *client);
 void G_SetStats (gentity_t *ent);
+void DeathmatchScoreboardMessage (gentity_t *client);
 
 //
 // g_cmds.c
-// Also another place /Sago
-
-void DoubleDominationScoreTimeMessage( gentity_t *ent );
-void AttackingTeamMessage( gentity_t *ent );
-void DeathmatchScoreboardMessage (gentity_t *client);
-void EliminationMessage (gentity_t *client);
-void DominationPointNamesMessage (gentity_t *client);
-void DominationPointStatusMessage( gentity_t *ent );
+//
 
 //
 // g_pweapon.c
@@ -747,9 +625,6 @@ void CheckTeamLeader( int team );
 void G_RunThink (gentity_t *ent);
 void QDECL G_LogPrintf( const char *fmt, ... );
 void SendScoreboardMessageToAllClients( void );
-void SendEliminationMessageToAllClients( void );
-void SendDDtimetakenMessageToAllClients( void );
-void SendDominationPointsStatusMessageToAllClients( void );
 void QDECL G_Printf( const char *fmt, ... );
 void QDECL G_Error( const char *fmt, ... );
 
@@ -879,84 +754,16 @@ extern	vmCvar_t	g_obeliskRegenPeriod;
 extern	vmCvar_t	g_obeliskRegenAmount;
 extern	vmCvar_t	g_obeliskRespawnDelay;
 extern	vmCvar_t	g_cubeTimeout;
+extern	vmCvar_t	g_redteam;
+extern	vmCvar_t	g_blueteam;
 extern	vmCvar_t	g_smoothClients;
 extern	vmCvar_t	pmove_fixed;
 extern	vmCvar_t	pmove_msec;
 extern	vmCvar_t	g_rankings;
-#ifdef MISSIONPACK
 extern	vmCvar_t	g_enableDust;
 extern	vmCvar_t	g_enableBreath;
 extern	vmCvar_t	g_singlePlayer;
-extern	vmCvar_t	g_redteam;
-extern	vmCvar_t	g_blueteam;
-#endif
 extern	vmCvar_t	g_proxMineTimeout;
-extern	vmCvar_t	g_music;
-
-//elimination:
-extern	vmCvar_t	g_elimination_selfdamage;
-extern	vmCvar_t	g_elimination_startHealth;
-extern	vmCvar_t	g_elimination_startArmor;
-extern	vmCvar_t	g_elimination_bfg;
-extern	vmCvar_t	g_elimination_roundtime;
-extern	vmCvar_t	g_elimination_warmup;
-extern	vmCvar_t	g_elimination_activewarmup;
-//more weapons in beta 9:
-extern	vmCvar_t	g_elimination_machinegun;
-extern	vmCvar_t	g_elimination_shotgun;
-extern	vmCvar_t	g_elimination_grenade;
-extern	vmCvar_t	g_elimination_rocket;
-extern	vmCvar_t	g_elimination_railgun;
-extern	vmCvar_t	g_elimination_lightning;
-extern	vmCvar_t	g_elimination_plasmagun;
-//#ifdef MISSIONPACK
-extern	vmCvar_t	g_elimination_chain;
-extern	vmCvar_t	g_elimination_mine;
-extern	vmCvar_t	g_elimination_nail;
-//#endif
-
-extern vmCvar_t		g_rockets;
-
-//new in elimination Beta2
-extern vmCvar_t		g_instantgib;
-extern vmCvar_t		g_vampire;
-extern vmCvar_t		g_vampireMaxHealth;
-//new in elimination Beta3
-extern vmCvar_t		g_regen;
-//Free for all gametype
-extern int		g_ffa_gt; //0 = TEAM GAME, 1 = FFA, 2 = TEAM GAME without bases
-
-//beta 5
-extern vmCvar_t		g_lms_lives;
-
-//beta 8
-extern vmCvar_t		g_lms_mode; //How do we score: 0 = One Survivor get a point, 1 = same but without overtime, 2 = one point for each player killed (+overtime), 3 = same without overtime
-
-//beta 10
-extern vmCvar_t		g_elimination_ctf_oneway;	//Only attack in one direction (level.eliminationSides+level.roundNumber)%2 == 0 red attacks
-
-//beta 18 (oa 0.7.6)
-extern vmCvar_t         g_awardpushing; //The server can decide if players are awarded for pushing people in lave etc.
-
-//beta 19
-extern vmCvar_t        g_voteNames;
-extern vmCvar_t        g_voteMaps;
-extern vmCvar_t        g_voteGametypes;
-extern vmCvar_t        g_voteMinTimelimit;
-extern vmCvar_t        g_voteMaxTimelimit;
-extern vmCvar_t        g_voteMinFraglimit;
-extern vmCvar_t        g_voteMaxFraglimit;
-
-//new in beta 23
-extern vmCvar_t        g_humanplayers;
-
-//unlagged - server options
-// some new server-side variables
-extern	vmCvar_t	g_delagHitscan;
-extern	vmCvar_t	g_truePing;
-// this is for convenience - using "sv_fps.integer" is nice :)
-extern	vmCvar_t	sv_fps;
-//unlagged - server options
 
 void	trap_Printf( const char *fmt );
 void	trap_Error( const char *fmt );
diff -upr ioquake3svn1438/code/game/g_main.c ioquake3serverFix/code/game/g_main.c
--- ioquake3svn1438/code/game/g_main.c	2008-07-07 15:51:26.000000000 -0500
+++ ioquake3serverFix/code/game/g_main.c	2008-08-09 11:28:21.000000000 -0500
@@ -81,87 +81,20 @@ vmCvar_t	pmove_fixed;
 vmCvar_t	pmove_msec;
 vmCvar_t	g_rankings;
 vmCvar_t	g_listEntity;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 vmCvar_t	g_obeliskHealth;
 vmCvar_t	g_obeliskRegenPeriod;
 vmCvar_t	g_obeliskRegenAmount;
 vmCvar_t	g_obeliskRespawnDelay;
 vmCvar_t	g_cubeTimeout;
-#ifdef MISSIONPACK
 vmCvar_t	g_redteam;
 vmCvar_t	g_blueteam;
 vmCvar_t	g_singlePlayer;
 vmCvar_t	g_enableDust;
 vmCvar_t	g_enableBreath;
-#endif
 vmCvar_t	g_proxMineTimeout;
-vmCvar_t	g_music;
-//#endif
-//Following for elimination:
-vmCvar_t	g_elimination_selfdamage;
-vmCvar_t	g_elimination_startHealth;
-vmCvar_t	g_elimination_startArmor;
-vmCvar_t	g_elimination_bfg;
-vmCvar_t	g_elimination_roundtime;
-vmCvar_t	g_elimination_warmup;
-vmCvar_t	g_elimination_activewarmup;
-//more weapons in beta 9:
-vmCvar_t	g_elimination_machinegun;
-vmCvar_t	g_elimination_shotgun;
-vmCvar_t	g_elimination_grenade;
-vmCvar_t	g_elimination_rocket;
-vmCvar_t	g_elimination_railgun;
-vmCvar_t	g_elimination_lightning;
-vmCvar_t	g_elimination_plasmagun;
-//#ifdef MISSIONPACK
-vmCvar_t	g_elimination_chain;
-vmCvar_t	g_elimination_mine;
-vmCvar_t	g_elimination_nail;
-//#endif
-
-vmCvar_t	g_rockets;
-
-//dmn_clowns suggestions (with my idea of implementing):
-vmCvar_t	g_instantgib;
-vmCvar_t	g_vampire;
-vmCvar_t	g_vampireMaxHealth;
-//Regen
-vmCvar_t	g_regen;
-//Beta 4
-int	g_ffa_gt; //Are this a FFA gametype even if gametype is high?
-//beta 5
-vmCvar_t	g_lms_lives;
-
-//beta 8
-vmCvar_t	g_lms_mode;
-
-//beta 10
-vmCvar_t	g_elimination_ctf_oneway;
-
-//beta 18 (oa 0.7.6)
-vmCvar_t        g_awardpushing; //The server can decide if players are awarded for pushing people in lave etc.
-
-//new in beta 19
-vmCvar_t        g_voteNames;
-vmCvar_t        g_voteMaps;
-vmCvar_t        g_voteGametypes;
-vmCvar_t        g_voteMinTimelimit;
-vmCvar_t        g_voteMaxTimelimit;
-vmCvar_t        g_voteMinFraglimit;
-vmCvar_t        g_voteMaxFraglimit;
-//new in beta 19 end
-
-//new in beta 23
-vmCvar_t        g_humanplayers;
-//new in beta 23 end
-
-//unlagged - server options
-vmCvar_t	g_delagHitscan;
-vmCvar_t	g_truePing;
-vmCvar_t	sv_fps;
-//unlagged - server options
+#endif
 
-// bk001129 - made static to avoid aliasing
 static cvarTable_t		gameCvarTable[] = {
 	// don't override the cheat state set by the system
 	{ &g_cheats, "sv_cheats", "", 0, 0, qfalse },
@@ -223,93 +156,31 @@ static cvarTable_t		gameCvarTable[] = {
 	{ &g_podiumDrop, "g_podiumDrop", "70", 0, 0, qfalse },
 
 	{ &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse },
-        
-        //new in beta 19
-        { &g_voteNames, "g_voteNames", "/map_restart/nextmap/map/g_gametype/kick/clientkick/g_doWarmup/timelimit/fraglimit/", CVAR_ARCHIVE, 0, qfalse }, //clientkick g_doWarmup timelimit fraglimit
-        { &g_voteMaps, "g_voteMaps", "*", CVAR_ARCHIVE, 0, qfalse },
-        { &g_voteGametypes, "g_voteGametypes", "/0/1/3/4/8/9/10/11/", CVAR_ARCHIVE, 0, qfalse },
-        { &g_voteMaxTimelimit, "g_voteMaxTimelimit", "0", CVAR_ARCHIVE, 0, qfalse },
-        { &g_voteMinTimelimit, "g_voteMinTimelimit", "0", CVAR_ARCHIVE, 0, qfalse },
-        { &g_voteMaxFraglimit, "g_voteMaxFraglimit", "0", CVAR_ARCHIVE, 0, qfalse },
-        { &g_voteMinFraglimit, "g_voteMinFraglimit", "0", CVAR_ARCHIVE, 0, qfalse },
-        //new in beta 19 end
-        
 	{ &g_listEntity, "g_listEntity", "0", 0, 0, qfalse },
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	{ &g_obeliskHealth, "g_obeliskHealth", "2500", 0, 0, qfalse },
 	{ &g_obeliskRegenPeriod, "g_obeliskRegenPeriod", "1", 0, 0, qfalse },
 	{ &g_obeliskRegenAmount, "g_obeliskRegenAmount", "15", 0, 0, qfalse },
 	{ &g_obeliskRespawnDelay, "g_obeliskRespawnDelay", "10", CVAR_SERVERINFO, 0, qfalse },
 
 	{ &g_cubeTimeout, "g_cubeTimeout", "30", 0, 0, qfalse },
-        #ifdef MISSIONPACK
 	{ &g_redteam, "g_redteam", "Stroggs", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue },
 	{ &g_blueteam, "g_blueteam", "Pagans", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue  },
 	{ &g_singlePlayer, "ui_singlePlayerActive", "", 0, 0, qfalse, qfalse  },
 
 	{ &g_enableDust, "g_enableDust", "0", CVAR_SERVERINFO, 0, qtrue, qfalse },
 	{ &g_enableBreath, "g_enableBreath", "0", CVAR_SERVERINFO, 0, qtrue, qfalse },
-        #endif
 	{ &g_proxMineTimeout, "g_proxMineTimeout", "20000", 0, 0, qfalse },
-//#endif
+#endif
 	{ &g_smoothClients, "g_smoothClients", "1", 0, 0, qfalse},
 	{ &pmove_fixed, "pmove_fixed", "0", CVAR_SYSTEMINFO, 0, qfalse},
 	{ &pmove_msec, "pmove_msec", "8", CVAR_SYSTEMINFO, 0, qfalse},
 
-//unlagged - server options
-	{ &g_delagHitscan, "g_delagHitscan", "0", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qtrue },
-	{ &g_truePing, "g_truePing", "0", CVAR_ARCHIVE, 0, qtrue },
-	// it's CVAR_SYSTEMINFO so the client's sv_fps will be automagically set to its value
-	{ &sv_fps, "sv_fps", "20", CVAR_SYSTEMINFO | CVAR_ARCHIVE, 0, qfalse },
-//unlagged - server options
-
-	{ &g_rankings, "g_rankings", "0", 0, 0, qfalse},
-        { &g_music, "g_music", "", 0, 0, qfalse},
-	//Now for elimination stuff:
-	{ &g_elimination_selfdamage, "elimination_selfdamage", "0", 0, 0, qtrue },
-	{ &g_elimination_startHealth, "elimination_startHealth", "200", CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_startArmor, "elimination_startArmor", "200", CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_bfg, "elimination_bfg", "0", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_roundtime, "elimination_roundtime", "90", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_warmup, "elimination_warmup", "7", 0, 0, qtrue },
-	{ &g_elimination_activewarmup, "elimination_activewarmup", "5", 0, 0, qtrue },
-//more weapons in beta 9:
-	{ &g_elimination_machinegun, "elimination_machinegun", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_shotgun, "elimination_shotgun", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_grenade, "elimination_grenade", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_rocket, "elimination_rocket", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_railgun, "elimination_railgun", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_lightning, "elimination_lightning", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_plasmagun, "elimination_plasmagun", "200", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-//#ifdef MISSIONPACK
-	{ &g_elimination_chain, "elimination_chain", "0", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_mine, "elimination_mine", "0", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-	{ &g_elimination_nail, "elimination_nail", "0", CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-//#endif
-	//Beta 10
-	{ &g_elimination_ctf_oneway, "elimination_ctf_oneway", "0", CVAR_SERVERINFO | CVAR_ARCHIVE| CVAR_NORESTART, 0, qtrue },
-
-        
-        { &g_awardpushing, "g_awardpushing", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },    
-        
-	//nexuiz style rocket arena
-	{ &g_rockets, "g_rockets", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_NORESTART, 0, qfalse },
-
-	//Instantgib and Vampire thingies
-	{ &g_instantgib, "g_instantgib", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_NORESTART, 0, qfalse },
-	{ &g_vampire, "g_vampire", "0.0", CVAR_NORESTART, 0, qtrue },
-	{ &g_regen, "g_regen", "0", CVAR_NORESTART, 0, qtrue },
-	{ &g_vampireMaxHealth, "g_vampire_max_health", "500", CVAR_NORESTART, 0, qtrue },
-	//beta 5
-	{ &g_lms_lives, "g_lms_lives", "1", CVAR_NORESTART, 0, qtrue },
-	//beta 8
-	{ &g_lms_mode, "g_lms_mode", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
-        //beta 23
-        { &g_humanplayers, "g_humanplayers", "0", CVAR_SERVERINFO | CVAR_NORESTART, 0, qfalse },
+	{ &g_rankings, "g_rankings", "0", 0, 0, qfalse}
+
 };
 
-// bk001129 - made static to avoid aliasing
 static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[0] );
 
 
@@ -489,13 +360,6 @@ void G_RegisterCvars( void ) {
 		trap_Cvar_Set( "g_gametype", "0" );
 	}
 
-	//set FFA status for high gametypes:
-	if ( g_gametype.integer == GT_LMS ) {
-		g_ffa_gt = 1;	//Last Man standig is a FFA gametype
-	} else {
-		g_ffa_gt = 0;	//If >GT_CTF use bases
-	}
-
 	level.warmupModificationCount = g_warmup.modificationCount;
 }
 
@@ -549,14 +413,6 @@ void G_InitGame( int levelTime, int rand
 	srand( randomSeed );
 
 	G_RegisterCvars();
-        
-        //disable unwanted cvars
-        if( g_gametype.integer == GT_SINGLE_PLAYER )
-        {
-            g_instantgib.integer = 0;
-            g_rockets.integer = 0;
-            g_vampire.value = 0.0f;
-        }
 
 	G_ProcessIPBans();
 
@@ -626,7 +482,7 @@ void G_InitGame( int levelTime, int rand
 	G_FindTeams();
 
 	// make sure we have flags for CTF, etc
-	if( g_gametype.integer >= GT_TEAM && (g_ffa_gt!=1)) {
+	if( g_gametype.integer >= GT_TEAM ) {
 		G_CheckTeamItems();
 	}
 
@@ -648,22 +504,6 @@ void G_InitGame( int levelTime, int rand
 
 	G_RemapTeamShaders();
 
-	//elimination:
-	level.roundNumber = 1;
-	level.roundNumberStarted = 0;
-	level.roundStartTime = level.time+g_elimination_warmup.integer*1000;
-	level.roundRespawned = qfalse;
-	level.eliminationSides = rand()%2; //0 or 1
-
-	if(g_gametype.integer == GT_DOUBLE_D)
-		Team_SpawnDoubleDominationPoints();
-
-	if(g_gametype.integer == GT_DOMINATION ){
-		level.dom_scoreGiven = 0;
-		for(i=0;i<MAX_DOMINATION_POINTS;i++)
-			level.pointStatusDom[i] = TEAM_NONE;
-		level.domination_points_count = 0; //make sure its not too big
-	}
 }
 
 
@@ -960,7 +800,7 @@ void CalculateRanks( void ) {
 		sizeof(level.sortedClients[0]), SortRanks );
 
 	// set the rank value for all clients that are connected and not spectators
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		// in team games, rank is just the order of the teams, 0=red, 1=blue, 2=tied
 		for ( i = 0;  i < level.numConnectedClients; i++ ) {
 			cl = &level.clients[ level.sortedClients[i] ];
@@ -995,7 +835,7 @@ void CalculateRanks( void ) {
 	}
 
 	// set the CS_SCORES1/2 configstrings, which will be visible to everyone
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		trap_SetConfigstring( CS_SCORES1, va("%i", level.teamScores[TEAM_RED] ) );
 		trap_SetConfigstring( CS_SCORES2, va("%i", level.teamScores[TEAM_BLUE] ) );
 	} else {
@@ -1018,9 +858,6 @@ void CalculateRanks( void ) {
 	if ( level.intermissiontime ) {
 		SendScoreboardMessageToAllClients();
 	}
-        
-        if(g_humanplayers.integer != level.numVotingClients)
-            trap_Cvar_Set( "g_humanplayers", va("%i", level.numVotingClients) );
 }
 
 
@@ -1046,75 +883,6 @@ void SendScoreboardMessageToAllClients( 
 	for ( i = 0 ; i < level.maxclients ; i++ ) {
 		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
 			DeathmatchScoreboardMessage( g_entities + i );
-			EliminationMessage( g_entities + i );
-		}
-	}
-}
-
-/*
-========================
-SendElimiantionMessageToAllClients
-
-Used to send information important to Elimination
-========================
-*/
-void SendEliminationMessageToAllClients( void ) {
-	int		i;
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
-			EliminationMessage( g_entities + i );
-		}
-	}
-}
-
-/*
-========================
-SendDDtimetakenMessageToAllClients
-
-Do this if a team just started dominating.
-========================
-*/
-void SendDDtimetakenMessageToAllClients( void ) {
-	int		i;
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
-			DoubleDominationScoreTimeMessage( g_entities + i );
-		}
-	}
-}
-
-/*
-========================
-SendAttackingTeamMessageToAllClients
-
-Used for CTF Elimination oneway
-========================
-*/
-void SendAttackingTeamMessageToAllClients( void ) {
-	int		i;
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
-			AttackingTeamMessage( g_entities + i );
-		}
-	}
-}
-
-/*
-========================
-SendDominationPointsStatusMessageToAllClients
-
-Used for Standard domination
-========================
-*/
-void SendDominationPointsStatusMessageToAllClients( void ) {
-	int		i;
-
-	for ( i = 0 ; i < level.maxclients ; i++ ) {
-		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
-			DominationPointStatusMessage( g_entities + i );
 		}
 	}
 }
@@ -1348,7 +1116,7 @@ Append information about this game to th
 void LogExit( const char *string ) {
 	int				i, numSorted;
 	gclient_t		*cl;
-#ifdef MISSIONPACK // bk001205
+#ifdef MISSIONPACK
 	qboolean won = qtrue;
 #endif
 	G_LogPrintf( "Exit: %s\n", string );
@@ -1365,7 +1133,7 @@ void LogExit( const char *string ) {
 		numSorted = 32;
 	}
 
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		G_LogPrintf( "red:%i  blue:%i\n",
 			level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE] );
 	}
@@ -1397,7 +1165,7 @@ void LogExit( const char *string ) {
 
 #ifdef MISSIONPACK
 	if (g_singlePlayer.integer) {
-		if (g_gametype.integer >= GT_CTF && g_ffa_gt==0) {
+		if (g_gametype.integer >= GT_CTF) {
 			won = level.teamScores[TEAM_RED] > level.teamScores[TEAM_BLUE];
 		}
 		trap_SendConsoleCommand( EXEC_APPEND, (won) ? "spWin\n" : "spLose\n" );
@@ -1432,7 +1200,7 @@ void CheckIntermissionExit( void ) {
 	ready = 0;
 	notReady = 0;
 	readyMask = 0;
-        playerCount = 0;
+	playerCount = 0;
 	for (i=0 ; i< g_maxclients.integer ; i++) {
 		cl = level.clients + i;
 		if ( cl->pers.connected != CON_CONNECTED ) {
@@ -1442,7 +1210,7 @@ void CheckIntermissionExit( void ) {
 			continue;
 		}
 
-                playerCount++;
+		playerCount++;
 		if ( cl->readyToExit ) {
 			ready++;
 			if ( i < 16 ) {
@@ -1509,16 +1277,8 @@ qboolean ScoreIsTied( void ) {
 	if ( level.numPlayingClients < 2 ) {
 		return qfalse;
 	}
-        
-        //Sago: In Elimination and Oneway Flag Capture teams must win by two points.
-        if ( g_gametype.integer == GT_ELIMINATION || 
-                (g_gametype.integer == GT_CTF_ELIMINATION && g_elimination_ctf_oneway.integer)) {
-            return (level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE] || 
-                    level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE]+1 ||
-                    level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE]-1);
-        }
 	
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		return level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE];
 	}
 
@@ -1581,7 +1341,7 @@ void CheckExitRules( void ) {
 		return;
 	}
 
-	if ( (g_gametype.integer < GT_CTF || g_ffa_gt>0 ) && g_fraglimit.integer ) {
+	if ( g_gametype.integer < GT_CTF && g_fraglimit.integer ) {
 		if ( level.teamScores[TEAM_RED] >= g_fraglimit.integer ) {
 			trap_SendServerCommand( -1, "print \"Red hit the fraglimit.\n\"" );
 			LogExit( "Fraglimit hit." );
@@ -1612,7 +1372,7 @@ void CheckExitRules( void ) {
 		}
 	}
 
-	if ( (g_gametype.integer >= GT_CTF && g_ffa_gt<1) && g_capturelimit.integer ) {
+	if ( g_gametype.integer >= GT_CTF && g_capturelimit.integer ) {
 
 		if ( level.teamScores[TEAM_RED] >= g_capturelimit.integer ) {
 			trap_SendServerCommand( -1, "print \"Red hit the capturelimit.\n\"" );
@@ -1628,96 +1388,7 @@ void CheckExitRules( void ) {
 	}
 }
 
-//LMS - Last man Stading functions:
-void StartLMSRound(void) {
-	int		countsLiving;
-	countsLiving = TeamLivingCount( -1, TEAM_FREE );
-	if(countsLiving<2) {
-		trap_SendServerCommand( -1, "print \"Not enough players to start the round\n\"");
-		level.roundNumberStarted = level.roundNumber-1;
-		level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-		return;
-	}
 
-	//If we are enough to start a round:
-	level.roundNumberStarted = level.roundNumber; //Set numbers
-
-        
-        
-	SendEliminationMessageToAllClients();
-	EnableWeapons();
-}
-
-//the elimination start function
-void StartEliminationRound(void) {
-
-	int		countsLiving[TEAM_NUM_TEAMS];
-	countsLiving[TEAM_BLUE] = TeamLivingCount( -1, TEAM_BLUE );
-	countsLiving[TEAM_RED] = TeamLivingCount( -1, TEAM_RED );
-	if((countsLiving[TEAM_BLUE]==0) || (countsLiving[TEAM_RED]==0))
-	{
-		trap_SendServerCommand( -1, "print \"Not enough players to start the round\n\"");
-		level.roundNumberStarted = level.roundNumber-1;
-		level.roundRespawned = qfalse;
-		//Remember that one of the teams is empty!
-		level.roundRedPlayers = countsLiving[TEAM_RED];
-		level.roundBluePlayers = countsLiving[TEAM_BLUE];
-		level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-		return;
-	}
-	
-	//If we are enough to start a round:
-	level.roundNumberStarted = level.roundNumber; //Set numbers
-	level.roundRedPlayers = countsLiving[TEAM_RED];
-	level.roundBluePlayers = countsLiving[TEAM_BLUE];
-	if(g_gametype.integer == GT_CTF_ELIMINATION) {
-		Team_ReturnFlag( TEAM_RED );
-		Team_ReturnFlag( TEAM_BLUE );
-	}
-        if(g_gametype.integer == GT_ELIMINATION) {
-            G_LogPrintf( "ELIMINATION: %i %i %i: Round %i has started!\n", level.roundNumber, -1, 0, level.roundNumber );
-        } else if(g_gametype.integer == GT_CTF_ELIMINATION) {
-            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: Round %i has started!\n", level.roundNumber, -1, -1, 4, level.roundNumber );
-        }
-	SendEliminationMessageToAllClients();
-	if(g_elimination_ctf_oneway.integer)
-		SendAttackingTeamMessageToAllClients(); //Ensure that evaryone know who should attack.
-	EnableWeapons();
-}
-
-//things to do at end of round:
-void EndEliminationRound(void)
-{
-	DisableWeapons();
-	level.roundNumber++;
-	level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-	SendEliminationMessageToAllClients();
-	level.roundRespawned = qfalse;
-	if(g_elimination_ctf_oneway.integer)
-		SendAttackingTeamMessageToAllClients();
-}
-
-//Things to do if we don't want to move the roundNumber
-void RestartEliminationRound(void) {
-	DisableWeapons();
-	level.roundNumberStarted = level.roundNumber-1;
-	level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-	SendEliminationMessageToAllClients();
-	level.roundRespawned = qfalse;
-	if(g_elimination_ctf_oneway.integer)
-		SendAttackingTeamMessageToAllClients();
-}
-
-//Things to do during match warmup
-void WarmupEliminationRound(void) {
-	EnableWeapons();
-	level.roundNumberStarted = level.roundNumber-1;
-	level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-	SendEliminationMessageToAllClients();
-	level.roundRespawned = qfalse;
-	if(g_elimination_ctf_oneway.integer)
-		SendAttackingTeamMessageToAllClients();
-}
 
 /*
 ========================================================================
@@ -1727,370 +1398,6 @@ FUNCTIONS CALLED EVERY FRAME
 ========================================================================
 */
 
-/*
-CheckDoubleDomination
-*/
-
-void CheckDoubleDomination( void ) {
-	if ( level.numPlayingClients < 1 ) {
-		return;
-	}
-
-	if ( level.warmupTime != 0)
-		return;
-
-	if(g_gametype.integer != GT_DOUBLE_D)
-		return;
-
-	//Don't score if we are in intermission. Both points might have been taken when we went into intermission
-	if(level.intermissiontime)
-		return;
-
-	if(level.pointStatusA == TEAM_RED && level.pointStatusB == TEAM_RED && level.timeTaken + 10*1000 <= level.time) {
-		//Red scores
-		trap_SendServerCommand( -1, "print \"Red team scores!\n\"");
-		AddTeamScore(level.intermission_origin,TEAM_RED,1);
-                G_LogPrintf( "DD: %i %i %i: %s scores!\n", -1, TEAM_RED, 2, TeamName(TEAM_RED) );
-		Team_ForceGesture(TEAM_RED);
-		Team_DD_bonusAtPoints(TEAM_RED);
-		Team_RemoveDoubleDominationPoints();
-		//We start again in 10 seconds:
-		level.roundStartTime = level.time + 10*1000;
-		SendScoreboardMessageToAllClients();
-		CalculateRanks();
-	}
-
-	if(level.pointStatusA == TEAM_BLUE && level.pointStatusB == TEAM_BLUE && level.timeTaken + 10*1000 <= level.time) {
-		//Blue scores
-		trap_SendServerCommand( -1, "print \"Blue team scores!\n\"");
-		AddTeamScore(level.intermission_origin,TEAM_BLUE,1);
-                G_LogPrintf( "DD: %i %i %i: %s scores!\n", -1, TEAM_BLUE, 2, TeamName(TEAM_BLUE) );
-		Team_ForceGesture(TEAM_BLUE);
-		Team_DD_bonusAtPoints(TEAM_BLUE);
-		Team_RemoveDoubleDominationPoints();
-		//We start again in 10 seconds:
-		level.roundStartTime = level.time + 10*1000;
-		SendScoreboardMessageToAllClients();
-		CalculateRanks();
-	}
-
-	if((level.pointStatusA == TEAM_NONE || level.pointStatusB == TEAM_NONE) && level.time>level.roundStartTime) {
-		trap_SendServerCommand( -1, "print \"A new round has started\n\"");
-		Team_SpawnDoubleDominationPoints();
-		SendScoreboardMessageToAllClients();
-	}
-}
-
-/*
-CheckLMS
-*/
-
-void CheckLMS(void) {
-	int mode;
-	mode = g_lms_mode.integer;
-	if ( level.numPlayingClients < 1 ) {
-		return;
-	}
-
-	
-
-	//We don't want to do anything in intermission
-	if(level.intermissiontime) {
-		if(level.roundRespawned) {
-			RestartEliminationRound();
-		}
-		level.roundStartTime = level.time; //so that a player might join at any time to fix the bots+no humans+autojoin bug
-		return;
-	}
-
-	if(g_gametype.integer == GT_LMS)
-	{
-		int		countsLiving[TEAM_NUM_TEAMS];
-		//trap_SendServerCommand( -1, "print \"This is LMS!\n\"");
-		countsLiving[TEAM_FREE] = TeamLivingCount( -1, TEAM_FREE );
-		if(countsLiving[TEAM_FREE]==1 && level.roundNumber==level.roundNumberStarted)
-		{
-			if(mode <=1 )
-			LMSpoint();
-			trap_SendServerCommand( -1, "print \"We have a winner!\n\"");
-			EndEliminationRound();
-			Team_ForceGesture(TEAM_FREE);
-		}
-
-		if(countsLiving[TEAM_FREE]==0 && level.roundNumber==level.roundNumberStarted)
-		{
-			trap_SendServerCommand( -1, "print \"All death... how sad\n\"");
-			EndEliminationRound();
-		}
-
-		if((level.roundNumber==level.roundNumberStarted)&&(g_lms_mode.integer == 1 || g_lms_mode.integer==3)&&(level.time>=level.roundStartTime+1000*g_elimination_roundtime.integer))
-		{
-			trap_SendServerCommand( -1, "print \"Time up - Overtime disabled\n\"");
-			if(mode <=1 )
-			LMSpoint();
-			EndEliminationRound();
-		}
-
-		//This might be better placed another place:
-		if(g_elimination_activewarmup.integer<2)
-			g_elimination_activewarmup.integer=2; //We need at least 2 seconds to spawn all players
-		if(g_elimination_activewarmup.integer >= g_elimination_warmup.integer) //This must not be true
-			g_elimination_warmup.integer = g_elimination_activewarmup.integer+1; //Increase warmup
-
-		//Force respawn
-		if(level.roundNumber != level.roundNumberStarted && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer && !level.roundRespawned)
-		{
-			level.roundRespawned = qtrue;
-			RespawnAll();
-			DisableWeapons();
-			SendEliminationMessageToAllClients();
-		}
-
-		if(level.time<=level.roundStartTime && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer)
-		{
-			RespawnDead();
-			//DisableWeapons();
-		}
-
-		if(level.roundNumber == level.roundNumberStarted)
-		{
-			EnableWeapons();
-		}
-
-		if((level.roundNumber>level.roundNumberStarted)&&(level.time>=level.roundStartTime))
-			StartLMSRound();
-	
-		if(level.time+1000*g_elimination_warmup.integer-500>level.roundStartTime && level.numPlayingClients < 2)
-		{
-			RespawnDead(); //Allow player to run around anyway
-			WarmupEliminationRound(); //Start over
-			return;
-		}
-
-		if(level.warmupTime != 0) {
-			if(level.time+1000*g_elimination_warmup.integer-500>level.roundStartTime)
-			{
-				RespawnDead();
-				WarmupEliminationRound();
-			}
-		}
-
-	}
-}
-
-/*
-=============
-CheckElimination
-=============
-*/
-void CheckElimination(void) {
-	if ( level.numPlayingClients < 1 ) {
-		if( (g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION) &&
-			( level.time+1000*g_elimination_warmup.integer-500>level.roundStartTime ))
-			RestartEliminationRound(); //For spectators
-		return;
-	}	
-
-	//We don't want to do anything in itnermission
-	if(level.intermissiontime) {
-		if(level.roundRespawned)
-			RestartEliminationRound();
-		level.roundStartTime = level.time+1000*g_elimination_warmup.integer;
-		return;
-	}	
-
-	if(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_CTF_ELIMINATION)
-	{
-		int		counts[TEAM_NUM_TEAMS];
-		int		countsLiving[TEAM_NUM_TEAMS];
-		int		countsHealth[TEAM_NUM_TEAMS];
-		counts[TEAM_BLUE] = TeamCount( -1, TEAM_BLUE );
-		counts[TEAM_RED] = TeamCount( -1, TEAM_RED );
-
-		countsLiving[TEAM_BLUE] = TeamLivingCount( -1, TEAM_BLUE );
-		countsLiving[TEAM_RED] = TeamLivingCount( -1, TEAM_RED );
-
-		countsHealth[TEAM_BLUE] = TeamHealthCount( -1, TEAM_BLUE );
-		countsHealth[TEAM_RED] = TeamHealthCount( -1, TEAM_RED );
-
-		if(level.roundBluePlayers != 0 && level.roundRedPlayers != 0) { //Cannot score if one of the team never got any living players
-			if((countsLiving[TEAM_BLUE]==0)&&(level.roundNumber==level.roundNumberStarted))
-			{
-				//Blue team has been eliminated!
-				trap_SendServerCommand( -1, "print \"Blue Team eliminated!\n\"");
-				AddTeamScore(level.intermission_origin,TEAM_RED,1);
-                                if(g_gametype.integer == GT_ELIMINATION) {
-                                    G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i by eleminating the enemy team!\n", level.roundNumber, TEAM_RED, 1, TeamName(TEAM_RED), level.roundNumber );
-                                } else {
-                                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i by eleminating the enemy team!\n", level.roundNumber, -1, TEAM_RED, 6, TeamName(TEAM_RED), level.roundNumber );
-                                }
-				EndEliminationRound();
-				Team_ForceGesture(TEAM_RED);
-			}
-			else if((countsLiving[TEAM_RED]==0)&&(level.roundNumber==level.roundNumberStarted))
-			{
-				//Red team eliminated!
-				trap_SendServerCommand( -1, "print \"Red Team eliminated!\n\"");
-				AddTeamScore(level.intermission_origin,TEAM_BLUE,1);
-                                if(g_gametype.integer == GT_ELIMINATION) {
-                                    G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i by eleminating the enemy team!\n", level.roundNumber, TEAM_BLUE, 1, TeamName(TEAM_BLUE), level.roundNumber );
-                                } else {
-                                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i by eleminating the enemy team!\n", level.roundNumber, -1, TEAM_BLUE, 6, TeamName(TEAM_BLUE), level.roundNumber );
-                                }
-				EndEliminationRound();
-				Team_ForceGesture(TEAM_BLUE);
-			}
-		}
-
-		//Time up
-		if((level.roundNumber==level.roundNumberStarted)&&(level.time>=level.roundStartTime+1000*g_elimination_roundtime.integer))
-		{
-			trap_SendServerCommand( -1, "print \"No teams eliminated!\n\"");
-
-			if(level.roundBluePlayers != 0 && level.roundRedPlayers != 0) {//We don't want to divide by zero. (should not be possible)
-				if(g_gametype.integer == GT_CTF_ELIMINATION && g_elimination_ctf_oneway.integer) {
-					//One way CTF, make defensice team the winner.
-					if ( (level.eliminationSides+level.roundNumber)%2 == 0 ) { //Red was attacking
-						trap_SendServerCommand( -1, "print \"Blue team defended the base\n\"");
-						AddTeamScore(level.intermission_origin,TEAM_BLUE,1);
-					}
-					else {
-						trap_SendServerCommand( -1, "print \"Red team defended the base\n\"");
-						AddTeamScore(level.intermission_origin,TEAM_RED,1);
-					}
-				}
-				else if(((double)countsLiving[TEAM_RED])/((double)level.roundRedPlayers)>((double)countsLiving[TEAM_BLUE])/((double)level.roundBluePlayers))
-				{
-					//Red team has higher procentage survivors
-					trap_SendServerCommand( -1, "print \"Red team has most survivers!\n\"");
-					AddTeamScore(level.intermission_origin,TEAM_RED,1);
-                                        if(g_gametype.integer == GT_ELIMINATION) {
-                                            G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i due to more survivors!\n", level.roundNumber, TEAM_RED, 2, TeamName(TEAM_RED), level.roundNumber );
-                                        } else {
-                                            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i due to more survivors!\n", level.roundNumber, -1, TEAM_RED, 7, TeamName(TEAM_RED), level.roundNumber );
-                                        }
-				}
-				else if(((double)countsLiving[TEAM_RED])/((double)level.roundRedPlayers)<((double)countsLiving[TEAM_BLUE])/((double)level.roundBluePlayers))
-				{
-					//Blue team has higher procentage survivors
-					trap_SendServerCommand( -1, "print \"Blue team has most survivers!\n\"");
-					AddTeamScore(level.intermission_origin,TEAM_BLUE,1);	
-                                        if(g_gametype.integer == GT_ELIMINATION) {
-                                            G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i due to more survivors!\n", level.roundNumber, TEAM_BLUE, 2, TeamName(TEAM_BLUE), level.roundNumber );
-                                        } else {
-                                            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i due to more survivors!\n", level.roundNumber, -1, TEAM_BLUE, 7, TeamName(TEAM_BLUE), level.roundNumber );
-                                        }
-				}
-				else if(countsHealth[TEAM_RED]>countsHealth[TEAM_BLUE])
-				{
-					//Red team has more health
-					trap_SendServerCommand( -1, "print \"Red team has more health left!\n\"");
-					AddTeamScore(level.intermission_origin,TEAM_RED,1);
-                                        if(g_gametype.integer == GT_ELIMINATION) {
-                                            G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i due to more health left!\n", level.roundNumber, TEAM_RED, 3, TeamName(TEAM_RED), level.roundNumber );
-                                        } else {
-                                            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i due to more health left!\n", level.roundNumber, -1, TEAM_RED, 8, TeamName(TEAM_RED), level.roundNumber );
-                                        }
-				}
-				else if(countsHealth[TEAM_RED]<countsHealth[TEAM_BLUE])
-				{
-					//Blue team has more health
-					trap_SendServerCommand( -1, "print \"Blue team has more health left!\n\"");
-					AddTeamScore(level.intermission_origin,TEAM_BLUE,1);
-                                        if(g_gametype.integer == GT_ELIMINATION) {
-                                            G_LogPrintf( "ELIMINATION: %i %i %i: %s wins round %i due to more health left!\n", level.roundNumber, TEAM_BLUE, 3, TeamName(TEAM_BLUE), level.roundNumber );
-                                        } else {
-                                            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s wins round %i due to more health left!\n", level.roundNumber, -1, TEAM_BLUE, 8, TeamName(TEAM_BLUE), level.roundNumber );
-                                        }
-				}
-			}
-                        //Draw
-                        if(g_gametype.integer == GT_ELIMINATION) {
-                            G_LogPrintf( "ELIMINATION: %i %i %i: Round %i ended in a draw!\n", level.roundNumber, -1, 4, level.roundNumber );
-                        } else {
-                            G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: Round %i ended in a draw!\n", level.roundNumber, -1, -1, 9, level.roundNumber );
-                        }
-			EndEliminationRound();
-		}
-
-		//This might be better placed another place:
-		if(g_elimination_activewarmup.integer<1)
-			g_elimination_activewarmup.integer=1; //We need at least 1 second to spawn all players
-		if(g_elimination_activewarmup.integer >= g_elimination_warmup.integer) //This must not be true
-			g_elimination_warmup.integer = g_elimination_activewarmup.integer+1; //Increase warmup
-
-		//Force respawn
-		if(level.roundNumber!=level.roundNumberStarted && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer && !level.roundRespawned)
-		{
-			level.roundRespawned = qtrue;
-			RespawnAll();
-			SendEliminationMessageToAllClients();
-		}
-
-		if(level.time<=level.roundStartTime && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer)
-		{
-			RespawnDead();
-		}
-			
-
-		if((level.roundNumber>level.roundNumberStarted)&&(level.time>=level.roundStartTime))
-			StartEliminationRound();
-	
-		if(level.time+1000*g_elimination_warmup.integer-500>level.roundStartTime)
-		if(counts[TEAM_BLUE]<1 || counts[TEAM_RED]<1)
-		{
-			RespawnDead(); //Allow players to run around anyway
-			WarmupEliminationRound(); //Start over
-			return;
-		}
-
-		if(level.warmupTime != 0) {
-			if(level.time+1000*g_elimination_warmup.integer-500>level.roundStartTime)
-			{
-				RespawnDead();
-				WarmupEliminationRound();
-			}
-		}
-	}
-}
-
-/*
-=============
-CheckDomination
-=============
-*/
-void CheckDomination(void) {
-	int i;
-        int scoreFactor = 1;
-
-	if ( (level.numPlayingClients < 1) || (g_gametype.integer != GT_DOMINATION) ) {
-		return;
-	}
-
-	//Do nothing if warmup
-	if(level.warmupTime != 0)
-		return; 
-
-	//Don't score if we are in intermission. Just plain stupid
-	if(level.intermissiontime)
-		return;
-
-	//Sago: I use if instead of while, since if the server stops for more than 2 seconds people should not be allowed to score anyway
-	if(level.domination_points_count>3)
-            scoreFactor = 2; //score more slowly if there are many points
-        if(level.time>=level.dom_scoreGiven*DOM_SECSPERPOINT*scoreFactor) {
-		for(i=0;i<level.domination_points_count;i++) {
-			if ( level.pointStatusDom[i] == TEAM_RED )
-				AddTeamScore(level.intermission_origin,TEAM_RED,1);
-			if ( level.pointStatusDom[i] == TEAM_BLUE )
-				AddTeamScore(level.intermission_origin,TEAM_BLUE,1);
-		}
-		level.dom_scoreGiven++;
-		while(level.time>level.dom_scoreGiven*DOM_SECSPERPOINT*scoreFactor)
-			level.dom_scoreGiven++;
-		CalculateRanks();
-	}
-}
 
 /*
 =============
@@ -2160,7 +1467,7 @@ void CheckTournament( void ) {
 		int		counts[TEAM_NUM_TEAMS];
 		qboolean	notEnough = qfalse;
 
-		if ( g_gametype.integer > GT_TEAM && !g_ffa_gt ) {
+		if ( g_gametype.integer > GT_TEAM ) {
 			counts[TEAM_BLUE] = TeamCount( -1, TEAM_BLUE );
 			counts[TEAM_RED] = TeamCount( -1, TEAM_RED );
 
@@ -2476,15 +1783,10 @@ int start, end;
 			continue;
 		}
 
-//unlagged - backward reconciliation #2
-		// we'll run missiles separately to save CPU in backward reconciliation
-/*
 		if ( ent->s.eType == ET_MISSILE ) {
 			G_RunMissile( ent );
 			continue;
 		}
-*/
-//unlagged - backward reconciliation #2
 
 		if ( ent->s.eType == ET_ITEM || ent->physicsObject ) {
 			G_RunItem( ent );
@@ -2503,32 +1805,6 @@ int start, end;
 
 		G_RunThink( ent );
 	}
-
-//unlagged - backward reconciliation #2
-	// NOW run the missiles, with all players backward-reconciled
-	// to the positions they were in exactly 50ms ago, at the end
-	// of the last server frame
-	G_TimeShiftAllClients( level.previousTime, NULL );
-
-	ent = &g_entities[0];
-	for (i=0 ; i<level.num_entities ; i++, ent++) {
-		if ( !ent->inuse ) {
-			continue;
-		}
-
-		// temporary entities don't think
-		if ( ent->freeAfterEvent ) {
-			continue;
-		}
-
-		if ( ent->s.eType == ET_MISSILE ) {
-			G_RunMissile( ent );
-		}
-	}
-
-	G_UnTimeShiftAllClients( NULL );
-//unlagged - backward reconciliation #2
-
 end = trap_Milliseconds();
 
 start = trap_Milliseconds();
@@ -2544,19 +1820,6 @@ end = trap_Milliseconds();
 	// see if it is time to do a tournement restart
 	CheckTournament();
 
-	//Check Elimination state
-	CheckElimination();
-	CheckLMS();
-
-	//Check Double Domination
-	CheckDoubleDomination();
-
-	CheckDomination();
-
-	//Sago: I just need to think why I placed this here... they should only spawn once
-	if(g_gametype.integer == GT_DOMINATION)
-		Team_Dom_SpawnPoints();
-
 	// see if it is time to end the level
 	CheckExitRules();
 
@@ -2579,12 +1842,4 @@ end = trap_Milliseconds();
 		}
 		trap_Cvar_Set("g_listEntity", "0");
 	}
-
-//unlagged - backward reconciliation #4
-	// record the time at the end of this frame - it should be about
-	// the time the next frame begins - when the server starts
-	// accepting commands from connected clients
-	level.frameStartTime = trap_Milliseconds();
-//unlagged - backward reconciliation #4
 }
-
diff -upr ioquake3svn1438/code/game/g_mem.c ioquake3serverFix/code/game/g_mem.c
--- ioquake3svn1438/code/game/g_mem.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_mem.c	2008-08-09 11:28:21.000000000 -0500
@@ -41,7 +41,7 @@ void *G_Alloc( int size ) {
 	}
 
 	if ( allocPoint + size > POOLSIZE ) {
-	  G_Error( "G_Alloc: failed on allocation of %i bytes\n", size ); // bk010103 - was %u, but is signed
+	  G_Error( "G_Alloc: failed on allocation of %i bytes\n", size );
 		return NULL;
 	}
 
diff -upr ioquake3svn1438/code/game/g_misc.c ioquake3serverFix/code/game/g_misc.c
--- ioquake3svn1438/code/game/g_misc.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_misc.c	2008-08-09 11:28:21.000000000 -0500
@@ -81,7 +81,7 @@ void TeleportPlayer( gentity_t *player, 
 
 	// use temp events at source and destination to prevent the effect
 	// from getting dropped by a second player event
-	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR && player->client->ps.pm_type != PM_SPECTATOR) {
+	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		tent = G_TempEntity( player->client->ps.origin, EV_PLAYER_TELEPORT_OUT );
 		tent->s.clientNum = player->s.clientNum;
 
@@ -104,16 +104,11 @@ void TeleportPlayer( gentity_t *player, 
 	// toggle the teleport bit so the client knows to not lerp
 	player->client->ps.eFlags ^= EF_TELEPORT_BIT;
 
-//unlagged - backward reconciliation #3
-	// we don't want players being backward-reconciled back through teleporters
-	G_ResetHistory( player );
-//unlagged - backward reconciliation #3
-
 	// set angles
 	SetClientViewAngle( player, angles );
 
 	// kill anything at the destination
-	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR && player->client->ps.pm_type != PM_SPECTATOR ) {
+	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		G_KillBox (player);
 	}
 
@@ -123,7 +118,7 @@ void TeleportPlayer( gentity_t *player, 
 	// use the precise origin for linking
 	VectorCopy( player->client->ps.origin, player->r.currentOrigin );
 
-	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR && player->client->ps.pm_type != PM_SPECTATOR ) {
+	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		trap_LinkEntity (player);
 	}
 }
diff -upr ioquake3svn1438/code/game/g_missile.c ioquake3serverFix/code/game/g_missile.c
--- ioquake3svn1438/code/game/g_missile.c	2008-07-06 08:29:48.000000000 -0500
+++ ioquake3serverFix/code/game/g_missile.c	2008-08-09 11:28:21.000000000 -0500
@@ -92,7 +92,7 @@ void G_ExplodeMissile( gentity_t *ent ) 
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ================
 ProximityMine_Explode
@@ -137,7 +137,7 @@ void ProximityMine_Trigger( gentity_t *t
 	}
 
 
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		// don't trigger same team mines
 		if (trigger->parent->s.generic1 == other->client->sess.sessionTeam) {
 			return;
@@ -259,24 +259,7 @@ static void ProximityMine_Player( gentit
 		mine->nextthink = level.time + 10 * 1000;
 	}
 }
-
-/*
- *=================
- *ProximityMine_RemoveAll
- *=================
- */
-
-void ProximityMine_RemoveAll() {
-    gentity_t	*mine;
-    
-    mine = NULL;
-    
-    while ((mine = G_Find (mine, FOFS(classname), "prox mine")) != NULL) {
-        mine->think = ProximityMine_Explode;
-	mine->nextthink = level.time + 1;
-    }
-}
-//#endif
+#endif
 
 /*
 ================
@@ -286,10 +269,10 @@ G_MissileImpact
 void G_MissileImpact( gentity_t *ent, trace_t *trace ) {
 	gentity_t		*other;
 	qboolean		hitClient = qfalse;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	vec3_t			forward, impactpoint, bouncedir;
 	int				eFlags;
-//#endif
+#endif
 	other = &g_entities[trace->entityNum];
 
 	// check for bounce
@@ -300,11 +283,10 @@ void G_MissileImpact( gentity_t *ent, tr
 		return;
 	}
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if ( other->takedamage ) {
 		if ( ent->s.weapon != WP_PROX_LAUNCHER ) {
 			if ( other->client && other->client->invulnerabilityTime > level.time ) {
-              
 				//
 				VectorCopy( ent->s.pos.trDelta, forward );
 				VectorNormalize( forward );
@@ -320,7 +302,7 @@ void G_MissileImpact( gentity_t *ent, tr
 			}
 		}
 	}
-//#endif
+#endif
 	// impact damage
 	if (other->takedamage) {
 		// FIXME: wrong damage direction?
@@ -341,7 +323,7 @@ void G_MissileImpact( gentity_t *ent, tr
 		}
 	}
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( ent->s.weapon == WP_PROX_LAUNCHER ) {
 		if( ent->s.pos.trType != TR_GRAVITY ) {
 			return;
@@ -376,7 +358,7 @@ void G_MissileImpact( gentity_t *ent, tr
 
 		return;
 	}
-//#endif
+#endif
 
 	if (!strcmp(ent->classname, "hook")) {
 		gentity_t *nent;
@@ -474,12 +456,12 @@ void G_RunMissile( gentity_t *ent ) {
 	if ( ent->target_ent ) {
 		passent = ent->target_ent->s.number;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	// prox mines that left the owner bbox will attach to anything, even the owner
 	else if (ent->s.weapon == WP_PROX_LAUNCHER && ent->count) {
 		passent = ENTITYNUM_NONE;
 	}
-//#endif
+#endif
 	else {
 		// ignore interactions with the missile owner
 		passent = ent->r.ownerNum;
@@ -549,10 +531,6 @@ gentity_t *fire_plasma (gentity_t *self,
 	bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
 	bolt->s.weapon = WP_PLASMAGUN;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 20;
 	bolt->splashDamage = 15;
@@ -595,10 +573,6 @@ gentity_t *fire_grenade (gentity_t *self
 	bolt->s.weapon = WP_GRENADE_LAUNCHER;
 	bolt->s.eFlags = EF_BOUNCE_HALF;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 100;
 	bolt->splashDamage = 100;
@@ -640,10 +614,6 @@ gentity_t *fire_bfg (gentity_t *self, ve
 	bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
 	bolt->s.weapon = WP_BFG;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 100;
 	bolt->splashDamage = 100;
@@ -684,10 +654,6 @@ gentity_t *fire_rocket (gentity_t *self,
 	bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
 	bolt->s.weapon = WP_ROCKET_LAUNCHER;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 100;
 	bolt->splashDamage = 100;
@@ -714,9 +680,6 @@ fire_grapple
 */
 gentity_t *fire_grapple (gentity_t *self, vec3_t start, vec3_t dir) {
 	gentity_t	*hook;
-//unlagged - grapple
-	int hooktime;
-//unlagged - grapple
 
 	VectorNormalize (dir);
 
@@ -733,27 +696,8 @@ gentity_t *fire_grapple (gentity_t *self
 	hook->parent = self;
 	hook->target_ent = NULL;
 
-//unlagged - grapple
-	// we might want this later
-	hook->s.otherEntityNum = self->s.number;
-
-	// setting the projectile base time back makes the hook's first
-	// step larger
-
-	if ( self->client ) {
-		hooktime = self->client->pers.cmd.serverTime + 50;
-	}
-	else {
-		hooktime = level.time - MISSILE_PRESTEP_TIME;
-	}
-
-	hook->s.pos.trTime = hooktime;
-//unlagged - grapple
-
 	hook->s.pos.trType = TR_LINEAR;
-//unlagged - grapple
-	//hook->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME;		// move a bit on the very first frame
-//unlagged - grapple
+	hook->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME;		// move a bit on the very first frame
 	hook->s.otherEntityNum = self->s.number; // use to match beam in client
 	VectorCopy( start, hook->s.pos.trBase );
 	VectorScale( dir, 800, hook->s.pos.trDelta );
@@ -766,7 +710,7 @@ gentity_t *fire_grapple (gentity_t *self
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 =================
 fire_nail
@@ -788,10 +732,6 @@ gentity_t *fire_nail( gentity_t *self, v
 	bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
 	bolt->s.weapon = WP_NAILGUN;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 20;
 	bolt->methodOfDeath = MOD_NAIL;
@@ -840,10 +780,6 @@ gentity_t *fire_prox( gentity_t *self, v
 	bolt->s.weapon = WP_PROX_LAUNCHER;
 	bolt->s.eFlags = 0;
 	bolt->r.ownerNum = self->s.number;
-//unlagged - projectile nudge
-	// we'll need this for nudging projectiles later
-	bolt->s.otherEntityNum = self->s.number;
-//unlagged - projectile nudge
 	bolt->parent = self;
 	bolt->damage = 0;
 	bolt->splashDamage = 100;
@@ -869,4 +805,4 @@ gentity_t *fire_prox( gentity_t *self, v
 
 	return bolt;
 }
-//#endif
+#endif
diff -upr ioquake3svn1438/code/game/g_mover.c ioquake3serverFix/code/game/g_mover.c
--- ioquake3svn1438/code/game/g_mover.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_mover.c	2008-08-09 11:28:21.000000000 -0500
@@ -857,7 +857,7 @@ Touch_DoorTrigger
 ================
 */
 void Touch_DoorTrigger( gentity_t *ent, gentity_t *other, trace_t *trace ) {
-	if ( other->client && (other->client->sess.sessionTeam == TEAM_SPECTATOR || other->client->ps.pm_type == PM_SPECTATOR)) {
+	if ( other->client && other->client->sess.sessionTeam == TEAM_SPECTATOR ) {
 		// if the door is not open and not opening
 		if ( ent->parent->moverState != MOVER_1TO2 &&
 			ent->parent->moverState != MOVER_POS2) {
diff -upr ioquake3svn1438/code/game/g_rankings.c ioquake3serverFix/code/game/g_rankings.c
--- ioquake3svn1438/code/game/g_rankings.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_rankings.c	2008-08-09 11:28:21.000000000 -0500
@@ -104,7 +104,7 @@ void G_RankRunFrame()
 				}
 				break;
 			case QGR_STATUS_ACTIVE:
-				if( (ent->client->sess.sessionTeam == TEAM_SPECTATOR || (client->isEliminated)) &&
+				if( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) &&
 					(g_gametype.integer < GT_TEAM) )
 				{
 					SetTeam( ent, "free" );
diff -upr ioquake3svn1438/code/game/g_session.c ioquake3serverFix/code/game/g_session.c
--- ioquake3svn1438/code/game/g_session.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_session.c	2008-08-09 11:28:21.000000000 -0500
@@ -69,8 +69,6 @@ Called on a reconnect
 void G_ReadSessionData( gclient_t *client ) {
 	char	s[MAX_STRING_CHARS];
 	const char	*var;
-
-	// bk001205 - format
 	int teamLeader;
 	int spectatorState;
 	int sessionTeam;
@@ -79,16 +77,15 @@ void G_ReadSessionData( gclient_t *clien
 	trap_Cvar_VariableStringBuffer( var, s, sizeof(s) );
 
 	sscanf( s, "%i %i %i %i %i %i %i",
-		&sessionTeam,                 // bk010221 - format
+		&sessionTeam,
 		&client->sess.spectatorTime,
-		&spectatorState,              // bk010221 - format
+		&spectatorState,
 		&client->sess.spectatorClient,
 		&client->sess.wins,
 		&client->sess.losses,
-		&teamLeader                   // bk010221 - format
+		&teamLeader
 		);
 
-	// bk001205 - format issues
 	client->sess.sessionTeam = (team_t)sessionTeam;
 	client->sess.spectatorState = (spectatorState_t)spectatorState;
 	client->sess.teamLeader = (qboolean)teamLeader;
@@ -109,7 +106,7 @@ void G_InitSessionData( gclient_t *clien
 	sess = &client->sess;
 
 	// initial team determination
-	if ( g_gametype.integer >= GT_TEAM && g_ffa_gt!=1) {
+	if ( g_gametype.integer >= GT_TEAM ) {
 		if ( g_teamAutoJoin.integer ) {
 			sess->sessionTeam = PickTeam( -1 );
 			BroadcastTeamChange( client, -1 );
@@ -126,7 +123,6 @@ void G_InitSessionData( gclient_t *clien
 			switch ( g_gametype.integer ) {
 			default:
 			case GT_FFA:
-			case GT_LMS:
 			case GT_SINGLE_PLAYER:
 				if ( g_maxGameClients.integer > 0 && 
 					level.numNonSpectatorClients >= g_maxGameClients.integer ) {
diff -upr ioquake3svn1438/code/game/g_spawn.c ioquake3serverFix/code/game/g_spawn.c
--- ioquake3svn1438/code/game/g_spawn.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_spawn.c	2008-08-09 11:28:21.000000000 -0500
@@ -129,13 +129,6 @@ typedef struct {
 void SP_info_player_start (gentity_t *ent);
 void SP_info_player_deathmatch (gentity_t *ent);
 void SP_info_player_intermission (gentity_t *ent);
-//For Double Domination:
-void SP_info_player_dd (gentity_t *ent);
-void SP_info_player_dd_red (gentity_t *ent);
-void SP_info_player_dd_blue (gentity_t *ent);
-//standard domination:
-void SP_domination_point ( gentity_t *ent);
-
 void SP_info_firstplace(gentity_t *ent);
 void SP_info_secondplace(gentity_t *ent);
 void SP_info_thirdplace(gentity_t *ent);
@@ -193,11 +186,11 @@ void SP_team_CTF_blueplayer( gentity_t *
 void SP_team_CTF_redspawn( gentity_t *ent );
 void SP_team_CTF_bluespawn( gentity_t *ent );
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 void SP_team_blueobelisk( gentity_t *ent );
 void SP_team_redobelisk( gentity_t *ent );
 void SP_team_neutralobelisk( gentity_t *ent );
-//#endif
+#endif
 void SP_item_botroam( gentity_t *ent ) { }
 
 spawn_t	spawns[] = {
@@ -206,14 +199,6 @@ spawn_t	spawns[] = {
 	{"info_player_start", SP_info_player_start},
 	{"info_player_deathmatch", SP_info_player_deathmatch},
 	{"info_player_intermission", SP_info_player_intermission},
-//Double Domination player spawn:
-	{"info_player_dd", SP_info_player_dd},
-        {"info_player_dd_red", SP_info_player_dd_red},
-        {"info_player_dd_blue", SP_info_player_dd_blue},
-//Standard Domination point spawn:
-	{"domination_point", SP_domination_point},
-
-
 	{"info_null", SP_info_null},
 	{"info_notnull", SP_info_notnull},		// use target_position instead
 	{"info_camp", SP_info_camp},
@@ -274,11 +259,11 @@ spawn_t	spawns[] = {
 	{"team_CTF_redspawn", SP_team_CTF_redspawn},
 	{"team_CTF_bluespawn", SP_team_CTF_bluespawn},
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	{"team_redobelisk", SP_team_redobelisk},
 	{"team_blueobelisk", SP_team_blueobelisk},
 	{"team_neutralobelisk", SP_team_neutralobelisk},
-//#endif
+#endif
 	{"item_botroam", SP_item_botroam},
 
 	{NULL, 0}
@@ -424,7 +409,7 @@ void G_SpawnGEntityFromSpawnVars( void )
 	int			i;
 	gentity_t	*ent;
 	char		*s, *value, *gametypeName;
-	static char *gametypeNames[] = {"ffa", "tournament", "single", "team", "ctf", "oneflag", "obelisk", "harvester", "elimination", "ctfelimination", "lms", "dd", "dom"};
+	static char *gametypeNames[] = {"ffa", "tournament", "single", "team", "ctf", "oneflag", "obelisk", "harvester", "teamtournament"};
 
 	// get the next free entity
 	ent = G_Spawn();
@@ -594,12 +579,8 @@ void SP_worldspawn( void ) {
 
 	trap_SetConfigstring( CS_LEVEL_START_TIME, va("%i", level.startTime ) );
 
-	if ( *g_music.string && Q_stricmp( g_music.string, "none" ) ) {
-		trap_SetConfigstring( CS_MUSIC, g_music.string );
-	} else {
-		G_SpawnString( "music", "", &s );   
-		trap_SetConfigstring( CS_MUSIC, s );
-	}
+	G_SpawnString( "music", "", &s );
+	trap_SetConfigstring( CS_MUSIC, s );
 
 	G_SpawnString( "message", "", &s );
 	trap_SetConfigstring( CS_MESSAGE, s );				// map specific message
diff -upr ioquake3svn1438/code/game/g_team.c ioquake3serverFix/code/game/g_team.c
--- ioquake3svn1438/code/game/g_team.c	2008-06-28 16:38:15.000000000 -0500
+++ ioquake3serverFix/code/game/g_team.c	2008-08-09 11:28:21.000000000 -0500
@@ -40,39 +40,24 @@ teamgame_t teamgame;
 
 gentity_t	*neutralObelisk;
 
-//Some pointers for Double Domination so we don't need GFind (I think it might crash at random times...)
-gentity_t	*ddA;
-gentity_t	*ddB;
-//Pointers for Standard Domination
-gentity_t	*dom_points[MAX_DOMINATION_POINTS];
-
 void Team_SetFlagStatus( int team, flagStatus_t status );
 
-qboolean dominationPointsSpawned;
-
 void Team_InitGame( void ) {
 	memset(&teamgame, 0, sizeof teamgame);
 
 	switch( g_gametype.integer ) {
 	case GT_CTF:
-	case GT_CTF_ELIMINATION:
-	case GT_DOUBLE_D:
 		teamgame.redStatus = -1; // Invalid to force update
 		Team_SetFlagStatus( TEAM_RED, FLAG_ATBASE );
 		 teamgame.blueStatus = -1; // Invalid to force update
 		Team_SetFlagStatus( TEAM_BLUE, FLAG_ATBASE );
-		ddA = NULL;
-		ddB = NULL;
 		break;
-	case GT_DOMINATION:
-		dominationPointsSpawned = qfalse;
-                break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case GT_1FCTF:
 		teamgame.flagStatus = -1; // Invalid to force update
 		Team_SetFlagStatus( TEAM_FREE, FLAG_ATBASE );
 		break;
-//#endif
+#endif
 	default:
 		break;
 	}
@@ -146,42 +131,37 @@ AddTeamScore
 void AddTeamScore(vec3_t origin, int team, int score) {
 	gentity_t	*te;
 
+	te = G_TempEntity(origin, EV_GLOBAL_TEAM_SOUND );
+	te->r.svFlags |= SVF_BROADCAST;
 
-	if ( g_gametype.integer != GT_DOMINATION ) {
-		te = G_TempEntity(origin, EV_GLOBAL_TEAM_SOUND );
-		te->r.svFlags |= SVF_BROADCAST;
-
-	
-	
-		if ( team == TEAM_RED ) {
-			if ( level.teamScores[ TEAM_RED ] + score == level.teamScores[ TEAM_BLUE ] ) {
-				//teams are tied sound
-				te->s.eventParm = GTS_TEAMS_ARE_TIED;
-			}
-			else if ( level.teamScores[ TEAM_RED ] <= level.teamScores[ TEAM_BLUE ] &&
-						level.teamScores[ TEAM_RED ] + score > level.teamScores[ TEAM_BLUE ]) {
-				// red took the lead sound
-				te->s.eventParm = GTS_REDTEAM_TOOK_LEAD;
-			}
-			else {
-				// red scored sound
-				te->s.eventParm = GTS_REDTEAM_SCORED;
-			}
+	if ( team == TEAM_RED ) {
+		if ( level.teamScores[ TEAM_RED ] + score == level.teamScores[ TEAM_BLUE ] ) {
+			//teams are tied sound
+			te->s.eventParm = GTS_TEAMS_ARE_TIED;
+		}
+		else if ( level.teamScores[ TEAM_RED ] <= level.teamScores[ TEAM_BLUE ] &&
+					level.teamScores[ TEAM_RED ] + score > level.teamScores[ TEAM_BLUE ]) {
+			// red took the lead sound
+			te->s.eventParm = GTS_REDTEAM_TOOK_LEAD;
 		}
 		else {
-			if ( level.teamScores[ TEAM_BLUE ] + score == level.teamScores[ TEAM_RED ] ) {
-				//teams are tied sound
-				te->s.eventParm = GTS_TEAMS_ARE_TIED;
-			}
-			else if ( level.teamScores[ TEAM_BLUE ] <= level.teamScores[ TEAM_RED ] &&
-						level.teamScores[ TEAM_BLUE ] + score > level.teamScores[ TEAM_RED ]) {
-				// blue took the lead sound
-				te->s.eventParm = GTS_BLUETEAM_TOOK_LEAD;
-			}
-			else {
-				// blue scored sound
-				te->s.eventParm = GTS_BLUETEAM_SCORED;
-			}
+			// red scored sound
+			te->s.eventParm = GTS_REDTEAM_SCORED;
+		}
+	}
+	else {
+		if ( level.teamScores[ TEAM_BLUE ] + score == level.teamScores[ TEAM_RED ] ) {
+			//teams are tied sound
+			te->s.eventParm = GTS_TEAMS_ARE_TIED;
+		}
+		else if ( level.teamScores[ TEAM_BLUE ] <= level.teamScores[ TEAM_RED ] &&
+					level.teamScores[ TEAM_BLUE ] + score > level.teamScores[ TEAM_RED ]) {
+			// blue took the lead sound
+			te->s.eventParm = GTS_BLUETEAM_TOOK_LEAD;
+		}
+		else {
+			// blue scored sound
+			te->s.eventParm = GTS_BLUETEAM_SCORED;
 		}
 	}
 	level.teamScores[ team ] += score;
@@ -197,7 +177,7 @@ qboolean OnSameTeam( gentity_t *ent1, ge
 		return qfalse;
 	}
 
-	if ( g_gametype.integer < GT_TEAM || g_ffa_gt==1) {
+	if ( g_gametype.integer < GT_TEAM ) {
 		return qfalse;
 	}
 
@@ -238,20 +218,14 @@ void Team_SetFlagStatus( int team, flagS
 		break;
 	}
 
-
 	if( modified ) {
 		char st[4];
 
-		if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION) {
+		if( g_gametype.integer == GT_CTF ) {
 			st[0] = ctfFlagStatusRemap[teamgame.redStatus];
 			st[1] = ctfFlagStatusRemap[teamgame.blueStatus];
 			st[2] = 0;
 		}
-		else if (g_gametype.integer == GT_DOUBLE_D) {
-			st[0] = oneFlagStatusRemap[teamgame.redStatus];
-			st[1] = oneFlagStatusRemap[teamgame.blueStatus];
-			st[2] = 0;
-		}
 		else {		// GT_1FCTF
 			st[0] = oneFlagStatusRemap[teamgame.flagStatus];
 			st[1] = 0;
@@ -290,47 +264,13 @@ void Team_ForceGesture(int team) {
 			continue;
 		if (ent->client->sess.sessionTeam != team)
 			continue;
+		//
 		ent->flags |= FL_FORCE_GESTURE;
 	}
 }
 
 /*
 ================
-Team_DD_bonusAtPoints
-Adds bonus point to a player if he is close to the point and on the team that scores 
-================
-*/
-
-void Team_DD_bonusAtPoints(int team) {
-	vec3_t v1, v2;
-	int i;
-	gentity_t *player;
-
-	for (i = 0; i < MAX_CLIENTS; i++) {
-		player = &g_entities[i];
-		if (!player->inuse)
-			continue;
-		if (!player->client)
-			continue;
-		
-		if( player->client->sess.sessionTeam != team )
-			return; //player was not on scoring team 
-
-		//See if the player is close to any of the points:
-		VectorSubtract(player->r.currentOrigin, ddA->r.currentOrigin, v1);
-		VectorSubtract(player->r.currentOrigin, ddB->r.currentOrigin, v2);
-		if (!( ( ( VectorLength(v1) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddA->r.currentOrigin, player->r.currentOrigin ) ) ||
-				( VectorLength(v2) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddB->r.currentOrigin, player->r.currentOrigin ) ) )))
-					return; //Wasn't close to any of the points
-	
-		AddScore(player, player->r.currentOrigin, DD_AT_POINT_AT_CAPTURE);
-	}
-}
-
-/*
-================
 Team_FragBonuses
 
 Calculate the bonuses for flag defense, flag carrier defense, etc.
@@ -374,25 +314,17 @@ void Team_FragBonuses(gentity_t *targ, g
 
 	// did the attacker frag the flag carrier?
 	tokens = 0;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_HARVESTER ) {
 		tokens = targ->client->ps.generic1;
 	}
-//#endif
+#endif
 	if (targ->client->ps.powerups[enemy_flag_pw]) {
 		attacker->client->pers.teamState.lastfraggedcarrier = level.time;
 		AddScore(attacker, targ->r.currentOrigin, CTF_FRAG_CARRIER_BONUS);
 		attacker->client->pers.teamState.fragcarrier++;
 		PrintMsg(NULL, "%s" S_COLOR_WHITE " fragged %s's flag carrier!\n",
 			attacker->client->pers.netname, TeamName(team));
-                if(g_gametype.integer == GT_CTF) {
-                    G_LogPrintf( "CTF: %i %i %i: %s fragged %s's flag carrier!\n", attacker->client->ps.clientNum, team, 3, attacker->client->pers.netname, TeamName(team) );
-                } else if(g_gametype.integer == GT_CTF_ELIMINATION) {
-                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s fragged %s's flag carrier!\n", level.roundNumber, attacker->client->ps.clientNum, team, 3, attacker->client->pers.netname, TeamName(team) );
-                } else if(g_gametype.integer == GT_1FCTF) {
-                    G_LogPrintf( "1fCTF: %i %i %i: %s fragged %s's flag carrier!\n", attacker->client->ps.clientNum, team, 3, attacker->client->pers.netname, TeamName(team) );
-                }
-                
 
 		// the target had the flag, clear the hurt carrier
 		// field on the other team
@@ -433,8 +365,6 @@ void Team_FragBonuses(gentity_t *targ, g
 		targ->client->pers.teamState.lasthurtcarrier = 0;
 
 		attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
-                
 		team = attacker->client->sess.sessionTeam;
 		// add the sprite over the player's head
 		attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
@@ -453,7 +383,6 @@ void Team_FragBonuses(gentity_t *targ, g
 		targ->client->pers.teamState.lasthurtcarrier = 0;
 
 		attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
 		team = attacker->client->sess.sessionTeam;
 		// add the sprite over the player's head
 		attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
@@ -463,83 +392,11 @@ void Team_FragBonuses(gentity_t *targ, g
 		return;
 	}
 
-//We palce the Double Domination bonus test here! This appears to be the best place to place them.
-	if ( g_gametype.integer == GT_DOUBLE_D ) {
-		if(attacker->client->sess.sessionTeam == level.pointStatusA ) { //Attack must defend point A
-			//See how close attacker and target was to Point A:
-			VectorSubtract(targ->r.currentOrigin, ddA->r.currentOrigin, v1);
-			VectorSubtract(attacker->r.currentOrigin, ddA->r.currentOrigin, v2);
-
-			if ( ( ( VectorLength(v1) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddA->r.currentOrigin, targ->r.currentOrigin ) ) ||
-				( VectorLength(v2) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddA->r.currentOrigin, attacker->r.currentOrigin ) ) ) &&
-				attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam) {
-				
-				//We defended point A
-				//Was we dominating and maybe close to score?
-				if(attacker->client->sess.sessionTeam == level.pointStatusB && level.time - level.timeTaken > (10-DD_CLOSE)*1000)
-					AddScore(attacker, targ->r.currentOrigin, DD_POINT_DEFENCE_CLOSE_BONUS);
-				else
-					AddScore(attacker, targ->r.currentOrigin, DD_POINT_DEFENCE_BONUS);
-				attacker->client->pers.teamState.basedefense++;
-
-				attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
-				// add the sprite over the player's head
-				attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
-				attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
-				attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
-
-				return; //Return so we don't recieve credits for point B also
-
-			} //We denfended point A
-
-
-
-		} //Defend point A
-
-		if(attacker->client->sess.sessionTeam == level.pointStatusB ) { //Attack must defend point B
-			//See how close attacker and target was to Point B:
-			VectorSubtract(targ->r.currentOrigin, ddB->r.currentOrigin, v1);
-			VectorSubtract(attacker->r.currentOrigin, ddB->r.currentOrigin, v2);
-
-			if ( ( ( VectorLength(v1) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddB->r.currentOrigin, targ->r.currentOrigin ) ) ||
-				( VectorLength(v2) < CTF_TARGET_PROTECT_RADIUS &&
-				trap_InPVS(ddB->r.currentOrigin, attacker->r.currentOrigin ) ) ) &&
-				attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam) {
-				
-				//We defended point B
-				//Was we dominating and maybe close to score?
-				if(attacker->client->sess.sessionTeam == level.pointStatusA && level.time - level.timeTaken > (10-DD_CLOSE)*1000)
-					AddScore(attacker, targ->r.currentOrigin, DD_POINT_DEFENCE_CLOSE_BONUS);
-				else
-					AddScore(attacker, targ->r.currentOrigin, DD_POINT_DEFENCE_BONUS);
-				attacker->client->pers.teamState.basedefense++;
-
-				attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
-				// add the sprite over the player's head
-				attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
-				attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
-				attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
-
-				return;
-
-			} //We denfended point B
-
-
-
-		} //Defend point B
-	return; //In double Domination we shall not go on, or we would test for team bases that we don't use
-	}
-
 	// flag and flag carrier area defense bonuses
 
 	// we have to find the flag and carrier entities
 
-//#ifdef MISSIONPACK	
+#ifdef MISSIONPACK	
 	if( g_gametype.integer == GT_OBELISK ) {
 		// find the team obelisk
 		switch (attacker->client->sess.sessionTeam) {
@@ -557,7 +414,7 @@ void Team_FragBonuses(gentity_t *targ, g
 		// find the center obelisk
 		c = "team_neutralobelisk";
 	} else {
-//#endif
+#endif
 	// find the flag
 	switch (attacker->client->sess.sessionTeam) {
 	case TEAM_RED:
@@ -576,9 +433,9 @@ void Team_FragBonuses(gentity_t *targ, g
 			break;
 		carrier = NULL;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	}
-//#endif
+#endif
 	flag = NULL;
 	while ((flag = G_Find (flag, FOFS(classname), c)) != NULL) {
 		if (!(flag->flags & FL_DROPPED_ITEM))
@@ -598,17 +455,13 @@ void Team_FragBonuses(gentity_t *targ, g
 		trap_InPVS(flag->r.currentOrigin, targ->r.currentOrigin ) ) ||
 		( VectorLength(v2) < CTF_TARGET_PROTECT_RADIUS &&
 		trap_InPVS(flag->r.currentOrigin, attacker->r.currentOrigin ) ) ) &&
-		attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam && g_gametype.integer != GT_ELIMINATION &&
-		(g_gametype.integer != GT_CTF_ELIMINATION || g_elimination_ctf_oneway.integer==0 || 
-		((level.eliminationSides+level.roundNumber)%2 == 0 && attacker->client->sess.sessionTeam == TEAM_BLUE ) ||
-		((level.eliminationSides+level.roundNumber)%2 == 1 && attacker->client->sess.sessionTeam == TEAM_RED ) ) ) {
+		attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam) {
 
 		// we defended the base flag
 		AddScore(attacker, targ->r.currentOrigin, CTF_FLAG_DEFENSE_BONUS);
 		attacker->client->pers.teamState.basedefense++;
 
 		attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
 		// add the sprite over the player's head
 		attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
 		attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
@@ -630,7 +483,6 @@ void Team_FragBonuses(gentity_t *targ, g
 			attacker->client->pers.teamState.carrierdefense++;
 
 			attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
-                        G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 3, attacker->client->pers.netname, "DEFENCE" );
 			// add the sprite over the player's head
 			attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
 			attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
@@ -706,177 +558,16 @@ gentity_t *Team_ResetFlag( int team ) {
 	return rent;
 }
 
-//Functions for Domination
-
-void Team_Dom_SpawnPoints( void ) {
-	char *c;
-	gentity_t *flag;
-	int i;
-	gitem_t			*it;
-        
-        flag = NULL;
-	
-	if(dominationPointsSpawned)
-		return;
-	dominationPointsSpawned = qtrue;
-
-	it = NULL;
-	it = BG_FindItem ("Neutral domination point");
-	if(it == NULL) {
-		PrintMsg( NULL, "No domination item\n");
-		return;
-	} else {
-		PrintMsg( NULL, "Domination item found\n");
-	}
-	i = 0;
-	c = "domination_point";
-	
-	//return; Just to test, the lines below crashes game
-	
-	while ((flag = G_Find (flag, FOFS(classname), c)) != NULL) {
-		if(i>=MAX_DOMINATION_POINTS)
-			break;
-		//domination_points_names[i] = flag->message;
-		Q_strncpyz(level.domination_points_names[i],flag->message,MAX_DOMINATION_POINTS_NAMES-1);
-		PrintMsg( NULL, "Domination point \'%s\' found\n",level.domination_points_names[i]);		
-		dom_points[i] = G_Spawn();
-		VectorCopy( flag->r.currentOrigin, dom_points[i]->s.origin );
-		dom_points[i]->classname = it->classname;
-		G_SpawnItem(dom_points[i], it);
-		FinishSpawningItem(dom_points[i] );
-		
-		i++;
-	}
-	level.domination_points_count = i;
-}
-
-int getDomPointNumber( gentity_t *point ) {
-	int i;
-	for(i=1;i<MAX_DOMINATION_POINTS && i<level.domination_points_count;i++) {
-		if(dom_points[i] == NULL)
-			return 0; //Not found, just return first, so we don't crash
-		if(dom_points[i] == point)
-			return i;
-	}
-	return 0;
-}
-
-void Team_Dom_TakePoint( gentity_t *point, int team ) {
-	gitem_t			*it;
-	vec3_t			origin;
-	int i;
-	i = getDomPointNumber(point);
-	if(i<0)
-		i = 0;
-	if(i>=MAX_DOMINATION_POINTS)
-		i = MAX_DOMINATION_POINTS - 1;
-
-	it = NULL;
-	VectorCopy( point->r.currentOrigin, origin );
-
-	if(team == TEAM_RED) {
-		it = BG_FindItem ("Red domination point");
-		PrintMsg( NULL, "Red took \'%s\'\n",level.domination_points_names[i]);
-	} else
-	if(team == TEAM_BLUE) {
-		it = BG_FindItem ("Blue domination point");
-		PrintMsg( NULL, "Blue took \'%s\'\n",level.domination_points_names[i]);
-	}
-	if (!it || it == NULL) {
-		PrintMsg( NULL, "No item\n");
-		return;
-	}
-
-	G_FreeEntity(point);
-
-	point = G_Spawn();
-
-	VectorCopy( origin, point->s.origin );
-	point->classname = it->classname;
-	dom_points[i] = point;
-	G_SpawnItem(point, it);
-	FinishSpawningItem( point );
-	level.pointStatusDom[i] = team;
-	SendDominationPointsStatusMessageToAllClients();
-}
-
-//Functions for Double Domination
-
-void Team_DD_RemovePointAgfx( void ) {
-	if(ddA!=NULL) {
-		G_FreeEntity(ddA);
-		ddA = NULL;
-	}
-}
-
-void Team_DD_RemovePointBgfx( void ) {
-	if(ddB!=NULL) {
-		G_FreeEntity(ddB);
-		ddB = NULL;
-	}
-}
-
-void Team_DD_makeA2team( gentity_t *target, int team ) {
-	gitem_t			*it;
-	//gentity_t		*it_ent;
-	Team_DD_RemovePointAgfx();
-	it = NULL;
-	if(team == TEAM_NONE)
-		return;
-	if(team == TEAM_RED)
-		it = BG_FindItem ("Point A (Red)");
-	if(team == TEAM_BLUE)
-		it = BG_FindItem ("Point A (Blue)");
-	if(team == TEAM_FREE)
-		it = BG_FindItem ("Point A (White)");
-	if (!it || it == NULL) {
-		PrintMsg( NULL, "No item\n");
-		return;
-	}
-	ddA = G_Spawn();
-	
-	VectorCopy( target->r.currentOrigin, ddA->s.origin );
-	ddA->classname = it->classname;
-	G_SpawnItem(ddA, it);
-	FinishSpawningItem(ddA );
-}
-
-void Team_DD_makeB2team( gentity_t *target, int team ) {
-	gitem_t			*it;
-	//gentity_t		*it_ent;
-	
-	Team_DD_RemovePointBgfx();
-        it = NULL;
-	if(team == TEAM_NONE)
-		return;
-	if(team == TEAM_RED)
-		it = BG_FindItem ("Point B (Red)");
-	if(team == TEAM_BLUE)
-		it = BG_FindItem ("Point B (Blue)");
-	if(team == TEAM_FREE)
-		it = BG_FindItem ("Point B (White)");
-	if (!it || it == NULL) {
-		PrintMsg( NULL, "No item\n");
-		return;
-	}
-	ddB = G_Spawn();
-	
-	VectorCopy( target->r.currentOrigin, ddB->s.origin );
-	ddB->classname = it->classname;
-	G_SpawnItem(ddB, it);
-	FinishSpawningItem(ddB );
-}
-
 void Team_ResetFlags( void ) {
-	if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTF_ELIMINATION) {
+	if( g_gametype.integer == GT_CTF ) {
 		Team_ResetFlag( TEAM_RED );
 		Team_ResetFlag( TEAM_BLUE );
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if( g_gametype.integer == GT_1FCTF ) {
 		Team_ResetFlag( TEAM_FREE );
 	}
-//#endif
+#endif
 }
 
 void Team_ReturnFlagSound( gentity_t *ent, int team ) {
@@ -887,10 +578,6 @@ void Team_ReturnFlagSound( gentity_t *en
 		return;
 	}
 
-	//See if we are during CTF_ELIMINATION warmup
-	if((level.time<=level.roundStartTime && level.time>level.roundStartTime-1000*g_elimination_activewarmup.integer)&&g_gametype.integer == GT_CTF_ELIMINATION)
-		return;
-
 	te = G_TempEntity( ent->s.pos.trBase, EV_GLOBAL_TEAM_SOUND );
 	if( team == TEAM_BLUE ) {
 		te->s.eventParm = GTS_RED_RETURN;
@@ -914,7 +601,7 @@ void Team_TakeFlagSound( gentity_t *ent,
 	switch(team) {
 		case TEAM_RED:
 			if( teamgame.blueStatus != FLAG_ATBASE ) {
-				if (teamgame.blueTakenTime > level.time - 10000 && g_gametype.integer != GT_CTF_ELIMINATION)
+				if (teamgame.blueTakenTime > level.time - 10000)
 					return;
 			}
 			teamgame.blueTakenTime = level.time;
@@ -922,7 +609,7 @@ void Team_TakeFlagSound( gentity_t *ent,
 
 		case TEAM_BLUE:	// CTF
 			if( teamgame.redStatus != FLAG_ATBASE ) {
-				if (teamgame.redTakenTime > level.time - 10000 && g_gametype.integer != GT_CTF_ELIMINATION)
+				if (teamgame.redTakenTime > level.time - 10000)
 					return;
 			}
 			teamgame.redTakenTime = level.time;
@@ -961,18 +648,9 @@ void Team_ReturnFlag( int team ) {
 	Team_ReturnFlagSound(Team_ResetFlag(team), team);
 	if( team == TEAM_FREE ) {
 		PrintMsg(NULL, "The flag has returned!\n" );
-                if(g_gametype.integer == GT_1FCTF) {
-                    G_LogPrintf( "1FCTF: %i %i %i: The flag was returned!\n", -1, -1, 2 );
-                }
 	}
 	else {
 		PrintMsg(NULL, "The %s flag has returned!\n", TeamName(team));
-                if(g_gametype.integer == GT_CTF_ELIMINATION) {
-                    G_LogPrintf( "CTF: %i %i %i: The %s flag was returned!\n", -1, team, 2, TeamName(team) );
-                } else
-                if(g_gametype.integer == GT_CTF_ELIMINATION) {
-                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: The %s flag was returned!\n", level.roundNumber, -1, team, 2, TeamName(team) );
-                }
 	}
 }
 
@@ -1014,149 +692,10 @@ void Team_DroppedFlagThink(gentity_t *en
 	// Reset Flag will delete this entity
 }
 
-/*
-Update DD points
-*/
-
-void updateDDpoints(void) {
-	//teamgame.redStatus = -1; // Invalid to force update
-	Team_SetFlagStatus( TEAM_RED, level.pointStatusA );
-	//teamgame.blueStatus = -1; // Invalid to force update
-	Team_SetFlagStatus( TEAM_BLUE, level.pointStatusB );
-}
-
-/*
-==============
-Team_SpawnDoubleDominationPoints
-==============
-*/
-
-int Team_SpawnDoubleDominationPoints ( void ) {
-	gentity_t	*ent;
-	level.pointStatusA = TEAM_FREE;
-	level.pointStatusB = TEAM_FREE;
-	updateDDpoints();
-	ent = NULL;
-	if ((ent = G_Find (ent, FOFS(classname), "team_CTF_redflag")) != NULL) {
-		Team_DD_makeA2team( ent, TEAM_FREE );
-	}
-        ent = NULL;
-	if ((ent = G_Find (ent, FOFS(classname), "team_CTF_blueflag")) != NULL) {
-		Team_DD_makeB2team( ent, TEAM_FREE );
-	}
-	return 1;
-}
-
-/*
-==============
-Team_RemoveDoubleDominationPoints
-==============
-*/
-
-int Team_RemoveDoubleDominationPoints ( void ) {
-	level.pointStatusA = TEAM_NONE;
-	level.pointStatusB = TEAM_NONE;
-	updateDDpoints();
-	Team_DD_makeA2team( NULL, TEAM_NONE );
-	Team_DD_makeB2team( NULL, TEAM_NONE );
-	return 1;
-}
-
-/*
-==============
-Team_TouchDoubleDominationPoint
-==============
-*/
-
-//team is the either TEAM_RED(A) or TEAM_BLUE(B)
-int Team_TouchDoubleDominationPoint( gentity_t *ent, gentity_t *other, int team ) {
-	gclient_t	*cl = other->client;
-	qboolean	otherDominating, isClose;
-	int 		clientTeam = cl->sess.sessionTeam;
-	int		otherTeam;
-	int		score; //Used to add the scores together 
-
-	if(clientTeam == TEAM_RED)
-		otherTeam = TEAM_BLUE;
-	else
-		otherTeam = TEAM_RED;
-
-	otherDominating = qfalse;
-	isClose = qfalse;
-
-	if(level.pointStatusA == otherTeam && level.pointStatusB == otherTeam) {
-		otherDominating = qtrue;
-		if(level.time - level.timeTaken > (10-DD_CLOSE)*1000)
-			isClose = qtrue;
-	}	
-	
-
-	if(team == TEAM_RED) //We have touched point A
-	{
-		if(TEAM_NONE == level.pointStatusA)
-			return 0; //Haven't spawned yet
-		if(clientTeam == level.pointStatusA)
-			return 0; //If we already have the flag
-		//if we didn't have the point, then we have now!
-		level.pointStatusA = clientTeam;
-		PrintMsg( NULL, "%s" S_COLOR_WHITE " (%s) took control of A!\n", cl->pers.netname, TeamName(clientTeam) );
-		Team_DD_makeA2team( ent, clientTeam );
-                G_LogPrintf( "DD: %i %i %i: %s took point A for %s!\n", cl->ps.clientNum, clientTeam, 0, cl->pers.netname, TeamName(clientTeam) );
-		//Give personal score
-		score = DD_POINT_CAPTURE; //Base score for capture
-		if(otherDominating){
-			score += DD_POINT_CAPTURE_BREAK;
-			if(isClose)
-				score += DD_POINT_CAPTURE_CLOSE;
-		}
-		AddScore(other, ent->r.currentOrigin, score);
-		//Do we also have point B?
-		if(clientTeam == level.pointStatusB)
-		{
-			//We are dominating!
-			level.timeTaken = level.time; //At this time
-			PrintMsg( NULL, "%s" S_COLOR_WHITE " is dominating!\n", TeamName(clientTeam) );
-			SendDDtimetakenMessageToAllClients();
-		}
-	}
-
-	if(team == TEAM_BLUE) //We have touched point B
-	{
-		if(TEAM_NONE == level.pointStatusB)
-			return 0; //Haven't spawned yet
-		if(clientTeam == level.pointStatusB)
-			return 0; //If we already have the flag
-		//if we didn't have the point, then we have now!
-		level.pointStatusB = clientTeam;
-		PrintMsg( NULL, "%s" S_COLOR_WHITE " (%s) took control of B!\n", cl->pers.netname, TeamName(clientTeam) );
-		Team_DD_makeB2team( ent, clientTeam );
-                G_LogPrintf( "DD: %i %i %i: %s took point B for %s!\n", cl->ps.clientNum, clientTeam, 1, cl->pers.netname, TeamName(clientTeam) );
-		//Give personal score
-		score = DD_POINT_CAPTURE; //Base score for capture
-		if(otherDominating){
-			score += DD_POINT_CAPTURE_BREAK;
-			if(isClose)
-				score += DD_POINT_CAPTURE_CLOSE;
-		}
-		AddScore(other, ent->r.currentOrigin, score);
-		//Do we also have point A?
-		if(clientTeam == level.pointStatusA)
-		{
-			//We are dominating!
-			level.timeTaken = level.time; //At this time
-			PrintMsg( NULL, "%s" S_COLOR_WHITE " is dominating!\n", TeamName(clientTeam) );
-			SendDDtimetakenMessageToAllClients();
-		}
-	}
-
-	updateDDpoints();
-
-	return 0;
-}
 
 /*
 ==============
-Team_TouchOurFlag
+Team_DroppedFlagThink
 ==============
 */
 int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) {
@@ -1165,12 +704,12 @@ int Team_TouchOurFlag( gentity_t *ent, g
 	gclient_t	*cl = other->client;
 	int			enemy_flag;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_1FCTF ) {
 		enemy_flag = PW_NEUTRALFLAG;
 	}
 	else {
-//#endif
+#endif
 	if (cl->sess.sessionTeam == TEAM_RED) {
 		enemy_flag = PW_BLUEFLAG;
 	} else {
@@ -1182,40 +721,30 @@ int Team_TouchOurFlag( gentity_t *ent, g
 		PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", 
 			cl->pers.netname, TeamName(team));
 		AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS);
-                if(g_gametype.integer == GT_CTF) {
-                    G_LogPrintf( "CTF: %i %i %i: %s returned the %s flag!\n", cl->ps.clientNum, team, 2, cl->pers.netname, TeamName(team) );
-                } else if(g_gametype.integer == GT_CTF_ELIMINATION) {
-                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s returned the %s flag!\n", level.roundNumber, cl->ps.clientNum, team, 2, cl->pers.netname, TeamName(team) );
-                }
 		other->client->pers.teamState.flagrecovery++;
 		other->client->pers.teamState.lastreturnedflag = level.time;
 		//ResetFlag will remove this entity!  We must return zero
 		Team_ReturnFlagSound(Team_ResetFlag(team), team);
 		return 0;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	}
-//#endif
+#endif
 
 	// the flag is at home base.  if the player has the enemy
 	// flag, he's just won!
 	if (!cl->ps.powerups[enemy_flag])
 		return 0; // We don't have the flag
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_1FCTF ) {
 		PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the flag!\n", cl->pers.netname );
-                G_LogPrintf( "1FCTF: %i %i %i: %s captured the flag!\n", cl->ps.clientNum, -1, 1, cl->pers.netname );
 	}
 	else {
-//#endif
-            PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam(team)));
-            if(g_gametype.integer == GT_CTF)
-                G_LogPrintf( "CTF: %i %i %i: %s captured the %s flag!\n", cl->ps.clientNum, OtherTeam(team), 1, cl->pers.netname, TeamName(OtherTeam(team)) );
-            if(g_gametype.integer == GT_CTF_ELIMINATION)
-                G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s captured the %s flag!\n", level.roundNumber, cl->ps.clientNum, OtherTeam(team), 1, cl->pers.netname, TeamName(OtherTeam(team)) );
-//#ifdef MISSIONPACK
+#endif
+	PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam(team)));
+#ifdef MISSIONPACK
 	}
-//#endif
+#endif
 
 	cl->ps.powerups[enemy_flag] = 0;
 
@@ -1225,10 +754,6 @@ int Team_TouchOurFlag( gentity_t *ent, g
 	// Increase the team's score
 	AddTeamScore(ent->s.pos.trBase, other->client->sess.sessionTeam, 1);
 	Team_ForceGesture(other->client->sess.sessionTeam);
-	//If CTF Elimination, stop the round:
-	if(g_gametype.integer==GT_CTF_ELIMINATION) {
-		EndEliminationRound();
-	}
 
 	other->client->pers.teamState.captures++;
 	// add the sprite over the player's head
@@ -1236,7 +761,6 @@ int Team_TouchOurFlag( gentity_t *ent, g
 	other->client->ps.eFlags |= EF_AWARD_CAP;
 	other->client->rewardTime = level.time + REWARD_SPRITE_TIME;
 	other->client->ps.persistant[PERS_CAPTURES]++;
-        G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", other->client->ps.clientNum, 4, other->client->pers.netname, "CAPTURE" );
 
 	// other gets another 10 frag bonus
 	AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS);
@@ -1263,7 +787,6 @@ int Team_TouchOurFlag( gentity_t *ent, g
 				other->client->pers.teamState.assists++;
 
 				player->client->ps.persistant[PERS_ASSIST_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", player->client->ps.clientNum, 5, player->client->pers.netname, "ASSIST" );
 				// add the sprite over the player's head
 				player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
 				player->client->ps.eFlags |= EF_AWARD_ASSIST;
@@ -1274,7 +797,6 @@ int Team_TouchOurFlag( gentity_t *ent, g
 				AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS);
 				other->client->pers.teamState.assists++;
 				player->client->ps.persistant[PERS_ASSIST_COUNT]++;
-                                G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", player->client->ps.clientNum, 5, player->client->pers.netname, "ASSIST" );
 				// add the sprite over the player's head
 				player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
 				player->client->ps.eFlags |= EF_AWARD_ASSIST;
@@ -1292,12 +814,10 @@ int Team_TouchOurFlag( gentity_t *ent, g
 int Team_TouchEnemyFlag( gentity_t *ent, gentity_t *other, int team ) {
 	gclient_t *cl = other->client;
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_1FCTF ) {
 		PrintMsg (NULL, "%s" S_COLOR_WHITE " got the flag!\n", other->client->pers.netname );
 
-                G_LogPrintf( "1FCTF: %i %i %i: %s got the flag!\n", cl->ps.clientNum, team, 0, cl->pers.netname);
-                
 		cl->ps.powerups[PW_NEUTRALFLAG] = INT_MAX; // flags never expire
 
 		if( team == TEAM_RED ) {
@@ -1308,15 +828,9 @@ int Team_TouchEnemyFlag( gentity_t *ent,
 		}
 	}
 	else{
-//#endif
+#endif
 		PrintMsg (NULL, "%s" S_COLOR_WHITE " got the %s flag!\n",
 			other->client->pers.netname, TeamName(team));
-                
-                if(g_gametype.integer == GT_CTF) {
-                    G_LogPrintf( "CTF: %i %i %i: %s got the %s flag!\n", cl->ps.clientNum, team, 0, cl->pers.netname, TeamName(team));
-                } else if(g_gametype.integer == GT_CTF_ELIMINATION) {
-                    G_LogPrintf( "CTF_ELIMINATION: %i %i %i %i: %s got the %s flag!\n", level.roundNumber, cl->ps.clientNum, team, 0, cl->pers.netname, TeamName(team));
-                }
 
 		if (team == TEAM_RED)
 			cl->ps.powerups[PW_REDFLAG] = INT_MAX; // flags never expire
@@ -1324,9 +838,9 @@ int Team_TouchEnemyFlag( gentity_t *ent,
 			cl->ps.powerups[PW_BLUEFLAG] = INT_MAX; // flags never expire
 
 		Team_SetFlagStatus( team, FLAG_TAKEN );
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	}
-//#endif
+#endif
 
 	AddScore(other, ent->r.currentOrigin, CTF_FLAG_BONUS);
 	cl->pers.teamState.flagsince = level.time;
@@ -1338,8 +852,8 @@ int Team_TouchEnemyFlag( gentity_t *ent,
 int Pickup_Team( gentity_t *ent, gentity_t *other ) {
 	int team;
 	gclient_t *cl = other->client;
-	
-//#ifdef MISSIONPACK
+
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_OBELISK ) {
 		// there are no team items that can be picked up in obelisk
 		G_FreeEntity( ent );
@@ -1354,11 +868,7 @@ int Pickup_Team( gentity_t *ent, gentity
 		G_FreeEntity( ent );
 		return 0;
 	}
-//#endif
-	if ( g_gametype.integer == GT_DOMINATION ) {
-		Team_Dom_TakePoint(ent, cl->sess.sessionTeam);
-		return 0;
-	}
+#endif
 	// figure out what team this flag is
 	if( strcmp(ent->classname, "team_CTF_redflag") == 0 ) {
 		team = TEAM_RED;
@@ -1366,16 +876,16 @@ int Pickup_Team( gentity_t *ent, gentity
 	else if( strcmp(ent->classname, "team_CTF_blueflag") == 0 ) {
 		team = TEAM_BLUE;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	else if( strcmp(ent->classname, "team_CTF_neutralflag") == 0  ) {
 		team = TEAM_FREE;
 	}
-//#endif
+#endif
 	else {
 		PrintMsg ( other, "Don't know what team the flag is on.\n");
 		return 0;
 	}
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	if( g_gametype.integer == GT_1FCTF ) {
 		if( team == TEAM_FREE ) {
 			return Team_TouchEnemyFlag( ent, other, cl->sess.sessionTeam );
@@ -1385,10 +895,7 @@ int Pickup_Team( gentity_t *ent, gentity
 		}
 		return 0;
 	}
-//#endif
-	if( g_gametype.integer == GT_DOUBLE_D) {
-		return Team_TouchDoubleDominationPoint( ent, other, team );
-	}
+#endif
 	// GT_CTF
 	if( team == cl->sess.sessionTeam) {
 		return Team_TouchOurFlag( ent, other, team );
@@ -1481,15 +988,6 @@ gentity_t *SelectRandomTeamSpawnPoint( i
 	gentity_t	*spots[MAX_TEAM_SPAWN_POINTS];
 	char		*classname;
 
-	if(g_gametype.integer == GT_ELIMINATION) { //change sides every round
-		if((level.roundNumber+level.eliminationSides)%2==1){
-			if(team == TEAM_RED)
-				team = TEAM_BLUE;
-			else if(team == TEAM_BLUE)
-				team = TEAM_RED;
-		}
-	}
-
 	if (teamstate == TEAM_BEGIN) {
 		if (team == TEAM_RED)
 			classname = "team_CTF_redplayer";
@@ -1526,78 +1024,6 @@ gentity_t *SelectRandomTeamSpawnPoint( i
 	return spots[ selection ];
 }
 
-/*
-================
-SelectRandomDDSpawnPoint
-
-go to a random Double Domination Spawn Point
-================
-*/
-#define	MAX_TEAM_SPAWN_POINTS	32
-gentity_t *SelectRandomDDSpawnPoint( void ) {
-	gentity_t	*spot;
-	int			count;
-	int			selection;
-	gentity_t	*spots[MAX_TEAM_SPAWN_POINTS];
-	char		*classname;
-
-	
-	classname = "info_player_dd";
-		
-	count = 0;
-
-	spot = NULL;
-
-	while ((spot = G_Find (spot, FOFS(classname), classname)) != NULL) {
-		if ( SpotWouldTelefrag( spot ) ) {
-			continue;
-		}
-		spots[ count ] = spot;
-		if (++count == MAX_TEAM_SPAWN_POINTS)
-			break;
-	}
-
-	if ( !count ) {	// no spots that won't telefrag
-		return G_Find( NULL, FOFS(classname), classname);
-	}
-
-	selection = rand() % count;
-	return spots[ selection ];
-}
-
-gentity_t *SelectRandomTeamDDSpawnPoint( team_t team ) {
-	gentity_t	*spot;
-	int			count;
-	int			selection;
-	gentity_t	*spots[MAX_TEAM_SPAWN_POINTS];
-	char		*classname;
-
-	if(team == TEAM_RED)
-            classname = "info_player_dd_red";
-        else
-            classname = "info_player_dd_blue";
-		
-	count = 0;
-
-	spot = NULL;
-
-	while ((spot = G_Find (spot, FOFS(classname), classname)) != NULL) {
-		if ( SpotWouldTelefrag( spot ) ) {
-			continue;
-		}
-		spots[ count ] = spot;
-		if (++count == MAX_TEAM_SPAWN_POINTS)
-			break;
-	}
-
-	if ( !count ) {	// no spots that won't telefrag
-		return G_Find( NULL, FOFS(classname), classname);
-	}
-
-	selection = rand() % count;
-	return spots[ selection ];
-}
-
 
 /*
 ===========
@@ -1621,32 +1047,6 @@ gentity_t *SelectCTFSpawnPoint ( team_t 
 	return spot;
 }
 
-/*
-===========
-SelectDoubleDominationSpawnPoint
-
-============
-*/
-gentity_t *SelectDoubleDominationSpawnPoint ( team_t team, vec3_t origin, vec3_t angles ) {
-	gentity_t	*spot;
-
-        spot = SelectRandomTeamDDSpawnPoint( team );
-        
-        if(!spot) {
-            spot = SelectRandomDDSpawnPoint ( );
-        }
-        
-	if (!spot) {
-		return SelectSpawnPoint( vec3_origin, origin, angles );
-	}
-
-	VectorCopy (spot->s.origin, origin);
-	origin[2] += 9;
-	VectorCopy (spot->s.angles, angles);
-
-	return spot;
-}
-
 /*---------------------------------------------------------------------------*/
 
 static int QDECL SortClients( const void *a, const void *b ) {
@@ -1670,7 +1070,7 @@ void TeamplayInfoMessage( gentity_t *ent
 	int			i, j;
 	gentity_t	*player;
 	int			cnt;
-	int			h, a, w;
+	int			h, a;
 	int			clients[TEAM_MAXOVERLAY];
 
 	if ( ! ent->client->pers.teamInfo )
@@ -1701,13 +1101,6 @@ void TeamplayInfoMessage( gentity_t *ent
 
 			h = player->client->ps.stats[STAT_HEALTH];
 			a = player->client->ps.stats[STAT_ARMOR];
-			w = player->client->ps.weapon;
-			if(player->client->isEliminated)
-			{
-				h = 0;
-				a = 0;
-				w = 0;
-			}			
 			if (h < 0) h = 0;
 			if (a < 0) a = 0;
 
@@ -1715,7 +1108,7 @@ void TeamplayInfoMessage( gentity_t *ent
 				" %i %i %i %i %i %i", 
 //				level.sortedClients[i], player->client->pers.teamState.location, h, a, 
 				i, player->client->pers.teamState.location, h, a, 
-				w, player->s.powerups);
+				player->client->ps.weapon, player->s.powerups);
 			j = strlen(entry);
 			if (stringlength + j > sizeof(string))
 				break;
@@ -1797,7 +1190,7 @@ void SP_team_CTF_bluespawn(gentity_t *en
 }
 
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ================
 Obelisks
@@ -1857,7 +1250,6 @@ static void ObeliskDie( gentity_t *self,
 	attacker->client->ps.eFlags |= EF_AWARD_CAP;
 	attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
 	attacker->client->ps.persistant[PERS_CAPTURES]++;
-        G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", attacker->client->ps.clientNum, 4, attacker->client->pers.netname, "CAPTURE" );
 
 	teamgame.redObeliskAttackedTime = 0;
 	teamgame.blueObeliskAttackedTime = 0;
@@ -1865,7 +1257,7 @@ static void ObeliskDie( gentity_t *self,
 
 
 static void ObeliskTouch( gentity_t *self, gentity_t *other, trace_t *trace ) {
-	int			tokens,i;
+	int			tokens;
 
 	if ( !other->client ) {
 		return;
@@ -1893,8 +1285,6 @@ static void ObeliskTouch( gentity_t *sel
 	other->client->ps.eFlags |= EF_AWARD_CAP;
 	other->client->rewardTime = level.time + REWARD_SPRITE_TIME;
 	other->client->ps.persistant[PERS_CAPTURES] += tokens;
-        for(i = 0;i<tokens;i++)
-            G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", other->client->ps.clientNum, 4, other->client->pers.netname, "CAPTURE" );
 	
 	other->client->ps.generic1 = 0;
 	CalculateRanks();
@@ -1983,7 +1373,7 @@ gentity_t *SpawnObelisk( vec3_t origin, 
 void SP_team_redobelisk( gentity_t *ent ) {
 	gentity_t *obelisk;
 
-	if ( g_gametype.integer <= GT_TEAM || g_ffa_gt>0) {
+	if ( g_gametype.integer <= GT_TEAM ) {
 		G_FreeEntity(ent);
 		return;
 	}
@@ -2008,7 +1398,7 @@ void SP_team_redobelisk( gentity_t *ent 
 void SP_team_blueobelisk( gentity_t *ent ) {
 	gentity_t *obelisk;
 
-	if ( g_gametype.integer <= GT_TEAM || g_ffa_gt>0) {
+	if ( g_gametype.integer <= GT_TEAM ) {
 		G_FreeEntity(ent);
 		return;
 	}
@@ -2091,4 +1481,4 @@ qboolean CheckObeliskAttack( gentity_t *
 
 	return qfalse;
 }
-//#endif
+#endif
diff -upr ioquake3svn1438/code/game/g_team.h ioquake3serverFix/code/game/g_team.h
--- ioquake3svn1438/code/game/g_team.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_team.h	2008-08-09 11:28:21.000000000 -0500
@@ -53,32 +53,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 
 #endif
 
-#ifdef MISSIONPACK
-
-//For Double Domination:
-#define DD_POINT_DEFENCE_BONUS			10	//Score for fragging someone while either you or target are near a Domination Point
-#define DD_POINT_DEFENCE_CLOSE_BONUS		25	//Score for fragging someone while either you or target are near a Domination Point and have almost scored
-//Following is added togehter:
-#define DD_POINT_CAPTURE			5	//Score for taking a point
-#define DD_POINT_CAPTURE_BREAK			10	//If the enemy was dominating
-#define DD_POINT_CAPTURE_CLOSE			15	//Extra score if the enemy was about to score
-#define DD_AT_POINT_AT_CAPTURE			30	//You was close to a point as capture succeded.	
-
-#else
-
-//For Double Domination:
-#define DD_POINT_DEFENCE_BONUS			1	//Score for fragging someone while either you or target are near a Domination Point
-#define DD_POINT_DEFENCE_CLOSE_BONUS		2	//Score for fragging someone while either you or target are near a Domination Point and have almost scored
-//Following is added togehter:
-#define DD_POINT_CAPTURE			1	//Score for taking a point
-#define DD_POINT_CAPTURE_BREAK			1	//If the enemy was dominating
-#define DD_POINT_CAPTURE_CLOSE			1	//Extra score if the enemy was about to score
-#define DD_AT_POINT_AT_CAPTURE			1	//You was close to a point as capture succeded.	
-
-#endif
-
-#define DD_CLOSE				3	//How many seconds to score is close		
-
 #define CTF_TARGET_PROTECT_RADIUS			1000	// the radius around an object being defended where a target will be worth extra frags
 #define CTF_ATTACKER_PROTECT_RADIUS			1000	// the radius around an object being defended where an attacker will get extra frags when making kills
 
@@ -106,21 +80,9 @@ void Team_InitGame(void);
 void Team_ReturnFlag(int team);
 void Team_FreeEntity(gentity_t *ent);
 gentity_t *SelectCTFSpawnPoint ( team_t team, int teamstate, vec3_t origin, vec3_t angles );
-//For Double_D
-gentity_t *SelectDoubleDominationSpawnPoint ( team_t, vec3_t origin, vec3_t angles );
-//For Standard D
-void Team_Dom_SpawnPoints( void );
 gentity_t *Team_GetLocation(gentity_t *ent);
 qboolean Team_GetLocationMsg(gentity_t *ent, char *loc, int loclen);
 void TeamplayInfoMessage( gentity_t *ent );
 void CheckTeamStatus(void);
 
 int Pickup_Team( gentity_t *ent, gentity_t *other );
-
-//Double Domination:
-int Team_SpawnDoubleDominationPoints ( void );
-int Team_RemoveDoubleDominationPoints ( void );
-void Team_DD_bonusAtPoints(int team);
-
-//Added to make gcc happy (and because I use it in main)
-void Team_ForceGesture(int team);
diff -upr ioquake3svn1438/code/game/g_trigger.c ioquake3serverFix/code/game/g_trigger.c
--- ioquake3svn1438/code/game/g_trigger.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/g_trigger.c	2008-08-09 11:28:21.000000000 -0500
@@ -274,13 +274,12 @@ void trigger_teleporter_touch (gentity_t
 	if ( !other->client ) {
 		return;
 	}
-
 	if ( other->client->ps.pm_type == PM_DEAD ) {
 		return;
 	}
 	// Spectators only?
 	if ( ( self->spawnflags & 1 ) && 
-		(other->client->sess.sessionTeam != TEAM_SPECTATOR && other->client->ps.pm_type != PM_SPECTATOR) ) {
+		other->client->sess.sessionTeam != TEAM_SPECTATOR ) {
 		return;
 	}
 
Only in ioquake3svn1438/code/game: g_unlagged.c
diff -upr ioquake3svn1438/code/game/g_weapon.c ioquake3serverFix/code/game/g_weapon.c
--- ioquake3svn1438/code/game/g_weapon.c	2008-07-07 15:54:09.000000000 -0500
+++ ioquake3serverFix/code/game/g_weapon.c	2008-08-09 11:28:21.000000000 -0500
@@ -111,10 +111,7 @@ qboolean CheckGauntletAttack( gentity_t 
 	}
 #endif
 
-	if(g_instantgib.integer)
-		damage = 1000; //High damage in instant gib (normally enough to gib)
-	else
-		damage = 50 * s_quadFactor;
+	damage = 50 * s_quadFactor;
 	G_Damage( traceEnt, ent, ent, forward, tr.endpos,
 		damage, 0, MOD_GAUNTLET );
 
@@ -140,35 +137,6 @@ rather than blindly truncating.  This pr
 into a wall.
 ======================
 */
-//unlagged - attack prediction #3
-// moved to q_shared.c
-/*
-void SnapVectorTowards( vec3_t v, vec3_t to ) {
-	int		i;
-
-	for ( i = 0 ; i < 3 ; i++ ) {
-		if ( to[i] <= v[i] ) {
-			v[i] = (int)v[i];
-		} else {
-			v[i] = (int)v[i] + 1;
-		}
-	}
-}
-*/
-//unlagged - attack prediction #3
-
-//unlagged - attack prediction #3
-// moved from g_weapon.c
-/*
-======================
-SnapVectorTowards
-
-Round a vector to integers for more efficient network
-transmission, but make sure that it rounds towards a given point
-rather than blindly truncating.  This prevents it from truncating 
-into a wall.
-======================
-*/
 void SnapVectorTowards( vec3_t v, vec3_t to ) {
 	int		i;
 
@@ -180,11 +148,10 @@ void SnapVectorTowards( vec3_t v, vec3_t
 		}
 	}
 }
-//unlagged - attack prediction #3
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 #define CHAINGUN_SPREAD		600
-//#endif
+#endif
 #define MACHINEGUN_SPREAD	200
 #define	MACHINEGUN_DAMAGE	7
 #define	MACHINEGUN_TEAM_DAMAGE	5		// wimpier MG in teamplay
@@ -201,25 +168,11 @@ void Bullet_Fire (gentity_t *ent, float 
 	gentity_t	*traceEnt;
 	int			i, passent;
 
-//unlagged - attack prediction #2
-	// we have to use something now that the client knows in advance
-	int			seed = ent->client->attackTime % 256;
-//unlagged - attack prediction #2
-
 	damage *= s_quadFactor;
 
-//unlagged - attack prediction #2
-	// this has to match what's on the client
-/*
 	r = random() * M_PI * 2.0f;
 	u = sin(r) * crandom() * spread * 16;
 	r = cos(r) * crandom() * spread * 16;
-*/
-	r = Q_random(&seed) * M_PI * 2.0f;
-	u = sin(r) * Q_crandom(&seed) * spread * 16;
-	r = cos(r) * Q_crandom(&seed) * spread * 16;
-//unlagged - attack prediction #2
-
 	VectorMA (muzzle, 8192*16, forward, end);
 	VectorMA (end, r, right, end);
 	VectorMA (end, u, up, end);
@@ -227,18 +180,7 @@ void Bullet_Fire (gentity_t *ent, float 
 	passent = ent->s.number;
 	for (i = 0; i < 10; i++) {
 
-//unlagged - backward reconciliation #2
-		// backward-reconcile the other clients
-		G_DoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 		trap_Trace (&tr, muzzle, NULL, NULL, end, passent, MASK_SHOT);
-                
-//unlagged - backward reconciliation #2
-		// put them back
-		G_UndoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-                
 		if ( tr.surfaceFlags & SURF_NOIMPACT ) {
 			return;
 		}
@@ -252,22 +194,12 @@ void Bullet_Fire (gentity_t *ent, float 
 		if ( traceEnt->takedamage && traceEnt->client ) {
 			tent = G_TempEntity( tr.endpos, EV_BULLET_HIT_FLESH );
 			tent->s.eventParm = traceEnt->s.number;
-//unlagged - attack prediction #2
-			// we need the client number to determine whether or not to
-			// suppress this event
-			tent->s.clientNum = ent->s.clientNum;
-//unlagged - attack prediction #2
 			if( LogAccuracyHit( traceEnt, ent ) ) {
 				ent->client->accuracy_hits++;
 			}
 		} else {
 			tent = G_TempEntity( tr.endpos, EV_BULLET_HIT_WALL );
 			tent->s.eventParm = DirToByte( tr.plane.normal );
-//unlagged - attack prediction #2
-			// we need the client number to determine whether or not to
-			// suppress this event
-			tent->s.clientNum = ent->s.clientNum;
-//unlagged - attack prediction #2
 		}
 		tent->s.otherEntityNum = ent->s.number;
 
@@ -395,11 +327,6 @@ void ShotgunPattern( vec3_t origin, vec3
 	int			oldScore;
 	qboolean	hitClient = qfalse;
 
-//unlagged - attack prediction #2
-	// use this for testing
-	//Com_Printf( "Server seed: %d\n", seed );
-//unlagged - attack prediction #2
-
 	// derive the right and up vectors from the forward vector, because
 	// the client won't have any other information
 	VectorNormalize2( origin2, forward );
@@ -408,11 +335,6 @@ void ShotgunPattern( vec3_t origin, vec3
 
 	oldScore = ent->client->ps.persistant[PERS_SCORE];
 
-//unlagged - backward reconciliation #2
-	// backward-reconcile the other clients
-	G_DoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 	// generate the "random" spread pattern
 	for ( i = 0 ; i < DEFAULT_SHOTGUN_COUNT ; i++ ) {
 		r = Q_crandom( &seed ) * DEFAULT_SHOTGUN_SPREAD * 16;
@@ -425,11 +347,6 @@ void ShotgunPattern( vec3_t origin, vec3
 			ent->client->accuracy_hits++;
 		}
 	}
-
-//unlagged - backward reconciliation #2
-	// put them back
-	G_UndoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
 }
 
 
@@ -440,12 +357,7 @@ void weapon_supershotgun_fire (gentity_t
 	tent = G_TempEntity( muzzle, EV_SHOTGUN );
 	VectorScale( forward, 4096, tent->s.origin2 );
 	SnapVector( tent->s.origin2 );
-//Sago: This sound like a bad idea...
-//unlagged - attack prediction #2
-	// this has to be something the client can predict now
-	//tent->s.eventParm = rand() & 255;		// seed for spread pattern
-	tent->s.eventParm = ent->client->attackTime % 256; // seed for spread pattern
-//unlagged - attack prediction #2
+	tent->s.eventParm = rand() & 255;		// seed for spread pattern
 	tent->s.otherEntityNum = ent->s.number;
 
 	ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, ent );
@@ -542,16 +454,9 @@ void weapon_railgun_fire (gentity_t *ent
 	gentity_t	*unlinkedEntities[MAX_RAIL_HITS];
 
 	damage = 100 * s_quadFactor;
-	if(g_instantgib.integer)
-		damage = 5000;
 
 	VectorMA (muzzle, 8192, forward, end);
 
-//unlagged - backward reconciliation #2
-	// backward-reconcile the other clients
-	G_DoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 	// trace only against the solids, so the railgun will go through people
 	unlinked = 0;
 	hits = 0;
@@ -606,11 +511,6 @@ void weapon_railgun_fire (gentity_t *ent
 		unlinked++;
 	} while ( unlinked < MAX_RAIL_HITS );
 
-//unlagged - backward reconciliation #2
-	// put them back
-	G_UndoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 	// link back in any entities we unlinked
 	for ( i = 0 ; i < unlinked ; i++ ) {
 		trap_LinkEntity( unlinkedEntities[i] );
@@ -650,7 +550,6 @@ void weapon_railgun_fire (gentity_t *ent
 		if ( ent->client->accurateCount >= 2 ) {
 			ent->client->accurateCount -= 2;
 			ent->client->ps.persistant[PERS_IMPRESSIVE_COUNT]++;
-                        G_LogPrintf( "Award: %i %i: %s gained the %s award!\n", ent->client->ps.clientNum, 2, ent->client->pers.netname, "IMPRESSIVE" );
 			// add the sprite over the player's head
 			ent->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
 			ent->client->ps.eFlags |= EF_AWARD_IMPRESSIVE;
@@ -725,19 +624,8 @@ void Weapon_LightningFire( gentity_t *en
 	for (i = 0; i < 10; i++) {
 		VectorMA( muzzle, LIGHTNING_RANGE, forward, end );
 
-//Sago: I'm not sure this should recieve backward reconciliation. It is not a real instant hit weapon, it can normally be dogded
-//unlagged - backward reconciliation #2
-	// backward-reconcile the other clients
-	G_DoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 		trap_Trace( &tr, muzzle, NULL, NULL, end, passent, MASK_SHOT );
 
-//unlagged - backward reconciliation #2
-	// put them back
-	G_UndoTimeShiftFor( ent );
-//unlagged - backward reconciliation #2
-
 #ifdef MISSIONPACK
 		// if not the first trace (the lightning bounced of an invulnerability sphere)
 		if (i) {
@@ -800,7 +688,7 @@ void Weapon_LightningFire( gentity_t *en
 	}
 }
 
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 /*
 ======================================================================
 
@@ -845,7 +733,7 @@ void weapon_proxlauncher_fire (gentity_t
 //	VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta );	// "real" physics
 }
 
-//#endif
+#endif
 
 //======================================================================
 
@@ -922,18 +810,6 @@ FireWeapon
 ===============
 */
 void FireWeapon( gentity_t *ent ) {
-
-
-	//If elimination warmup, don't fire at all!
-	//if (g_gametype.integer == GT_ELIMINATION && level.roundStartTime>level.time )
-	//	return;
-
-	//Make people drop out of follow mode (this should be moved, so people can change betwean players.)
-	if (ent->client->sess.spectatorState == SPECTATOR_FOLLOW) {
-		StopFollowing( ent );
-		return;
-	}
-
 	if (ent->client->ps.powerups[PW_QUAD] ) {
 		s_quadFactor = g_quadfactor.value;
 	} else {
@@ -999,7 +875,7 @@ void FireWeapon( gentity_t *ent ) {
 	case WP_GRAPPLING_HOOK:
 		Weapon_GrapplingHook_Fire( ent );
 		break;
-//#ifdef MISSIONPACK
+#ifdef MISSIONPACK
 	case WP_NAILGUN:
 		Weapon_Nailgun_Fire( ent );
 		break;
@@ -1009,7 +885,7 @@ void FireWeapon( gentity_t *ent ) {
 	case WP_CHAINGUN:
 		Bullet_Fire( ent, CHAINGUN_SPREAD, MACHINEGUN_DAMAGE );
 		break;
-//#endif
+#endif
 	default:
 // FIXME		G_Error( "Bad ent->s.weapon" );
 		break;
diff -upr ioquake3svn1438/code/game/inv.h ioquake3serverFix/code/game/inv.h
--- ioquake3svn1438/code/game/inv.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/inv.h	2008-08-09 11:28:21.000000000 -0500
@@ -72,11 +72,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define INVENTORY_NEUTRALFLAG		47
 #define INVENTORY_REDCUBE			48
 #define INVENTORY_BLUECUBE			49
-//Elimination mod: Domination inventory
-#define INVENTORY_POINTWHITE			50
-#define INVENTORY_POINTRED			51
-#define INVENTORY_POINTBLUE			52
-
 //enemy stuff
 #define ENEMY_HORIZONTAL_DIST		200
 #define ENEMY_HEIGHT				201
@@ -154,19 +149,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define MODELINDEX_PROXLAUNCHER		50
 #define MODELINDEX_CHAINGUN			51
 
-//Elimination mod: Double Domination and Standard Domination
-
-#define MODELINDEX_POINTABLUE			52
-#define MODELINDEX_POINTBBLUE			53
-#define MODELINDEX_POINTARED			54
-#define MODELINDEX_POINTBRED			55
-#define MODELINDEX_POINTAWHITE			56
-#define MODELINDEX_POINTBWHITE			57
-#define MODELINDEX_POINTWHITE			58
-#define MODELINDEX_POINTRED			59
-#define MODELINDEX_POINTBLUE			60
-
-
 
 //
 #define WEAPONINDEX_GAUNTLET			1
diff -upr ioquake3svn1438/code/game/match.h ioquake3serverFix/code/game/match.h
--- ioquake3svn1438/code/game/match.h	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/game/match.h	2008-08-09 11:28:21.000000000 -0500
@@ -32,7 +32,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define MTCONTEXT_PATROLKEYAREA			64
 #define MTCONTEXT_REPLYCHAT				128
 #define MTCONTEXT_CTF					256
-#define MTCONTEXT_DD				512
 
 //message types
 #define MSG_NEWLEADER					1		//new leader
@@ -69,11 +68,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define MSG_HARVEST						32		//go harvest
 #define MSG_SUICIDE						33		//order to suicide
 //
-
-//Double Domination messages
-#define MSG_TAKEA					90
-#define MSG_TAKEB					91
-//
 #define MSG_ME							100
 #define MSG_EVERYONE					101
 #define MSG_MULTIPLENAMES				102
@@ -91,8 +85,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 //
 #define MSG_CTF							300		//ctf message
 
-
-
 //command sub types
 #define ST_SOMEWHERE					0
 #define ST_NEARITEM						1
@@ -112,8 +104,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define ST_RETURNEDFLAG					16384
 #define ST_TEAM							32768
 #define ST_1FCTFGOTFLAG					65535
-
-
 //ctf task preferences
 #define ST_DEFENDER						1
 #define ST_ATTACKER						2
@@ -142,4 +132,3 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define MORE							6
 
 
-
diff -upr ioquake3svn1438/code/null/null_input.c ioquake3serverFix/code/null/null_input.c
--- ioquake3svn1438/code/null/null_input.c	2007-03-26 12:10:32.000000000 -0500
+++ ioquake3serverFix/code/null/null_input.c	2008-08-09 11:28:21.000000000 -0500
@@ -30,6 +30,9 @@ void IN_Frame (void) {
 void IN_Shutdown( void ) {
 }
 
+void IN_Restart( void ) {
+}
+
 void Sys_SendKeyEvents (void) {
 }
 
Only in ioquake3svn1438/code/q3_ui: compile.bat
Only in ioquake3svn1438/code/q3_ui: q3_ui.bat
Only in ioquake3svn1438/code/q3_ui: q3_ui.q3asm
Only in ioquake3svn1438/code/q3_ui: q3_ui.sh
diff -upr ioquake3svn1438/code/q3_ui/ui_addbots.c ioquake3serverFix/code/q3_ui/ui_addbots.c
--- ioquake3svn1438/code/q3_ui/ui_addbots.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_addbots.c	2008-08-09 11:28:12.000000000 -0500
@@ -333,7 +333,7 @@ static void UI_AddBotsMenu_Init( void ) 
 	addBotsMenuInfo.team.generic.y			= y;
 	addBotsMenuInfo.team.generic.name		= "Team: ";
 	addBotsMenuInfo.team.generic.id			= ID_TEAM;
-	if( gametype >= GT_TEAM && gametype!=GT_LMS) {
+	if( gametype >= GT_TEAM ) {
 		addBotsMenuInfo.team.itemnames		= teamNames2;
 	}
 	else {
diff -upr ioquake3svn1438/code/q3_ui/ui_atoms.c ioquake3serverFix/code/q3_ui/ui_atoms.c
--- ioquake3svn1438/code/q3_ui/ui_atoms.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_atoms.c	2008-08-09 11:28:12.000000000 -0500
@@ -330,8 +330,6 @@ static int propMapB[26][3] = {
 #define PROPB_SPACE_WIDTH	12
 #define PROPB_HEIGHT		36
 
-// bk001205 - code below duplicated in cgame/cg_drawtools.c
-// bk001205 - FIXME: does this belong in ui_shared.c?
 /*
 =================
 UI_DrawBannerString
@@ -340,7 +338,7 @@ UI_DrawBannerString
 static void UI_DrawBannerString2( int x, int y, const char* str, vec4_t color )
 {
 	const char* s;
-	unsigned char	ch; // bk001204 - unsigned
+	unsigned char	ch;
 	float	ax;
 	float	ay;
 	float	aw;
@@ -450,10 +448,10 @@ int UI_ProportionalStringWidth( const ch
 static void UI_DrawProportionalString2( int x, int y, const char* str, vec4_t color, float sizeScale, qhandle_t charset )
 {
 	const char* s;
-	unsigned char	ch; // bk001204 - unsigned
+	unsigned char	ch;
 	float	ax;
 	float	ay;
-	float	aw = 0; // bk001204 - init
+	float	aw = 0;
 	float	ah;
 	float	frow;
 	float	fcol;
@@ -831,7 +829,6 @@ void UI_SetActiveMenu( uiMenuCommand_t m
 		UI_InGameMenu();
 		return;
 		
-	// bk001204
 	case UIMENU_TEAM:
 	case UIMENU_POSTGAME:
 	default:
diff -upr ioquake3svn1438/code/q3_ui/ui_connect.c ioquake3serverFix/code/q3_ui/ui_connect.c
--- ioquake3svn1438/code/q3_ui/ui_connect.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_connect.c	2008-08-09 11:28:12.000000000 -0500
@@ -82,15 +82,6 @@ static void UI_DisplayDownloadInfo( cons
 	downloadCount = trap_Cvar_VariableValue( "cl_downloadCount" );
 	downloadTime = trap_Cvar_VariableValue( "cl_downloadTime" );
 
-#if 0 // bk010104
-	fprintf( stderr, "\n\n-----------------------------------------------\n");
-	fprintf( stderr, "DB: downloadSize:  %16d\n", downloadSize );
-	fprintf( stderr, "DB: downloadCount: %16d\n", downloadCount );
-	fprintf( stderr, "DB: downloadTime:  %16d\n", downloadTime );  
-  	fprintf( stderr, "DB: UI realtime:   %16d\n", uis.realtime );	// bk
-	fprintf( stderr, "DB: UI frametime:  %16d\n", uis.frametime );	// bk
-#endif
-
 	leftWidth = width = UI_ProportionalStringWidth( dlText ) * UI_ProportionalSizeScale( style );
 	width = UI_ProportionalStringWidth( etaText ) * UI_ProportionalSizeScale( style );
 	if (width > leftWidth) leftWidth = width;
@@ -118,10 +109,6 @@ static void UI_DisplayDownloadInfo( cons
 		UI_DrawProportionalString( leftWidth, 192, 
 			va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), style, color_white );
 	} else {
-	  // bk010108
-	  //float elapsedTime = (float)(uis.realtime - downloadTime); // current - start (msecs)
-	  //elapsedTime = elapsedTime * 0.001f; // in seconds
-	  //if ( elapsedTime <= 0.0f ) elapsedTime == 0.0f;
 	  if ( (uis.realtime - downloadTime) / 1000) {
 			xferRate = downloadCount / ((uis.realtime - downloadTime) / 1000);
 		  //xferRate = (int)( ((float)downloadCount) / elapsedTime);
@@ -129,9 +116,6 @@ static void UI_DisplayDownloadInfo( cons
 			xferRate = 0;
 		}
 
-	  //fprintf( stderr, "DB: elapsedTime:  %16.8f\n", elapsedTime );	// bk
-	  //fprintf( stderr, "DB: xferRate:   %16d\n", xferRate );	// bk
-
 		UI_ReadableSize( xferRateBuf, sizeof xferRateBuf, xferRate );
 
 		// Extrapolate estimated completion time
@@ -141,7 +125,7 @@ static void UI_DisplayDownloadInfo( cons
 			// We do it in K (/1024) because we'd overflow around 4MB
 			n = (n - (((downloadCount/1024) * n) / (downloadSize/1024))) * 1000;
 			
-			UI_PrintTime ( dlTimeBuf, sizeof dlTimeBuf, n ); // bk010104
+			UI_PrintTime ( dlTimeBuf, sizeof dlTimeBuf, n );
 				//(n - (((downloadCount/1024) * n) / (downloadSize/1024))) * 1000);
 
 			UI_DrawProportionalString( leftWidth, 160, 
diff -upr ioquake3svn1438/code/q3_ui/ui_controls2.c ioquake3serverFix/code/q3_ui/ui_controls2.c
--- ioquake3svn1438/code/q3_ui/ui_controls2.c	2008-07-05 15:30:26.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_controls2.c	2008-08-09 11:28:12.000000000 -0500
@@ -103,30 +103,24 @@ typedef struct
 #define ID_WEAPON7		23	
 #define ID_WEAPON8		24	
 #define ID_WEAPON9		25	
-#define ID_WEAPON11		26 //Nailgun
-#define ID_WEAPON12		27 //ProxMines
-#define ID_WEAPON13		28 //Chaingun
-#define ID_ATTACK		29
-#define ID_WEAPPREV		30
-#define ID_WEAPNEXT		31
-#define ID_GESTURE		32
-#define ID_CHAT			33
-#define ID_CHAT2		34
-#define ID_CHAT3		35
-#define ID_CHAT4		36
-#define ID_VOIP_TALK		37
+#define ID_ATTACK		26
+#define ID_WEAPPREV		27
+#define ID_WEAPNEXT		28
+#define ID_GESTURE		29
+#define ID_CHAT			30
+#define ID_CHAT2		31
+#define ID_CHAT3		32
+#define ID_CHAT4		33
 
 // all others
-#define ID_FREELOOK		38
-#define ID_INVERTMOUSE	39
-#define ID_ALWAYSRUN	40
-#define ID_AUTOSWITCH	41
-#define ID_MOUSESPEED	42
-#define ID_JOYENABLE	43
-#define ID_JOYTHRESHOLD	44
-#define ID_SMOOTHMOUSE	45
-
-
+#define ID_FREELOOK		34
+#define ID_INVERTMOUSE	35
+#define ID_ALWAYSRUN	36
+#define ID_AUTOSWITCH	37
+#define ID_MOUSESPEED	38
+#define ID_JOYENABLE	39
+#define ID_JOYTHRESHOLD	40
+#define ID_SMOOTHMOUSE	41
 
 #define ANIM_IDLE		0
 #define ANIM_RUN		1
@@ -155,11 +149,6 @@ typedef struct
 #define ANIM_DIE		24
 #define ANIM_CHAT		25
 
-//New in Beta 23
-#define ANIM_WEAPON11	26 //Nailgun
-#define ANIM_WEAPON12	27 //ProxMines
-#define ANIM_WEAPON13	28 //Chaingun
-
 typedef struct
 {
 	menuframework_s		menu;
@@ -193,11 +182,6 @@ typedef struct
 	menuaction_s		railgun;
 	menuaction_s		plasma;
 	menuaction_s		bfg;
-        //New in Beta 23
-        menuaction_s		nailgun;
-        menuaction_s		proxmine;
-        menuaction_s		chaingun;
-        //New in 23 end
 	menuaction_s		attack;
 	menuaction_s		prevweapon;
 	menuaction_s		nextweapon;
@@ -221,7 +205,6 @@ typedef struct
 	menuaction_s		chat2;
 	menuaction_s		chat3;
 	menuaction_s		chat4;
-        menuaction_s		voip_talk;
 	menuradiobutton_s	joyenable;
 	menuslider_s		joythreshold;
 	int					section;
@@ -240,40 +223,37 @@ typedef struct
 
 static controls_t s_controls;
 
-static vec4_t controls_binding_color  = {1.00f, 0.43f, 0.00f, 1.00f}; // bk: Win32 C4305
+static vec4_t controls_binding_color  = {1.00f, 0.43f, 0.00f, 1.00f};
 
 static bind_t g_bindings[] = 
 {
-	{"+scores",		"show scores",		ID_SHOWSCORES,	ANIM_IDLE,		K_TAB,			-1,		-1, -1},
-	{"+button2",		"use item",		ID_USEITEM,		ANIM_IDLE,		K_ENTER,		-1,		-1, -1},
-	{"+speed", 		"run / walk",		ID_SPEED,		ANIM_RUN,		K_SHIFT,		-1,		-1,	-1},
+	{"+scores",			"show scores",		ID_SHOWSCORES,	ANIM_IDLE,		K_TAB,			-1,		-1, -1},
+	{"+button2",		"use item",			ID_USEITEM,		ANIM_IDLE,		K_ENTER,		-1,		-1, -1},
+	{"+speed", 			"run / walk",		ID_SPEED,		ANIM_RUN,		K_SHIFT,		-1,		-1,	-1},
 	{"+forward", 		"walk forward",		ID_FORWARD,		ANIM_WALK,		K_UPARROW,		-1,		-1, -1},
-	{"+back", 		"backpedal",		ID_BACKPEDAL,	ANIM_BACK,		K_DOWNARROW,	-1,		-1, -1},
+	{"+back", 			"backpedal",		ID_BACKPEDAL,	ANIM_BACK,		K_DOWNARROW,	-1,		-1, -1},
 	{"+moveleft", 		"step left",		ID_MOVELEFT,	ANIM_STEPLEFT,	',',			-1,		-1, -1},
 	{"+moveright", 		"step right",		ID_MOVERIGHT,	ANIM_STEPRIGHT,	'.',			-1,		-1, -1},
-	{"+moveup",		"up / jump",		ID_MOVEUP,		ANIM_JUMP,		K_SPACE,		-1,		-1, -1},
+	{"+moveup",			"up / jump",		ID_MOVEUP,		ANIM_JUMP,		K_SPACE,		-1,		-1, -1},
 	{"+movedown",		"down / crouch",	ID_MOVEDOWN,	ANIM_CROUCH,	'c',			-1,		-1, -1},
-	{"+left", 		"turn left",		ID_LEFT,		ANIM_TURNLEFT,	K_LEFTARROW,	-1,		-1, -1},
-	{"+right", 		"turn right",		ID_RIGHT,		ANIM_TURNRIGHT,	K_RIGHTARROW,	-1,		-1, -1},
+	{"+left", 			"turn left",		ID_LEFT,		ANIM_TURNLEFT,	K_LEFTARROW,	-1,		-1, -1},
+	{"+right", 			"turn right",		ID_RIGHT,		ANIM_TURNRIGHT,	K_RIGHTARROW,	-1,		-1, -1},
 	{"+strafe", 		"sidestep / turn",	ID_STRAFE,		ANIM_IDLE,		K_ALT,			-1,		-1, -1},
-	{"+lookup", 		"look up",		ID_LOOKUP,		ANIM_LOOKUP,	K_PGDN,			-1,		-1, -1},
+	{"+lookup", 		"look up",			ID_LOOKUP,		ANIM_LOOKUP,	K_PGDN,			-1,		-1, -1},
 	{"+lookdown", 		"look down",		ID_LOOKDOWN,	ANIM_LOOKDOWN,	K_DEL,			-1,		-1, -1},
-	{"+mlook", 		"mouse look",		ID_MOUSELOOK,	ANIM_IDLE,		'/',			-1,		-1, -1},
+	{"+mlook", 			"mouse look",		ID_MOUSELOOK,	ANIM_IDLE,		'/',			-1,		-1, -1},
 	{"centerview", 		"center view",		ID_CENTERVIEW,	ANIM_IDLE,		K_END,			-1,		-1, -1},
-	{"+zoom", 		"zoom view",		ID_ZOOMVIEW,	ANIM_IDLE,	-1,	-1,	-1, -1},
-	{"weapon 1",		"gauntlet",		ID_WEAPON1,	ANIM_WEAPON1,	'1',	-1,	-1, -1},
-	{"weapon 2",		"machinegun",		ID_WEAPON2,	ANIM_WEAPON2,	'2',	-1,	-1, -1},
-	{"weapon 3",		"shotgun",		ID_WEAPON3,	ANIM_WEAPON3,	'3',	-1,	-1, -1},
-	{"weapon 4",		"grenade launcher",	ID_WEAPON4,	ANIM_WEAPON4,	'4',	-1,	-1, -1},
-	{"weapon 5",		"rocket launcher",	ID_WEAPON5,	ANIM_WEAPON5,	'5',	-1,	-1, -1},
-	{"weapon 6",		"lightning",		ID_WEAPON6,	ANIM_WEAPON6,	'6',	-1,	-1, -1},
-	{"weapon 7",		"railgun",		ID_WEAPON7,	ANIM_WEAPON7,	'7',	-1,	-1, -1},
-	{"weapon 8",		"plasma gun",		ID_WEAPON8,	ANIM_WEAPON8,	'8',	-1,	-1, -1},
-	{"weapon 9",		"BFG",			ID_WEAPON9,	ANIM_WEAPON9,	'9',	-1,	-1, -1},
-        {"weapon 11",		"nailgun",		ID_WEAPON11,	ANIM_WEAPON11,	-1,	-1,	-1, -1},
-        {"weapon 12",		"mine Launcher",	ID_WEAPON12,	ANIM_WEAPON12,	-1,	-1,	-1, -1},
-        {"weapon 13",		"chaingun",		ID_WEAPON13,	ANIM_WEAPON13,	-1,	-1,	-1, -1},
-	{"+attack", 		"attack",		ID_ATTACK,	ANIM_ATTACK,	K_CTRL,			-1,		-1, -1},
+	{"+zoom", 			"zoom view",		ID_ZOOMVIEW,	ANIM_IDLE,		-1,				-1,		-1, -1},
+	{"weapon 1",		"gauntlet",			ID_WEAPON1,		ANIM_WEAPON1,	'1',			-1,		-1, -1},
+	{"weapon 2",		"machinegun",		ID_WEAPON2,		ANIM_WEAPON2,	'2',			-1,		-1, -1},
+	{"weapon 3",		"shotgun",			ID_WEAPON3,		ANIM_WEAPON3,	'3',			-1,		-1, -1},
+	{"weapon 4",		"grenade launcher",	ID_WEAPON4,		ANIM_WEAPON4,	'4',			-1,		-1, -1},
+	{"weapon 5",		"rocket launcher",	ID_WEAPON5,		ANIM_WEAPON5,	'5',			-1,		-1, -1},
+	{"weapon 6",		"lightning",		ID_WEAPON6,		ANIM_WEAPON6,	'6',			-1,		-1, -1},
+	{"weapon 7",		"railgun",			ID_WEAPON7,		ANIM_WEAPON7,	'7',			-1,		-1, -1},
+	{"weapon 8",		"plasma gun",		ID_WEAPON8,		ANIM_WEAPON8,	'8',			-1,		-1, -1},
+	{"weapon 9",		"BFG",				ID_WEAPON9,		ANIM_WEAPON9,	'9',			-1,		-1, -1},
+	{"+attack", 		"attack",			ID_ATTACK,		ANIM_ATTACK,	K_CTRL,			-1,		-1, -1},
 	{"weapprev",		"prev weapon",		ID_WEAPPREV,	ANIM_IDLE,		'[',			-1,		-1, -1},
 	{"weapnext", 		"next weapon",		ID_WEAPNEXT,	ANIM_IDLE,		']',			-1,		-1, -1},
 	{"+button3", 		"gesture",			ID_GESTURE,		ANIM_GESTURE,	K_MOUSE3,		-1,		-1, -1},
@@ -281,7 +261,6 @@ static bind_t g_bindings[] = 
 	{"messagemode2", 	"chat - team",		ID_CHAT2,		ANIM_CHAT,		-1,				-1,		-1, -1},
 	{"messagemode3", 	"chat - target",	ID_CHAT3,		ANIM_CHAT,		-1,				-1,		-1, -1},
 	{"messagemode4", 	"chat - attacker",	ID_CHAT4,		ANIM_CHAT,		-1,				-1,		-1, -1},
-        {"+voiprecord", 	"voice chat",           ID_VOIP_TALK,		ANIM_CHAT,		'q',				-1,		-1, -1},
 	{(char*)NULL,		(char*)NULL,		0,				0,				-1,				-1,		-1,	-1},
 };
 
@@ -327,10 +306,7 @@ static menucommon_s *g_weapons_controls[
 	(menucommon_s *)&s_controls.lightning,   
 	(menucommon_s *)&s_controls.railgun,          
 	(menucommon_s *)&s_controls.plasma,           
-	(menucommon_s *)&s_controls.bfg,
-        (menucommon_s *)&s_controls.nailgun,
-        (menucommon_s *)&s_controls.proxmine,
-        (menucommon_s *)&s_controls.chaingun,
+	(menucommon_s *)&s_controls.bfg,              
 	NULL,
 };
 
@@ -357,7 +333,6 @@ static menucommon_s *g_misc_controls[] =
 	(menucommon_s *)&s_controls.chat2,
 	(menucommon_s *)&s_controls.chat3,
 	(menucommon_s *)&s_controls.chat4,
-        (menucommon_s *)&s_controls.voip_talk,
 	NULL,
 };
 
@@ -544,18 +519,6 @@ static void Controls_UpdateModel( int an
 	case ANIM_WEAPON10:
 		s_controls.playerWeapon = WP_GRAPPLING_HOOK;
 		break;
-                
-        case ANIM_WEAPON11:
-		s_controls.playerWeapon = WP_NAILGUN;
-		break;
-              
-        case ANIM_WEAPON12:
-		s_controls.playerWeapon = WP_PROX_LAUNCHER;
-		break;
-                
-        case ANIM_WEAPON13:
-		s_controls.playerWeapon = WP_CHAINGUN;
-		break;
 
 	case ANIM_ATTACK:
 		s_controls.playerTorso = TORSO_ATTACK;
@@ -598,7 +561,6 @@ static void Controls_Update( void ) {
 	// disable all controls in all groups
 	for( i = 0; i < C_MAX; i++ ) {
 		controls = g_controls[i];
-		// bk001204 - parentheses
 		for( j = 0;  (control = controls[j]) ; j++ ) {
 			control->flags |= (QMF_HIDDEN|QMF_INACTIVE);
 		}
@@ -607,14 +569,12 @@ static void Controls_Update( void ) {
 	controls = g_controls[s_controls.section];
 
 	// enable controls in active group (and count number of items for vertical centering)
-	// bk001204 - parentheses
 	for( j = 0;  (control = controls[j]) ; j++ ) {
 		control->flags &= ~(QMF_GRAYED|QMF_HIDDEN|QMF_INACTIVE);
 	}
 
 	// position controls
 	y = ( SCREEN_HEIGHT - j * SMALLCHAR_HEIGHT ) / 2;
-	// bk001204 - parentheses
 	for( j = 0;	(control = controls[j]) ; j++, y += SMALLCHAR_HEIGHT ) {
 		control->x      = 320;
 		control->y      = y;
@@ -1431,24 +1391,6 @@ static void Controls_MenuInit( void )
 	s_controls.bfg.generic.callback  = Controls_ActionEvent;
 	s_controls.bfg.generic.ownerdraw = Controls_DrawKeyBinding;
 	s_controls.bfg.generic.id        = ID_WEAPON9;
-        
-        s_controls.nailgun.generic.type	     = MTYPE_ACTION;
-	s_controls.nailgun.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN;
-	s_controls.nailgun.generic.callback  = Controls_ActionEvent;
-	s_controls.nailgun.generic.ownerdraw = Controls_DrawKeyBinding;
-	s_controls.nailgun.generic.id        = ID_WEAPON11;
-        
-        s_controls.proxmine.generic.type	     = MTYPE_ACTION;
-	s_controls.proxmine.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN;
-	s_controls.proxmine.generic.callback  = Controls_ActionEvent;
-	s_controls.proxmine.generic.ownerdraw = Controls_DrawKeyBinding;
-	s_controls.proxmine.generic.id        = ID_WEAPON12;
-        
-        s_controls.chaingun.generic.type	     = MTYPE_ACTION;
-	s_controls.chaingun.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN;
-	s_controls.chaingun.generic.callback  = Controls_ActionEvent;
-	s_controls.chaingun.generic.ownerdraw = Controls_DrawKeyBinding;
-	s_controls.chaingun.generic.id        = ID_WEAPON13;
 
 	s_controls.attack.generic.type	    = MTYPE_ACTION;
 	s_controls.attack.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN;
@@ -1589,12 +1531,6 @@ static void Controls_MenuInit( void )
 	s_controls.chat4.generic.callback  = Controls_ActionEvent;
 	s_controls.chat4.generic.ownerdraw = Controls_DrawKeyBinding;
 	s_controls.chat4.generic.id        = ID_CHAT4;
-        
-        s_controls.voip_talk.generic.type	   = MTYPE_ACTION;
-	s_controls.voip_talk.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN;
-	s_controls.voip_talk.generic.callback  = Controls_ActionEvent;
-	s_controls.voip_talk.generic.ownerdraw = Controls_DrawKeyBinding;
-	s_controls.voip_talk.generic.id        = ID_VOIP_TALK;
 
 	s_controls.joyenable.generic.type      = MTYPE_RADIOBUTTON;
 	s_controls.joyenable.generic.flags	   = QMF_SMALLFONT;
@@ -1670,9 +1606,6 @@ static void Controls_MenuInit( void )
 	Menu_AddItem( &s_controls.menu, &s_controls.railgun );
 	Menu_AddItem( &s_controls.menu, &s_controls.plasma );
 	Menu_AddItem( &s_controls.menu, &s_controls.bfg );
-        Menu_AddItem( &s_controls.menu, &s_controls.nailgun );
-        Menu_AddItem( &s_controls.menu, &s_controls.proxmine );
-        Menu_AddItem( &s_controls.menu, &s_controls.chaingun );
 
 	Menu_AddItem( &s_controls.menu, &s_controls.showscores );
 	Menu_AddItem( &s_controls.menu, &s_controls.useitem );
@@ -1681,7 +1614,6 @@ static void Controls_MenuInit( void )
 	Menu_AddItem( &s_controls.menu, &s_controls.chat2 );
 	Menu_AddItem( &s_controls.menu, &s_controls.chat3 );
 	Menu_AddItem( &s_controls.menu, &s_controls.chat4 );
-        Menu_AddItem( &s_controls.menu, &s_controls.voip_talk );
 
 	Menu_AddItem( &s_controls.menu, &s_controls.back );
 
diff -upr ioquake3svn1438/code/q3_ui/ui_credits.c ioquake3serverFix/code/q3_ui/ui_credits.c
--- ioquake3svn1438/code/q3_ui/ui_credits.c	2008-06-28 18:00:24.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_credits.c	2008-08-09 11:28:12.000000000 -0500
@@ -28,22 +28,59 @@ CREDITS
 =======================================================================
 */
 
-/*
- *Sago 2008-06-29: This is kinda annoying and does not really give usefull information anyway
- */
-
 
 #include "ui_local.h"
 
 
 typedef struct {
 	menuframework_s	menu;
+	int frame;
 } creditsmenu_t;
 
 static creditsmenu_t	s_credits;
 
 
 /*
+===============
+UI_CreditMenu_Draw_ioq3
+===============
+*/
+static void UI_CreditMenu_Draw_ioq3( void ) {
+	int		y;
+	int		i;
+
+	// These are all people that have made commits to Subversion, and thus
+	//  probably incomplete.
+	// (These are in alphabetical order, for the defense of everyone's egos.)
+	static const char *names[] = {
+		"Tim Angus",
+		"Vincent Cojot",
+		"Ryan C. Gordon",
+		"Aaron Gyes",
+		"Ludwig Nussel",
+		"Julian Priestley",
+		"Scirocco Six",
+		"Thilo Schulz",
+		"Zachary J. Slater",
+		"Tony J. White",
+		"...and many, many others!",  // keep this one last.
+		NULL
+	};
+
+	y = 12;
+	UI_DrawProportionalString( 320, y, "ioquake3 contributors:", UI_CENTER|UI_SMALLFONT, color_white );
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+
+	for (i = 0; names[i]; i++) {
+		UI_DrawProportionalString( 320, y, names[i], UI_CENTER|UI_SMALLFONT, color_white );
+		y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	}
+
+	UI_DrawString( 320, 459, "http://www.ioquake3.org/", UI_CENTER|UI_SMALLFONT, color_red );
+}
+
+
+/*
 =================
 UI_CreditMenu_Key
 =================
@@ -53,8 +90,12 @@ static sfxHandle_t UI_CreditMenu_Key( in
 		return 0;
 	}
 
-        //Sago: I no longer show credits on close. Consider something else if ingame credits are to be made
-	//trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
+	s_credits.frame++;
+	if (s_credits.frame == 1) {
+		s_credits.menu.draw = UI_CreditMenu_Draw_ioq3;
+	} else {
+		trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
+	}
 	return 0;
 }
 
@@ -68,15 +109,54 @@ static void UI_CreditMenu_Draw( void ) {
 	int		y;
 
 	y = 12;
-	UI_DrawProportionalString( 320, y, "Thank you for playing", UI_CENTER|UI_SMALLFONT, color_white );
+	UI_DrawProportionalString( 320, y, "id Software is:", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Programming", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "John Carmack, Robert A. Duffy, Jim Dose'", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Art", UI_CENTER|UI_SMALLFONT, color_white );
 	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
-	UI_DrawProportionalString( 320, y, "Open Arena", UI_CENTER|UI_SMALLFONT, color_white );
-	
-	//y += 28;
-	//UI_DrawString( 320, y, "Click or press any key to quit", UI_CENTER|UI_SMALLFONT, color_red );
-        
-        y = 480 - PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
-	UI_DrawProportionalString( 320, y, "www.openarena.ws", UI_CENTER|UI_SMALLFONT, color_white );
+	UI_DrawProportionalString( 320, y, "Adrian Carmack, Kevin Cloud,", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Kenneth Scott, Seneca Menard, Fred Nilsson", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Game Designer", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Graeme Devine", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Level Design", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Tim Willits, Christian Antkow, Paul Jaquays", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "CEO", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Todd Hollenshead", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Director of Business Development", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Marty Stratton", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Biz Assist and id Mom", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Donna Jackson", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Development Assistance", UI_CENTER|UI_SMALLFONT, color_white );
+	y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawProportionalString( 320, y, "Eric Webb", UI_CENTER|UI_SMALLFONT, color_white );
+
+	y += 1.35 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
+	UI_DrawString( 320, y, "To order: 1-800-idgames     www.quake3arena.com     www.idsoftware.com", UI_CENTER|UI_SMALLFONT, color_red );
+	y += SMALLCHAR_HEIGHT;
+	UI_DrawString( 320, y, "Quake III Arena(c) 1999-2000, Id Software, Inc.  All Rights Reserved", UI_CENTER|UI_SMALLFONT, color_red );
 }
 
 
diff -upr ioquake3svn1438/code/q3_ui/ui_ingame.c ioquake3serverFix/code/q3_ui/ui_ingame.c
--- ioquake3svn1438/code/q3_ui/ui_ingame.c	2008-06-28 18:12:57.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_ingame.c	2008-08-09 11:28:12.000000000 -0500
@@ -92,8 +92,7 @@ static void InGame_QuitAction( qboolean 
 		return;
 	}
 	UI_PopMenu();
-	//UI_CreditMenu();
-        trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
+	UI_CreditMenu();
 }
 
 
@@ -227,7 +226,7 @@ void InGame_MenuInit( void ) {
 	s_ingame.teamorders.string				= "TEAM ORDERS";
 	s_ingame.teamorders.color				= color_red;
 	s_ingame.teamorders.style				= UI_CENTER|UI_SMALLFONT;
-	if( !(trap_Cvar_VariableValue( "g_gametype" ) >= GT_TEAM) || (trap_Cvar_VariableValue( "g_gametype" ) == GT_LMS ) ) {
+	if( !(trap_Cvar_VariableValue( "g_gametype" ) >= GT_TEAM) ) {
 		s_ingame.teamorders.generic.flags |= QMF_GRAYED;
 	}
 	else {
diff -upr ioquake3svn1438/code/q3_ui/ui_local.h ioquake3serverFix/code/q3_ui/ui_local.h
--- ioquake3svn1438/code/q3_ui/ui_local.h	2008-06-29 09:09:31.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_local.h	2008-08-09 11:28:12.000000000 -0500
@@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #include "../qcommon/q_shared.h"
 #include "../renderer/tr_types.h"
 //NOTE: include the ui_public.h from the new UI
-#include "../ui/ui_public.h" // bk001205 - yes, do have to use this
+#include "../ui/ui_public.h"
 //redefine to old API version
 #undef UI_API_VERSION
 #define UI_API_VERSION	4
@@ -49,20 +49,6 @@ extern vmCvar_t	ui_ctf_capturelimit;
 extern vmCvar_t	ui_ctf_timelimit;
 extern vmCvar_t	ui_ctf_friendly;
 
-extern vmCvar_t	ui_elimination_capturelimit;
-extern vmCvar_t	ui_elimination_timelimit;
-
-
-extern vmCvar_t	ui_ctf_elimination_capturelimit;
-extern vmCvar_t	ui_ctf_elimination_timelimit;
-
-extern vmCvar_t	ui_lms_fraglimit;
-extern vmCvar_t	ui_lms_timelimit;
-
-extern vmCvar_t	ui_dd_capturelimit;
-extern vmCvar_t	ui_dd_timelimit;
-extern vmCvar_t	ui_dd_friendly;
-
 extern vmCvar_t	ui_arenasFile;
 extern vmCvar_t	ui_botsFile;
 extern vmCvar_t	ui_spScores1;
@@ -106,9 +92,8 @@ extern vmCvar_t	ui_server16;
 
 extern vmCvar_t	ui_cdkey;
 extern vmCvar_t	ui_cdkeychecked;
+extern vmCvar_t	ui_ioq3;
 
-//new in beta 23:
-extern vmCvar_t ui_browserOnlyHumans;
 
 //
 // ui_qmenu.c
@@ -157,10 +142,6 @@ extern vmCvar_t ui_browserOnlyHumans;
 #define QMF_UPPERCASE			0x00080000	// edit field is all upper case
 #define QMF_SILENT				0x00100000
 
-//for cgs.ffa_gt and g_ffa kinda leary about this...
-//#define FREEFORALL			(s_serveroptions.gametype==GT_LMS)
-//#define TRAP_FREEFORALL			(trap_Cvar_VariableValue( "g_gametype" ) == GT_LMS)
-
 // callback notifications
 #define QM_GOTFOCUS				1
 #define QM_LOSTFOCUS			2
@@ -698,7 +679,7 @@ int				trap_MemoryRemaining( void );
 void			trap_GetCDKey( char *buf, int buflen );
 void			trap_SetCDKey( char *buf );
 
-qboolean               trap_VerifyCDKey( const char *key, const char *chksum); // bk001208 - RC4
+qboolean               trap_VerifyCDKey( const char *key, const char *chksum);
 
 void			trap_SetPbClStatus( int status );
 
diff -upr ioquake3svn1438/code/q3_ui/ui_main.c ioquake3serverFix/code/q3_ui/ui_main.c
--- ioquake3svn1438/code/q3_ui/ui_main.c	2008-06-29 09:06:58.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_main.c	2008-08-09 11:28:12.000000000 -0500
@@ -79,7 +79,7 @@ intptr_t vmMain( int command, int arg0, 
 		UI_DrawConnectScreen( arg0 );
 		return 0;
 	case UI_HASUNIQUECDKEY:				// mod authors need to observe this
-		return qtrue;  // bk010117 - change this to qfalse for mods!
+		return qtrue;  // change this to qfalse for mods!
 	}
 
 	return -1;
@@ -113,19 +113,6 @@ vmCvar_t	ui_ctf_capturelimit;
 vmCvar_t	ui_ctf_timelimit;
 vmCvar_t	ui_ctf_friendly;
 
-vmCvar_t	ui_elimination_capturelimit;
-vmCvar_t	ui_elimination_timelimit;
-
-vmCvar_t	ui_ctf_elimination_capturelimit;
-vmCvar_t	ui_ctf_elimination_timelimit;
-
-vmCvar_t	ui_lms_fraglimit;
-vmCvar_t	ui_lms_timelimit;
-
-vmCvar_t	ui_dd_capturelimit;
-vmCvar_t	ui_dd_timelimit;
-vmCvar_t	ui_dd_friendly;
-
 vmCvar_t	ui_arenasFile;
 vmCvar_t	ui_botsFile;
 vmCvar_t	ui_spScores1;
@@ -168,11 +155,8 @@ vmCvar_t	ui_server15;
 vmCvar_t	ui_server16;
 
 vmCvar_t	ui_cdkeychecked;
+vmCvar_t	ui_ioq3;
 
-//new in beta 23:
-vmCvar_t        ui_browserOnlyHumans;
-
-// bk001129 - made static to avoid aliasing.
 static cvarTable_t		cvarTable[] = {
 	{ &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE },
 	{ &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE },
@@ -188,19 +172,6 @@ static cvarTable_t		cvarTable[] = {
 	{ &ui_ctf_timelimit, "ui_ctf_timelimit", "30", CVAR_ARCHIVE },
 	{ &ui_ctf_friendly, "ui_ctf_friendly",  "0", CVAR_ARCHIVE },
 
-	{ &ui_elimination_capturelimit, "ui_elimination_capturelimit", "8", CVAR_ARCHIVE },
-	{ &ui_elimination_timelimit, "ui_elimination_timelimit", "20", CVAR_ARCHIVE },
-
-	{ &ui_ctf_elimination_capturelimit, "ui_ctf_elimination_capturelimit", "8", CVAR_ARCHIVE },
-	{ &ui_ctf_elimination_timelimit, "ui_ctf_elimination_timelimit", "30", CVAR_ARCHIVE },
-
-	{ &ui_lms_fraglimit, "ui_lms_fraglimit", "20", CVAR_ARCHIVE },
-	{ &ui_lms_timelimit, "ui_lms_timelimit", "0", CVAR_ARCHIVE },
-        
-	{ &ui_dd_capturelimit, "ui_dd_capturelimit", "8", CVAR_ARCHIVE },
-	{ &ui_dd_timelimit, "ui_dd_timelimit", "30", CVAR_ARCHIVE },
-	{ &ui_dd_friendly, "ui_dd_friendly",  "0", CVAR_ARCHIVE },
-
 	{ &ui_arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM },
 	{ &ui_botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM },
 	{ &ui_spScores1, "g_spScores1", "", CVAR_ARCHIVE | CVAR_ROM },
@@ -243,12 +214,9 @@ static cvarTable_t		cvarTable[] = {
 	{ &ui_server16, "server16", "", CVAR_ARCHIVE },
 
 	{ &ui_cdkeychecked, "ui_cdkeychecked", "0", CVAR_ROM },
-        
-        //new in beta 23:
-        { &ui_browserOnlyHumans, "ui_browserOnlyHumans", "0", CVAR_ARCHIVE },
+	{ &ui_ioq3, "ui_ioq3", "1", CVAR_ROM }
 };
 
-// bk001129 - made static to avoid aliasing
 static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]);
 
 
diff -upr ioquake3svn1438/code/q3_ui/ui_menu.c ioquake3serverFix/code/q3_ui/ui_menu.c
--- ioquake3svn1438/code/q3_ui/ui_menu.c	2008-08-06 12:23:31.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_menu.c	2008-08-09 11:28:12.000000000 -0500
@@ -36,7 +36,7 @@ MAIN MENU
 #define ID_MULTIPLAYER			11
 #define ID_SETUP				12
 #define ID_DEMOS				13
-//#define ID_CINEMATICS			14
+#define ID_CINEMATICS			14
 #define ID_TEAMARENA		15
 #define ID_MODS					16
 #define ID_EXIT					17
@@ -52,7 +52,7 @@ typedef struct {
 	menutext_s		multiplayer;
 	menutext_s		setup;
 	menutext_s		demos;
-	//menutext_s		cinematics;
+	menutext_s		cinematics;
 	menutext_s		teamArena;
 	menutext_s		mods;
 	menutext_s		exit;
@@ -80,8 +80,7 @@ static void MainMenu_ExitAction( qboolea
 		return;
 	}
 	UI_PopMenu();
-	//UI_CreditMenu();
-        trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
+	UI_CreditMenu();
 }
 
 
@@ -113,9 +112,9 @@ void Main_MenuEvent (void* ptr, int even
 		UI_DemosMenu();
 		break;
 
-	/*case ID_CINEMATICS:
+	case ID_CINEMATICS:
 		UI_CinematicsMenu();
-		break;*/
+		break;
 
 	case ID_MODS:
 		UI_ModsMenu();
@@ -222,16 +221,12 @@ static void Main_MenuDraw( void ) {
 		Menu_Draw( &s_main.menu );		
 	}
 
-		UI_DrawProportionalString( 320, 372, "", UI_CENTER|UI_SMALLFONT, color );
-		UI_DrawString( 320, 400, "OpenArena(c) 2005-2008 OpenArena Team", UI_CENTER|UI_SMALLFONT, color );
-		UI_DrawString( 320, 414, "OpenArena comes with ABSOLUTELY NO WARRANTY; this is free software", UI_CENTER|UI_SMALLFONT, color );
-		UI_DrawString( 320, 428, "and you are welcome to redistribute it under certain conditions;", UI_CENTER|UI_SMALLFONT, color );
-		UI_DrawString( 320, 444, "read COPYING for details.", UI_CENTER|UI_SMALLFONT, color );
-                
-                //Draw version.
-                UI_DrawString( 640-40, 480-14, "^70.8.0", UI_SMALLFONT, color );
-                if((int)trap_Cvar_VariableValue("protocol")!=70)
-                    UI_DrawString( 0, 480-14, va("^7Protocol: %i",(int)trap_Cvar_VariableValue("protocol")), UI_SMALLFONT, color);
+	if (uis.demoversion) {
+		UI_DrawProportionalString( 320, 372, "DEMO      FOR MATURE AUDIENCES      DEMO", UI_CENTER|UI_SMALLFONT, color );
+		UI_DrawString( 320, 400, "Quake III Arena(c) 1999-2000, Id Software, Inc.  All Rights Reserved", UI_CENTER|UI_SMALLFONT, color );
+	} else {
+		UI_DrawString( 320, 450, "Quake III Arena(c) 1999-2000, Id Software, Inc.  All Rights Reserved", UI_CENTER|UI_SMALLFONT, color );
+	}
 }
 
 
@@ -359,7 +354,7 @@ void UI_MainMenu( void ) {
 	s_main.demos.color						= color_red;
 	s_main.demos.style						= style;
 
-	/*y += MAIN_MENU_VERTICAL_SPACING;
+	y += MAIN_MENU_VERTICAL_SPACING;
 	s_main.cinematics.generic.type			= MTYPE_PTEXT;
 	s_main.cinematics.generic.flags			= QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
 	s_main.cinematics.generic.x				= 320;
@@ -368,7 +363,7 @@ void UI_MainMenu( void ) {
 	s_main.cinematics.generic.callback		= Main_MenuEvent; 
 	s_main.cinematics.string				= "CINEMATICS";
 	s_main.cinematics.color					= color_red;
-	s_main.cinematics.style					= style;*/
+	s_main.cinematics.style					= style;
 
 	if (UI_TeamArenaExists()) {
 		teamArena = qtrue;
@@ -379,7 +374,7 @@ void UI_MainMenu( void ) {
 		s_main.teamArena.generic.y				= y;
 		s_main.teamArena.generic.id				= ID_TEAMARENA;
 		s_main.teamArena.generic.callback		= Main_MenuEvent; 
-		s_main.teamArena.string					= "MISSION PACK";
+		s_main.teamArena.string					= "TEAM ARENA";
 		s_main.teamArena.color					= color_red;
 		s_main.teamArena.style					= style;
 	}
@@ -410,7 +405,7 @@ void UI_MainMenu( void ) {
 	Menu_AddItem( &s_main.menu,	&s_main.multiplayer );
 	Menu_AddItem( &s_main.menu,	&s_main.setup );
 	Menu_AddItem( &s_main.menu,	&s_main.demos );
-	//Menu_AddItem( &s_main.menu,	&s_main.cinematics );
+	Menu_AddItem( &s_main.menu,	&s_main.cinematics );
 	if (teamArena) {
 		Menu_AddItem( &s_main.menu,	&s_main.teamArena );
 	}
diff -upr ioquake3svn1438/code/q3_ui/ui_mfield.c ioquake3serverFix/code/q3_ui/ui_mfield.c
--- ioquake3svn1438/code/q3_ui/ui_mfield.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_mfield.c	2008-08-09 11:28:12.000000000 -0500
@@ -140,14 +140,14 @@ void MField_KeyDownEvent( mfield_t *edit
 	int		len;
 
 	// shift-insert is paste
-	if ( ( key == K_INS ) && trap_Key_IsDown( K_SHIFT ) ) {
+	if ( ( ( key == K_INS ) || ( key == K_KP_INS ) ) && trap_Key_IsDown( K_SHIFT ) ) {
 		MField_Paste( edit );
 		return;
 	}
 
 	len = strlen( edit->buffer );
 
-	if ( key == K_DEL ) {
+	if ( key == K_DEL || key == K_KP_DEL ) {
 		if ( edit->cursor < len ) {
 			memmove( edit->buffer + edit->cursor, 
 				edit->buffer + edit->cursor + 1, len - edit->cursor );
@@ -155,7 +155,7 @@ void MField_KeyDownEvent( mfield_t *edit
 		return;
 	}
 
-	if ( key == K_RIGHTARROW ) 
+	if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) 
 	{
 		if ( edit->cursor < len ) {
 			edit->cursor++;
@@ -167,7 +167,7 @@ void MField_KeyDownEvent( mfield_t *edit
 		return;
 	}
 
-	if ( key == K_LEFTARROW ) 
+	if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) 
 	{
 		if ( edit->cursor > 0 ) {
 			edit->cursor--;
@@ -179,13 +179,13 @@ void MField_KeyDownEvent( mfield_t *edit
 		return;
 	}
 
-	if ( key == K_HOME || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) {
+	if ( key == K_HOME || key == K_KP_HOME || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) {
 		edit->cursor = 0;
 		edit->scroll = 0;
 		return;
 	}
 
-	if ( key == K_END || ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) {
+	if ( key == K_END || key == K_KP_END || ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) {
 		edit->cursor = len;
 		edit->scroll = len - edit->widthInChars + 1;
 		if (edit->scroll < 0)
@@ -193,7 +193,7 @@ void MField_KeyDownEvent( mfield_t *edit
 		return;
 	}
 
-	if ( key == K_INS  ) {
+	if ( key == K_INS || key == K_KP_INS ) {
 		trap_Key_SetOverstrikeMode( !trap_Key_GetOverstrikeMode() );
 		return;
 	}
@@ -408,7 +408,9 @@ sfxHandle_t MenuField_Key( menufield_s* 
 			break;
 
 		case K_TAB:
+		case K_KP_DOWNARROW:
 		case K_DOWNARROW:
+		case K_KP_UPARROW:
 		case K_UPARROW:
 			break;
 
diff -upr ioquake3svn1438/code/q3_ui/ui_mods.c ioquake3serverFix/code/q3_ui/ui_mods.c
--- ioquake3svn1438/code/q3_ui/ui_mods.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_mods.c	2008-08-09 15:22:37.000000000 -0500
@@ -106,42 +106,6 @@ static void UI_Mods_ParseInfos( char *mo
 }
 
 
-#if 0 // bk001204 - unused
-/*
-===============
-UI_Mods_LoadModsFromFile
-===============
-*/
-static void UI_Mods_LoadModsFromFile( char *filename ) {
-	int				len;
-	fileHandle_t	f;
-	char			buf[1024];
-
-	len = trap_FS_FOpenFile( filename, &f, FS_READ );
-	if ( !f ) {
-		trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) );
-		return;
-	}
-	if ( len >= sizeof(buf) ) {
-		trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, sizeof(buf) ) );
-		trap_FS_FCloseFile( f );
-		return;
-	}
-
-	trap_FS_Read( buf, len, f );
-	buf[len] = 0;
-	trap_FS_FCloseFile( f );
-
-	len = strlen( filename );
-	if( !Q_stricmp(filename +  len - 4,".mod") ) {
-		filename[len-4] = '\0';
-	}
-
-	UI_Mods_ParseInfos( filename, buf );
-}
-#endif
-
-
 /*
 ===============
 UI_Mods_LoadMods
Only in ioquake3svn1438/code/q3_ui: ui_mods.c.orig
Only in ioquake3svn1438/code/q3_ui: ui_mods.c.rej
diff -upr ioquake3svn1438/code/q3_ui/ui_preferences.c ioquake3serverFix/code/q3_ui/ui_preferences.c
--- ioquake3svn1438/code/q3_ui/ui_preferences.c	2008-08-03 12:54:49.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_preferences.c	2008-08-09 11:28:12.000000000 -0500
@@ -51,11 +51,8 @@ GAME OPTIONS MENU
 #define ID_DRAWTEAMOVERLAY		136
 #define ID_ALLOWDOWNLOAD			137
 #define ID_BACK					138
-//Elimination
-#define ID_WEAPONBAR                    139
-#define ID_DELAGHITSCAN		140
 
-#define	NUM_CROSSHAIRS			99
+#define	NUM_CROSSHAIRS			10
 
 
 typedef struct {
@@ -67,7 +64,6 @@ typedef struct {
 
 	menulist_s			crosshair;
 	menuradiobutton_s	simpleitems;
-        menuradiobutton_s	alwaysweaponbar;
 	menuradiobutton_s	brass;
 	menuradiobutton_s	wallmarks;
 	menuradiobutton_s	dynamiclights;
@@ -76,7 +72,6 @@ typedef struct {
 	menuradiobutton_s	synceveryframe;
 	menuradiobutton_s	forcemodel;
 	menulist_s			drawteamoverlay;
-        menuradiobutton_s	delaghitscan;
 	menuradiobutton_s	allowdownload;
 	menubitmap_s		back;
 
@@ -97,7 +92,6 @@ static const char *teamoverlay_names[] =
 static void Preferences_SetMenuItems( void ) {
 	s_preferences.crosshair.curvalue		= (int)trap_Cvar_VariableValue( "cg_drawCrosshair" ) % NUM_CROSSHAIRS;
 	s_preferences.simpleitems.curvalue		= trap_Cvar_VariableValue( "cg_simpleItems" ) != 0;
-        s_preferences.alwaysweaponbar.curvalue		= trap_Cvar_VariableValue( "cg_alwaysWeaponBar" ) != 0;
 	s_preferences.brass.curvalue			= trap_Cvar_VariableValue( "cg_brassTime" ) != 0;
 	s_preferences.wallmarks.curvalue		= trap_Cvar_VariableValue( "cg_marks" ) != 0;
 	s_preferences.identifytarget.curvalue	= trap_Cvar_VariableValue( "cg_drawCrosshairNames" ) != 0;
@@ -107,9 +101,9 @@ static void Preferences_SetMenuItems( vo
 	s_preferences.forcemodel.curvalue		= trap_Cvar_VariableValue( "cg_forcemodel" ) != 0;
 	s_preferences.drawteamoverlay.curvalue	= Com_Clamp( 0, 3, trap_Cvar_VariableValue( "cg_drawTeamOverlay" ) );
 	s_preferences.allowdownload.curvalue	= trap_Cvar_VariableValue( "cl_allowDownload" ) != 0;
-        s_preferences.delaghitscan.curvalue	= trap_Cvar_VariableValue( "cg_delag" ) != 0;
 }
 
+
 static void Preferences_Event( void* ptr, int notification ) {
 	if( notification != QM_ACTIVATED ) {
 		return;
@@ -118,7 +112,7 @@ static void Preferences_Event( void* ptr
 	switch( ((menucommon_s*)ptr)->id ) {
 	case ID_CROSSHAIR:
 		s_preferences.crosshair.curvalue++;
-		if( s_preferences.crosshair.curvalue == NUM_CROSSHAIRS || s_preferences.crosshairShader[s_preferences.crosshair.curvalue]==0 ) {
+		if( s_preferences.crosshair.curvalue == NUM_CROSSHAIRS ) {
 			s_preferences.crosshair.curvalue = 0;
 		}
 		trap_Cvar_SetValue( "cg_drawCrosshair", s_preferences.crosshair.curvalue );
@@ -127,10 +121,6 @@ static void Preferences_Event( void* ptr
 	case ID_SIMPLEITEMS:
 		trap_Cvar_SetValue( "cg_simpleItems", s_preferences.simpleitems.curvalue );
 		break;
-                
-        case ID_WEAPONBAR:
-		trap_Cvar_SetValue( "cg_alwaysWeaponBar", s_preferences.alwaysweaponbar.curvalue );
-		break;
 
 	case ID_HIGHQUALITYSKY:
 		trap_Cvar_SetValue( "r_fastsky", !s_preferences.highqualitysky.curvalue );
@@ -171,11 +161,6 @@ static void Preferences_Event( void* ptr
 		trap_Cvar_SetValue( "cl_allowDownload", s_preferences.allowdownload.curvalue );
 		trap_Cvar_SetValue( "sv_allowDownload", s_preferences.allowdownload.curvalue );
 		break;
-               
-        case ID_DELAGHITSCAN:
-                trap_Cvar_SetValue( "g_delagHitscan", s_preferences.delaghitscan.curvalue );
-		trap_Cvar_SetValue( "cg_delag", s_preferences.delaghitscan.curvalue );
-		break;
 
 	case ID_BACK:
 		UI_PopMenu();
@@ -288,16 +273,6 @@ static void Preferences_MenuInit( void )
 	s_preferences.simpleitems.generic.id          = ID_SIMPLEITEMS;
 	s_preferences.simpleitems.generic.x	          = PREFERENCES_X_POS;
 	s_preferences.simpleitems.generic.y	          = y;
-        
-        //Elimination
-        y += BIGCHAR_HEIGHT;
-	s_preferences.alwaysweaponbar.generic.type        = MTYPE_RADIOBUTTON;
-	s_preferences.alwaysweaponbar.generic.name	      = "Always show weapons:";
-	s_preferences.alwaysweaponbar.generic.flags	      = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_preferences.alwaysweaponbar.generic.callback    = Preferences_Event;
-	s_preferences.alwaysweaponbar.generic.id          = ID_WEAPONBAR;
-	s_preferences.alwaysweaponbar.generic.x	          = PREFERENCES_X_POS;
-	s_preferences.alwaysweaponbar.generic.y	          = y;
 
 	y += BIGCHAR_HEIGHT;
 	s_preferences.wallmarks.generic.type          = MTYPE_RADIOBUTTON;
@@ -372,15 +347,6 @@ static void Preferences_MenuInit( void )
 	s_preferences.drawteamoverlay.generic.y	       = y;
 	s_preferences.drawteamoverlay.itemnames			= teamoverlay_names;
 
-        y += BIGCHAR_HEIGHT+2;
-	s_preferences.delaghitscan.generic.type     = MTYPE_RADIOBUTTON;
-	s_preferences.delaghitscan.generic.name	   = "Unlag hitscan:";
-	s_preferences.delaghitscan.generic.flags	   = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_preferences.delaghitscan.generic.callback = Preferences_Event;
-	s_preferences.delaghitscan.generic.id       = ID_DELAGHITSCAN;
-	s_preferences.delaghitscan.generic.x	       = PREFERENCES_X_POS;
-	s_preferences.delaghitscan.generic.y	       = y;
-        
 	y += BIGCHAR_HEIGHT+2;
 	s_preferences.allowdownload.generic.type     = MTYPE_RADIOBUTTON;
 	s_preferences.allowdownload.generic.name	   = "Automatic Downloading:";
@@ -408,7 +374,6 @@ static void Preferences_MenuInit( void )
 
 	Menu_AddItem( &s_preferences.menu, &s_preferences.crosshair );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.simpleitems );
-        Menu_AddItem( &s_preferences.menu, &s_preferences.alwaysweaponbar );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.wallmarks );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.brass );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.dynamiclights );
@@ -417,7 +382,6 @@ static void Preferences_MenuInit( void )
 	Menu_AddItem( &s_preferences.menu, &s_preferences.synceveryframe );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.forcemodel );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.drawteamoverlay );
-        Menu_AddItem( &s_preferences.menu, &s_preferences.delaghitscan );
 	Menu_AddItem( &s_preferences.menu, &s_preferences.allowdownload );
 
 	Menu_AddItem( &s_preferences.menu, &s_preferences.back );
@@ -439,11 +403,7 @@ void Preferences_Cache( void ) {
 	trap_R_RegisterShaderNoMip( ART_BACK0 );
 	trap_R_RegisterShaderNoMip( ART_BACK1 );
 	for( n = 0; n < NUM_CROSSHAIRS; n++ ) {
-                if (n < 10)
-			s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) );
-		else
-			s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%02d", n - 10) );
-	
+		s_preferences.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) );
 	}
 }
 
Only in ioquake3svn1438/code/q3_ui: ui.q3asm
diff -upr ioquake3svn1438/code/q3_ui/ui_qmenu.c ioquake3serverFix/code/q3_ui/ui_qmenu.c
--- ioquake3svn1438/code/q3_ui/ui_qmenu.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_qmenu.c	2008-08-09 11:28:12.000000000 -0500
@@ -327,7 +327,6 @@ void Bitmap_Draw( menubitmap_s *b )
 		if (b->shader)
 			UI_DrawHandlePic( x, y, w, h, b->shader );
 
-		// bk001204 - parentheses
 		if (  ( (b->generic.flags & QMF_PULSE) 
 			|| (b->generic.flags & QMF_PULSEIFFOCUS) )
 		      && (Menu_ItemAtCursor( b->generic.parent ) == b))
@@ -466,7 +465,10 @@ static sfxHandle_t RadioButton_Key( menu
 		case K_JOY3:
 		case K_JOY4:
 		case K_ENTER:
+		case K_KP_ENTER:
+		case K_KP_LEFTARROW:
 		case K_LEFTARROW:
+		case K_KP_RIGHTARROW:
 		case K_RIGHTARROW:
 			rb->curvalue = !rb->curvalue;
 			if ( rb->generic.callback )
@@ -584,6 +586,7 @@ static sfxHandle_t Slider_Key( menuslide
 				sound = 0;
 			break;
 
+		case K_KP_LEFTARROW:
 		case K_LEFTARROW:
 			if (s->curvalue > s->minvalue)
 			{
@@ -594,6 +597,7 @@ static sfxHandle_t Slider_Key( menuslide
 				sound = menu_buzz_sound;
 			break;			
 
+		case K_KP_RIGHTARROW:
 		case K_RIGHTARROW:
 			if (s->curvalue < s->maxvalue)
 			{
@@ -801,6 +805,7 @@ static sfxHandle_t SpinControl_Key( menu
 			sound = menu_move_sound;
 			break;
 		
+		case K_KP_LEFTARROW:
 		case K_LEFTARROW:
 			if (s->curvalue > 0)
 			{
@@ -811,6 +816,7 @@ static sfxHandle_t SpinControl_Key( menu
 				sound = menu_buzz_sound;
 			break;
 
+		case K_KP_RIGHTARROW:
 		case K_RIGHTARROW:
 			if (s->curvalue < s->numitems-1)
 			{
@@ -960,6 +966,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 			}
 			break;
 
+		case K_KP_HOME:
 		case K_HOME:
 			l->oldvalue = l->curvalue;
 			l->curvalue = 0;
@@ -972,6 +979,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 			}
 			return (menu_buzz_sound);
 
+		case K_KP_END:
 		case K_END:
 			l->oldvalue = l->curvalue;
 			l->curvalue = l->numitems-1;
@@ -993,6 +1001,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 			return (menu_buzz_sound);
 
 		case K_PGUP:
+		case K_KP_PGUP:
 			if( l->columns > 1 ) {
 				return menu_null_sound;
 			}
@@ -1015,6 +1024,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 			return (menu_buzz_sound);
 
 		case K_PGDN:
+		case K_KP_PGDN:
 			if( l->columns > 1 ) {
 				return menu_null_sound;
 			}
@@ -1036,6 +1046,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 			}
 			return (menu_buzz_sound);
 
+		case K_KP_UPARROW:
 		case K_UPARROW:
 			if( l->curvalue == 0 ) {
 				return menu_buzz_sound;
@@ -1059,6 +1070,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 
 			return (menu_move_sound);
 
+		case K_KP_DOWNARROW:
 		case K_DOWNARROW:
 			if( l->curvalue == l->numitems - 1 ) {
 				return menu_buzz_sound;
@@ -1082,6 +1094,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 
 			return menu_move_sound;
 
+		case K_KP_LEFTARROW:
 		case K_LEFTARROW:
 			if( l->columns == 1 ) {
 				return menu_null_sound;
@@ -1104,6 +1117,7 @@ sfxHandle_t ScrollList_Key( menulist_s *
 
 			return menu_move_sound;
 
+		case K_KP_RIGHTARROW:
 		case K_RIGHTARROW:
 			if( l->columns == 1 ) {
 				return menu_null_sound;
@@ -1628,6 +1642,7 @@ sfxHandle_t Menu_DefaultKey( menuframewo
 			trap_Cmd_ExecuteText(EXEC_APPEND, "screenshot\n");
 			break;
 #endif
+		case K_KP_UPARROW:
 		case K_UPARROW:
 			cursor_prev    = m->cursor;
 			m->cursor_prev = m->cursor;
@@ -1640,6 +1655,7 @@ sfxHandle_t Menu_DefaultKey( menuframewo
 			break;
 
 		case K_TAB:
+		case K_KP_DOWNARROW:
 		case K_DOWNARROW:
 			cursor_prev    = m->cursor;
 			m->cursor_prev = m->cursor;
diff -upr ioquake3svn1438/code/q3_ui/ui_serverinfo.c ioquake3serverFix/code/q3_ui/ui_serverinfo.c
--- ioquake3svn1438/code/q3_ui/ui_serverinfo.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_serverinfo.c	2008-08-09 11:28:12.000000000 -0500
@@ -128,7 +128,7 @@ static void ServerInfo_MenuDraw( void )
 	const char		*s;
 	char			key[MAX_INFO_KEY];
 	char			value[MAX_INFO_VALUE];
-	int			i=0,y;
+	int				i = 0, y;
 
 	y = SCREEN_HEIGHT/2 - s_serverinfo.numlines*(SMALLCHAR_HEIGHT)/2 - 20;
 	s = s_serverinfo.info;
@@ -144,7 +144,7 @@ static void ServerInfo_MenuDraw( void )
 		UI_DrawString(SCREEN_WIDTH*0.50 + 8,y,value,UI_LEFT|UI_SMALLFONT,text_color_normal);
 
 		y += SMALLCHAR_HEIGHT;
-                i++;
+		i++;
 	}
 
 	Menu_Draw( &s_serverinfo.menu );
diff -upr ioquake3svn1438/code/q3_ui/ui_servers2.c ioquake3serverFix/code/q3_ui/ui_servers2.c
--- ioquake3svn1438/code/q3_ui/ui_servers2.c	2008-07-07 15:32:57.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_servers2.c	2008-08-09 11:28:12.000000000 -0500
@@ -32,16 +32,16 @@ MULTIPLAYER MENU (SERVER BROWSER)
 #include "ui_local.h"
 
 
-#define MAX_GLOBALSERVERS		256
+#define MAX_GLOBALSERVERS		128
 #define MAX_PINGREQUESTS		32
 #define MAX_ADDRESSLENGTH		64
-#define MAX_HOSTNAMELENGTH		31
-#define MAX_MAPNAMELENGTH		20
-#define MAX_LISTBOXITEMS		256
-#define MAX_LOCALSERVERS		124
+#define MAX_HOSTNAMELENGTH		22
+#define MAX_MAPNAMELENGTH		16
+#define MAX_LISTBOXITEMS		128
+#define MAX_LOCALSERVERS		128
 #define MAX_STATUSLENGTH		64
 #define MAX_LEAGUELENGTH		28
-#define MAX_LISTBOXWIDTH		70
+#define MAX_LISTBOXWIDTH		68
 
 #define ART_BACK0				"menu/art/back_0"
 #define ART_BACK1				"menu/art/back_1"
@@ -59,14 +59,13 @@ MULTIPLAYER MENU (SERVER BROWSER)
 #define ART_UNKNOWNMAP			"menu/art/unknownmap"
 #define ART_REMOVE0				"menu/art/delete_0"
 #define ART_REMOVE1				"menu/art/delete_1"
-//#define ART_PUNKBUSTER		"menu/art/pblogo"
+#define ART_PUNKBUSTER		"menu/art/pblogo"
 
 #define ID_MASTER			10
 #define ID_GAMETYPE			11
 #define ID_SORTKEY			12
 #define ID_SHOW_FULL		13
 #define ID_SHOW_EMPTY		14
-
 #define ID_LIST				15
 #define ID_SCROLL_UP		16
 #define ID_SCROLL_DOWN		17
@@ -76,19 +75,18 @@ MULTIPLAYER MENU (SERVER BROWSER)
 #define ID_CREATE			21
 #define ID_CONNECT			22
 #define ID_REMOVE			23
-
-//Beta 23
-#define ID_ONLY_HUMANS          24
-#define ID_HIDE_PRIVATE         25
-//#define ID_PUNKBUSTER 24
+#define ID_PUNKBUSTER 24
 
 #define GR_LOGO				30
 #define GR_LETTERS			31
 
-#define AS_LOCAL			0
-#define AS_MPLAYER			1
-#define AS_GLOBAL			2
-#define AS_FAVORITES		3
+#define UIAS_LOCAL			0
+#define UIAS_GLOBAL1			1
+#define UIAS_GLOBAL2			2
+#define UIAS_GLOBAL3			3
+#define UIAS_GLOBAL4			4
+#define UIAS_GLOBAL5			5
+#define UIAS_FAVORITES			6
 
 #define SORT_HOST			0
 #define SORT_MAP			1
@@ -101,15 +99,14 @@ MULTIPLAYER MENU (SERVER BROWSER)
 #define GAMES_TEAMPLAY		2
 #define GAMES_TOURNEY		3
 #define GAMES_CTF			4
-#define GAMES_ELIMINATION		5
-#define GAMES_CTF_ELIMINATION		6
-#define GAMES_LMS			7
-#define GAMES_DOUBLE_D			8
-
 
 static const char *master_items[] = {
 	"Local",
-	"Internet",
+	"Internet1",
+	"Internet2",
+	"Internet3",
+	"Internet4",
+	"Internet5",
 	"Favorites",
 	NULL
 };
@@ -120,10 +117,6 @@ static const char *servertype_items[] = 
 	"Team Deathmatch",
 	"Tournament",
 	"Capture the Flag",
-	"Elimination",
-	"CTF Elimination",
-	"Last Man Standing",
-	"Double Domination",
 	NULL
 };
 
@@ -145,11 +138,7 @@ static char* gamenames[] = {
 	"One Flag CTF",		// one flag ctf
 	"OverLoad",				// Overload
 	"Harvester",			// Harvester
-	"Elimination",
-	"CTF Elimination",
-	"Last Man Standing",
-	"Double Domination",
-        "Rocket Arena 3",	// Rocket Arena 3
+	"Rocket Arena 3",	// Rocket Arena 3
 	"Q3F",						// Q3F
 	"Urban Terror",		// Urban Terror
 	"OSP",						// Orange Smoothie Productions
@@ -159,14 +148,14 @@ static char* gamenames[] = {
 
 static char* netnames[] = {
 	"???",
-	"IP4",
-        "IP6",
+	"UDP",
+	"UDP6",
 	NULL
 };
 
-static char quake3worldMessage[] = "Visit www.openarena.ws - News, Community, Events, Files";
+static char quake3worldMessage[] = "Visit www.quake3world.com - News, Community, Events, Files";
 
-/*const char* punkbuster_items[] = {
+const char* punkbuster_items[] = {
 	"Disabled",
 	"Enabled",
 	NULL
@@ -178,7 +167,7 @@ const char* punkbuster_msg[] = {
 	"Quake III Arena",
 	"is started.",
 	NULL
-};*/
+};
 
 typedef struct {
 	char	adrstr[MAX_ADDRESSLENGTH];
@@ -190,21 +179,19 @@ typedef struct servernode_s {
 	char	hostname[MAX_HOSTNAMELENGTH+3];
 	char	mapname[MAX_MAPNAMELENGTH];
 	int		numclients;
-        int             humanclients;
-        qboolean        needPass;
 	int		maxclients;
 	int		pingtime;
 	int		gametype;
-	char	gamename[16];
+	char	gamename[12];
 	int		nettype;
 	int		minPing;
 	int		maxPing;
-	//qboolean bPB;
+	qboolean bPB;
 
 } servernode_t; 
 
 typedef struct {
-	char			buff[MAX_LISTBOXWIDTH+62]; //	+60 gives room for color codes... Sago: I need two more
+	char			buff[MAX_LISTBOXWIDTH];
 	servernode_t*	servernode;
 } table_t;
 
@@ -218,9 +205,6 @@ typedef struct {
 	menulist_s			sortkey;
 	menuradiobutton_s	showfull;
 	menuradiobutton_s	showempty;
-        
-        menuradiobutton_s	onlyhumans;
-        menuradiobutton_s	hideprivate;
 
 	menulist_s			list;
 	menubitmap_s		mappic;
@@ -251,8 +235,8 @@ typedef struct {
 	char				favoriteaddresses[MAX_FAVORITESERVERS][MAX_ADDRESSLENGTH];
 	int					numfavoriteaddresses;
 
-	//menulist_s		punkbuster;
-	//menubitmap_s	pblogo;
+	menulist_s		punkbuster;
+	menubitmap_s	pblogo;
 } arenaservers_t;
 
 static arenaservers_t	g_arenaservers;
@@ -264,16 +248,12 @@ static servernode_t		g_localserverlist[M
 static int				g_numlocalservers;
 static servernode_t		g_favoriteserverlist[MAX_FAVORITESERVERS];
 static int				g_numfavoriteservers;
-static servernode_t		g_mplayerserverlist[MAX_GLOBALSERVERS];
-static int				g_nummplayerservers;
 static int				g_servertype;
 static int				g_gametype;
 static int				g_sortkey;
 static int				g_emptyservers;
 static int				g_fullservers;
 
-static int				g_onlyhumans;
-static int                              g_hideprivate;
 
 /*
 =================
@@ -392,57 +372,6 @@ static void ArenaServers_UpdatePicture( 
 	g_arenaservers.mappic.shader = 0;
 }
 
-/*
-=================
-	Q_strcpyColor - This function will return the real length of the string if numChars
-		len of character data is desired. It looks for color codes and adds 2 to the length
-		for each combo found. This is used to make color strings show up correctly in column
-		formatted environments. Otherwise, the columns will be off 2 * num of color codes.
-=================
-*/
-int Q_strcpyColor( const char *src, char *dest, int numChars )
-{
-int count, len;
-char *d;
-const char *s;
-
-	if( !src || !dest )
-	{
-		return 0;
-	}
-
-	count = len = 0;
-	s = src;
-	d = dest;
-
-	while( *s && count < numChars )
-	{
-		if( Q_IsColorString( s ))
-		{
-			*d++ = *s++;
-			*d++ = *s++;
-			len += 2;
-			continue;
-		}
-		*d = *s;
-		s++;
-		d++;
-		count++;
-		len++;
-	}
-
-	// Now fill up the end of the string with space characters if needed...
-	while( count < numChars )
-	{
-		*d = ' ';
-                //d[len] = ' ';
-		d++;
-		len++;
-		count++;
-	}
-	return len;
-}
-
 
 /*
 =================
@@ -452,11 +381,11 @@ ArenaServers_UpdateMenu
 static void ArenaServers_UpdateMenu( void ) {
 	int				i;
 	int				j;
-	int				count, bufAddr;
+	int				count;
 	char*			buff;
 	servernode_t*	servernodeptr;
 	table_t*		tableptr;
-	char			*b, *pingColor;
+	char			*pingColor;
 
 	if( g_arenaservers.numqueriedservers > 0 ) {
 		// servers found
@@ -472,16 +401,14 @@ static void ArenaServers_UpdateMenu( voi
 			g_arenaservers.gametype.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.sortkey.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.showempty.generic.flags	&= ~QMF_GRAYED;
-                        g_arenaservers.onlyhumans.generic.flags	&= ~QMF_GRAYED;
-                        g_arenaservers.hideprivate.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.showfull.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.list.generic.flags		&= ~QMF_GRAYED;
 			g_arenaservers.refresh.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.go.generic.flags			&= ~QMF_GRAYED;
-			//g_arenaservers.punkbuster.generic.flags &= ~QMF_GRAYED;
+			g_arenaservers.punkbuster.generic.flags &= ~QMF_GRAYED;
 
 			// update status bar
-			if( g_servertype == AS_GLOBAL || g_servertype == AS_MPLAYER ) {
+			if( g_servertype >= UIAS_GLOBAL1 && g_servertype <= UIAS_GLOBAL5 ) {
 				g_arenaservers.statusbar.string = quake3worldMessage;
 			}
 			else {
@@ -501,13 +428,11 @@ static void ArenaServers_UpdateMenu( voi
 			g_arenaservers.gametype.generic.flags	|= QMF_GRAYED;
 			g_arenaservers.sortkey.generic.flags	|= QMF_GRAYED;
 			g_arenaservers.showempty.generic.flags	|= QMF_GRAYED;
-                        g_arenaservers.onlyhumans.generic.flags	|= QMF_GRAYED;
-                        g_arenaservers.hideprivate.generic.flags	|= QMF_GRAYED;
 			g_arenaservers.showfull.generic.flags	|= QMF_GRAYED;
 			g_arenaservers.list.generic.flags		|= QMF_GRAYED;
 			g_arenaservers.refresh.generic.flags	|= QMF_GRAYED;
 			g_arenaservers.go.generic.flags			|= QMF_GRAYED;
-			//g_arenaservers.punkbuster.generic.flags |= QMF_GRAYED;
+			g_arenaservers.punkbuster.generic.flags |= QMF_GRAYED;
 		}
 		else {
 			if( g_arenaservers.numqueriedservers < 0 ) {
@@ -518,7 +443,7 @@ static void ArenaServers_UpdateMenu( voi
 			}
 
 			// update status bar
-			if( g_servertype == AS_GLOBAL || g_servertype == AS_MPLAYER ) {
+			if( g_servertype >= UIAS_GLOBAL1 && g_servertype <= UIAS_GLOBAL5 ) {
 				g_arenaservers.statusbar.string = quake3worldMessage;
 			}
 			else {
@@ -530,13 +455,11 @@ static void ArenaServers_UpdateMenu( voi
 			g_arenaservers.gametype.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.sortkey.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.showempty.generic.flags	&= ~QMF_GRAYED;
-                        g_arenaservers.onlyhumans.generic.flags	&= ~QMF_GRAYED;
-                        g_arenaservers.hideprivate.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.showfull.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.list.generic.flags		|= QMF_GRAYED;
 			g_arenaservers.refresh.generic.flags	&= ~QMF_GRAYED;
 			g_arenaservers.go.generic.flags			|= QMF_GRAYED;
-			//g_arenaservers.punkbuster.generic.flags &= ~QMF_GRAYED;
+			g_arenaservers.punkbuster.generic.flags &= ~QMF_GRAYED;
 		}
 
 		// zero out list box
@@ -593,34 +516,7 @@ static void ArenaServers_UpdateMenu( voi
 				continue;
 			}
 			break;
-
-		case GAMES_ELIMINATION:
-			if( servernodeptr->gametype != GT_ELIMINATION ) {
-				continue;
-			}
-			break;
-		
-		case GAMES_CTF_ELIMINATION:
-			if( servernodeptr->gametype != GT_CTF_ELIMINATION ) {
-				continue;
-			}
-			break;
-
-		case GAMES_LMS:
-			if( servernodeptr->gametype != GT_LMS ) {
-				continue;
-			}
-			break;
-
-		case GAMES_DOUBLE_D:
-			if( servernodeptr->gametype != GT_DOUBLE_D ) {
-				continue;
-			}
-			break;
 		}
-                
-                if(g_hideprivate && servernodeptr->needPass)
-                    continue;
 
 		if( servernodeptr->pingtime < servernodeptr->minPing ) {
 			pingColor = S_COLOR_BLUE;
@@ -638,45 +534,17 @@ static void ArenaServers_UpdateMenu( voi
 			pingColor = S_COLOR_RED;
 		}
 
-                /*
-		Com_sprintf( buff, MAX_LISTBOXWIDTH, "%-20.20s %-12.12s %2d/%2d %-8.8s %3s %s%3d ", 
+		Com_sprintf( buff, MAX_LISTBOXWIDTH, "%-20.20s %-12.12s %2d/%2d %-8.8s %3s %s%3d " S_COLOR_YELLOW "%s", 
 			servernodeptr->hostname, servernodeptr->mapname, servernodeptr->numclients,
  			servernodeptr->maxclients, servernodeptr->gamename,
-			netnames[servernodeptr->nettype], pingColor, servernodeptr->pingtime ); //, servernodeptr->bPB ? "Yes" : "No"
-                 */
-                b = buff;
-		bufAddr = Q_strcpyColor( servernodeptr->hostname, b, 30 );
-		b += bufAddr; 
-		*b++ = ' ';
-                //*b++ = '^';
-                //*b++ = '7';
-	
-		bufAddr = Q_strcpyColor( servernodeptr->mapname, b, 16 );
-		b += bufAddr;
-		*b++ = ' ';
-	
-                if(g_onlyhumans == 0)
-                    Com_sprintf( b, 7, "%2d/%2d ", servernodeptr->numclients, servernodeptr->maxclients );
-                else
-                    Com_sprintf( b, 7, "%2d/%2d ", servernodeptr->humanclients, servernodeptr->maxclients );
-		b += 6;
-	
-		bufAddr = Q_strcpyColor( servernodeptr->gamename, b, 8 );
-		b += bufAddr;
-		*b++ = ' ';
-                
-                bufAddr = Q_strcpyColor( netnames[servernodeptr->nettype], b, 3 );
-                b += bufAddr;
-                *b++ = ' ';
-                
-		Com_sprintf( b, 12, "%s%3d ", 	pingColor, servernodeptr->pingtime );
+			netnames[servernodeptr->nettype], pingColor, servernodeptr->pingtime, servernodeptr->bPB ? "Yes" : "No" );
 		j++;
 	}
 
 	g_arenaservers.list.numitems = j;
 	g_arenaservers.list.curvalue = 0;
 	g_arenaservers.list.top      = 0;
-        
+
 	// update picture
 	ArenaServers_UpdatePicture();
 }
@@ -703,21 +571,21 @@ static void ArenaServers_Remove( void )
 	tableptr      = &g_arenaservers.table[g_arenaservers.list.curvalue];
 	servernodeptr = tableptr->servernode;
 
-        // find address in master list
+	// find address in master list
 	for (i=0; i<g_arenaservers.numfavoriteaddresses; i++)
 	{
 		if (!Q_stricmp(g_arenaservers.favoriteaddresses[i],servernodeptr->adrstr))
 		{
 			// delete address from master list
- 			if (i < g_arenaservers.numfavoriteaddresses-1)
- 			{
- 				// shift items up
- 				memcpy( &g_arenaservers.favoriteaddresses[i], &g_arenaservers.favoriteaddresses[i+1], (g_arenaservers.numfavoriteaddresses - i - 1)* MAX_ADDRESSLENGTH );
+			if (i < g_arenaservers.numfavoriteaddresses-1)
+			{
+				// shift items up
+				memcpy( &g_arenaservers.favoriteaddresses[i], &g_arenaservers.favoriteaddresses[i+1], (g_arenaservers.numfavoriteaddresses - i - 1)* MAX_ADDRESSLENGTH );
 			}
- 			g_arenaservers.numfavoriteaddresses--;
- 			memset( &g_arenaservers.favoriteaddresses[g_arenaservers.numfavoriteaddresses], 0, MAX_ADDRESSLENGTH );
- 			break;
-                }
+			g_arenaservers.numfavoriteaddresses--;
+			memset( &g_arenaservers.favoriteaddresses[g_arenaservers.numfavoriteaddresses], 0, MAX_ADDRESSLENGTH );
+			break;
+		}
 	}	
 
 	// find address in server list
@@ -725,16 +593,17 @@ static void ArenaServers_Remove( void )
 	{
 		if (&g_favoriteserverlist[i] == servernodeptr)
 		{
+
 			// delete address from server list
- 			if (i < g_numfavoriteservers-1)
- 			{
- 				// shift items up
- 				memcpy( &g_favoriteserverlist[i], &g_favoriteserverlist[i+1], (g_numfavoriteservers - i - 1)*sizeof(servernode_t));
- 			}
- 			g_numfavoriteservers--;
- 			memset( &g_favoriteserverlist[ g_numfavoriteservers ], 0, sizeof(servernode_t));
- 			break;
-                }
+			if (i < g_numfavoriteservers-1)
+			{
+				// shift items up
+				memcpy( &g_favoriteserverlist[i], &g_favoriteserverlist[i+1], (g_numfavoriteservers - i - 1)*sizeof(servernode_t));
+			}
+			g_numfavoriteservers--;
+			memset( &g_favoriteserverlist[ g_numfavoriteservers ], 0, sizeof(servernode_t));
+			break;
+		}
 	}	
 
 	g_arenaservers.numqueriedservers = g_arenaservers.numfavoriteaddresses;
@@ -754,7 +623,7 @@ static void ArenaServers_Insert( char* a
 	int				i;
 
 
-	if ((pingtime >= ArenaServers_MaxPing()) && (g_servertype != AS_FAVORITES))
+	if ((pingtime >= ArenaServers_MaxPing()) && (g_servertype != UIAS_FAVORITES))
 	{
 		// slow global or local servers do not get entered
 		return;
@@ -780,15 +649,13 @@ static void ArenaServers_Insert( char* a
 	Q_strupr( servernodeptr->mapname );
 
 	servernodeptr->numclients = atoi( Info_ValueForKey( info, "clients") );
-        servernodeptr->humanclients = atoi( Info_ValueForKey( info, "g_humanplayers") );
-        servernodeptr->needPass = atoi( Info_ValueForKey( info, "g_needpass") );
 	servernodeptr->maxclients = atoi( Info_ValueForKey( info, "sv_maxclients") );
 	servernodeptr->pingtime   = pingtime;
 	servernodeptr->minPing    = atoi( Info_ValueForKey( info, "minPing") );
 	servernodeptr->maxPing    = atoi( Info_ValueForKey( info, "maxPing") );
-	//servernodeptr->bPB = atoi( Info_ValueForKey( info, "punkbuster") );
+	servernodeptr->bPB = atoi( Info_ValueForKey( info, "punkbuster") );
 
-	
+	/*
 	s = Info_ValueForKey( info, "nettype" );
 	for (i=0; ;i++)
 	{
@@ -803,7 +670,7 @@ static void ArenaServers_Insert( char* a
 			break;
 		}
 	}
-	
+	*/
 	servernodeptr->nettype = atoi(Info_ValueForKey(info, "nettype"));
 
 	s = Info_ValueForKey( info, "game");
@@ -947,7 +814,7 @@ static void ArenaServers_StopRefresh( vo
 
 	g_arenaservers.refreshservers = qfalse;
 
-	if (g_servertype == AS_FAVORITES)
+	if (g_servertype == UIAS_FAVORITES)
 	{
 		// nonresponsive favorites must be shown
 		ArenaServers_InsertFavorites();
@@ -983,8 +850,8 @@ static void ArenaServers_DoRefresh( void
 
 	if (uis.realtime < g_arenaservers.refreshtime)
 	{
-	  if (g_servertype != AS_FAVORITES) {
-			if (g_servertype == AS_LOCAL) {
+	  if (g_servertype != UIAS_FAVORITES) {
+			if (g_servertype == UIAS_LOCAL) {
 				if (!trap_LAN_GetServerCount(g_servertype)) {
 					return;
 				}
@@ -1058,7 +925,7 @@ static void ArenaServers_DoRefresh( void
 
 	// get results of servers query
 	// counts can increase as servers respond
-	if (g_servertype == AS_FAVORITES) {
+	if (g_servertype == UIAS_FAVORITES) {
 	  g_arenaservers.numqueriedservers = g_arenaservers.numfavoriteaddresses;
 	} else {
 	  g_arenaservers.numqueriedservers = trap_LAN_GetServerCount(g_servertype);
@@ -1088,7 +955,7 @@ static void ArenaServers_DoRefresh( void
 
 		// get an address to ping
 
-		if (g_servertype == AS_FAVORITES) {
+		if (g_servertype == UIAS_FAVORITES) {
 		  strcpy( adrstr, g_arenaservers.favoriteaddresses[g_arenaservers.currentping] ); 		
 		} else {
 		  trap_LAN_GetServerAddressString(g_servertype, g_arenaservers.currentping, adrstr, MAX_ADDRESSLENGTH );
@@ -1145,19 +1012,12 @@ static void ArenaServers_StartRefresh( v
 	// place menu in zeroed state
 	ArenaServers_UpdateMenu();
 
-	if( g_servertype == AS_LOCAL ) {
+	if( g_servertype == UIAS_LOCAL ) {
 		trap_Cmd_ExecuteText( EXEC_APPEND, "localservers\n" );
 		return;
 	}
 
-	if( g_servertype == AS_GLOBAL || g_servertype == AS_MPLAYER ) {
-		if( g_servertype == AS_GLOBAL ) {
-			i = 0;
-		}
-		else {
-			i = 1;
-		}
-
+	if( g_servertype >= UIAS_GLOBAL1 && g_servertype <= UIAS_GLOBAL5 ) {
 		switch( g_arenaservers.gametype.curvalue ) {
 		default:
 		case GAMES_ALL:
@@ -1179,22 +1039,6 @@ static void ArenaServers_StartRefresh( v
 		case GAMES_CTF:
 			strcpy( myargs, " ctf" );
 			break;
-
-		case GAMES_ELIMINATION:
-			strcpy( myargs, " elimination" );
-			break;
-
-		case GAMES_CTF_ELIMINATION:
-			strcpy( myargs, " ctfelimination" );
-			break;
-
-		case GAMES_LMS:
-			strcpy( myargs, " lms" );
-			break;
-		
-		case GAMES_DOUBLE_D:
-			strcpy( myargs, " dd" );
-			break;
 		}
 
 
@@ -1209,10 +1053,10 @@ static void ArenaServers_StartRefresh( v
 		protocol[0] = '\0';
 		trap_Cvar_VariableStringBuffer( "debug_protocol", protocol, sizeof(protocol) );
 		if (strlen(protocol)) {
-			trap_Cmd_ExecuteText( EXEC_APPEND, va( "globalservers %d %s%s\n", i, protocol, myargs ));
+			trap_Cmd_ExecuteText( EXEC_APPEND, va( "globalservers %d %s%s\n", g_servertype - 1, protocol, myargs ));
 		}
 		else {
-			trap_Cmd_ExecuteText( EXEC_APPEND, va( "globalservers %d %d%s\n", i, (int)trap_Cvar_VariableValue( "protocol" ), myargs ) );
+			trap_Cmd_ExecuteText( EXEC_APPEND, va( "globalservers %d %d%s\n", g_servertype - 1, (int)trap_Cvar_VariableValue( "protocol" ), myargs ) );
 		}
 	}
 }
@@ -1255,43 +1099,52 @@ void ArenaServers_Sort( int type ) {
 ArenaServers_SetType
 =================
 */
-void ArenaServers_SetType( int type )
+int ArenaServers_SetType( int type )
 {
-	if (g_servertype == type)
-		return;
+	if(type >= UIAS_GLOBAL1 && type <= UIAS_GLOBAL5)
+	{
+		char masterstr[2], cvarname[sizeof("sv_master1")];
+		
+		while(type <= UIAS_GLOBAL5)
+		{
+			Com_sprintf(cvarname, sizeof(cvarname), "sv_master%d", type);
+			trap_Cvar_VariableStringBuffer(cvarname, masterstr, sizeof(masterstr));
+			if(*masterstr)
+				break;
+			
+			type++;
+		}
+	}
 
 	g_servertype = type;
 
 	switch( type ) {
 	default:
-	case AS_LOCAL:
+	case UIAS_LOCAL:
 		g_arenaservers.remove.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
 		g_arenaservers.serverlist = g_localserverlist;
 		g_arenaservers.numservers = &g_numlocalservers;
 		g_arenaservers.maxservers = MAX_LOCALSERVERS;
 		break;
 
-	case AS_GLOBAL:
+	case UIAS_GLOBAL1:
+	case UIAS_GLOBAL2:
+	case UIAS_GLOBAL3:
+	case UIAS_GLOBAL4:
+	case UIAS_GLOBAL5:
 		g_arenaservers.remove.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
 		g_arenaservers.serverlist = g_globalserverlist;
 		g_arenaservers.numservers = &g_numglobalservers;
 		g_arenaservers.maxservers = MAX_GLOBALSERVERS;
 		break;
 
-	case AS_FAVORITES:
+	case UIAS_FAVORITES:
 		g_arenaservers.remove.generic.flags &= ~(QMF_INACTIVE|QMF_HIDDEN);
 		g_arenaservers.serverlist = g_favoriteserverlist;
 		g_arenaservers.numservers = &g_numfavoriteservers;
 		g_arenaservers.maxservers = MAX_FAVORITESERVERS;
 		break;
 
-	case AS_MPLAYER:
-		g_arenaservers.remove.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
-		g_arenaservers.serverlist = g_mplayerserverlist;
-		g_arenaservers.numservers = &g_nummplayerservers;
-		g_arenaservers.maxservers = MAX_GLOBALSERVERS;
-		break;
-		
 	}
 
 	if( !*g_arenaservers.numservers ) {
@@ -1304,6 +1157,8 @@ void ArenaServers_SetType( int type )
 		ArenaServers_UpdateMenu();
 	}
 	strcpy(g_arenaservers.status.string,"hit refresh to update");
+	
+	return type;
 }
 
 /*
@@ -1311,7 +1166,7 @@ void ArenaServers_SetType( int type )
 PunkBuster_Confirm
 =================
 */
-/*static void Punkbuster_ConfirmEnable( qboolean result ) {
+static void Punkbuster_ConfirmEnable( qboolean result ) {
 	if (result)
 	{		
 		trap_SetPbClStatus(1);
@@ -1326,7 +1181,7 @@ static void Punkbuster_ConfirmDisable( q
 		UI_Message( punkbuster_msg );
 	}
 	g_arenaservers.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "cl_punkbuster" ) );
-}*/
+}
 
 /*
 =================
@@ -1335,7 +1190,6 @@ ArenaServers_Event
 */
 static void ArenaServers_Event( void* ptr, int event ) {
 	int		id;
-	int value;
 
 	id = ((menucommon_s*)ptr)->id;
 
@@ -1345,13 +1199,8 @@ static void ArenaServers_Event( void* pt
 
 	switch( id ) {
 	case ID_MASTER:
-		value = g_arenaservers.master.curvalue;
-		if (value >= 1)
-		{
-			value++;
-		}
-		trap_Cvar_SetValue( "ui_browserMaster", value );
-		ArenaServers_SetType( value );
+		g_arenaservers.master.curvalue = ArenaServers_SetType(g_arenaservers.master.curvalue);
+		trap_Cvar_SetValue( "ui_browserMaster", g_arenaservers.master.curvalue);
 		break;
 
 	case ID_GAMETYPE:
@@ -1377,18 +1226,6 @@ static void ArenaServers_Event( void* pt
 		g_emptyservers = g_arenaservers.showempty.curvalue;
 		ArenaServers_UpdateMenu();
 		break;
-                
-        case ID_ONLY_HUMANS:
-		trap_Cvar_SetValue( "ui_browserOnlyHumans", g_arenaservers.onlyhumans.curvalue );
-                g_onlyhumans = g_arenaservers.onlyhumans.curvalue;
-		ArenaServers_UpdateMenu();
-		break;
-                
-        case ID_HIDE_PRIVATE:
-		//trap_Cvar_SetValue( "ui_browserHidePrivate", g_arenaservers.hideprivate.curvalue );
-                g_hideprivate = g_arenaservers.hideprivate.curvalue;
-		ArenaServers_UpdateMenu();
-		break;
 
 	case ID_LIST:
 		if( event == QM_GOTFOCUS ) {
@@ -1431,7 +1268,7 @@ static void ArenaServers_Event( void* pt
 		ArenaServers_UpdateMenu();
 		break;
 	
-	/*case ID_PUNKBUSTER:
+	case ID_PUNKBUSTER:
 		if (g_arenaservers.punkbuster.curvalue)			
 		{
 			UI_ConfirmMenu_Style( "Enable Punkbuster?",  UI_CENTER|UI_INVERSE|UI_SMALLFONT, 0, Punkbuster_ConfirmEnable );
@@ -1440,7 +1277,7 @@ static void ArenaServers_Event( void* pt
 		{
 			UI_ConfirmMenu_Style( "Disable Punkbuster?", UI_CENTER|UI_INVERSE|UI_SMALLFONT, 0, Punkbuster_ConfirmDisable );
 		}
-		break;*/
+		break;
 	}
 }
 
@@ -1470,7 +1307,7 @@ static sfxHandle_t ArenaServers_MenuKey(
 		return menu_move_sound;
 	}
 
-	if( ( key == K_DEL || key == K_KP_DEL ) && ( g_servertype == AS_FAVORITES ) &&
+	if( ( key == K_DEL || key == K_KP_DEL ) && ( g_servertype == UIAS_FAVORITES ) &&
 		( Menu_ItemAtCursor( &g_arenaservers.menu) == &g_arenaservers.list ) ) {
 		ArenaServers_Remove();
 		ArenaServers_UpdateMenu();
@@ -1481,14 +1318,6 @@ static sfxHandle_t ArenaServers_MenuKey(
 		ArenaServers_StopRefresh();
 		ArenaServers_SaveChanges();
 	}
-        
-        if( key == K_MWHEELUP ) {
-            ScrollList_Key( &g_arenaservers.list, K_UPARROW );
-        }
-        
-        if( key == K_MWHEELDOWN ) {
-            ScrollList_Key( &g_arenaservers.list, K_DOWNARROW );
-        }
 
 
 	return Menu_DefaultKey( &g_arenaservers.menu, key );
@@ -1502,7 +1331,6 @@ ArenaServers_MenuInit
 */
 static void ArenaServers_MenuInit( void ) {
 	int			i;
-	int			type;
 	int			y;
 	int			value;
 	static char	statusbuffer[MAX_STATUSLENGTH];
@@ -1525,7 +1353,7 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.banner.style  	    = UI_CENTER;
 	g_arenaservers.banner.color  	    = color_white;
 
-	y = 80-SMALLCHAR_HEIGHT;
+	y = 80;
 	g_arenaservers.master.generic.type			= MTYPE_SPINCONTROL;
 	g_arenaservers.master.generic.name			= "Servers:";
 	g_arenaservers.master.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
@@ -1572,31 +1400,13 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.showempty.generic.id			= ID_SHOW_EMPTY;
 	g_arenaservers.showempty.generic.x			= 320;
 	g_arenaservers.showempty.generic.y			= y;
-        
-        y += SMALLCHAR_HEIGHT;
-	g_arenaservers.onlyhumans.generic.type		= MTYPE_RADIOBUTTON;
-	g_arenaservers.onlyhumans.generic.name		= "Only humans:";
-	g_arenaservers.onlyhumans.generic.flags		= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	g_arenaservers.onlyhumans.generic.callback	= ArenaServers_Event;
-	g_arenaservers.onlyhumans.generic.id			= ID_ONLY_HUMANS;
-	g_arenaservers.onlyhumans.generic.x			= 320;
-	g_arenaservers.onlyhumans.generic.y			= y;
-        
-        y += SMALLCHAR_HEIGHT;
-	g_arenaservers.hideprivate.generic.type		= MTYPE_RADIOBUTTON;
-	g_arenaservers.hideprivate.generic.name		= "Hide private:";
-	g_arenaservers.hideprivate.generic.flags		= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	g_arenaservers.hideprivate.generic.callback	= ArenaServers_Event;
-	g_arenaservers.hideprivate.generic.id			= ID_HIDE_PRIVATE;
-	g_arenaservers.hideprivate.generic.x			= 320;
-	g_arenaservers.hideprivate.generic.y			= y;
 
-	y += 2 * SMALLCHAR_HEIGHT;
+	y += 3 * SMALLCHAR_HEIGHT;
 	g_arenaservers.list.generic.type			= MTYPE_SCROLLLIST;
 	g_arenaservers.list.generic.flags			= QMF_HIGHLIGHT_IF_FOCUS;
 	g_arenaservers.list.generic.id				= ID_LIST;
 	g_arenaservers.list.generic.callback		= ArenaServers_Event;
-	g_arenaservers.list.generic.x				= 22;
+	g_arenaservers.list.generic.x				= 72;
 	g_arenaservers.list.generic.y				= y;
 	g_arenaservers.list.width					= MAX_LISTBOXWIDTH;
 	g_arenaservers.list.height					= 11;
@@ -1617,8 +1427,8 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.arrows.generic.name			= ART_ARROWS0;
 	g_arenaservers.arrows.generic.flags			= QMF_LEFT_JUSTIFY|QMF_INACTIVE;
 	g_arenaservers.arrows.generic.callback		= ArenaServers_Event;
-	g_arenaservers.arrows.generic.x				= 512+48+12;
-	g_arenaservers.arrows.generic.y				= 240-64+48;
+	g_arenaservers.arrows.generic.x				= 512+48;
+	g_arenaservers.arrows.generic.y				= 240-64+16;
 	g_arenaservers.arrows.width					= 64;
 	g_arenaservers.arrows.height				= 128;
 
@@ -1626,8 +1436,8 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.up.generic.flags				= QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
 	g_arenaservers.up.generic.callback			= ArenaServers_Event;
 	g_arenaservers.up.generic.id				= ID_SCROLL_UP;
-	g_arenaservers.up.generic.x					= 512+48+12;
-	g_arenaservers.up.generic.y					= 240-64+48;
+	g_arenaservers.up.generic.x					= 512+48;
+	g_arenaservers.up.generic.y					= 240-64+16;
 	g_arenaservers.up.width						= 64;
 	g_arenaservers.up.height					= 64;
 	g_arenaservers.up.focuspic					= ART_ARROWS_UP;
@@ -1636,8 +1446,8 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.down.generic.flags			= QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
 	g_arenaservers.down.generic.callback		= ArenaServers_Event;
 	g_arenaservers.down.generic.id				= ID_SCROLL_DOWN;
-	g_arenaservers.down.generic.x				= 512+48+12;
-	g_arenaservers.down.generic.y				= 240+48;
+	g_arenaservers.down.generic.x				= 512+48;
+	g_arenaservers.down.generic.y				= 240+16;
 	g_arenaservers.down.width					= 64;
 	g_arenaservers.down.height					= 64;
 	g_arenaservers.down.focuspic				= ART_ARROWS_DOWN;
@@ -1724,7 +1534,7 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.go.height				= 64;
 	g_arenaservers.go.focuspic				= ART_CONNECT1;
 
-	/*g_arenaservers.punkbuster.generic.type			= MTYPE_SPINCONTROL;
+	g_arenaservers.punkbuster.generic.type			= MTYPE_SPINCONTROL;
 	g_arenaservers.punkbuster.generic.name			= "Punkbuster:";
 	g_arenaservers.punkbuster.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
 	g_arenaservers.punkbuster.generic.callback		= ArenaServers_Event;
@@ -1740,7 +1550,7 @@ static void ArenaServers_MenuInit( void 
 	g_arenaservers.pblogo.generic.y				= 176;
 	g_arenaservers.pblogo.width					= 32;
 	g_arenaservers.pblogo.height				= 16;
-	g_arenaservers.pblogo.errorpic				= ART_UNKNOWNMAP;*/
+	g_arenaservers.pblogo.errorpic				= ART_UNKNOWNMAP;
 	
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.banner );
 
@@ -1749,8 +1559,6 @@ static void ArenaServers_MenuInit( void 
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.sortkey );
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showfull);
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showempty );
-        Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.onlyhumans );
-        Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.hideprivate );
 
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.mappic );
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.list );
@@ -1767,8 +1575,8 @@ static void ArenaServers_MenuInit( void 
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.create );
 	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.go );
 
-	//Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.punkbuster );
-	//Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.pblogo );
+	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.punkbuster );
+	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.pblogo );
 	
 	ArenaServers_LoadFavorites();
 
@@ -1779,7 +1587,7 @@ static void ArenaServers_MenuInit( void 
 		value--;
 	g_arenaservers.master.curvalue = value;
 
-	g_gametype = Com_Clamp( 0, 5, ui_browserGameType.integer );
+	g_gametype = Com_Clamp( 0, 4, ui_browserGameType.integer );
 	g_arenaservers.gametype.curvalue = g_gametype;
 
 	g_sortkey = Com_Clamp( 0, 4, ui_browserSortKey.integer );
@@ -1791,17 +1599,10 @@ static void ArenaServers_MenuInit( void 
 	g_emptyservers = Com_Clamp( 0, 1, ui_browserShowEmpty.integer );
 	g_arenaservers.showempty.curvalue = g_emptyservers;
 	
-        g_arenaservers.onlyhumans.curvalue = Com_Clamp( 0, 1, ui_browserOnlyHumans.integer );
-        g_onlyhumans = ui_browserOnlyHumans.integer;
-        
-        g_arenaservers.hideprivate.curvalue = 1; //Com_Clamp( 0, 1, ui_browserOnlyHumans.integer );
-        g_hideprivate = 1; //ui_browserOnlyHumans.integer;
-	//g_arenaservers.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "cl_punkbuster" ) );
+	g_arenaservers.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "cl_punkbuster" ) );
 
 	// force to initial state and refresh
-	type = g_servertype;
-	g_servertype = -1;
-	ArenaServers_SetType( type );
+	g_arenaservers.master.curvalue = g_servertype = ArenaServers_SetType(g_servertype);
 
 	trap_Cvar_Register(NULL, "debug_protocol", "", 0 );
 }
@@ -1827,7 +1628,7 @@ void ArenaServers_Cache( void ) {
 	trap_R_RegisterShaderNoMip( ART_ARROWS_UP );
 	trap_R_RegisterShaderNoMip( ART_ARROWS_DOWN );
 	trap_R_RegisterShaderNoMip( ART_UNKNOWNMAP );
-	//trap_R_RegisterShaderNoMip( ART_PUNKBUSTER );
+	trap_R_RegisterShaderNoMip( ART_PUNKBUSTER );
 }
 
 
diff -upr ioquake3svn1438/code/q3_ui/ui_setup.c ioquake3serverFix/code/q3_ui/ui_setup.c
--- ioquake3svn1438/code/q3_ui/ui_setup.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_setup.c	2008-08-09 11:28:12.000000000 -0500
@@ -43,7 +43,7 @@ SETUP MENU
 #define ID_CUSTOMIZECONTROLS	11
 #define ID_SYSTEMCONFIG			12
 #define ID_GAME					13
-//#define ID_CDKEY				14
+#define ID_CDKEY				14
 #define ID_LOAD					15
 #define ID_SAVE					16
 #define ID_DEFAULTS				17
@@ -60,7 +60,7 @@ typedef struct {
 	menutext_s		setupcontrols;
 	menutext_s		setupsystem;
 	menutext_s		game;
-//	menutext_s		cdkey;
+	menutext_s		cdkey;
 //	menutext_s		load;
 //	menutext_s		save;
 	menutext_s		defaults;
@@ -123,9 +123,9 @@ static void UI_SetupMenu_Event( void *pt
 		UI_PreferencesMenu();
 		break;
 
-//	case ID_CDKEY:
-//		UI_CDKeyMenu();
-//		break;
+	case ID_CDKEY:
+		UI_CDKeyMenu();
+		break;
 
 //	case ID_LOAD:
 //		UI_LoadConfigMenu();
@@ -227,7 +227,7 @@ static void UI_SetupMenu_Init( void ) {
 	setupMenuInfo.game.color						= color_red;
 	setupMenuInfo.game.style						= UI_CENTER;
 
-/*	y += SETUP_MENU_VERTICAL_SPACING;
+	y += SETUP_MENU_VERTICAL_SPACING;
 	setupMenuInfo.cdkey.generic.type				= MTYPE_PTEXT;
 	setupMenuInfo.cdkey.generic.flags				= QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
 	setupMenuInfo.cdkey.generic.x					= 320;
@@ -236,7 +236,7 @@ static void UI_SetupMenu_Init( void ) {
 	setupMenuInfo.cdkey.generic.callback			= UI_SetupMenu_Event; 
 	setupMenuInfo.cdkey.string						= "CD Key";
 	setupMenuInfo.cdkey.color						= color_red;
-	setupMenuInfo.cdkey.style						= UI_CENTER;*/
+	setupMenuInfo.cdkey.style						= UI_CENTER;
 
 	if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
 #if 0
@@ -293,7 +293,7 @@ static void UI_SetupMenu_Init( void ) {
 	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupcontrols );
 	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupsystem );
 	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.game );
-//	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.cdkey );
+	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.cdkey );
 //	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.load );
 //	Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.save );
 	if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
diff -upr ioquake3svn1438/code/q3_ui/ui_sound.c ioquake3serverFix/code/q3_ui/ui_sound.c
--- ioquake3svn1438/code/q3_ui/ui_sound.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_sound.c	2008-08-09 11:28:12.000000000 -0500
@@ -44,9 +44,7 @@ SOUND OPTIONS MENU
 #define ID_MUSICVOLUME		15
 #define ID_QUALITY			16
 //#define ID_A3D				17
-//Sago: Here I do some stuff!
-#define ID_OPENAL			18
-#define ID_BACK				19
+#define ID_BACK				18
 
 
 static const char *quality_items[] = {
@@ -69,7 +67,6 @@ typedef struct {
 	menuslider_s		musicvolume;
 	menulist_s			quality;
 //	menuradiobutton_s	a3d;
-	menuradiobutton_s	openal;
 
 	menubitmap_s		back;
 } soundOptionsInfo_t;
@@ -137,17 +134,6 @@ static void UI_SoundOptionsMenu_Event( v
 		soundOptionsInfo.a3d.curvalue = (int)trap_Cvar_VariableValue( "s_usingA3D" );
 		break;
 */
-
-	case ID_OPENAL:
-		if( soundOptionsInfo.openal.curvalue ) {
-			trap_Cmd_ExecuteText( EXEC_NOW, "s_useopenal 1\n" );
-		}
-		else {
-			trap_Cmd_ExecuteText( EXEC_NOW, "s_useopenal 0\n" );
-		}
-		soundOptionsInfo.openal.curvalue = (int)trap_Cvar_VariableValue( "s_useopenal" );
-		break;
-
 	case ID_BACK:
 		UI_PopMenu();
 		break;
@@ -274,15 +260,6 @@ static void UI_SoundOptionsMenu_Init( vo
 	soundOptionsInfo.a3d.generic.x				= 400;
 	soundOptionsInfo.a3d.generic.y				= y;
 */
-	y += BIGCHAR_HEIGHT+2;
-	soundOptionsInfo.openal.generic.type			= MTYPE_RADIOBUTTON;
-	soundOptionsInfo.openal.generic.name			= "OpenAL:";
-	soundOptionsInfo.openal.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	soundOptionsInfo.openal.generic.callback		= UI_SoundOptionsMenu_Event;
-	soundOptionsInfo.openal.generic.id				= ID_OPENAL;
-	soundOptionsInfo.openal.generic.x				= 400;
-	soundOptionsInfo.openal.generic.y				= y;
-
 	soundOptionsInfo.back.generic.type			= MTYPE_BITMAP;
 	soundOptionsInfo.back.generic.name			= ART_BACK0;
 	soundOptionsInfo.back.generic.flags			= QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
@@ -305,14 +282,12 @@ static void UI_SoundOptionsMenu_Init( vo
 	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.musicvolume );
 	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.quality );
 //	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.a3d );
-	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.openal );
 	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.back );
 
 	soundOptionsInfo.sfxvolume.curvalue = trap_Cvar_VariableValue( "s_volume" ) * 10;
 	soundOptionsInfo.musicvolume.curvalue = trap_Cvar_VariableValue( "s_musicvolume" ) * 10;
 	soundOptionsInfo.quality.curvalue = !trap_Cvar_VariableValue( "s_compression" );
 //	soundOptionsInfo.a3d.curvalue = (int)trap_Cvar_VariableValue( "s_usingA3D" );
-	soundOptionsInfo.openal.curvalue = (int)trap_Cvar_VariableValue( "s_useopenal" );
 }
 
 
diff -upr ioquake3svn1438/code/q3_ui/ui_splevel.c ioquake3serverFix/code/q3_ui/ui_splevel.c
--- ioquake3svn1438/code/q3_ui/ui_splevel.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_splevel.c	2008-08-09 11:28:12.000000000 -0500
@@ -199,9 +199,6 @@ static void UI_SPLevelMenu_SetBots( void
 		}
 
 		botInfo = UI_GetBotInfoByName( bot );
-                if( !botInfo )	{
-                     botInfo = UI_GetBotInfoByNumber( levelMenuInfo.numBots );
-                }
 		if( botInfo ) {
 			levelMenuInfo.botPics[levelMenuInfo.numBots] = PlayerIconHandle( Info_ValueForKey( botInfo, "model" ) );
 			Q_strncpyz( levelMenuInfo.botNames[levelMenuInfo.numBots], Info_ValueForKey( botInfo, "name" ), 10 );
diff -upr ioquake3svn1438/code/q3_ui/ui_sppostgame.c ioquake3serverFix/code/q3_ui/ui_sppostgame.c
--- ioquake3svn1438/code/q3_ui/ui_sppostgame.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_sppostgame.c	2008-08-09 11:28:12.000000000 -0500
@@ -167,7 +167,6 @@ static void UI_SPPostgameMenu_MenuEvent(
 		return;
 	}
 	UI_PopMenu();
-        trap_Cvar_Set( "nextmap", "" );
 	trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect; levelselect\n" );
 }
 
diff -upr ioquake3svn1438/code/q3_ui/ui_spreset.c ioquake3serverFix/code/q3_ui/ui_spreset.c
--- ioquake3svn1438/code/q3_ui/ui_spreset.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_spreset.c	2008-08-09 11:28:12.000000000 -0500
@@ -77,7 +77,9 @@ Reset_MenuKey
 */
 static sfxHandle_t Reset_MenuKey( int key ) {
 	switch ( key ) {
+	case K_KP_LEFTARROW:
 	case K_LEFTARROW:
+	case K_KP_RIGHTARROW:
 	case K_RIGHTARROW:
 		key = K_TAB;
 		break;
diff -upr ioquake3svn1438/code/q3_ui/ui_startserver.c ioquake3serverFix/code/q3_ui/ui_startserver.c
--- ioquake3svn1438/code/q3_ui/ui_startserver.c	2008-06-30 09:45:43.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_startserver.c	2008-08-09 11:28:12.000000000 -0500
@@ -47,21 +47,21 @@ START SERVER MENU *****
 #define GAMESERVER_ARROWSL		"menu/art/gs_arrows_l"
 #define GAMESERVER_ARROWSR		"menu/art/gs_arrows_r"
 
-#define MAX_MAPROWS		4
+#define MAX_MAPROWS		2
 #define MAX_MAPCOLS		2
-#define MAX_MAPSPERPAGE	(MAX_MAPROWS * MAX_MAPCOLS)
+#define MAX_MAPSPERPAGE	4
 
 #define	MAX_SERVERSTEXT	8192
 
-#define MAX_SERVERMAPS	MAX_ARENAS
+#define MAX_SERVERMAPS	64
 #define MAX_NAMELENGTH	16
 
 #define ID_GAMETYPE				10
-#define ID_PICTURES				11	// 12, 13, 14, 15, 16, 17, 18
-#define ID_PREVPAGE				19
-#define ID_NEXTPAGE				20
-#define ID_STARTSERVERBACK		21
-#define ID_STARTSERVERNEXT		22
+#define ID_PICTURES				11	// 12, 13, 14
+#define ID_PREVPAGE				15
+#define ID_NEXTPAGE				16
+#define ID_STARTSERVERBACK		17
+#define ID_STARTSERVERNEXT		18
 
 typedef struct {
 	menuframework_s	menu;
@@ -98,46 +98,21 @@ static const char *gametype_items[] = {
 	"Team Deathmatch",
 	"Tournament",
 	"Capture the Flag",
-	"Elimination",
-	"CTF Elimination",
-	"Last Man Standing",
-	"Double Domination",
 	NULL
 };
 
-static int gametype_remap[] = {
-		GT_FFA,			
-		GT_TEAM, 		
-		GT_TOURNAMENT, 		
-		GT_CTF,
-		GT_ELIMINATION, 	
-		GT_CTF_ELIMINATION, 	
-		GT_LMS, 		
-		GT_DOUBLE_D };		
-
-static int gametype_remap2[] = {
-		0, 
-		2, 
-		0, 
-		1, 
-		3, 
-		3,
-		3,
-		3,
-		4, 
-		5, 
-		6, 
-		7 };		//this works and should increment for more gametypes
+static int gametype_remap[] = {GT_FFA, GT_TEAM, GT_TOURNAMENT, GT_CTF};
+static int gametype_remap2[] = {0, 2, 0, 1, 3};
 
 // use ui_servers2.c definition
-//extern const char* punkbuster_items[];
+extern const char* punkbuster_items[];
 
 static void UI_ServerOptionsMenu( qboolean multiplayer );
 
 
 /*
 =================
-GametypeBits from arenas.txt + .arena files
+GametypeBits
 =================
 */
 static int GametypeBits( char *string ) {
@@ -177,26 +152,8 @@ static int GametypeBits( char *string ) 
 			bits |= 1 << GT_CTF;
 			continue;
 		}
+	}
 
-		if( Q_stricmp( token, "elimination" ) == 0 ) {
-			bits |= 1 << GT_ELIMINATION;
-			continue;
-		}
-
-		if( Q_stricmp( token, "ctfelimination" ) == 0 ) {
-			bits |= 1 << GT_CTF_ELIMINATION;
-			continue;
-		}
-
-		if( Q_stricmp( token, "lms" ) == 0 ) {
-			bits |= 1 << GT_LMS;
-			continue;
-		}
-		if( Q_stricmp( token, "dd" ) == 0 ) {
-			bits |= 1 << GT_DOUBLE_D;
-			continue;
-		}
-}
 	return bits;
 }
 
@@ -220,23 +177,23 @@ static void StartServer_Update( void ) {
 
 		Com_sprintf( picname[i], sizeof(picname[i]), "levelshots/%s", s_startserver.maplist[top+i] );
 
-		s_startserver.mappics[i].generic.flags &= ~((unsigned int)QMF_HIGHLIGHT);
+		s_startserver.mappics[i].generic.flags &= ~QMF_HIGHLIGHT;
 		s_startserver.mappics[i].generic.name   = picname[i];
 		s_startserver.mappics[i].shader         = 0;
 
 		// reset
 		s_startserver.mapbuttons[i].generic.flags |= QMF_PULSEIFFOCUS;
-		s_startserver.mapbuttons[i].generic.flags &= ~((unsigned int)QMF_INACTIVE);
+		s_startserver.mapbuttons[i].generic.flags &= ~QMF_INACTIVE;
 	}
 
 	for (; i<MAX_MAPSPERPAGE; i++)
 	{
-		s_startserver.mappics[i].generic.flags &= ~((unsigned int)QMF_HIGHLIGHT);
+		s_startserver.mappics[i].generic.flags &= ~QMF_HIGHLIGHT;
 		s_startserver.mappics[i].generic.name   = NULL;
 		s_startserver.mappics[i].shader         = 0;
 
 		// disable
-		s_startserver.mapbuttons[i].generic.flags &= ~((unsigned int)QMF_PULSEIFFOCUS);
+		s_startserver.mapbuttons[i].generic.flags &= ~QMF_PULSEIFFOCUS;
 		s_startserver.mapbuttons[i].generic.flags |= QMF_INACTIVE;
 	}
 
@@ -250,12 +207,12 @@ static void StartServer_Update( void ) {
 	}
 	else {
 		// set the highlight
-		s_startserver.next.generic.flags &= ~((unsigned int)QMF_INACTIVE);
+		s_startserver.next.generic.flags &= ~QMF_INACTIVE;
 		i = s_startserver.currentmap - top;
 		if ( i >=0 && i < MAX_MAPSPERPAGE ) 
 		{
 			s_startserver.mappics[i].generic.flags    |= QMF_HIGHLIGHT;
-			s_startserver.mapbuttons[i].generic.flags &= ~((unsigned int)QMF_PULSEIFFOCUS);
+			s_startserver.mapbuttons[i].generic.flags &= ~QMF_PULSEIFFOCUS;
 		}
 
 		// set the map name
@@ -300,7 +257,7 @@ static void StartServer_GametypeEvent( v
 	count = UI_GetNumArenas();
 	s_startserver.nummaps = 0;
 	matchbits = 1 << gametype_remap[s_startserver.gametype.curvalue];
-	if( gametype_remap[s_startserver.gametype.curvalue] == GT_FFA || gametype_remap[s_startserver.gametype.curvalue] == GT_LMS ) {
+	if( gametype_remap[s_startserver.gametype.curvalue] == GT_FFA ) {
 		matchbits |= ( 1 << GT_SINGLE_PLAYER );
 	}
 	for( i = 0; i < count; i++ ) {
@@ -471,10 +428,8 @@ static void StartServer_MenuInit( void )
 
 	for (i=0; i<MAX_MAPSPERPAGE; i++)
 	{
-		//x =	(i % MAX_MAPCOLS) * (128+8) + 188;
-		//y = (i / MAX_MAPROWS) * (128+8) + 96;
-                x = (640-MAX_MAPROWS*140)/2 + ( (i % MAX_MAPROWS) * 140 );
- 		y = 96 + ( (i / MAX_MAPROWS) * 140 );
+		x =	(i % MAX_MAPCOLS) * (128+8) + 188;
+		y = (i / MAX_MAPROWS) * (128+8) + 96;
 
 		s_startserver.mappics[i].generic.type   = MTYPE_BITMAP;
 		s_startserver.mappics[i].generic.flags  = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
@@ -657,11 +612,11 @@ SERVER OPTIONS MENU *****
 =============================================================================
 */
 
-#define ID_PLAYER_TYPE			25
-#define ID_MAXCLIENTS			26
-//#define ID_DEDICATED			27
-#define ID_GO					28
-#define ID_BACK					29
+#define ID_PLAYER_TYPE			20
+#define ID_MAXCLIENTS			21
+#define ID_DEDICATED			22
+#define ID_GO					23
+#define ID_BACK					24
 
 #define PLAYER_SLOTS			12
 
@@ -674,17 +629,13 @@ typedef struct {
 	menubitmap_s		mappic;
 	menubitmap_s		picframe;
 
-//	menulist_s			dedicated;
+	menulist_s			dedicated;
 	menufield_s			timelimit;
 	menufield_s			fraglimit;
 	menufield_s			flaglimit;
 	menuradiobutton_s	friendlyfire;
 	menufield_s			hostname;
 	menuradiobutton_s	pure;
-        //Here are the elimination stuff
-        menuradiobutton_s	instantgib;
-        menuradiobutton_s	rockets;
-        menulist_s			lmsMode;
 	menulist_s			botSkill;
 
 	menutext_s			player0;
@@ -705,17 +656,17 @@ typedef struct {
 	int					newBotIndex;
 	char				newBotName[16];
 	
-	//menulist_s		punkbuster;
+	menulist_s		punkbuster;
 } serveroptions_t;
 
 static serveroptions_t s_serveroptions;
 
-/*static const char *dedicated_list[] = {
+static const char *dedicated_list[] = {
 	"No",
 	"LAN",
 	"Internet",
 	NULL
-};*/
+};
 
 static const char *playerType_list[] = {
 	"Open",
@@ -739,14 +690,6 @@ static const char *botSkill_list[] = {
 	NULL
 };
 
-//Elimiantion - LMS mode
-static const char *lmsMode_list[] = {
-	"Round+OT",
-	"Round-OT",
-	"Kill+OT",
-	"Kill-OT",
-	NULL
-};
 
 /*
 =================
@@ -760,7 +703,7 @@ static qboolean BotAlreadySelected( cons
 		if( s_serveroptions.playerType[n].curvalue != 1 ) {
 			continue;
 		}
-		if( (s_serveroptions.gametype >= GT_TEAM) && s_serveroptions.gametype != GT_LMS &&
+		if( (s_serveroptions.gametype >= GT_TEAM) &&
 			(s_serveroptions.playerTeam[n].curvalue != s_serveroptions.playerTeam[s_serveroptions.newBotIndex].curvalue ) ) {
 			continue;
 		}
@@ -782,13 +725,10 @@ static void ServerOptions_Start( void ) 
 	int		timelimit;
 	int		fraglimit;
 	int		maxclients;
-//	int		dedicated;
+	int		dedicated;
 	int		friendlyfire;
 	int		flaglimit;
 	int		pure;
-        int             instantgib;
-        int             rockets;
-        int             lmsMode;
 	int		skill;
 	int		n;
 	char	buf[64];
@@ -797,13 +737,9 @@ static void ServerOptions_Start( void ) 
 	timelimit	 = atoi( s_serveroptions.timelimit.field.buffer );
 	fraglimit	 = atoi( s_serveroptions.fraglimit.field.buffer );
 	flaglimit	 = atoi( s_serveroptions.flaglimit.field.buffer );
-//	dedicated	 = s_serveroptions.dedicated.curvalue;
+	dedicated	 = s_serveroptions.dedicated.curvalue;
 	friendlyfire = s_serveroptions.friendlyfire.curvalue;
 	pure		 = s_serveroptions.pure.curvalue;
-        instantgib       = s_serveroptions.instantgib.curvalue;
-        rockets          = s_serveroptions.rockets.curvalue;
-        //Sago: For some reason you need to add 1 to curvalue to get the UI to show the right thing
-        lmsMode          = s_serveroptions.lmsMode.curvalue + 1; 
 	skill		 = s_serveroptions.botSkill.curvalue + 1;
 
 	//set maxclients
@@ -840,44 +776,18 @@ static void ServerOptions_Start( void ) 
 		trap_Cvar_SetValue( "ui_ctf_timelimit", timelimit );
 		trap_Cvar_SetValue( "ui_ctf_friendlt", friendlyfire );
 		break;
-
-	case GT_ELIMINATION:
-		trap_Cvar_SetValue( "ui_elimination_capturelimit", fraglimit );
-		trap_Cvar_SetValue( "ui_elimination_timelimit", timelimit );
-		//trap_Cvar_SetValue( "ui_elimination_friendlt", friendlyfire );
-		break;
-
-	case GT_CTF_ELIMINATION:
-		trap_Cvar_SetValue( "ui_ctf_elimination_capturelimit", fraglimit );
-		trap_Cvar_SetValue( "ui_ctf_elimination_timelimit", timelimit );
-		//trap_Cvar_SetValue( "ui_ctf_elimination_friendlt", friendlyfire );
-		break;
-
-	case GT_LMS:
-		trap_Cvar_SetValue( "ui_lms_fraglimit", fraglimit );
-		trap_Cvar_SetValue( "ui_lms_timelimit", timelimit );
-		break;
-
-	case GT_DOUBLE_D:
-		trap_Cvar_SetValue( "ui_dd_capturelimit", fraglimit );
-		trap_Cvar_SetValue( "ui_dd_timelimit", timelimit );
-		trap_Cvar_SetValue( "ui_dd_friendlt", friendlyfire );
-		break;
 	}
 
 	trap_Cvar_SetValue( "sv_maxclients", Com_Clamp( 0, 12, maxclients ) );
-//	trap_Cvar_SetValue( "dedicated", Com_Clamp( 0, 2, dedicated ) );
+	trap_Cvar_SetValue( "dedicated", Com_Clamp( 0, 2, dedicated ) );
 	trap_Cvar_SetValue ("timelimit", Com_Clamp( 0, timelimit, timelimit ) );
 	trap_Cvar_SetValue ("fraglimit", Com_Clamp( 0, fraglimit, fraglimit ) );
 	trap_Cvar_SetValue ("capturelimit", Com_Clamp( 0, flaglimit, flaglimit ) );
 	trap_Cvar_SetValue( "g_friendlyfire", friendlyfire );
 	trap_Cvar_SetValue( "sv_pure", pure );
-        trap_Cvar_SetValue( "g_instantgib", instantgib );
-        trap_Cvar_SetValue( "g_rockets", rockets );
-        trap_Cvar_SetValue( "g_lms_mode", lmsMode-1);
 	trap_Cvar_Set("sv_hostname", s_serveroptions.hostname.field.buffer );
 	
-	//trap_Cvar_SetValue( "sv_punkbuster", s_serveroptions.punkbuster.curvalue );
+	trap_Cvar_SetValue( "sv_punkbuster", s_serveroptions.punkbuster.curvalue );
 
 	// the wait commands will allow the dedicated to take effect
 	trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", s_startserver.maplist[s_startserver.currentmap] ) );
@@ -894,7 +804,7 @@ static void ServerOptions_Start( void ) 
 		if( s_serveroptions.playerNameBuffers[n][0] == '-' ) {
 			continue;
 		}
-		if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS ) {
+		if( s_serveroptions.gametype >= GT_TEAM ) {
 			Com_sprintf( buf, sizeof(buf), "addbot %s %i %s\n", s_serveroptions.playerNameBuffers[n], skill,
 				playerTeam_list[s_serveroptions.playerTeam[n].curvalue] );
 		}
@@ -905,7 +815,7 @@ static void ServerOptions_Start( void ) 
 	}
 
 	// set player's team
-	if( /*dedicated == 0 &&*/ s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS ) {
+	if( dedicated == 0 && s_serveroptions.gametype >= GT_TEAM ) {
 		trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait 5; team %s\n", playerTeam_list[s_serveroptions.playerTeam[0].curvalue] ) );
 	}
 }
@@ -932,23 +842,23 @@ static void ServerOptions_InitPlayerItem
 		s_serveroptions.playerType[n].curvalue = v;
 	}
 
-	if( s_serveroptions.multiplayer && (s_serveroptions.gametype < GT_TEAM || s_serveroptions.gametype == GT_LMS ) ) {
+	if( s_serveroptions.multiplayer && (s_serveroptions.gametype < GT_TEAM) ) {
 		for( n = 8; n < PLAYER_SLOTS; n++ ) {
 			s_serveroptions.playerType[n].curvalue = 2;
 		}
 	}
 
 	// if not a dedicated server, first slot is reserved for the human on the server
-//	if( s_serveroptions.dedicated.curvalue == 0 ) {
+	if( s_serveroptions.dedicated.curvalue == 0 ) {
 		// human
 		s_serveroptions.playerType[0].generic.flags |= QMF_INACTIVE;
 		s_serveroptions.playerType[0].curvalue = 0;
 		trap_Cvar_VariableStringBuffer( "name", s_serveroptions.playerNameBuffers[0], sizeof(s_serveroptions.playerNameBuffers[0]) );
 		Q_CleanStr( s_serveroptions.playerNameBuffers[0] );
-//	}
+	}
 
 	// init teams
-	if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS ) {
+	if( s_serveroptions.gametype >= GT_TEAM ) {
 		for( n = 0; n < (PLAYER_SLOTS / 2); n++ ) {
 			s_serveroptions.playerTeam[n].curvalue = 0;
 		}
@@ -981,19 +891,19 @@ static void ServerOptions_SetPlayerItems
 //	}
 
 	// names
-//	if( s_serveroptions.dedicated.curvalue == 0 ) {
+	if( s_serveroptions.dedicated.curvalue == 0 ) {
 		s_serveroptions.player0.string = "Human";
-		s_serveroptions.playerName[0].generic.flags &= ~((unsigned int)QMF_HIDDEN);
+		s_serveroptions.playerName[0].generic.flags &= ~QMF_HIDDEN;
 
 		start = 1;
-/*	}
+	}
 	else {
 		s_serveroptions.player0.string = "Open";
 		start = 0;
-	}*/
+	}
 	for( n = start; n < PLAYER_SLOTS; n++ ) {
 		if( s_serveroptions.playerType[n].curvalue == 1 ) {
-			s_serveroptions.playerName[n].generic.flags &= ~( (unsigned int)(QMF_INACTIVE|QMF_HIDDEN));
+			s_serveroptions.playerName[n].generic.flags &= ~(QMF_INACTIVE|QMF_HIDDEN);
 		}
 		else {
 			s_serveroptions.playerName[n].generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
@@ -1001,7 +911,7 @@ static void ServerOptions_SetPlayerItems
 	}
 
 	// teams
-	if( s_serveroptions.gametype < GT_TEAM || s_serveroptions.gametype == GT_LMS ) {
+	if( s_serveroptions.gametype < GT_TEAM ) {
 		return;
 	}
 	for( n = start; n < PLAYER_SLOTS; n++ ) {
@@ -1009,7 +919,7 @@ static void ServerOptions_SetPlayerItems
 			s_serveroptions.playerTeam[n].generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
 		}
 		else {
-			s_serveroptions.playerTeam[n].generic.flags &= ~((unsigned int) (QMF_INACTIVE|QMF_HIDDEN));
+			s_serveroptions.playerTeam[n].generic.flags &= ~(QMF_INACTIVE|QMF_HIDDEN);
 		}
 	}
 }
@@ -1034,7 +944,7 @@ static void ServerOptions_Event( void* p
 		break;
 
 	case ID_MAXCLIENTS:
-//	case ID_DEDICATED:
+	case ID_DEDICATED:
 		ServerOptions_SetPlayerItems();
 		break;
 	case ID_GO:
@@ -1084,19 +994,6 @@ static void ServerOptions_StatusBar( voi
 	}
 }
 
-/*
-=================
-ServerOptions_StatusBar_Instantgib
-=================
-*/
-static void ServerOptions_StatusBar_Instantgib( void* ptr ) {
-	switch( ((menucommon_s*)ptr)->id ) {
-	default:
-		UI_DrawString( 320, 440, "Only railgun and instant kill", UI_CENTER|UI_SMALLFONT, colorWhite );
-		break;
-	}
-}
-
 
 /*
 ===============
@@ -1140,29 +1037,28 @@ static void ServerOptions_InitBotNames( 
 	char		*bot;
 	char		bots[MAX_INFO_STRING];
 
-	//this SHOULD work
-	if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS ) {
-		Q_strncpyz( s_serveroptions.playerNameBuffers[1], "gargoyle", 16 );
-		Q_strncpyz( s_serveroptions.playerNameBuffers[2], "kyonshi", 16 );
-		Q_strncpyz( s_serveroptions.playerNameBuffers[3], "grism", 16 );
-                if( s_serveroptions.gametype != GT_TEAM ) {
+	if( s_serveroptions.gametype >= GT_TEAM ) {
+		Q_strncpyz( s_serveroptions.playerNameBuffers[1], "grunt", 16 );
+		Q_strncpyz( s_serveroptions.playerNameBuffers[2], "major", 16 );
+		if( s_serveroptions.gametype == GT_TEAM ) {
+			Q_strncpyz( s_serveroptions.playerNameBuffers[3], "visor", 16 );
+		}
+		else {
 			s_serveroptions.playerType[3].curvalue = 2;
 		}
-                Q_strncpyz( s_serveroptions.playerNameBuffers[4], "merman", 16 );
 		s_serveroptions.playerType[4].curvalue = 2;
-                Q_strncpyz( s_serveroptions.playerNameBuffers[5], "skelebot", 16 );
 		s_serveroptions.playerType[5].curvalue = 2;
 
-		Q_strncpyz( s_serveroptions.playerNameBuffers[6], "sergei", 16 );
-		Q_strncpyz( s_serveroptions.playerNameBuffers[7], "assassin", 16 );
-		Q_strncpyz( s_serveroptions.playerNameBuffers[8], "grunt", 16 );
-                Q_strncpyz( s_serveroptions.playerNameBuffers[9], "skelebot", 16 );
-		if( s_serveroptions.gametype != GT_TEAM ) {
+		Q_strncpyz( s_serveroptions.playerNameBuffers[6], "sarge", 16 );
+		Q_strncpyz( s_serveroptions.playerNameBuffers[7], "grunt", 16 );
+		Q_strncpyz( s_serveroptions.playerNameBuffers[8], "major", 16 );
+		if( s_serveroptions.gametype == GT_TEAM ) {
+			Q_strncpyz( s_serveroptions.playerNameBuffers[9], "visor", 16 );
+		}
+		else {
 			s_serveroptions.playerType[9].curvalue = 2;
 		}
-                Q_strncpyz( s_serveroptions.playerNameBuffers[10], "merman", 16 );
 		s_serveroptions.playerType[10].curvalue = 2;
-                Q_strncpyz( s_serveroptions.playerNameBuffers[11], "skelebot", 16 );
 		s_serveroptions.playerType[11].curvalue = 2;
 
 		return;
@@ -1198,29 +1094,14 @@ static void ServerOptions_InitBotNames( 
 
 		botInfo = UI_GetBotInfoByName( bot );
 		bot = Info_ValueForKey( botInfo, "name" );
-                
-                if(!Q_stricmp(bot,""))
-                    bot = "Sarge"; 
 
 		Q_strncpyz( s_serveroptions.playerNameBuffers[count], bot, sizeof(s_serveroptions.playerNameBuffers[count]) );
 		count++;
 	}
 
-	// set the rest of the bot slots to to other bots
+	// set the rest of the bot slots to "---"
 	for( n = count; n < PLAYER_SLOTS; n++ ) {
-		switch(n%4){
-                 case 0:
-                    strcpy( s_serveroptions.playerNameBuffers[n], "Grunt" );
-                     break;
-                 case 1:
-                     strcpy( s_serveroptions.playerNameBuffers[n], "Merman" );
-                     break;
-                 case 2:
-                     strcpy( s_serveroptions.playerNameBuffers[n], "Kyonshi" );
-                     break;
-                 default:
-                     strcpy( s_serveroptions.playerNameBuffers[n], "Skelebot" );
-             }
+		strcpy( s_serveroptions.playerNameBuffers[n], "--------" );
 	}
 
 	// pad up to #8 as open slots
@@ -1268,37 +1149,10 @@ static void ServerOptions_SetMenuItems( 
 		Com_sprintf( s_serveroptions.timelimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_ctf_timelimit" ) ) );
 		s_serveroptions.friendlyfire.curvalue = (int)Com_Clamp( 0, 1, trap_Cvar_VariableValue( "ui_ctf_friendly" ) );
 		break;
-
-	case GT_ELIMINATION:
-		Com_sprintf( s_serveroptions.flaglimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_elimination_capturelimit" ) ) );
-		Com_sprintf( s_serveroptions.timelimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_elimination_timelimit" ) ) );
-		//s_serveroptions.friendlyfire.curvalue = (int)Com_Clamp( 0, 1, trap_Cvar_VariableValue( "ui_elimination_friendly" ) );
-		break;
-
-	case GT_CTF_ELIMINATION:
-		Com_sprintf( s_serveroptions.flaglimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_ctf_elimination_capturelimit" ) ) );
-		Com_sprintf( s_serveroptions.timelimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_ctf_elimination_timelimit" ) ) );
-		//s_serveroptions.friendlyfire.curvalue = (int)Com_Clamp( 0, 1, trap_Cvar_VariableValue( "ui_ctf_elimination_friendly" ) );
-		break;
-
-	case GT_LMS:
-		Com_sprintf( s_serveroptions.fraglimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_lms_fraglimit" ) ) );
-		Com_sprintf( s_serveroptions.timelimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_lms_timelimit" ) ) );
-		break;
-
-	case GT_DOUBLE_D:
-		Com_sprintf( s_serveroptions.flaglimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 100, trap_Cvar_VariableValue( "ui_dd_capturelimit" ) ) );
-		Com_sprintf( s_serveroptions.timelimit.field.buffer, 4, "%i", (int)Com_Clamp( 0, 999, trap_Cvar_VariableValue( "ui_dd_timelimit" ) ) );
-		s_serveroptions.friendlyfire.curvalue = (int)Com_Clamp( 0, 1, trap_Cvar_VariableValue( "ui_dd_friendly" ) );
-		break;
-
 	}
 
 	Q_strncpyz( s_serveroptions.hostname.field.buffer, UI_Cvar_VariableString( "sv_hostname" ), sizeof( s_serveroptions.hostname.field.buffer ) );
 	s_serveroptions.pure.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "sv_pure" ) );
-        s_serveroptions.instantgib.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_instantgib" ) );
-        s_serveroptions.rockets.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_rockets" ) );
-        s_serveroptions.lmsMode.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue("g_lms_mode") )+1;
 
 	// set the map pic
 	Com_sprintf( picname, 64, "levelshots/%s", s_startserver.maplist[s_startserver.currentmap] );
@@ -1377,9 +1231,8 @@ static void ServerOptions_MenuInit( qboo
 
 	memset( &s_serveroptions, 0 ,sizeof(serveroptions_t) );
 	s_serveroptions.multiplayer = multiplayer;
-	// so the new gametypes work
-	s_serveroptions.gametype = (int)Com_Clamp( 0, GT_MAX_GAME_TYPE - 1, trap_Cvar_VariableValue( "g_gameType" ) );
-	//s_serveroptions.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "sv_punkbuster" ) );
+	s_serveroptions.gametype = (int)Com_Clamp( 0, 5, trap_Cvar_VariableValue( "g_gameType" ) );
+	s_serveroptions.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "sv_punkbuster" ) );
 
 	ServerOptions_Cache();
 
@@ -1411,7 +1264,7 @@ static void ServerOptions_MenuInit( qboo
 	s_serveroptions.picframe.focuspic			= GAMESERVER_SELECT;
 
 	y = 272;
-	if( s_serveroptions.gametype < GT_CTF || s_serveroptions.gametype== GT_LMS) {
+	if( s_serveroptions.gametype != GT_CTF ) {
 		s_serveroptions.fraglimit.generic.type       = MTYPE_FIELD;
 		s_serveroptions.fraglimit.generic.name       = "Frag Limit:";
 		s_serveroptions.fraglimit.generic.flags      = QMF_NUMBERSONLY|QMF_PULSEIFFOCUS|QMF_SMALLFONT;
@@ -1442,7 +1295,7 @@ static void ServerOptions_MenuInit( qboo
 	s_serveroptions.timelimit.field.widthInChars = 3;
 	s_serveroptions.timelimit.field.maxchars     = 3;
 
-	if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS && s_serveroptions.gametype != GT_ELIMINATION && s_serveroptions.gametype != GT_CTF_ELIMINATION) {
+	if( s_serveroptions.gametype >= GT_TEAM ) {
 		y += BIGCHAR_HEIGHT+2;
 		s_serveroptions.friendlyfire.generic.type     = MTYPE_RADIOBUTTON;
 		s_serveroptions.friendlyfire.generic.flags    = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
@@ -1457,37 +1310,8 @@ static void ServerOptions_MenuInit( qboo
 	s_serveroptions.pure.generic.x				= OPTIONS_X;
 	s_serveroptions.pure.generic.y				= y;
 	s_serveroptions.pure.generic.name			= "Pure Server:";
-        
-        //Insantgib option
-        y += BIGCHAR_HEIGHT+2;
-	s_serveroptions.instantgib.generic.type			= MTYPE_RADIOBUTTON;
-	s_serveroptions.instantgib.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_serveroptions.instantgib.generic.x				= OPTIONS_X;
-	s_serveroptions.instantgib.generic.y				= y;
-	s_serveroptions.instantgib.generic.name			= "Instantgib:";
-        s_serveroptions.instantgib.generic.statusbar  = ServerOptions_StatusBar_Instantgib; 
-        
-        //Rockets option
-        y += BIGCHAR_HEIGHT+2;
-	s_serveroptions.rockets.generic.type			= MTYPE_RADIOBUTTON;
-	s_serveroptions.rockets.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_serveroptions.rockets.generic.x				= OPTIONS_X;
-	s_serveroptions.rockets.generic.y				= y;
-	s_serveroptions.rockets.generic.name			= "All rockets:";
-        
-        if( s_serveroptions.gametype == GT_LMS ) {
-            y += BIGCHAR_HEIGHT+2;
-            s_serveroptions.lmsMode.generic.type			= MTYPE_SPINCONTROL;
-            s_serveroptions.lmsMode.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-            s_serveroptions.lmsMode.generic.name			= "Score mode:";
-            s_serveroptions.lmsMode.generic.x				=  OPTIONS_X; //32 + (strlen(s_serveroptions.botSkill.generic.name) + 2 ) * SMALLCHAR_WIDTH;
-            s_serveroptions.lmsMode.generic.y				= y;
-            s_serveroptions.lmsMode.itemnames				= lmsMode_list;
-            //s_serveroptions.lmsMode.curvalue				= 0;
-            
-        }
 
-/*	if( s_serveroptions.multiplayer ) {
+	if( s_serveroptions.multiplayer ) {
 		y += BIGCHAR_HEIGHT+2;
 		s_serveroptions.dedicated.generic.type		= MTYPE_SPINCONTROL;
 		s_serveroptions.dedicated.generic.id		= ID_DEDICATED;
@@ -1497,7 +1321,7 @@ static void ServerOptions_MenuInit( qboo
 		s_serveroptions.dedicated.generic.y			= y;
 		s_serveroptions.dedicated.generic.name		= "Dedicated:";
 		s_serveroptions.dedicated.itemnames			= dedicated_list;
-	}*/
+	}
 
 	if( s_serveroptions.multiplayer ) {
 		y += BIGCHAR_HEIGHT+2;
@@ -1510,14 +1334,14 @@ static void ServerOptions_MenuInit( qboo
 		s_serveroptions.hostname.field.maxchars     = 64;
 	}
 
-	/*y += BIGCHAR_HEIGHT+2;
+	y += BIGCHAR_HEIGHT+2;
 	s_serveroptions.punkbuster.generic.type			= MTYPE_SPINCONTROL;
 	s_serveroptions.punkbuster.generic.name			= "Punkbuster:";
 	s_serveroptions.punkbuster.generic.flags			= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
 	s_serveroptions.punkbuster.generic.id			= 0;
 	s_serveroptions.punkbuster.generic.x				= OPTIONS_X;
 	s_serveroptions.punkbuster.generic.y				= y;
-	s_serveroptions.punkbuster.itemnames				= punkbuster_items;*/
+	s_serveroptions.punkbuster.itemnames				= punkbuster_items;
 	
 	y = 80;
 	s_serveroptions.botSkill.generic.type			= MTYPE_SPINCONTROL;
@@ -1615,30 +1439,25 @@ static void ServerOptions_MenuInit( qboo
 			Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.playerType[n] );
 		}
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.playerName[n] );
-		if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS ) {
+		if( s_serveroptions.gametype >= GT_TEAM ) {
 			Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.playerTeam[n] );
 		}
 	}
 
-	if( s_serveroptions.gametype < GT_CTF || s_serveroptions.gametype == GT_LMS ) {
+	if( s_serveroptions.gametype != GT_CTF ) {
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.fraglimit );
 	}
 	else {
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.flaglimit );
 	}
 	Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.timelimit );
-	if( s_serveroptions.gametype >= GT_TEAM && s_serveroptions.gametype != GT_LMS && s_serveroptions.gametype != GT_ELIMINATION && s_serveroptions.gametype != GT_CTF_ELIMINATION) {
+	if( s_serveroptions.gametype >= GT_TEAM ) {
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.friendlyfire );
 	}
 	Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.pure );
-        Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.instantgib );
-        Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.rockets );
-        if( s_serveroptions.gametype == GT_LMS) {
-            Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.lmsMode );
-        }
-/*	if( s_serveroptions.multiplayer ) {
+	if( s_serveroptions.multiplayer ) {
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.dedicated );
-	}*/
+	}
 	if( s_serveroptions.multiplayer ) {
 		Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.hostname );
 	}
@@ -1647,7 +1466,7 @@ static void ServerOptions_MenuInit( qboo
 	Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.next );
 	Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.go );
 
-	//Menu_AddItem( &s_serveroptions.menu, (void*) &s_serveroptions.punkbuster );
+	Menu_AddItem( &s_serveroptions.menu, (void*) &s_serveroptions.punkbuster );
 	
 	ServerOptions_SetMenuItems();
 }
@@ -1829,7 +1648,7 @@ static void UI_BotSelectMenu_UpdateGrid(
 			else {
 				botSelectInfo.picnames[i].color = color_orange;
 			}
-			botSelectInfo.picbuttons[i].generic.flags &= ~((unsigned int)QMF_INACTIVE);
+			botSelectInfo.picbuttons[i].generic.flags &= ~QMF_INACTIVE;
 		}
 		else {
 			// dead slot
@@ -1838,7 +1657,7 @@ static void UI_BotSelectMenu_UpdateGrid(
 			botSelectInfo.botnames[i][0] = 0;
 		}
 
- 		botSelectInfo.pics[i].generic.flags       &= ~((unsigned int)QMF_HIGHLIGHT);
+ 		botSelectInfo.pics[i].generic.flags       &= ~QMF_HIGHLIGHT;
  		botSelectInfo.pics[i].shader               = 0;
  		botSelectInfo.picbuttons[i].generic.flags |= QMF_PULSEIFFOCUS;
 	}
@@ -1846,18 +1665,18 @@ static void UI_BotSelectMenu_UpdateGrid(
 	// set selected model
 	i = botSelectInfo.selectedmodel % MAX_MODELSPERPAGE;
 	botSelectInfo.pics[i].generic.flags |= QMF_HIGHLIGHT;
-	botSelectInfo.picbuttons[i].generic.flags &= ~((unsigned int)QMF_PULSEIFFOCUS);
+	botSelectInfo.picbuttons[i].generic.flags &= ~QMF_PULSEIFFOCUS;
 
 	if( botSelectInfo.numpages > 1 ) {
 		if( botSelectInfo.modelpage > 0 ) {
-			botSelectInfo.left.generic.flags &= ~((unsigned int)QMF_INACTIVE);
+			botSelectInfo.left.generic.flags &= ~QMF_INACTIVE;
 		}
 		else {
 			botSelectInfo.left.generic.flags |= QMF_INACTIVE;
 		}
 
 		if( botSelectInfo.modelpage < (botSelectInfo.numpages - 1) ) {
-			botSelectInfo.right.generic.flags &= ~((unsigned int)QMF_INACTIVE);
+			botSelectInfo.right.generic.flags &= ~QMF_INACTIVE;
 		}
 		else {
 			botSelectInfo.right.generic.flags |= QMF_INACTIVE;
@@ -1955,14 +1774,14 @@ static void UI_BotSelectMenu_BotEvent( v
 	}
 
 	for( i = 0; i < (PLAYERGRID_ROWS * PLAYERGRID_COLS); i++ ) {
- 		botSelectInfo.pics[i].generic.flags &= ~((unsigned int)QMF_HIGHLIGHT);
+ 		botSelectInfo.pics[i].generic.flags &= ~QMF_HIGHLIGHT;
  		botSelectInfo.picbuttons[i].generic.flags |= QMF_PULSEIFFOCUS;
 	}
 
 	// set selected
 	i = ((menucommon_s*)ptr)->id;
 	botSelectInfo.pics[i].generic.flags |= QMF_HIGHLIGHT;
-	botSelectInfo.picbuttons[i].generic.flags &= ~((unsigned int)QMF_PULSEIFFOCUS);
+	botSelectInfo.picbuttons[i].generic.flags &= ~QMF_PULSEIFFOCUS;
 	botSelectInfo.selectedmodel = botSelectInfo.modelpage * MAX_MODELSPERPAGE + i;
 }
 
diff -upr ioquake3svn1438/code/q3_ui/ui_team.c ioquake3serverFix/code/q3_ui/ui_team.c
--- ioquake3svn1438/code/q3_ui/ui_team.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_team.c	2008-08-09 11:28:12.000000000 -0500
@@ -47,16 +47,6 @@ typedef struct
 
 static teammain_t	s_teammain;
 
-// bk001204 - unused
-//static menuframework_s	s_teammain_menu;
-//static menuaction_s		s_teammain_orders;
-//static menuaction_s		s_teammain_voice;
-//static menuaction_s		s_teammain_joinred;
-//static menuaction_s		s_teammain_joinblue;
-//static menuaction_s		s_teammain_joingame;
-//static menuaction_s		s_teammain_spectate;
-
-
 /*
 ===============
 TeamMain_MenuEvent
@@ -169,7 +159,6 @@ void TeamMain_MenuInit( void ) {
 	switch( gametype ) {
 	case GT_SINGLE_PLAYER:
 	case GT_FFA:
-	case GT_LMS:
 	case GT_TOURNAMENT:
 		s_teammain.joinred.generic.flags  |= QMF_GRAYED;
 		s_teammain.joinblue.generic.flags |= QMF_GRAYED;
@@ -178,10 +167,7 @@ void TeamMain_MenuInit( void ) {
 	default:
 	case GT_TEAM:
 	case GT_CTF:
-	case GT_ELIMINATION:
-	case GT_CTF_ELIMINATION:
-		//s_teammain.joingame.generic.flags |= QMF_GRAYED;
-		s_teammain.joingame.string           = "AUTO JOIN GAME";
+		s_teammain.joingame.generic.flags |= QMF_GRAYED;
 		break;
 	}
 
diff -upr ioquake3svn1438/code/q3_ui/ui_teamorders.c ioquake3serverFix/code/q3_ui/ui_teamorders.c
--- ioquake3svn1438/code/q3_ui/ui_teamorders.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_teamorders.c	2008-08-09 11:28:12.000000000 -0500
@@ -39,7 +39,6 @@ TEAM ORDERS MENU
 #define ID_LIST_BOTS		10
 #define ID_LIST_CTF_ORDERS	11
 #define ID_LIST_TEAM_ORDERS	12
-#define ID_LIST_DD_ORDERS	13
 
 
 typedef struct {
@@ -76,7 +75,7 @@ static const char *ctfMessages[] = {
 	"i am the leader",
 	"%s defend the base",
 	"%s follow me",
-	"%s get the enemy flag",
+	"%s get enemy flag",
 	"%s camp here",
 	"%s report",
 	"i stop being the leader",
@@ -103,29 +102,6 @@ static const char *teamMessages[] = {
 	NULL
 };
 
-#define NUM_DD_ORDERS		8
-static const char *ddOrders[] = {
-	"I Am the Leader",
-	"Follow Me",
-	"Roam",
-	"Dominate Point A",
-	"Dominate Point B",
-	"Camp Here",
-	"Report",
-	"I Relinquish Command",
-	NULL
-};
-static const char *ddMessages[] = {
-	"i am the leader",
-	"%s follow me",
-	"%s roam",
-	"%s dominate point A",
-	"%s dominate point B",
-	"%s camp here",
-	"%s report",
-	"i stop being the leader",
-	NULL
-};
 
 /*
 ===============
@@ -165,12 +141,6 @@ static void UI_TeamOrdersMenu_SetList( i
 		teamOrdersMenuInfo.list.numitems = NUM_TEAM_ORDERS;
 		teamOrdersMenuInfo.list.itemnames = teamOrders;
 		break;
-
-	case ID_LIST_DD_ORDERS:
-		teamOrdersMenuInfo.list.generic.id = id;
-		teamOrdersMenuInfo.list.numitems = NUM_DD_ORDERS;
-		teamOrdersMenuInfo.list.itemnames = ddOrders;
-		break;
 	}
 
 	teamOrdersMenuInfo.list.generic.bottom = teamOrdersMenuInfo.list.generic.top + teamOrdersMenuInfo.list.numitems * PROP_HEIGHT;
@@ -294,28 +264,21 @@ static void UI_TeamOrdersMenu_ListEvent(
 
 	if( id == ID_LIST_BOTS ) {
 		teamOrdersMenuInfo.selectedBot = selection;
-		if( teamOrdersMenuInfo.gametype == GT_CTF || teamOrdersMenuInfo.gametype == GT_CTF_ELIMINATION ) {
+		if( teamOrdersMenuInfo.gametype == GT_CTF ) {
 			UI_TeamOrdersMenu_SetList( ID_LIST_CTF_ORDERS );
 		}
-		if( teamOrdersMenuInfo.gametype == GT_TEAM || teamOrdersMenuInfo.gametype == GT_ELIMINATION ) {
+		else {
 			UI_TeamOrdersMenu_SetList( ID_LIST_TEAM_ORDERS );
 		}
-		if( teamOrdersMenuInfo.gametype == GT_DOUBLE_D ) {
-			UI_TeamOrdersMenu_SetList( ID_LIST_DD_ORDERS );
-		}
-
 		return;
 	}
 
 	if( id == ID_LIST_CTF_ORDERS ) {
 		Com_sprintf( message, sizeof(message), ctfMessages[selection], teamOrdersMenuInfo.botNames[teamOrdersMenuInfo.selectedBot] );
 	}
-	if( id == ID_LIST_TEAM_ORDERS ) {
+	else {
 		Com_sprintf( message, sizeof(message), teamMessages[selection], teamOrdersMenuInfo.botNames[teamOrdersMenuInfo.selectedBot] );
 	}
-	if( id == ID_LIST_DD_ORDERS ) {
-		Com_sprintf( message, sizeof(message), ddMessages[selection], teamOrdersMenuInfo.botNames[teamOrdersMenuInfo.selectedBot] );
-	}
 
 	trap_Cmd_ExecuteText( EXEC_APPEND, va( "say_team \"%s\"\n", message ) );
 	UI_PopMenu();
@@ -468,7 +431,7 @@ void UI_TeamOrdersMenu_f( void ) {
 	// make sure it's a team game
 	trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) );
 	teamOrdersMenuInfo.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
-	if( teamOrdersMenuInfo.gametype < GT_TEAM || teamOrdersMenuInfo.gametype!=GT_LMS) {
+	if( teamOrdersMenuInfo.gametype < GT_TEAM ) {
 		return;
 	}
 
diff -upr ioquake3svn1438/code/q3_ui/ui_video.c ioquake3serverFix/code/q3_ui/ui_video.c
--- ioquake3svn1438/code/q3_ui/ui_video.c	2008-06-22 03:28:44.000000000 -0500
+++ ioquake3serverFix/code/q3_ui/ui_video.c	2008-08-09 11:28:12.000000000 -0500
@@ -266,14 +266,11 @@ typedef struct {
 	menuslider_s	tq;
 	menulist_s  	fs;
 	menulist_s  	lighting;
-        menulist_s  	flares;
-        menulist_s  	bloom;
 	menulist_s  	allow_extensions;
 	menulist_s  	texturebits;
 	menulist_s  	colordepth;
 	menulist_s  	geometry;
 	menulist_s  	filter;
-        menulist_s  	aniso;
 	menutext_s		driverinfo;
 
 	menubitmap_s	apply;
@@ -286,13 +283,10 @@ typedef struct
 	qboolean fullscreen;
 	int tq;
 	int lighting;
-        qboolean flares;
-        qboolean bloom;
 	int colordepth;
 	int texturebits;
 	int geometry;
 	int filter;
-        int aniso;
 	int driver;
 	qboolean extensions;
 } InitialVideoOptions_s;
@@ -303,22 +297,22 @@ static graphicsoptions_t		s_graphicsopti
 static InitialVideoOptions_s s_ivo_templates[] =
 {
 	{
-		6, qtrue, 3, 0, qfalse,qfalse, 2, 2, 2, 1, 0, 0, qtrue
+		6, qtrue, 3, 0, 2, 2, 2, 1, 0, qtrue
 	},
 	{
-		4, qtrue, 2, 0, qfalse,qfalse, 2, 2, 1, 1, 0, 0, qtrue	// JDC: this was tq 3
+		4, qtrue, 2, 0, 2, 2, 1, 1, 0, qtrue	// JDC: this was tq 3
 	},
 	{
-		3, qtrue, 2, 0, qfalse,qfalse, 0, 0, 1, 0, 0, 0, qtrue
+		3, qtrue, 2, 0, 0, 0, 1, 0, 0, qtrue
 	},
 	{
-		2, qtrue, 1, 0, qfalse,qfalse, 1, 0, 0, 0, 0, 0, qtrue
+		2, qtrue, 1, 0, 1, 0, 0, 0, 0, qtrue
 	},
 	{
-		2, qtrue, 1, 1, qfalse,qfalse, 1, 0, 0, 0, 0, 0, qtrue
+		2, qtrue, 1, 1, 1, 0, 0, 0, 0, qtrue
 	},
 	{
-		3, qtrue, 1, 0, qfalse,qfalse, 0, 0, 1, 0, 0, 0, qtrue
+		3, qtrue, 1, 0, 0, 0, 1, 0, 0, qtrue
 	}
 };
 
@@ -409,11 +403,8 @@ static void GraphicsOptions_GetInitialVi
 	s_ivo.extensions  = s_graphicsoptions.allow_extensions.curvalue;
 	s_ivo.tq          = s_graphicsoptions.tq.curvalue;
 	s_ivo.lighting    = s_graphicsoptions.lighting.curvalue;
-        s_ivo.flares      = s_graphicsoptions.flares.curvalue;
-        s_ivo.bloom      = s_graphicsoptions.bloom.curvalue;
 	s_ivo.geometry    = s_graphicsoptions.geometry.curvalue;
 	s_ivo.filter      = s_graphicsoptions.filter.curvalue;
-        s_ivo.aniso      = s_graphicsoptions.aniso.curvalue;
 	s_ivo.texturebits = s_graphicsoptions.texturebits.curvalue;
 }
 
@@ -432,7 +423,7 @@ static void GraphicsOptions_CheckConfig(
 			continue;
 		if ( s_ivo_templates[i].driver != s_graphicsoptions.driver.curvalue )
 			continue;
-		if ( s_ivo_templates[i].mode != s_graphicsoptions.mode.curvalue )
+		if ( GraphicsOptions_FindDetectedResolution(s_ivo_templates[i].mode) != s_graphicsoptions.mode.curvalue )
 			continue;
 		if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue )
 			continue;
@@ -440,16 +431,10 @@ static void GraphicsOptions_CheckConfig(
 			continue;
 		if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue )
 			continue;
-                if ( s_ivo_templates[i].flares != s_graphicsoptions.flares.curvalue )
-			continue;
-                if ( s_ivo_templates[i].bloom != s_graphicsoptions.bloom.curvalue )
-			continue;
 		if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue )
 			continue;
 		if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue )
 			continue;
-                if ( s_ivo_templates[i].aniso != s_graphicsoptions.aniso.curvalue )
-			continue;
 //		if ( s_ivo_templates[i].texturebits != s_graphicsoptions.texturebits.curvalue )
 //			continue;
 		s_graphicsoptions.list.curvalue = i;
@@ -518,14 +503,6 @@ static void GraphicsOptions_UpdateMenuIt
 	{
 		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
 	}
-        if ( s_ivo.flares != s_graphicsoptions.flares.curvalue )
-	{
-		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
-	}
-        if ( s_ivo.bloom != s_graphicsoptions.bloom.curvalue )
-	{
-		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
-	}
 	if ( s_ivo.colordepth != s_graphicsoptions.colordepth.curvalue )
 	{
 		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
@@ -546,10 +523,6 @@ static void GraphicsOptions_UpdateMenuIt
 	{
 		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
 	}
-        if ( s_ivo.aniso != s_graphicsoptions.aniso.curvalue )
-	{
-		s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
-	}
 
 	GraphicsOptions_CheckConfig();
 }	
@@ -582,7 +555,12 @@ static void GraphicsOptions_ApplyChanges
 	if( resolutionsDetected )
 	{
 		// search for builtin mode that matches the detected mode
-		int mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue );
+		int mode;
+		if ( s_graphicsoptions.mode.curvalue == -1
+			|| s_graphicsoptions.mode.curvalue >= sizeof(detectedResolutions)/sizeof(detectedResolutions[0]) )
+			s_graphicsoptions.mode.curvalue = 0;
+
+		mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue );
 		if( mode == -1 )
 		{
 			char w[ 16 ], h[ 16 ];
@@ -604,20 +582,7 @@ static void GraphicsOptions_ApplyChanges
 	trap_Cvar_SetValue( "r_depthbits", 0 );
 	trap_Cvar_SetValue( "r_stencilbits", 0 );
 	trap_Cvar_SetValue( "r_vertexLight", s_graphicsoptions.lighting.curvalue );
-        trap_Cvar_SetValue( "r_flares", s_graphicsoptions.flares.curvalue );
-        trap_Cvar_SetValue( "r_bloom", s_graphicsoptions.bloom.curvalue );
-        
-        //r_ext_texture_filter_anisotropic is special
-        if(s_graphicsoptions.aniso.curvalue) {
-            trap_Cvar_SetValue( "r_ext_max_anisotropy", s_graphicsoptions.aniso.curvalue*2 );
-            trap_Cvar_SetValue( "r_ext_texture_filter_anisotropic", qtrue );
-        }
-        else
-            trap_Cvar_SetValue( "r_ext_texture_filter_anisotropic", qfalse );
-        
-        trap_Cvar_SetValue( "com_hunkmegs", 128 );
-        
-        
+
 	if ( s_graphicsoptions.geometry.curvalue == 2 )
 	{
 		trap_Cvar_SetValue( "r_lodBias", 0 );
@@ -673,17 +638,14 @@ static void GraphicsOptions_Event( void*
 	case ID_LIST:
 		ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue];
 
-		s_graphicsoptions.mode.curvalue        = ivo->mode;
+		s_graphicsoptions.mode.curvalue        = GraphicsOptions_FindDetectedResolution(ivo->mode);
 		s_graphicsoptions.tq.curvalue          = ivo->tq;
 		s_graphicsoptions.lighting.curvalue    = ivo->lighting;
 		s_graphicsoptions.colordepth.curvalue  = ivo->colordepth;
 		s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
 		s_graphicsoptions.geometry.curvalue    = ivo->geometry;
 		s_graphicsoptions.filter.curvalue      = ivo->filter;
-                s_graphicsoptions.aniso.curvalue       = ivo->aniso;
 		s_graphicsoptions.fs.curvalue          = ivo->fullscreen;
-                s_graphicsoptions.flares.curvalue      = ivo->flares;
-                s_graphicsoptions.bloom.curvalue      = ivo->bloom;
 		break;
 
 	case ID_DRIVERINFO:
@@ -780,11 +742,6 @@ static void GraphicsOptions_SetMenuItems
 	}
 	s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen");
 	s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions");
-        s_graphicsoptions.flares.curvalue = trap_Cvar_VariableValue("r_flares");
-        s_graphicsoptions.bloom.curvalue = trap_Cvar_VariableValue("r_bloom");
-        if(trap_Cvar_VariableValue("r_ext_texture_filter_anisotropic")) {
-            s_graphicsoptions.aniso.curvalue = trap_Cvar_VariableValue("r_ext_max_anisotropy")/2;
-        }
 	s_graphicsoptions.tq.curvalue = 3-trap_Cvar_VariableValue( "r_picmip");
 	if ( s_graphicsoptions.tq.curvalue < 0 )
 	{
@@ -894,8 +851,8 @@ void GraphicsOptions_MenuInit( void )
 
 	static const char *lighting_names[] =
 	{
-		"Lightmap (Normal)",
-		"Vertex (Low)",
+		"Lightmap",
+		"Vertex",
 		NULL
 	};
 
@@ -913,17 +870,6 @@ void GraphicsOptions_MenuInit( void )
 		"Trilinear",
 		NULL
 	};
-        
-        static const char *aniso_names[] =
-	{
-		"Off",
-		"2x",
-                "4x",
-                "6x",
-                "8x",
-		NULL
-	};
-        
 	static const char *quality_names[] =
 	{
 		"Low",
@@ -1100,24 +1046,6 @@ void GraphicsOptions_MenuInit( void )
 	s_graphicsoptions.lighting.generic.y	 = y;
 	s_graphicsoptions.lighting.itemnames     = lighting_names;
 	y += BIGCHAR_HEIGHT+2;
-        
-        // references/modifies "r_flares"
-	s_graphicsoptions.flares.generic.type     = MTYPE_SPINCONTROL;
-	s_graphicsoptions.flares.generic.name	  = "Flares:";
-	s_graphicsoptions.flares.generic.flags	  = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_graphicsoptions.flares.generic.x	      = 400;
-	s_graphicsoptions.flares.generic.y	      = y;
-	s_graphicsoptions.flares.itemnames	      = enabled_names;
-	y += BIGCHAR_HEIGHT+2;
-        
-        // references/modifies "r_bloom"
-	s_graphicsoptions.bloom.generic.type     = MTYPE_SPINCONTROL;
-	s_graphicsoptions.bloom.generic.name	  = "Bloom:";
-	s_graphicsoptions.bloom.generic.flags	  = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_graphicsoptions.bloom.generic.x	      = 400;
-	s_graphicsoptions.bloom.generic.y	      = y;
-	s_graphicsoptions.bloom.itemnames	      = enabled_names;
-	y += BIGCHAR_HEIGHT+2;
 
 	// references/modifies "r_lodBias" & "subdivisions"
 	s_graphicsoptions.geometry.generic.type  = MTYPE_SPINCONTROL;
@@ -1155,14 +1083,6 @@ void GraphicsOptions_MenuInit( void )
 	s_graphicsoptions.filter.generic.x	    = 400;
 	s_graphicsoptions.filter.generic.y	    = y;
 	s_graphicsoptions.filter.itemnames      = filter_names;
-	y += 2+BIGCHAR_HEIGHT;
-        
-        s_graphicsoptions.aniso.generic.type   = MTYPE_SPINCONTROL;
-	s_graphicsoptions.aniso.generic.name	= "Anisotropy:";
-	s_graphicsoptions.aniso.generic.flags	= QMF_PULSEIFFOCUS|QMF_SMALLFONT;
-	s_graphicsoptions.aniso.generic.x	    = 400;
-	s_graphicsoptions.aniso.generic.y	    = y;
-	s_graphicsoptions.aniso.itemnames      = aniso_names;
 	y += 2*BIGCHAR_HEIGHT;
 
 	s_graphicsoptions.driverinfo.generic.type     = MTYPE_PTEXT;
@@ -1213,13 +1133,10 @@ void GraphicsOptions_MenuInit( void )
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.colordepth );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting );
-        Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.flares );
-        Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.bloom );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.filter );
-        Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.aniso );
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driverinfo );
 
 	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.back );
@@ -1261,3 +1178,4 @@ void UI_GraphicsOptionsMenu( void ) {
 	UI_PushMenu( &s_graphicsoptions.menu );
 	Menu_SetCursorToItem( &s_graphicsoptions.menu, &s_graphicsoptions.graphics );
 }
+
Only in ioquake3serverFix/code/qcommon: files.c.orig
diff -upr ioquake3svn1438/code/qcommon/qcommon.h ioquake3serverFix/code/qcommon/qcommon.h
--- ioquake3svn1438/code/qcommon/qcommon.h	2008-08-06 13:04:36.000000000 -0500
+++ ioquake3serverFix/code/qcommon/qcommon.h	2008-08-09 15:24:09.000000000 -0500
@@ -234,7 +234,6 @@ PROTOCOL
 //Open Arena up to 0.7.6 used 68
 //Open Arena 0.7.7 uses 69
 //Open Arena 0.8.0 will use protocol 70
-//Open Arena Release Candidates uses 10 and forward...
 #define	PROTOCOL_VERSION	70
 // 1.31 - 67
 
Only in ioquake3svn1438/code/renderer: tr_backend.c.rej
diff -upr ioquake3svn1438/code/renderer/tr_bloom.c ioquake3serverFix/code/renderer/tr_bloom.c
--- ioquake3svn1438/code/renderer/tr_bloom.c	2008-08-05 14:58:52.000000000 -0500
+++ ioquake3serverFix/code/renderer/tr_bloom.c	2008-08-09 15:22:37.000000000 -0500
@@ -443,3 +443,4 @@ void R_BloomInit( void ) {
 	r_bloom_sample_size = ri.Cvar_Get( "r_bloom_sample_size", "128", CVAR_ARCHIVE|CVAR_LATCH );
 	r_bloom_fast_sample = ri.Cvar_Get( "r_bloom_fast_sample", "0", CVAR_ARCHIVE|CVAR_LATCH );
 }
+
Only in ioquake3serverFix/code/renderer: tr_init.c.orig
Only in ioquake3svn1438/code/renderer: tr_init.c.rej
Only in ioquake3serverFix/code/renderer: tr_local.h.orig
Only in ioquake3svn1438/code/renderer: tr_local.h.rej
diff -upr ioquake3svn1438/code/sdl/sdl_glimp.c ioquake3serverFix/code/sdl/sdl_glimp.c
--- ioquake3svn1438/code/sdl/sdl_glimp.c	2008-08-05 14:26:56.000000000 -0500
+++ ioquake3serverFix/code/sdl/sdl_glimp.c	2008-08-09 11:28:12.000000000 -0500
@@ -78,6 +78,7 @@ typedef enum
 static SDL_Surface *screen = NULL;
 
 cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained
+cvar_t *r_sdlDriver;
 
 void (APIENTRYP qglActiveTextureARB) (GLenum texture);
 void (APIENTRYP qglClientActiveTextureARB) (GLenum texture);
@@ -416,12 +417,14 @@ static qboolean GLimp_StartDriverAndSetM
 
 		if (SDL_Init(SDL_INIT_VIDEO) == -1)
 		{
-			ri.Printf( PRINT_ALL, "SDL_Init FAILED (%s)\n", SDL_GetError());
+			ri.Printf( PRINT_ALL, "SDL_Init( SDL_INIT_VIDEO ) FAILED (%s)\n",
+					SDL_GetError());
 			return qfalse;
 		}
 
 		SDL_VideoDriverName( driverName, sizeof( driverName ) - 1 );
 		ri.Printf( PRINT_ALL, "SDL using driver \"%s\"\n", driverName );
+		Cvar_Set( "r_sdlDriver", driverName );
 	}
 
 	if (fullscreen && Cvar_VariableIntegerValue( "in_nograb" ) )
@@ -641,6 +644,9 @@ void GLimp_Init( void )
 	qboolean success = qtrue;
 
 	r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
+	r_sdlDriver = ri.Cvar_Get( "r_sdlDriver", "", CVAR_ROM );
+
+	Sys_GLimpInit( );
 
 	// create the window and set up the context
 	if( !GLimp_StartDriverAndSetMode( r_mode->integer, r_fullscreen->integer ) )
@@ -679,8 +685,6 @@ void GLimp_Init( void )
 
 	// This depends on SDL_INIT_VIDEO, hence having it here
 	IN_Init( );
-
-	return;
 }
 
 
@@ -731,6 +735,8 @@ void GLimp_EndFrame( void )
 		if( !sdlToggled )
 			Cbuf_AddText( "vid_restart" );
 
+		IN_Restart( );
+
 		r_fullscreen->modified = qfalse;
 	}
 }
Only in ioquake3svn1438/code/sdl: sdl_icon.h.rej
diff -upr ioquake3svn1438/code/sdl/sdl_input.c ioquake3serverFix/code/sdl/sdl_input.c
--- ioquake3svn1438/code/sdl/sdl_input.c	2008-08-05 14:47:02.000000000 -0500
+++ ioquake3serverFix/code/sdl/sdl_input.c	2008-08-09 11:28:12.000000000 -0500
@@ -41,11 +41,6 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define MACOS_X_CURSOR_HACK
 #endif
 
-//Sago's Windows acceleration hack! (Basically Windows has the same problem as Mac OS X)
-#ifdef _WIN32
-#define WIN_ACCELERATION_HACK
-#endif
-
 #ifdef MACOS_X_ACCELERATION_HACK
 #include <IOKit/IOTypes.h>
 #include <IOKit/hidsystem/IOHIDLib.h>
@@ -72,10 +67,6 @@ static cvar_t *in_joystick          = NU
 static cvar_t *in_joystickDebug     = NULL;
 static cvar_t *in_joystickThreshold = NULL;
 
-#ifdef WIN_ACCELERATION_HACK
-static DWORD org_mouseInfo[3];
-#endif
-
 /*
 ===============
 IN_TranslateSDLToQ3Key
@@ -258,27 +249,9 @@ IN_ActivateMouse
 */
 static void IN_ActivateMouse( void )
 {
-#ifdef WIN_ACCELERATION_HACK
-	DWORD mouseInfo[3];
-#endif
-
 	if (!mouseAvailable || !SDL_WasInit( SDL_INIT_VIDEO ) )
 		return;
 
-#ifdef WIN_ACCELERATION_HACK
-	if (!mouseActive) 
-	{
-		SystemParametersInfo(SPI_GETMOUSE, NULL, &mouseInfo, SPIF_UPDATEINIFILE);
-		org_mouseInfo[0]=mouseInfo[0];
-		org_mouseInfo[1]=mouseInfo[1];
-		org_mouseInfo[2]=mouseInfo[2];
-		if(mouseInfo[2]!=0) {
-			mouseInfo[2]=0; //Kill Acceleration
-			SystemParametersInfo(SPI_SETMOUSE, NULL, &mouseInfo, SPIF_UPDATEINIFILE);
-		}
-	}
-#endif
-
 #ifdef MACOS_X_ACCELERATION_HACK
 	if (!mouseActive) // mac os x mouse accel hack
 	{
@@ -350,13 +323,16 @@ IN_DeactivateMouse
 */
 static void IN_DeactivateMouse( void )
 {
-	if (!mouseAvailable || !SDL_WasInit( SDL_INIT_VIDEO ) )
+	if( !SDL_WasInit( SDL_INIT_VIDEO ) )
 		return;
 
-#ifdef WIN_ACCELERATION_HACK
-	if (mouseActive && org_mouseInfo[2]!=0)
-		SystemParametersInfo(SPI_SETMOUSE, NULL, &org_mouseInfo, SPIF_UPDATEINIFILE);
-#endif
+	// Always show the cursor when the mouse is disabled,
+	// but not when fullscreen
+	if( !r_fullscreen->integer )
+		SDL_ShowCursor( 1 );
+
+	if( !mouseAvailable )
+		return;
 
 #ifdef MACOS_X_ACCELERATION_HACK
 	if (mouseActive) // mac os x mouse accel hack
@@ -381,7 +357,6 @@ static void IN_DeactivateMouse( void )
 	{
 		SDL_WM_GrabInput( SDL_GRAB_OFF );
 		SDL_WarpMouse( glConfig.vidWidth / 2, glConfig.vidHeight / 2 );
-		SDL_ShowCursor( 1 );
 
 		mouseActive = qfalse;
 	}
@@ -430,10 +405,10 @@ struct
 
 /*
 ===============
-IN_StartupJoystick
+IN_InitJoystick
 ===============
 */
-static void IN_StartupJoystick( void )
+static void IN_InitJoystick( void )
 {
 	int i = 0;
 	int total = 0;
@@ -484,8 +459,22 @@ static void IN_StartupJoystick( void )
 	Com_DPrintf( "Balls: %d\n", SDL_JoystickNumBalls(stick) );
 
 	SDL_JoystickEventState(SDL_QUERY);
+}
+
+/*
+===============
+IN_ShutdownJoystick
+===============
+*/
+static void IN_ShutdownJoystick( void )
+{
+	if (stick)
+	{
+		SDL_JoystickClose(stick);
+		stick = NULL;
+	}
 
-	return;
+	SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
 }
 
 /*
@@ -805,18 +794,22 @@ void IN_Init(void)
 	in_disablemacosxmouseaccel = Cvar_Get ("in_disablemacosxmouseaccel", "1", CVAR_ARCHIVE);
 #endif
 
-	Cvar_Set( "cl_platformSensitivity", "1.0" );
-
 	SDL_EnableUNICODE(1);
 	SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
 	keyRepeatEnabled = qtrue;
 
-	if (in_mouse->value)
+	if( in_mouse->value )
+	{
 		mouseAvailable = qtrue;
+		IN_ActivateMouse( );
+	}
 	else
+	{
+		IN_DeactivateMouse( );
 		mouseAvailable = qfalse;
+	}
 
-	IN_StartupJoystick( );
+	IN_InitJoystick( );
 	Com_DPrintf ("------------------------------------\n");
 }
 
@@ -825,17 +818,21 @@ void IN_Init(void)
 IN_Shutdown
 ===============
 */
-void IN_Shutdown(void)
+void IN_Shutdown( void )
 {
-	IN_DeactivateMouse();
-
+	IN_DeactivateMouse( );
 	mouseAvailable = qfalse;
 
-	if (stick)
-	{
-		SDL_JoystickClose(stick);
-		stick = NULL;
-	}
+	IN_ShutdownJoystick( );
+}
 
-	SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
+/*
+===============
+IN_Restart
+===============
+*/
+void IN_Restart( void )
+{
+	IN_ShutdownJoystick( );
+	IN_Init( );
 }
Only in ioquake3svn1438/code/sdl: sdl_input.c.rej
Only in ioquake3svn1438/code/SDL12/include: wspiapi.h
diff -upr ioquake3svn1438/code/server/sv_ccmds.c ioquake3serverFix/code/server/sv_ccmds.c
--- ioquake3svn1438/code/server/sv_ccmds.c	2008-07-23 12:10:56.000000000 -0500
+++ ioquake3serverFix/code/server/sv_ccmds.c	2008-08-09 15:22:37.000000000 -0500
@@ -433,6 +433,18 @@ static void SV_Ban_f( void ) {
 		return;
 	}
 
+	if(strlen(AUTHORIZE_SERVER_NAME) < 1)
+	{
+		Com_Printf("Ban function disabled due to lack of authorizing server.\n");
+		return;
+	}
+
+	if(strlen(AUTHORIZE_SERVER_NAME) < 1)
+	{
+		Com_Printf("Ban function disabled due to lack of authorizing server.\n");
+		return;
+	}
+
 	// look up the authorize server's IP
 	if ( !svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD ) {
 		Com_Printf( "Resolving %s\n", AUTHORIZE_SERVER_NAME );
@@ -487,6 +499,18 @@ static void SV_BanNum_f( void ) {
 		return;
 	}
 
+	if(strlen(AUTHORIZE_SERVER_NAME) < 1)
+	{
+		Com_Printf("Ban function disabled due to lack of authorizing server.\n");
+		return;
+	}
+
+	if(strlen(AUTHORIZE_SERVER_NAME) < 1)
+	{
+		Com_Printf("Ban function disabled due to lack of authorizing server.\n");
+		return;
+	}
+
 	// look up the authorize server's IP
 	if ( !svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD ) {
 		Com_Printf( "Resolving %s\n", AUTHORIZE_SERVER_NAME );
diff -upr ioquake3svn1438/code/server/sv_client.c ioquake3serverFix/code/server/sv_client.c
--- ioquake3svn1438/code/server/sv_client.c	2008-07-23 12:10:56.000000000 -0500
+++ ioquake3serverFix/code/server/sv_client.c	2008-08-09 15:22:37.000000000 -0500
@@ -82,11 +82,11 @@ void SV_GetChallenge( netadr_t from ) {
 	}
 
 #ifdef STANDALONE
-	if(Cvar_VariableIntegerValue("com_standalone"))
-	{
+	//if(Cvar_VariableIntegerValue("com_standalone"))
+	//{
 		challenge->pingTime = svs.time;
 		NET_OutOfBandPrint( NS_SERVER, from, "challengeResponse %i", challenge->challenge );
-	}
+	//}
 #else
 	// if they are on a lan address, send the challengeResponse immediately
 	if ( Sys_IsLANAddress( from ) ) {
diff -upr ioquake3svn1438/code/server/sv_init.c ioquake3serverFix/code/server/sv_init.c
--- ioquake3svn1438/code/server/sv_init.c	2008-08-05 14:47:02.000000000 -0500
+++ ioquake3serverFix/code/server/sv_init.c	2008-08-09 11:28:19.000000000 -0500
@@ -287,6 +287,8 @@ void SV_Startup( void ) {
 
 	Cvar_Set( "sv_running", "1" );
 	
+	// Join the ipv6 multicast group now that a map is running so clients can scan for us on the local network.
+	NET_JoinMulticast6();
 }
 
 
@@ -742,6 +744,8 @@ void SV_Shutdown( char *finalmsg ) {
 
 	Com_Printf( "----- Server Shutdown (%s) -----\n", finalmsg );
 
+	NET_LeaveMulticast6();
+
 	if ( svs.clients && !com_errorEntered ) {
 		SV_FinalMessage( finalmsg );
 	}
Only in ioquake3svn1438/code/server: sv_init.c.rej
diff -upr ioquake3svn1438/code/server/sv_main.c ioquake3serverFix/code/server/sv_main.c
--- ioquake3svn1438/code/server/sv_main.c	2008-08-05 14:47:02.000000000 -0500
+++ ioquake3serverFix/code/server/sv_main.c	2008-08-09 15:22:37.000000000 -0500
@@ -412,6 +412,10 @@ void SVC_Info( netadr_t from ) {
 		va("%i", sv_maxclients->integer - sv_privateClients->integer ) );
 	Info_SetValueForKey( infostring, "gametype", va("%i", sv_gametype->integer ) );
 	Info_SetValueForKey( infostring, "pure", va("%i", sv_pure->integer ) );
+	//Sago's things:
+	Info_SetValueForKey( infostring, "g_needpass", va("%i", (int)Cvar_VariableValue("g_needpass") ) );
+	Info_SetValueForKey( infostring, "g_humanplayers", va("%i", (int)Cvar_VariableValue("g_humanplayers") ) );
+	//Sago's end
 
 #ifdef USE_VOIP
 	if (sv_voip->integer) {
Only in ioquake3serverFix/code/server: sv_main.c.orig
Only in ioquake3svn1438/code/server: sv_main.c.rej
diff -upr ioquake3svn1438/code/sys/sys_local.h ioquake3serverFix/code/sys/sys_local.h
--- ioquake3svn1438/code/sys/sys_local.h	2008-08-05 14:26:57.000000000 -0500
+++ ioquake3serverFix/code/sys/sys_local.h	2008-08-09 11:28:24.000000000 -0500
@@ -32,6 +32,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 void IN_Init( void );
 void IN_Frame( void );
 void IN_Shutdown( void );
+void IN_Restart( void );
 
 // Console
 void CON_Shutdown( void );
@@ -47,6 +48,7 @@ unsigned int CON_LogRead( char *out, uns
 char *Sys_StripAppBundle( char *pwd );
 #endif
 
+void Sys_GLimpInit( void );
 void Sys_PlatformInit( void );
 void Sys_SigHandler( int signal );
 void Sys_ErrorDialog( const char *error );
diff -upr ioquake3svn1438/code/sys/sys_main.c ioquake3serverFix/code/sys/sys_main.c
--- ioquake3svn1438/code/sys/sys_main.c	2008-08-05 14:26:57.000000000 -0500
+++ ioquake3serverFix/code/sys/sys_main.c	2008-08-09 11:28:24.000000000 -0500
@@ -112,8 +112,7 @@ Restart the input subsystem
 */
 void Sys_In_Restart_f( void )
 {
-	IN_Shutdown();
-	IN_Init();
+	IN_Restart( );
 }
 
 /*
@@ -551,16 +550,6 @@ int main( int argc, char **argv )
 
 	CON_Init( );
 
-#ifndef _WIN32
-	// Windows doesn't have these signals
-	// see CON_CtrlHandler() in con_win32.c
-	signal( SIGHUP, Sys_SigHandler );
-	signal( SIGQUIT, Sys_SigHandler );
-	signal( SIGTRAP, Sys_SigHandler );
-	signal( SIGIOT, Sys_SigHandler );
-	signal( SIGBUS, Sys_SigHandler );
-#endif
-
 	signal( SIGILL, Sys_SigHandler );
 	signal( SIGFPE, Sys_SigHandler );
 	signal( SIGSEGV, Sys_SigHandler );
diff -upr ioquake3svn1438/code/sys/sys_unix.c ioquake3serverFix/code/sys/sys_unix.c
--- ioquake3svn1438/code/sys/sys_unix.c	2008-08-05 14:48:55.000000000 -0500
+++ ioquake3serverFix/code/sys/sys_unix.c	2008-08-09 15:22:37.000000000 -0500
@@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #include "../qcommon/qcommon.h"
 #include "sys_local.h"
 
+#include <signal.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
@@ -514,6 +515,18 @@ void Sys_ErrorDialog( const char *error 
 
 /*
 ==============
+Sys_GLimpInit
+
+Unix specific GL implementation initialisation
+==============
+*/
+void Sys_GLimpInit( void )
+{
+	// NOP
+}
+
+/*
+==============
 Sys_PlatformInit
 
 Unix specific initialisation
@@ -521,5 +534,9 @@ Unix specific initialisation
 */
 void Sys_PlatformInit( void )
 {
-	// NOP
+	signal( SIGHUP, Sys_SigHandler );
+	signal( SIGQUIT, Sys_SigHandler );
+	signal( SIGTRAP, Sys_SigHandler );
+	signal( SIGIOT, Sys_SigHandler );
+	signal( SIGBUS, Sys_SigHandler );
 }
Only in ioquake3serverFix/code/sys: sys_unix.c.orig
diff -upr ioquake3svn1438/code/sys/sys_win32.c ioquake3serverFix/code/sys/sys_win32.c
--- ioquake3svn1438/code/sys/sys_win32.c	2008-08-05 14:48:55.000000000 -0500
+++ ioquake3serverFix/code/sys/sys_win32.c	2008-08-09 15:22:37.000000000 -0500
@@ -577,6 +577,40 @@ void Sys_ErrorDialog( const char *error 
 	}
 }
 
+#ifndef DEDICATED
+static qboolean SDL_VIDEODRIVER_externallySet = qfalse;
+#endif
+
+/*
+==============
+Sys_GLimpInit
+
+Windows specific GL implementation initialisation
+==============
+*/
+void Sys_GLimpInit( void )
+{
+#ifndef DEDICATED
+	if( !SDL_VIDEODRIVER_externallySet )
+	{
+		// It's a little bit weird having in_mouse control the
+		// video driver, but from ioq3's point of view they're
+		// virtually the same except for the mouse input anyway
+		if( Cvar_VariableIntegerValue( "in_mouse" ) == -1 )
+		{
+			// Use the windib SDL backend, which is closest to
+			// the behaviour of idq3 with in_mouse set to -1
+			_putenv( "SDL_VIDEODRIVER=windib" );
+		}
+		else
+		{
+			// Use the DirectX SDL backend
+			_putenv( "SDL_VIDEODRIVER=directx" );
+		}
+	}
+#endif
+}
+
 /*
 ==============
 Sys_PlatformInit
@@ -587,7 +621,15 @@ Windows specific initialisation
 void Sys_PlatformInit( void )
 {
 #ifndef DEDICATED
-	// Force the DirectX SDL backend to be used
-	_putenv( "SDL_VIDEODRIVER=directx" );
+	const char *SDL_VIDEODRIVER = getenv( "SDL_VIDEODRIVER" );
+
+	if( SDL_VIDEODRIVER )
+	{
+		Com_Printf( "SDL_VIDEODRIVER is externally set to \"%s\", "
+				"in_mouse -1 will have no effect\n", SDL_VIDEODRIVER );
+		SDL_VIDEODRIVER_externallySet = qtrue;
+	}
+	else
+		SDL_VIDEODRIVER_externallySet = qfalse;
 #endif
 }
Only in ioquake3svn1438/code/ui: compile.bat
diff -upr ioquake3svn1438/code/ui/ui_atoms.c ioquake3serverFix/code/ui/ui_atoms.c
--- ioquake3svn1438/code/ui/ui_atoms.c	2008-06-22 03:28:43.000000000 -0500
+++ ioquake3serverFix/code/ui/ui_atoms.c	2008-08-09 11:28:23.000000000 -0500
@@ -76,7 +76,7 @@ void UI_StartDemoLoop( void ) {
 }
 
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static void NeedCDAction( qboolean result ) {
 	if ( !result ) {
 		trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
@@ -84,7 +84,7 @@ static void NeedCDAction( qboolean resul
 }
 #endif // MISSIONPACK
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static void NeedCDKeyAction( qboolean result ) {
 	if ( !result ) {
 		trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
Only in ioquake3svn1438/code/ui: ui.bat
diff -upr ioquake3svn1438/code/ui/ui_gameinfo.c ioquake3serverFix/code/ui/ui_gameinfo.c
--- ioquake3svn1438/code/ui/ui_gameinfo.c	2008-06-22 03:28:43.000000000 -0500
+++ ioquake3serverFix/code/ui/ui_gameinfo.c	2008-08-09 11:28:23.000000000 -0500
@@ -38,7 +38,7 @@ static char		*ui_botInfos[MAX_BOTS];
 static int		ui_numArenas;
 static char		*ui_arenaInfos[MAX_ARENAS];
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static int		ui_numSinglePlayerArenas;
 static int		ui_numSpecialSinglePlayerArenas;
 #endif
@@ -198,18 +198,6 @@ void UI_LoadArenas( void ) {
 			if( strstr( type, "harvester" ) ) {
 				uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_HARVESTER);
 			}
-			if( strstr( type, "elimination" ) ) {
-				uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_ELIMINATION);
-			}
-			if( strstr( type, "ctfelimination" ) ) {
-				uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_CTF_ELIMINATION);
-			}
-			if( strstr( type, "lms" ) ) {
-				uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_LMS);
-			}
-			if( strstr( type, "dd" ) ) {
-				uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_DOUBLE_D);
-			}
 		} else {
 			uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_FFA);
 		}
diff -upr ioquake3svn1438/code/ui/ui_main.c ioquake3serverFix/code/ui/ui_main.c
--- ioquake3svn1438/code/ui/ui_main.c	2008-06-22 03:28:43.000000000 -0500
+++ ioquake3serverFix/code/ui/ui_main.c	2008-08-09 11:28:23.000000000 -0500
@@ -64,7 +64,7 @@ static const int numNetSources = sizeof(
 
 static const serverFilter_t serverFilters[] = {
 	{"All", "" },
-	{"OpenArena", "" },
+	{"Quake 3 Arena", "" },
 	{"Team Arena", "missionpack" },
 	{"Rocket Arena", "arena" },
 	{"Alliance", "alliance20" },
@@ -81,11 +81,7 @@ static const char *teamArenaGameTypes[] 
 	"1FCTF",
 	"OVERLOAD",
 	"HARVESTER",
-	"TEAMTOURNAMENT",
-	"ELIMINATION",
-	"CTFELIMINATION",
-	"LMS",
-	"DD"
+	"TEAMTOURNAMENT"
 };
 
 static int const numTeamArenaGameTypes = sizeof(teamArenaGameTypes) / sizeof(const char*);
@@ -101,10 +97,6 @@ static const char *teamArenaGameNames[] 
 	"Overload",
 	"Harvester",
 	"Team Tournament",
-	"Elimination",
-	"CTF Elimination",
-	"Last Man Standing",
-	"Double Domination"
 };
 
 static int const numTeamArenaGameNames = sizeof(teamArenaGameNames) / sizeof(const char*);
@@ -127,8 +119,8 @@ static char* netnames[] = {
 	NULL
 };
 
-#ifndef MISSIONPACK // bk001206
-static char quake3worldMessage[] = "Visit www.openarena.ws - News, Community, Events, Files";
+#ifndef MISSIONPACK
+static char quake3worldMessage[] = "Visit www.quake3world.com - News, Community, Events, Files";
 #endif
 
 static int gamecodetoui[] = {4,2,3,0,5,1,6};
@@ -211,7 +203,7 @@ intptr_t vmMain( int command, int arg0, 
 		  UI_DrawConnectScreen( arg0 );
 		  return 0;
 	  case UI_HASUNIQUECDKEY: // mod authors need to observe this
-	    return qtrue; // bk010117 - change this to qfalse for mods!
+	    return qtrue; // change this to qfalse for mods!
 
 	}
 
@@ -320,7 +312,7 @@ int Text_Height(const char *text, float 
 	float max;
 	glyphInfo_t *glyph;
 	float useScale;
-	const char *s = text; // bk001206 - unsigned
+	const char *s = text;
 	fontInfo_t *font = &uiInfo.uiDC.Assets.textFont;
 	if (scale <= ui_smallFont.value) {
 		font = &uiInfo.uiDC.Assets.smallFont;
@@ -373,7 +365,7 @@ void Text_Paint(float x, float y, float 
 	}
 	useScale = scale * font->glyphScale;
   if (text) {
-    const char *s = text; // bk001206 - unsigned
+    const char *s = text;
 		trap_R_SetColor( color );
 		memcpy(&newColor[0], &color[0], sizeof(vec4_t));
     len = strlen(text);
@@ -442,7 +434,7 @@ void Text_PaintWithCursor(float x, float
 	}
 	useScale = scale * font->glyphScale;
   if (text) {
-    const char *s = text; // bk001206 - unsigned
+    const char *s = text;
 		trap_R_SetColor( color );
 		memcpy(&newColor[0], &color[0], sizeof(vec4_t));
     len = strlen(text);
@@ -450,7 +442,7 @@ void Text_PaintWithCursor(float x, float
 			len = limit;
 		}
 		count = 0;
-		glyph2 = &font->glyphs[ (int) cursor]; // bk001206 - possible signed char
+		glyph2 = &font->glyphs[ (int) cursor];
 		while (s && *s && count < len) {
 			glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
       //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top;
@@ -532,7 +524,7 @@ static void Text_Paint_Limit(float *maxX
 	vec4_t newColor;
 	glyphInfo_t *glyph;
   if (text) {
-    const char *s = text; // bk001206 - unsigned
+    const char *s = text;
 		float max = *maxX;
 		float useScale;
 		fontInfo_t *font = &uiInfo.uiDC.Assets.textFont;
@@ -1014,7 +1006,7 @@ void UI_Load(void) {
 }
 
 static const char *handicapValues[] = {"None","95","90","85","80","75","70","65","60","55","50","45","40","35","30","25","20","15","10","5",NULL};
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static int numHandicaps = sizeof(handicapValues) / sizeof(const char*);
 #endif
 
@@ -1419,7 +1411,7 @@ static void UI_DrawTierGameType(rectDef_
 }
 
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static const char *UI_OpponentLeaderName(void) {
   int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName"));
 	return uiInfo.teamList[i].teamMembers[0];
@@ -1433,10 +1425,10 @@ static const char *UI_AIFromName(const c
 			return uiInfo.aliasList[j].ai;
 		}
 	}
-	return "sergei";
+	return "James";
 }
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static const int UI_AIIndex(const char *name) {
 	int j;
 	for (j = 0; j < uiInfo.characterCount; j++) {
@@ -1448,7 +1440,7 @@ static const int UI_AIIndex(const char *
 }
 #endif
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static const int UI_AIIndexFromName(const char *name) {
 	int j;
 	for (j = 0; j < uiInfo.aliasCount; j++) {
@@ -1461,14 +1453,14 @@ static const int UI_AIIndexFromName(cons
 #endif
 
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static const char *UI_OpponentLeaderHead(void) {
 	const char *leader = UI_OpponentLeaderName();
 	return UI_AIFromName(leader);
 }
 #endif
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static const char *UI_OpponentLeaderModel(void) {
 	int i;
 	const char *head = UI_OpponentLeaderHead();
@@ -1477,7 +1469,7 @@ static const char *UI_OpponentLeaderMode
 			return uiInfo.characterList[i].base;
 		}
 	}
-	return "sergei";
+	return "James";
 }
 #endif
 
@@ -1755,7 +1747,7 @@ static void UI_DrawBotName(rectDef_t *re
 	int value = uiInfo.botIndex;
 	int game = trap_Cvar_VariableValue("g_gametype");
 	const char *text = "";
-	if (game >= GT_TEAM && !GT_LMS ) {
+	if (game >= GT_TEAM) {
 		if (value >= uiInfo.characterCount) {
 			value = 0;
 		}
@@ -2156,14 +2148,14 @@ static qboolean UI_OwnerDrawVisible(int 
 	while (flags) {
 
 		if (flags & UI_SHOW_FFA) {
-			if (trap_Cvar_VariableValue("g_gametype") != GT_FFA || trap_Cvar_VariableValue("g_gametype") != GT_LMS ) {
+			if (trap_Cvar_VariableValue("g_gametype") != GT_FFA) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_FFA;
 		}
 
 		if (flags & UI_SHOW_NOTFFA) {
-			if (trap_Cvar_VariableValue("g_gametype") == GT_FFA || trap_Cvar_VariableValue("g_gametype") == GT_LMS ) {
+			if (trap_Cvar_VariableValue("g_gametype") == GT_FFA) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_NOTFFA;
@@ -2207,25 +2199,25 @@ static qboolean UI_OwnerDrawVisible(int 
 			flags &= ~UI_SHOW_NOTFAVORITESERVERS;
 		} 
 		if (flags & UI_SHOW_ANYTEAMGAME) {
-			if (uiInfo.gameTypes[ui_gameType.integer].gtEnum <= GT_TEAM && uiInfo.gameTypes[ui_gameType.integer].gtEnum != GT_LMS ) {
+			if (uiInfo.gameTypes[ui_gameType.integer].gtEnum <= GT_TEAM ) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_ANYTEAMGAME;
 		} 
 		if (flags & UI_SHOW_ANYNONTEAMGAME) {
-			if (uiInfo.gameTypes[ui_gameType.integer].gtEnum > GT_TEAM || uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_LMS ) {
+			if (uiInfo.gameTypes[ui_gameType.integer].gtEnum > GT_TEAM ) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_ANYNONTEAMGAME;
 		} 
 		if (flags & UI_SHOW_NETANYTEAMGAME) {
-			if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum <= GT_TEAM && uiInfo.gameTypes[ui_gameType.integer].gtEnum != GT_LMS ) {
+			if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum <= GT_TEAM ) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_NETANYTEAMGAME;
 		} 
 		if (flags & UI_SHOW_NETANYNONTEAMGAME) {
-			if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum > GT_TEAM || uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_LMS ) {
+			if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum > GT_TEAM ) {
 				vis = qfalse;
 			}
 			flags &= ~UI_SHOW_NETANYNONTEAMGAME;
@@ -2503,12 +2495,8 @@ static qboolean UI_NetSource_HandleKey(i
 		
 		if (key == K_MOUSE2) {
 			ui_netSource.integer--;
-			if (ui_netSource.integer == AS_MPLAYER)
-				ui_netSource.integer--;
 		} else {
 			ui_netSource.integer++;
-			if (ui_netSource.integer == AS_MPLAYER)
-				ui_netSource.integer++;
 		}
     
 		if (ui_netSource.integer >= numNetSources) {
@@ -2570,7 +2558,7 @@ static qboolean UI_BotName_HandleKey(int
 			value++;
 		}
 
-		if (game >= GT_TEAM && !GT_LMS) {
+		if (game >= GT_TEAM) {
 			if (value >= uiInfo.characterCount + 2) {
 				value = 0;
 			} else if (value < 0) {
@@ -3172,7 +3160,7 @@ static void UI_RunMenuScript(char **args
 			trap_Cvar_Set("cg_cameraOrbit", "0");
 			trap_Cvar_Set("ui_singlePlayerActive", "0");
 			trap_Cvar_SetValue( "dedicated", Com_Clamp( 0, 2, ui_dedicated.integer ) );
-			trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 13, uiInfo.gameTypes[ui_netGameType.integer].gtEnum ) );
+			trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 8, uiInfo.gameTypes[ui_netGameType.integer].gtEnum ) );
 			trap_Cvar_Set("g_redTeam", UI_Cvar_VariableString("ui_teamName"));
 			trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName"));
 			trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName ) );
@@ -3409,7 +3397,7 @@ static void UI_RunMenuScript(char **args
 				trap_Cmd_ExecuteText( EXEC_APPEND, va("callteamvote leader %s\n",uiInfo.teamNames[uiInfo.teamIndex]) );
 			}
 		} else if (Q_stricmp(name, "addBot") == 0) {
-			if (trap_Cvar_VariableValue("g_gametype") >= GT_TEAM && !GT_LMS ) {
+			if (trap_Cvar_VariableValue("g_gametype") >= GT_TEAM) {
 				trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", uiInfo.characterList[uiInfo.botIndex].name, uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") );
 			} else {
 				trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", UI_GetBotNameByNumber(uiInfo.botIndex), uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") );
@@ -4598,9 +4586,9 @@ static qboolean Character_Parse(char **p
 			uiInfo.characterList[uiInfo.characterCount].imageName = String_Alloc(va("models/players/heads/%s/icon_default.tga", uiInfo.characterList[uiInfo.characterCount].name));
 
 	  if (tempStr && (!Q_stricmp(tempStr, "female"))) {
-        uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("kyonshi"));
+        uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("Janet"));
       } else if (tempStr && (!Q_stricmp(tempStr, "male"))) {
-        uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("sergei"));
+        uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("James"));
 	  } else {
         uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("%s",tempStr));
 	  }
@@ -4904,9 +4892,8 @@ static void UI_Pause(qboolean b) {
 	}
 }
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static int UI_OwnerDraw_Width(int ownerDraw) {
-  // bk001205 - LCC missing return value
   return 0;
 }
 #endif
@@ -5013,7 +5000,7 @@ static void UI_BuildQ3Model_List( void )
 				}
 				if (!dirty) {
 					Com_sprintf( uiInfo.q3HeadNames[uiInfo.q3HeadCount], sizeof(uiInfo.q3HeadNames[uiInfo.q3HeadCount]), "%s", scratch);
-                                    uiInfo.q3HeadIcons[uiInfo.q3HeadCount++] = trap_R_RegisterShaderNoMip(va("models/players/%s/%s",dirptr,skinname));
+					uiInfo.q3HeadIcons[uiInfo.q3HeadCount++] = trap_R_RegisterShaderNoMip(va("models/players/%s/%s",dirptr,skinname));
 				}
 			}
 
@@ -5138,7 +5125,7 @@ void _UI_Init( qboolean inGameLoad ) {
 #if 0
 	if (uiInfo.inGameLoad) {
 		UI_LoadMenus("ui/ingame.txt", qtrue);
-	} else { // bk010222: left this: UI_LoadMenus(menuSet, qtrue);
+	} else {
 	}
 #else 
 	UI_LoadMenus(menuSet, qtrue);
@@ -5432,8 +5419,8 @@ static void UI_DisplayDownloadInfo( cons
 	Text_PaintCenter(centerPoint, yStart + 248, scale, colorWhite, xferText, 0);
 
 	if (downloadSize > 0) {
- 		s = va( "%s (%d%%)", downloadName,
- 			(int)( (float)downloadCount * 100.0f / downloadSize ) );
+		s = va( "%s (%d%%)", downloadName,
+			(int)( (float)downloadCount * 100.0f / downloadSize ) );
 	} else {
 		s = downloadName;
 	}
@@ -5705,8 +5692,6 @@ vmCvar_t	ui_realCaptureLimit;
 vmCvar_t	ui_realWarmUp;
 vmCvar_t	ui_serverStatusTimeOut;
 
-
-// bk001129 - made static to avoid aliasing
 static cvarTable_t		cvarTable[] = {
 	{ &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE },
 	{ &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE },
@@ -5829,7 +5814,6 @@ static cvarTable_t		cvarTable[] = {
 
 };
 
-// bk001129 - made static to avoid aliasing
 static int		cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]);
 
 
@@ -5893,7 +5877,7 @@ static void UI_StopServerRefresh( void )
 ArenaServers_MaxPing
 =================
 */
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static int ArenaServers_MaxPing( void ) {
 	int		maxPing;
 
@@ -5955,7 +5939,6 @@ UI_StartServerRefresh
 */
 static void UI_StartServerRefresh(qboolean full)
 {
-	int		i;
 	char	*ptr;
 
 	qtime_t q;
@@ -5984,20 +5967,14 @@ static void UI_StartServerRefresh(qboole
 	}
 
 	uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 5000;
-	if( ui_netSource.integer == AS_GLOBAL || ui_netSource.integer == AS_MPLAYER ) {
-		if( ui_netSource.integer == AS_GLOBAL ) {
-			i = 0;
-		}
-		else {
-			i = 1;
-		}
+	if( ui_netSource.integer == AS_GLOBAL ) {
 
 		ptr = UI_Cvar_VariableString("debug_protocol");
 		if (strlen(ptr)) {
-			trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %s full empty\n", i, ptr));
+			trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers 0 %s full empty\n", ptr));
 		}
 		else {
-			trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %d full empty\n", i, (int)trap_Cvar_VariableValue( "protocol" ) ) );
+			trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers 0 %d full empty\n", (int)trap_Cvar_VariableValue( "protocol" ) ) );
 		}
 	}
 }
Only in ioquake3svn1438/code/ui: ui.q3asm
diff -upr ioquake3svn1438/code/ui/ui_shared.c ioquake3serverFix/code/ui/ui_shared.c
--- ioquake3svn1438/code/ui/ui_shared.c	2008-06-22 03:28:43.000000000 -0500
+++ ioquake3serverFix/code/ui/ui_shared.c	2008-08-09 11:28:23.000000000 -0500
@@ -534,7 +534,7 @@ qboolean PC_Script_Parse(int handle, con
 		}
 		Q_strcat(script, 1024, " ");
 	}
-	return qfalse; 	// bk001105 - LCC   missing return value
+	return qfalse;
 }
 
 // display, window, menu, item code
@@ -1342,13 +1342,13 @@ qboolean Item_SetFocus(itemDef_t *item, 
 	itemDef_t *oldFocus;
 	sfxHandle_t *sfx = &DC->Assets.itemFocusSound;
 	qboolean playSound = qfalse;
-	menuDef_t *parent; // bk001206: = (menuDef_t*)item->parent;
+	menuDef_t *parent;
 	// sanity check, non-null, not a decoration and does not already have the focus
 	if (item == NULL || item->window.flags & WINDOW_DECORATION || item->window.flags & WINDOW_HASFOCUS || !(item->window.flags & WINDOW_VISIBLE)) {
 		return qfalse;
 	}
 
-	// bk001206 - this can be NULL.
+	// this can be NULL
 	parent = (menuDef_t*)item->parent; 
       
 	// items can be enabled and disabled based on cvars
@@ -1727,7 +1727,7 @@ qboolean Item_ListBox_HandleKey(itemDef_
 		max = Item_ListBox_MaxScroll(item);
 		if (item->window.flags & WINDOW_HORIZONTAL) {
 			viewmax = (item->window.rect.w / listPtr->elementWidth);
-			if ( key == K_LEFTARROW ) 
+			if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) 
 			{
 				if (!listPtr->notselectable) {
 					listPtr->cursorPos--;
@@ -1750,7 +1750,7 @@ qboolean Item_ListBox_HandleKey(itemDef_
 				}
 				return qtrue;
 			}
-			if ( key == K_RIGHTARROW ) 
+			if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) 
 			{
 				if (!listPtr->notselectable) {
 					listPtr->cursorPos++;
@@ -1776,7 +1776,7 @@ qboolean Item_ListBox_HandleKey(itemDef_
 		}
 		else {
 			viewmax = (item->window.rect.h / listPtr->elementHeight);
-			if ( key == K_UPARROW ) 
+			if ( key == K_UPARROW || key == K_KP_UPARROW ) 
 			{
 				if (!listPtr->notselectable) {
 					listPtr->cursorPos--;
@@ -1799,7 +1799,7 @@ qboolean Item_ListBox_HandleKey(itemDef_
 				}
 				return qtrue;
 			}
-			if ( key == K_DOWNARROW ) 
+			if ( key == K_DOWNARROW || key == K_KP_DOWNARROW ) 
 			{
 				if (!listPtr->notselectable) {
 					listPtr->cursorPos++;
@@ -1863,17 +1863,17 @@ qboolean Item_ListBox_HandleKey(itemDef_
 			}
 			return qtrue;
 		}
-		if ( key == K_HOME ) {
+		if ( key == K_HOME || key == K_KP_HOME) {
 			// home
 			listPtr->startPos = 0;
 			return qtrue;
 		}
-		if ( key == K_END ) {
+		if ( key == K_END || key == K_KP_END) {
 			// end
 			listPtr->startPos = max;
 			return qtrue;
 		}
-		if (key == K_PGUP ) {
+		if (key == K_PGUP || key == K_KP_PGUP ) {
 			// page up
 			if (!listPtr->notselectable) {
 				listPtr->cursorPos -= viewmax;
@@ -1897,7 +1897,7 @@ qboolean Item_ListBox_HandleKey(itemDef_
 			}
 			return qtrue;
 		}
-		if ( key == K_PGDN ) {
+		if ( key == K_PGDN || key == K_KP_PGDN ) {
 			// page down
 			if (!listPtr->notselectable) {
 				listPtr->cursorPos += viewmax;
@@ -2094,7 +2094,7 @@ qboolean Item_TextField_HandleKey(itemDe
 
 		} else {
 
-			if ( key == K_DEL ) {
+			if ( key == K_DEL || key == K_KP_DEL ) {
 				if ( item->cursorPos < len ) {
 					memmove( buff + item->cursorPos, buff + item->cursorPos + 1, len - item->cursorPos);
 					DC->setCVar(item->cvar, buff);
@@ -2102,7 +2102,7 @@ qboolean Item_TextField_HandleKey(itemDe
 				return qtrue;
 			}
 
-			if ( key == K_RIGHTARROW ) 
+			if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) 
 			{
 				if (editPtr->maxPaintChars && item->cursorPos >= editPtr->maxPaintChars && item->cursorPos < len) {
 					item->cursorPos++;
@@ -2115,7 +2115,7 @@ qboolean Item_TextField_HandleKey(itemDe
 				return qtrue;
 			}
 
-			if ( key == K_LEFTARROW ) 
+			if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) 
 			{
 				if ( item->cursorPos > 0 ) {
 					item->cursorPos--;
@@ -2126,13 +2126,13 @@ qboolean Item_TextField_HandleKey(itemDe
 				return qtrue;
 			}
 
-			if ( key == K_HOME ) {// || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) {
+			if ( key == K_HOME || key == K_KP_HOME) {// || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) {
 				item->cursorPos = 0;
 				editPtr->paintOffset = 0;
 				return qtrue;
 			}
 
-			if ( key == K_END )  {// ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) {
+			if ( key == K_END || key == K_KP_END)  {// ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) {
 				item->cursorPos = len;
 				if(item->cursorPos > editPtr->maxPaintChars) {
 					editPtr->paintOffset = len - editPtr->maxPaintChars;
@@ -2140,20 +2140,20 @@ qboolean Item_TextField_HandleKey(itemDe
 				return qtrue;
 			}
 
-			if ( key == K_INS ) {
+			if ( key == K_INS || key == K_KP_INS ) {
 				DC->setOverstrikeMode(!DC->getOverstrikeMode());
 				return qtrue;
 			}
 		}
 
-		if (key == K_TAB || key == K_DOWNARROW ) {
+		if (key == K_TAB || key == K_DOWNARROW || key == K_KP_DOWNARROW) {
 			newItem = Menu_SetNextCursorItem(item->parent);
 			if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) {
 				g_editItem = newItem;
 			}
 		}
 
-		if (key == K_UPARROW ) {
+		if (key == K_UPARROW || key == K_KP_UPARROW) {
 			newItem = Menu_SetPrevCursorItem(item->parent);
 			if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) {
 				g_editItem = newItem;
@@ -2374,7 +2374,6 @@ qboolean Item_HandleKey(itemDef_t *item,
 		captureFunc = 0;
 		captureData = NULL;
 	} else {
-	  // bk001206 - parentheses
 		if ( down && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) {
 			Item_StartCapture(item, key);
 		}
@@ -2629,7 +2628,6 @@ void Menu_HandleKey(menuDef_t *menu, int
 		// see if the mouse is within the window bounds and if so is this a mouse click
 	if (down && !(menu->window.flags & WINDOW_POPUP) && !Rect_ContainsPoint(&menu->window.rect, DC->cursorx, DC->cursory)) {
 		static qboolean inHandleKey = qfalse;
-		// bk001206 - parentheses
 		if (!inHandleKey && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) {
 			inHandleKey = qtrue;
 			Menus_HandleOOBClick(menu, key, down);
@@ -2673,6 +2671,7 @@ void Menu_HandleKey(menuDef_t *menu, int
 				DC->executeText(EXEC_APPEND, "screenshot\n");
 			}
 			break;
+		case K_KP_UPARROW:
 		case K_UPARROW:
 			Menu_SetPrevCursorItem(menu);
 			break;
@@ -2685,6 +2684,7 @@ void Menu_HandleKey(menuDef_t *menu, int
 			}
 			break;
 		case K_TAB:
+		case K_KP_DOWNARROW:
 		case K_DOWNARROW:
 			Menu_SetNextCursorItem(menu);
 			break;
@@ -3186,7 +3186,6 @@ static bind_t g_bindings[] = 
 	{"tauntGauntlet", K_F5,			-1,		-1, -1},
 	{"scoresUp", K_KP_PGUP,			-1,		-1, -1},
 	{"scoresDown", K_KP_PGDN,			-1,		-1, -1},
-	// bk001205 - this one below was:  '-1' 
 	{"messagemode",  -1,					-1,		-1, -1},
 	{"messagemode2", -1,						-1,		-1, -1},
 	{"messagemode3", -1,						-1,		-1, -1},
@@ -3196,7 +3195,7 @@ static bind_t g_bindings[] = 
 
 static const int g_bindCount = sizeof(g_bindings) / sizeof(bind_t);
 
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static configcvar_t g_configcvars[] =
 {
 	{"cl_run",			0,					0},
@@ -4962,7 +4961,7 @@ qboolean ItemParse_cvarStrList( itemDef_
 		}
 
 	}
-	return qfalse; 	// bk001205 - LCC missing return value
+	return qfalse;
 }
 
 qboolean ItemParse_cvarFloatList( itemDef_t *item, int handle ) {
@@ -5007,7 +5006,7 @@ qboolean ItemParse_cvarFloatList( itemDe
 		}
 
 	}
-	return qfalse; 	// bk001205 - LCC missing return value
+	return qfalse;
 }
 
 
@@ -5186,7 +5185,7 @@ qboolean Item_Parse(int handle, itemDef_
 			return qfalse;
 		}
 	}
-	return qfalse; 	// bk001205 - LCC missing return value
+	return qfalse;
 }
 
 
@@ -5240,7 +5239,7 @@ qboolean MenuParse_name( itemDef_t *item
 
 qboolean MenuParse_fullscreen( itemDef_t *item, int handle ) {
 	menuDef_t *menu = (menuDef_t*)item;
-	if (!PC_Int_Parse(handle, (int*) &menu->fullScreen)) { // bk001206 - cast qboolean
+	if (!PC_Int_Parse(handle, (int*) &menu->fullScreen)) {
 		return qfalse;
 	}
 	return qtrue;
@@ -5589,7 +5588,7 @@ qboolean Menu_Parse(int handle, menuDef_
 			return qfalse;
 		}
 	}
-	return qfalse; 	// bk001205 - LCC missing return value
+	return qfalse;
 }
 
 /*
@@ -5637,7 +5636,7 @@ displayContextDef_t *Display_GetContext(
 	return DC;
 }
  
-#ifndef MISSIONPACK // bk001206
+#ifndef MISSIONPACK
 static float captureX;
 static float captureY;
 #endif
diff -upr ioquake3svn1438/code/ui/ui_shared.h ioquake3serverFix/code/ui/ui_shared.h
--- ioquake3svn1438/code/ui/ui_shared.h	2008-08-03 12:55:25.000000000 -0500
+++ ioquake3serverFix/code/ui/ui_shared.h	2008-08-09 11:28:23.000000000 -0500
@@ -103,7 +103,7 @@ Foundation, Inc., 51 Franklin St, Fifth 
 #define SLIDER_HEIGHT 16.0
 #define SLIDER_THUMB_WIDTH 12.0
 #define SLIDER_THUMB_HEIGHT 20.0
-#define	NUM_CROSSHAIRS			99
+#define	NUM_CROSSHAIRS			10
 
 typedef struct {
   const char *command;
diff -upr ioquake3svn1438/Makefile ioquake3serverFix/Makefile
--- ioquake3svn1438/Makefile	2008-08-06 16:52:08.000000000 -0500
+++ ioquake3serverFix/Makefile	2008-08-09 15:22:37.000000000 -0500
@@ -257,14 +257,14 @@ ifeq ($(PLATFORM),linux)
   ifeq ($(ARCH),x86_64)
     OPTIMIZE = -O3 -fomit-frame-pointer -ffast-math -funroll-loops \
       -falign-loops=2 -falign-jumps=2 -falign-functions=2 \
-      -fstrength-reduce -fstack-protector -D_FORTIFY_SOURCE=2
+      -fstrength-reduce
     # experimental x86_64 jit compiler! you need GNU as
     HAVE_VM_COMPILED = true
   else
   ifeq ($(ARCH),i386)
-    OPTIMIZE = -O3 -mtune=generic -fomit-frame-pointer -ffast-math \
+    OPTIMIZE = -O3 -mtune=athlon-xp -fomit-frame-pointer -ffast-math \
       -funroll-loops -falign-loops=2 -falign-jumps=2 \
-      -falign-functions=2 -fstrength-reduce -fstack-protector -D_FORTIFY_SOURCE=2
+      -falign-functions=2 -fstrength-reduce
     HAVE_VM_COMPILED=true
   else
   ifeq ($(ARCH),ppc)
@@ -430,7 +430,7 @@ ifeq ($(PLATFORM),mingw32)
   # require XP. In theory this restriction can be removed if this header is
   # obtained separately from the platform SDK. The MSVC build does not have
   # this limitation.
-  #BASE_CFLAGS += -DWINVER=0x501
+  BASE_CFLAGS += -DWINVER=0x501
 
   ifeq ($(USE_OPENAL),1)
     BASE_CFLAGS += -DUSE_OPENAL
@@ -1613,7 +1613,6 @@ Q3CGOBJ_ = \
   $(B)/baseoa/cgame/cg_scoreboard.o \
   $(B)/baseoa/cgame/cg_servercmds.o \
   $(B)/baseoa/cgame/cg_snapshot.o \
-  $(B)/baseoa/cgame/cg_unlagged.o \
   $(B)/baseoa/cgame/cg_view.o \
   $(B)/baseoa/cgame/cg_weapons.o \
   \
@@ -1657,7 +1656,6 @@ MPCGOBJ_ = \
   $(B)/missionpack/cgame/cg_scoreboard.o \
   $(B)/missionpack/cgame/cg_servercmds.o \
   $(B)/missionpack/cgame/cg_snapshot.o \
-  $(B)/missionpack/cgame/cg_unlagged.o \
   $(B)/missionpack/cgame/cg_view.o \
   $(B)/missionpack/cgame/cg_weapons.o \
   $(B)/missionpack/ui/ui_shared.o \
@@ -1712,7 +1710,6 @@ Q3GOBJ_ = \
   $(B)/baseoa/game/g_target.o \
   $(B)/baseoa/game/g_team.o \
   $(B)/baseoa/game/g_trigger.o \
-  $(B)/baseoa/game/g_unlagged.o \
   $(B)/baseoa/game/g_utils.o \
   $(B)/baseoa/game/g_weapon.o \
   \
@@ -1764,7 +1761,6 @@ MPGOBJ_ = \
   $(B)/missionpack/game/g_target.o \
   $(B)/missionpack/game/g_team.o \
   $(B)/missionpack/game/g_trigger.o \
-  $(B)/missionpack/game/g_unlagged.o \
   $(B)/missionpack/game/g_utils.o \
   $(B)/missionpack/game/g_weapon.o \
   \
Only in ioquake3serverFix: Makefile.orig
Only in ioquake3serverFix/misc: sdl-win32-mouse-fixes.diff
diff -upr ioquake3svn1438/README ioquake3serverFix/README
--- ioquake3svn1438/README	2008-07-23 12:10:57.000000000 -0500
+++ ioquake3serverFix/README	2008-08-09 11:28:24.000000000 -0500
@@ -174,6 +174,8 @@ New cvars
                                       See also
                                       http://wiki.ioquake3.org/Stereo_Rendering
                                       for more information
+  r_sdlDriver                       - read only, indicates the SDL driver
+                                      backend being used
 
 New commands
   video [filename]        - start video capture (use with demo command)
@@ -391,6 +393,26 @@ SDL Keyboard Differences
   annoying to use on many non-US keyboards.  In response, an additional
   toggleConsole bind has been added on the key combination Shift-Esc.
 
+Mouse Input On Windows
+  ioq3 uses SDL to abstract away as much as possible from platform specific
+  implementation details. Unfortunately, SDL 1.2 suffers from a number of bugs
+  and limitations with respect to mouse input on the Windows platform. We
+  provide a patch against the SDL subversion 1.2 branch which fixes the
+  following problems:
+
+    * DirectX (and thus DirectInput) driver not functional when using an
+      OpenGL SDL_Surface.
+
+    * DirectX (and thus DirectInput) driver not functional in windowed mode.
+
+    * Mouse buttons 4-7 unusable with the DirectX driver due to DirectInput 5
+      not exposing the required functionality. Use DirectInput 7 instead.
+
+    * Low quality mouse input data when using the windib driver due to use of
+      WM_MOUSEMOVE events. Use GetCursorPos API call instead.
+
+  The patch can be found in misc/sdl-win32-mouse-fixes.diff.
+
 PNG support
   ioquake3 supports the use of PNG (Portable Network Graphic) images as
   textures. It should be noted that the use of such images in a map will
@@ -417,16 +439,14 @@ PNG support
 Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
 mailing list (quake3-subscribe@icculus.org) and submit your patch there.  The
 best case scenario is that you submit your patch to bugzilla, and then post the
-URL to the mailing list. If you're too lazy for either method, then it would be
-better if you emailed your patches to zachary@ioquake.org directly than not at
-all.
-
-The focus for ioquake3 to develop a stable base suitable for further
-development, and provide players with the same Quake 3 experience they've had
-for years. As such ioq3 does not have any significant graphical enhancements
-and none are planned at this time. However, improved graphics and sound
-patches will be accepted as long as they are entirely optional, do not
-require new media and are off by default.
+URL to the mailing list.
+
+The focus for ioq3 is to develop a stable base suitable for further development
+and provide players with the same Quake 3 experience they've had for years. As
+such ioq3 does not have any significant graphical enhancements and none are
+planned at this time. However, improved graphics and sound patches will be
+accepted as long as they are entirely optional, do not require new media and
+are off by default.
 
 
 --------------------------------------------- Building Official Installers -----
@@ -450,16 +470,12 @@ but we have some general guidelines:
     providing pak0.pk3 and the patch pk3s are not refered to or included in the
     installer.
 
-  * Please include at least an SDL so/dylib on every platform.
+  * Please include at least an SDL so/dylib/dll on every platform.
 
   * Please include an OpenAL so/dylib/dll, since every platform should be using
     it by now.
 
-  * We'll bump the version to 1.34 as soon as we get enough people who can
-    demonstrate a competent build for Windows and Mac.
-
-  * Please contact the mailing list and/or zakk@timedoctor.org after you've
-    made your installer.
+  * Please contact the mailing list when you've made your installer.
 
   * Please be prepared to alter your installer on the whim of the maintainers.
 
