diff --git a/town_cmd.c b/town_cmd.c --- a/town_cmd.c +++ b/town_cmd.c @@ -26,6 +26,7 @@ #include "water_map.h" #include "variables.h" #include "bridge.h" +#include "bridge_map.h" #include "table/town_land.h" enum { @@ -1093,6 +1094,8 @@ static bool CheckBuildHouseMode(TileInde slope = GetTileSlope(tile, NULL); if (IsSteepSlope(slope)) return false; + if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return false; + b = 0; if ((slope != SLOPE_FLAT && ~slope & _masks[mode])) b = ~b; if ((tileh != SLOPE_FLAT && ~tileh & _masks[mode+4])) b = ~b; @@ -1136,6 +1139,8 @@ static bool CheckFree2x2Area(TileIndex t if (GetTileSlope(tile, NULL) != SLOPE_FLAT) return false; + if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return false; + if (CmdFailed(DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER | DC_FORCETEST, CMD_LANDSCAPE_CLEAR))) return false; } @@ -1270,6 +1275,7 @@ static bool BuildTownHouse(Town *t, Tile // make sure it's possible if (!EnsureNoVehicle(tile)) return false; if (IsSteepSlope(GetTileSlope(tile, NULL))) return false; + if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return false; r = DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR); if (CmdFailed(r)) return false;