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;