#include < amxmodx >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < fakemeta_util >
#include < hamsandwich >
 
// Enums
/////////
 
enum
{
	LR_NONE=-1,
	LR_S4S,
	LR_GUNTOSS,
	LR_KNIFE,
	LR_NADETOSS,
	LR_SCOUT,
	LR_SHOTGUN,
 
	MAX_GAMES
};
 
enum
{
	GREY = 0,
	RED,
	BLUE,
	NORMAL
};
 
enum
{
	ALIVE, 
	DEAD, 
	ALL	
};
 
enum
{
	LR_PRISONER,
	LR_GUARD
};
 
enum ( += 100 )
{
	TASK_BEACON,
	TASK_ENDLR
};
 
// Consts
//////////
 
new const g_szPrefix[ ] = "!g[Jailbreak]!n";
 
new const g_szBeaconSound[ ] = "buttons/blip1.wav";
new const g_szBeaconSprite[ ] = "sprites/white.spr";
 
new const g_szGameNames[ MAX_GAMES ][ ] = 
{
	"Shot 4 Shot",
	"Pisztoly dobas",
	"Kes Harc",
	"Granat Harc",
	"Scout Harc",
	"Shotgun Harc"
};
 
new const g_szDescription[ MAX_GAMES ][ ] = 
{
	"Felvaltva loves deagleval",
	"Aki eldobja a Deagle-t legtavolabb az nyer.",
	"Harc a kessel egymas ellen.",
	"Felkell robbantani a tarsad.",
	"Harc a Scouttal.",
	"Harc a Shoutgannal."
};
 
new const g_szTeamName[ ][ ] = 
{
	"",
	"TERRORISTA",
	"CT",
	"NEZO"
};
 
new const g_szPlugin[ ] = "Jailbreak Last Request";
new const g_szVersion[ ] = "2.0";
new const g_szAuthor[ ] = "H3avY Ra1n";
 
// Integers
////////////
 
new g_iCurrentGame = LR_NONE;
new g_iLastRequest[ 2 ];
new g_iCurrentPage[ 33 ];
new g_iChosenGame[ 33 ];
 
new g_iSprite;
 
new g_iMaxPlayers;
 
// Booleans
///////////
 
new bool:g_bAlive[ 33 ];
new bool:g_bConnected[ 33 ];
 
new bool:g_bLastRequestAllowed;
 
// Messages
////////////
 
new g_msgTeamInfo;
new g_msgSayText;
 
public plugin_precache()
{
	precache_sound( g_szBeaconSound );
 
	g_iSprite = precache_model( g_szBeaconSprite );
}
 
public plugin_init()
{
	register_plugin( g_szPlugin, g_szVersion, g_szAuthor );
 
	register_clcmd( "say /lr", 					"Cmd_LastRequest" );
	register_clcmd( "say !lr", 					"Cmd_LastRequest" );
	register_clcmd( "say /lastrequest", 		"Cmd_LastRequest" );
	register_clcmd( "say !lastrequest", 		"Cmd_LastRequest" );
 
	register_clcmd( "say_team /lr", 			"Cmd_LastRequest" );
	register_clcmd( "say_team !lr", 			"Cmd_LastRequest" );
	register_clcmd( "say_team /lastrequest", 	"Cmd_LastRequest" );
	register_clcmd( "say_team !lastrequest", 	"Cmd_LastRequest" );
 
	register_event( "HLTV", 	"Event_RoundStart", "a", "1=0", "2=0" );
 
	register_logevent( "Logevent_RoundStart", 2, "1=Round_Start" );
 
	RegisterHam( Ham_Spawn, 				"player", 			"Ham_PlayerSpawn_Post", 	1 );
	RegisterHam( Ham_Weapon_PrimaryAttack, 	"weapon_deagle", 	"Ham_DeagleFire_Post", 		1 );
	RegisterHam( Ham_Killed,				"player",			"Ham_PlayerKilled_Post",	1 );
	RegisterHam( Ham_TakeDamage,			"player",			"Ham_TakeDamage_Pre",		0 );
 
	register_forward( FM_Think, "Forward_EntityThink_Pre", 0 );
 
	register_message( get_user_msgid( "TextMsg" ), "Message_TextMsg" );
 
	g_msgTeamInfo 	= get_user_msgid( "TeamInfo" );
	g_msgSayText 	= get_user_msgid( "SayText" );
 
	g_iMaxPlayers 	= get_maxplayers();
 
	set_task( 2.0, "StartBeacon", .flags="b" );
 
	set_task( 300.0, "Task_Advertise", .flags="b" );
}
 
public client_putinserver( id )
{
	g_iCurrentPage[ id ] = 0;
 
	g_bConnected[ id ] = true;
}
 
public client_disconnect( id )
{
	g_bConnected[ id ] = false;
 
	if( g_bAlive[ id ] )
		g_bAlive[ id ] = false;
 
	if( id == g_iLastRequest[ LR_PRISONER ] || id == g_iLastRequest[ LR_GUARD ] )
	{
		EndLastRequest( id == g_iLastRequest[ LR_PRISONER ] ? g_iLastRequest[ LR_GUARD ] : g_iLastRequest[ LR_PRISONER ], id );
	}
 
	remove_task( id + TASK_ENDLR );
}
 
public Ham_PlayerSpawn_Post( id )
{
	if( !is_user_alive( id ) )
		return HAM_IGNORED;
 
	g_bAlive[ id ] = true;
 
	return HAM_IGNORED;
}
 
public Ham_PlayerKilled_Post( iVictim, iKiller, iShouldGib )
{	
	g_bAlive[ iVictim ] = false;
 
	if( iVictim == g_iLastRequest[ LR_PRISONER ] )
	{
		EndLastRequest( g_iLastRequest[ LR_GUARD ], iVictim );
	}
 
	else if( iVictim == g_iLastRequest[ LR_GUARD ] )
	{
		EndLastRequest( g_iLastRequest[ LR_PRISONER ], iVictim );
	}
 
	if( !g_bLastRequestAllowed && cs_get_user_team( iVictim ) == CS_TEAM_T )
	{
		if( get_playercount( CS_TEAM_T, ALIVE ) == 1 )
		{
			ColorChat( 0, NORMAL, "%s !gUtolso kivansag most megengedett.", g_szPrefix );
			g_bLastRequestAllowed = true;
		}
	}
}
 
public Ham_DeagleFire_Post( iEnt )
{
	if( g_iCurrentGame != LR_S4S )
	{
		return;
	}
 
	new id = pev( iEnt, pev_owner );
	new iOpponentEnt;
 
	if( cs_get_weapon_ammo( iEnt ) == 0 )
	{
		if( id == g_iLastRequest[ LR_PRISONER ] )
		{
			iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_GUARD ] );
 
			if( pev_valid( iOpponentEnt ) )
				cs_set_weapon_ammo( iOpponentEnt, 1 );
		}
 
		else if( id == g_iLastRequest[ LR_GUARD ] )
		{
			iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_PRISONER ] );
 
			if( pev_valid( iOpponentEnt ) )
				cs_set_weapon_ammo( iOpponentEnt, 1 );
		}
	}
}
 
public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
{
	if( !( 1 <= iAttacker <= g_iMaxPlayers ) )
		return HAM_IGNORED;
 
	new bool:g_bVictimLR = iVictim == g_iLastRequest[ LR_PRISONER ] || iVictim == g_iLastRequest[ LR_GUARD ];
	new bool:g_bAttackerLR = iAttacker == g_iLastRequest[ LR_PRISONER ] || iAttacker == g_iLastRequest[ LR_GUARD ];
 
	if( g_bVictimLR && !g_bAttackerLR )
	{
		return HAM_SUPERCEDE;
	}
 
	else if( !g_bVictimLR && g_bAttackerLR )
	{
		return HAM_SUPERCEDE;
	}
 
	return HAM_IGNORED;
}
 
public Event_RoundStart()
{
	g_bLastRequestAllowed = false;
	g_iCurrentGame = LR_NONE;
}
 
 
 
public Logevent_RoundStart()
{
	if( !g_bLastRequestAllowed && get_playercount( CS_TEAM_T, ALIVE ) == 1 )
	{
		g_bLastRequestAllowed = true;
		ColorChat( 0, NORMAL, "%s !gUtolso kivansag most megengedett.", g_szPrefix );
	}
}
 
public Forward_EntityThink_Pre( iEnt )
{
	if( !pev_valid( iEnt ) || g_iCurrentGame != LR_NADETOSS )
		return FMRES_IGNORED;
 
	new id = pev( iEnt, pev_owner );
 
	if( id != g_iLastRequest[ LR_PRISONER ] && id != g_iLastRequest[ LR_GUARD ] )
		return FMRES_IGNORED;
 
	new szModel[ 32 ];
 
	pev( iEnt, pev_model, szModel, charsmax( szModel ) );
 
	if( equal( szModel, "models/w_smokegrenade.mdl" ) )
	{
		set_pev( iEnt, pev_renderfx, kRenderFxGlowShell );
		set_pev( iEnt, pev_renderamt, 125.0 );
		set_pev( iEnt, pev_rendermode, kRenderTransAlpha );
 
		set_pev( iEnt, pev_rendercolor, id == g_iLastRequest[ LR_GUARD ] ? { 0.0, 0.0, 255.0 } : { 255.0, 0.0, 0.0 } );
 
		return FMRES_SUPERCEDE;
	}	
 
	return FMRES_IGNORED;
}	
 
 
 
public Message_TextMsg()
{
	if( g_iCurrentGame == LR_NONE )
	{
		return PLUGIN_CONTINUE;
	}
 
	static szText[ 25 ];
	get_msg_arg_string( 2, szText, charsmax( szText ) );
 
	if( equal( szText, "#Round_Draw" ) || equal( szText, "#Game_will_restart_in" ) || equal( szText, "#Game_Commencing" ) )
	{
		g_iCurrentGame = LR_NONE;
 
		strip_user_weapons( g_iLastRequest[ LR_PRISONER ] );
		strip_user_weapons( g_iLastRequest[ LR_GUARD ] );
 
		GiveWeapons( g_iLastRequest[ LR_GUARD ] );
 
		g_iLastRequest[ LR_PRISONER ] = 0;
		g_iLastRequest[ LR_GUARD ] = 0;
	}
 
	return PLUGIN_CONTINUE;
}
 
public Cmd_LastRequest( id )
{
	if( !g_bAlive[ id ] )
	{
		ColorChat( id, NORMAL, "%s Te vagy az utolso  !gUtolso Kivansag !n.", g_szPrefix );
		return PLUGIN_HANDLED;
	}
 
	else if( cs_get_user_team( id ) != CS_TEAM_T )
	{
		ColorChat( id, NORMAL, "%s Kelleni-e egy fogolynak. !gUtolso Kivansag!n.", g_szPrefix );
		return PLUGIN_HANDLED;
	}
 
	else if( !g_bLastRequestAllowed )
	{
		ColorChat( id, NORMAL, "%s T?l sok fogoly !gUtolso kivansag!n.", g_szPrefix );
		return PLUGIN_HANDLED;
	}
 
	else if( g_iCurrentGame != LR_NONE )
	{
		ColorChat( id, NORMAL, "%s Van egy utolso kerese!", g_szPrefix );
		return PLUGIN_HANDLED;
	}
 
	else LastRequestMenu( id );
 
	return PLUGIN_HANDLED;
}
 
public LastRequestMenu( id )
{
	new hMenu = menu_create( "\yValassz jatekot:", "LastRequestMenu_Handler" );
 
	new szInfo[ 6 ];
 
	for( new i = 0; i < MAX_GAMES; i++ )
	{
		num_to_str( i, szInfo, charsmax( szInfo ) );
 
		menu_additem( hMenu, g_szGameNames[ i ], szInfo );
	}
 
	menu_setprop( hMenu, MPROP_NEXTNAME, "Kovetkezo oldal" );
	menu_setprop( hMenu, MPROP_BACKNAME, "Elozo oldal" );
 
	menu_display( id, hMenu, 0 );
}
 
public LastRequestMenu_Handler( id, hMenu, iItem )
{
	if( iItem == MENU_EXIT )
	{
		menu_destroy( hMenu );
		return PLUGIN_HANDLED;
	}
 
	new szData[ 6 ];
	new iAccess, hCallback;
	menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), _, _, hCallback );
 
	g_iChosenGame[ id ] = str_to_num( szData );
 
	if( g_iCurrentGame != LR_NONE )
	{
		menu_destroy( hMenu );
		g_iChosenGame[ id ] = LR_NONE;
		ColorChat( id, NORMAL, "%s Mar letezik az utolso keres.", g_szPrefix );
		return PLUGIN_HANDLED;
	}
 
	ShowPlayerMenu( id );
 
	menu_destroy( hMenu );
	return PLUGIN_HANDLED;
}
 
 
public ShowPlayerMenu( id )
{
	new hMenu = menu_create( "\yValassz ellenfelt:", "PlayerMenu_Handler" );
 
	new szPlayerName[ 32 ], szInfo[ 6 ];
 
	for( new i = 1; i < g_iMaxPlayers; i++ )
	{
		if( !g_bAlive[ i ] || cs_get_user_team( i ) != CS_TEAM_CT )
			continue;
 
		get_user_name( i, szPlayerName, charsmax( szPlayerName ) );
 
		num_to_str( i, szInfo, charsmax( szInfo ) );
 
		menu_additem( hMenu, szPlayerName, szInfo );
	}
 
	menu_setprop( hMenu, MPROP_NEXTNAME, "Kovetkezo oldal" );
	menu_setprop( hMenu, MPROP_BACKNAME, "Elozo oldal" );
 
	menu_display( id, hMenu, 0 );
}
 
public PlayerMenu_Handler( id, hMenu, iItem )
{	
	if( iItem == MENU_EXIT || !g_bAlive[ id ] || !g_bLastRequestAllowed || g_iCurrentGame != LR_NONE )
	{
		g_iChosenGame[ id ] = LR_NONE;
 
		menu_destroy( hMenu );
		return PLUGIN_HANDLED;
	}
 
	new szData[ 6 ], szPlayerName[ 64 ];
	new iAccess, hCallback;
 
	menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szPlayerName, charsmax( szPlayerName ), hCallback );
 
	new iGuard = str_to_num( szData );
 
	if( !g_bAlive[ iGuard ] || cs_get_user_team( iGuard ) != CS_TEAM_CT )
	{
		ColorChat( id, NORMAL, "%s Ez a jatekos mar nem elerheto.", g_szPrefix );
		menu_destroy( hMenu );
 
		ShowPlayerMenu( id );
		return PLUGIN_HANDLED;
	}
 
	StartGame( g_iChosenGame[ id ], id, iGuard );
 
	menu_destroy( hMenu );
	return PLUGIN_HANDLED;
}
 
public StartGame( iGame, iPrisoner, iGuard )
{
	g_iCurrentGame = iGame;
 
	g_iLastRequest[ LR_PRISONER ] = iPrisoner;
	g_iLastRequest[ LR_GUARD ] = iGuard;
 
	new szPrisonerName[ 32 ], szGuardName[ 32 ];
 
	get_user_name( iPrisoner, szPrisonerName, charsmax( szPrisonerName ) );
	get_user_name( iGuard, szGuardName, charsmax( szGuardName ) );
 
	ColorChat( 0, NORMAL, "%s !t%s!n ellen !t%s!n -> !g%s!n!", g_szPrefix, szPrisonerName, szGuardName, g_szGameNames[ iGame ] );
 
	strip_user_weapons( iPrisoner );
	strip_user_weapons( iGuard );
 
	set_user_health( iPrisoner, 100 );
	set_user_health( iGuard, 100 );
 
	set_user_armor( iPrisoner, 0 );
	set_user_armor( iGuard, 0 );
 
	StartBeacon();
 
	ColorChat( iPrisoner, NORMAL, "%s !tCelkituzes: %s", g_szPrefix, g_szDescription[ iGame ] );
	ColorChat( iGuard, NORMAL, "%s !tCelkituzes: %s", g_szPrefix, g_szDescription[ iGame ] );
 
	switch( iGame )
	{	
		case LR_S4S:
		{
			LR_Shot4Shot( iPrisoner );
			LR_Shot4Shot( iGuard );
		}
 
		case LR_KNIFE:
		{
			LR_Knife( iPrisoner );
			LR_Knife( iGuard );
		}
 
		case LR_GUNTOSS:
		{
			LR_GunToss( iPrisoner );
			LR_GunToss( iGuard );
		}
 
		case LR_NADETOSS:
		{
			LR_NadeToss( iPrisoner );
			LR_NadeToss( iGuard );
		}
 
		case LR_SCOUT:
		{
			LR_Scout( iPrisoner );
			LR_Scout( iGuard );
		}
 
		case LR_SHOTGUN:
		{
			LR_Shotgun( iPrisoner );
			LR_Shotgun( iGuard );
		}
	}
}
 
public StartBeacon()
{
	if( g_iCurrentGame == LR_NONE )
	{
		return;
	}
 
	new id;
 
	for( new i = 0; i < 2; i++ )
	{
		id = g_iLastRequest[ i ];
 
		static origin[3]
		emit_sound( id, CHAN_ITEM, g_szBeaconSound, 1.0, ATTN_NORM, 0, PITCH_NORM )
 
		get_user_origin( id, origin )
		message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
		write_byte( TE_BEAMCYLINDER )
		write_coord( origin[0] )	//position.x
		write_coord( origin[1] )	//position.y
		write_coord( origin[2]-20 )	//position.z
		write_coord( origin[0] )    	//axis.x
		write_coord( origin[1] )    	//axis.y
		write_coord( origin[2]+200 )	//axis.z
		write_short( g_iSprite )	//sprite index
		write_byte( 0 )       	//starting frame
		write_byte( 1 )       	//frame rate in 0.1's
		write_byte( 6 )        	//life in 0.1's
		write_byte( 10 )        	//line width in 0.1's
		write_byte( 1 )        	//noise amplitude in 0.01's
 
		switch( cs_get_user_team( id ) )
		{
			case CS_TEAM_CT:
			{
				write_byte( 0 );
				write_byte( 0 );
				write_byte( 255 );
			}
 
			case CS_TEAM_T:
			{
				write_byte( 255 );
				write_byte( 0 );
				write_byte( 0 );
			}
		}
 
		write_byte( 255 );			// brightness
		write_byte( 0 );			// scroll speed in 0.1's
		message_end();
	}
}
 
public EndLastRequest( iWinner, iLoser )
{
	new szWinnerName[ 32 ], szLoserName[ 32 ];
 
	get_user_name( iWinner, szWinnerName, 31 );
	get_user_name( iLoser, szLoserName, 31 );
 
	ColorChat( 0, NORMAL, "%s !t%s!n ut !t%s!n az Utolso Kivansagod.", g_szPrefix, szWinnerName, szLoserName );
 
	strip_user_weapons( iLoser );
 
	g_iCurrentGame = LR_NONE;
 
	g_iLastRequest[ LR_PRISONER ] = 0;
	g_iLastRequest[ LR_GUARD ] = 0;
 
	set_task( 0.1, "Task_EndLR", TASK_ENDLR + iWinner );
}
 
public Task_EndLR( iTaskID )
{
	new id = iTaskID - TASK_ENDLR;
 
	strip_user_weapons( id );
	set_user_health( id, 100 );
 
	if( cs_get_user_team( id ) == CS_TEAM_CT )
		GiveWeapons( id );
}
 
//////////////////////////////
//			LR Games		//
//////////////////////////////
 
LR_Knife( id )
{
	new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
 
	give_item( id, "weapon_knife" );
 
	get_mapname( szMapName, charsmax( szMapName ) );
 
	if( equali( szMapName, "some1s_jailbreak" ) )
	{
		iCTOrigin = { -759, 1047, 100 };
		iTOrigin = { -585, 867, 100 };
 
		if( id == g_iLastRequest[ LR_PRISONER ] )
			set_user_origin( id, iTOrigin );
 
		else
			set_user_origin( id, iCTOrigin );
	}
}
 
LR_Shotgun( id )
{
	give_item( id, "weapon_m3" );
	cs_set_user_bpammo( id, CSW_M3, 28 );
}
 
LR_Scout( id )
{
	new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
 
	give_item( id, "weapon_scout" );
	cs_set_user_bpammo( id, CSW_SCOUT, 90 );
 
	get_mapname( szMapName, charsmax( szMapName ) );
 
	if( equali( szMapName, "some1s_jailbreak" ) )
	{
		iCTOrigin = { -2898, -2040, 37 };
		iTOrigin = { -2908, 905, 37 };
 
		if( id == g_iLastRequest[ LR_PRISONER ] )
			set_user_origin( id, iTOrigin );
 
		else
			set_user_origin( id, iCTOrigin );
	}
}
 
LR_Shot4Shot( id )
{
	new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
 
	if( id == g_iLastRequest[ LR_PRISONER ] )
	{
		cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 1 );
	}
 
	else cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 );
 
	get_mapname( szMapName, charsmax( szMapName ) );
 
	if( equali( szMapName, "some1s_jailbreak" ) )
	{
		iCTOrigin = { -1352, 271, 38 };
		iTOrigin = { -1338, -782, 38 };
 
		if( id == g_iLastRequest[ LR_PRISONER ] )
			set_user_origin( id, iTOrigin );
 
		else
			set_user_origin( id, iCTOrigin );
	}
}
 
LR_GunToss( id )
{
	give_item( id, "weapon_knife" );
	cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 );
}
 
LR_NadeToss( id )
{
	give_item( id, "weapon_knife" );
	give_item( id, "weapon_smokegrenade" );
	ColorChat( id, NORMAL, "%s Ne dobja el !", g_szPrefix );
}
 
public Task_Advertise()
{
	ColorChat( 0, NORMAL, "%s Szerver elindult! !tUtolso kivansagod v%s !nby !tH3avY Ra1n!n.", g_szPrefix, g_szVersion );
}
 
GiveWeapons( id )
{
	give_item( id, "weapon_m4a1" );
	give_item( id, "weapon_deagle" );
	give_item( id, "weapon_smokegrenade" );
 
	cs_set_user_bpammo( id, CSW_M4A1, 90 );
	cs_set_user_bpammo( id, CSW_DEAGLE, 120 );
}
 
ColorChat( id, colour, const text[], any:... )
{
	if( !get_playersnum() )
	{
		return;
	}
 
	static message[192];
 
	message[0] = 0x01;
	vformat(message[1], sizeof(message) - 1, text, 4);
 
	replace_all(message, sizeof(message) - 1, "!g", "^x04");
	replace_all(message, sizeof(message) - 1, "!n", "^x01");
	replace_all(message, sizeof(message) - 1, "!t", "^x03");
 
	static index, MSG_Type;
 
	if( !id )
	{
		static i;
		for(i = 1; i <= g_iMaxPlayers; i++)
		{
			if( g_bConnected[i] )
			{
				index = i;
				break;
			}
		}
 
		MSG_Type = MSG_ALL;
	}
	else
	{
		MSG_Type = MSG_ONE;
		index = id;
	}
 
	static bool:bChanged;
	if( colour == GREY || colour == RED || colour == BLUE )
	{
		message_begin(MSG_Type, g_msgTeamInfo, _, index);
		write_byte(index);
		write_string(g_szTeamName[colour]);
		message_end();
 
		bChanged = true;
	}
 
	message_begin(MSG_Type, g_msgSayText, _, index);
	write_byte(index);
	write_string(message);
	message_end();
 
	if( bChanged )
	{
		message_begin(MSG_Type, g_msgTeamInfo, _, index);
		write_byte(index);
		write_string(g_szTeamName[_:cs_get_user_team(index)]);
		message_end();
	}
}
 
get_playercount( CsTeams:iTeam, iStatus )
{
	new iPlayerCount;
 
	for( new i = 1; i <= g_iMaxPlayers; i++ )
	{
		if( !g_bConnected[ i ] || cs_get_user_team( i ) != iTeam ) continue;
 
		switch( iStatus )
		{
			case DEAD: if( g_bAlive[ i ] ) continue;
			case ALIVE: if( !g_bAlive[ i ] ) continue;
		}
 
		iPlayerCount++;
	}
 
	return iPlayerCount;
}