CBaseEntity* CHL2MP_Player::EntSelectSpawnPoint( void ) { CBaseEntity *pSpot = NULL; CBaseEntity *pLastSpawnPoint = g_pLastSpawn; edict_t *player = edict(); const char *pSpawnpointName = "info_player_deathmatch"; const char *pExtraSpawnPoints[4] = { "info_player_counterterrorist", "info_player_axis", "info_player_allies", "info_player_terrorist" }; int iExtraSpawnCount = 4; //must match the array's length if ( HL2MPRules()->IsTeamplay() == true ) { if ( GetTeamNumber() == TEAM_COMBINE ) { pSpawnpointName = "info_player_combine"; pLastSpawnPoint = g_pLastCombineSpawn; } else if ( GetTeamNumber() == TEAM_REBELS ) { pSpawnpointName = "info_player_rebel"; pLastSpawnPoint = g_pLastRebelSpawn; } if ( gEntList.FindEntityByClassname( NULL, pSpawnpointName ) == NULL ) { int b; pSpawnpointName = "info_player_deathmatch"; for ( b = 0; b < ( iExtraSpawnCount + 2 ); b++ ) { if ( gEntList.FindEntityByClassname( NULL, pExtraSpawnPoints[b] ) ) { strcpy( pSpawnpointName, pExtraSpawnPoints[b] ); break; } } pLastSpawnPoint = g_pLastSpawn; } } }