diff -r f02afc46afa8 -r 87f2238f47d4 src/ai/api/ai_tile.cpp --- a/src/ai/api/ai_tile.cpp Sat Jun 07 22:57:00 2008 +0000 +++ b/src/ai/api/ai_tile.cpp Sat Jun 07 23:05:36 2008 +0000 @@ -12,6 +12,7 @@ #include "../../station_func.h" #include "../../command_type.h" #include "../../settings_type.h" +#include "../../player_func.h" #include "../../road_map.h" /* static */ bool AITile::IsBuildable(TileIndex tile) @@ -19,18 +20,15 @@ if (!::IsValidTile(tile)) return false; switch (::GetTileType(tile)) { - default: return true; - case MP_VOID: - case MP_HOUSE: - case MP_STATION: - case MP_INDUSTRY: - case MP_UNMOVABLE: - case MP_WATER: return false; - + default: return false; + case MP_CLEAR: return true; case MP_ROAD: /* Depots aren't considered buildable */ if (::GetRoadTileType(tile) == ROAD_TILE_DEPOT) return false; - return true; + if (CountBits(GetAllRoadBits(tile)) != 1) return false; + if (IsRoadOwner(tile, ROADTYPE_ROAD, OWNER_TOWN)) return true; + if (IsRoadOwner(tile, ROADTYPE_ROAD, _current_player)) return true; + return false; } }