public int MoveRobber(IGameState state)
{
if (!silent)
Console.WriteLine(id + ": Move robber");
// get locations not connected to ours
List<int> options = new List<int>(45);
for (int i = 0; i < 45; i++) options.Add(i);
int choice = options.Where(t => state.Board.GetTile(t).Terrain != Terrain.Water
&& state.Board.GetTile(t).Terrain != Terrain.Desert
&& t != state.Board.GetRobberLocation()) // legal
.OrderBy(t => OwnTileValue(t, state.Board) - OpponentTileValue(t, state.Board)).First(); // own value - opponent value, lowest is best for us
return choice;
}