public Tile[] returnBestCityScores(int settlerR, int settlerC, double distBias)
	{
		evalBefore();
		int[][] cityScores = new int[rows][cols];
		for (int r = 0; r < rows; r++)
		{
			for (int c = 0; c < cols; c++)
			{
				int dist = (int)Math.sqrt(Math.pow(r-settlerR,2) + Math.pow(c-settlerC,2));
				if (dist > 10 || getTile(r,c).owner != null || getTile(r,c).biome == -1)
					cityScores[r][c] = -9999;
				else
					cityScores[r][c] = returnCityScoreNoOwner(r,c) - (int)(distBias*dist);
			}
		}
		Tile[] temp = new Tile[10];

		//There will be a more efficient algorithm here,
		//currently the number of calculations is 10*r*c

		//Find the ten most productive tiles in the game
		for (int i = 0; i < 10; i++)
		{
			Tile maxTile = tiles[0][0];
			for (int r = 0; r < rows; r++)
			{
				for (int c = 0; c < cols; c++)
				{
					//if (cityScores[r][c] <= 0) continue;
					if (cityScores[r][c] > cityScores[maxTile.row][maxTile.col])
					{
						maxTile = getTile(r,c);
					}
				}
			}
			cityScores[maxTile.row][maxTile.col] = 0;
			temp[i] = maxTile;
		}

		return temp;
	}