Index: src/town_cmd.cpp =================================================================== --- src/town_cmd.cpp (revision 27632) +++ src/town_cmd.cpp (working copy) @@ -1044,6 +1044,9 @@ */ static bool GrowTownWithRoad(const Town *t, TileIndex tile, RoadBits rcmd) { + /* don't build road on coasts with only one corner raised */ + if (IsSlopeWithOneCornerRaised(GetTileSlope(tile)) && IsCoastTile(tile)) return false; + if (DoCommand(tile, rcmd, t->index, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD).Succeeded()) { _grow_town_result = GROWTH_SUCCEED; return true; @@ -1066,6 +1069,8 @@ assert(bridge_dir < DIAGDIR_END); const Slope slope = GetTileSlope(tile); + /* don't build a bridge if the source tile is a coast with only one corner raised */ + if (IsSlopeWithOneCornerRaised(slope) && IsCoastTile(tile)) return false; /* Make sure the direction is compatible with the slope. * Well we check if the slope has an up bit set in the @@ -1103,6 +1108,9 @@ /* no water tiles in between? */ if (bridge_length == 1) return false; + /* don't build a bridge if the destination tile is a coast with only one corner raised */ + if (IsSlopeWithOneCornerRaised(GetTileSlope(bridge_tile)) && IsCoastTile(bridge_tile)) return false; + for (uint8 times = 0; times <= 22; times++) { byte bridge_type = RandomRange(MAX_BRIDGES - 1); @@ -2066,7 +2074,7 @@ { /* cannot build on these slopes... */ Slope slope = GetTileSlope(tile); - if ((noslope && slope != SLOPE_FLAT) || IsSteepSlope(slope)) return false; + if ((noslope && slope != SLOPE_FLAT) || IsSteepSlope(slope) || (IsSlopeWithOneCornerRaised(slope) && IsCoastTile(tile))) return false; /* building under a bridge? */ if (IsBridgeAbove(tile)) return false;