diff --git a/src/road.cpp b/src/road.cpp --- a/src/road.cpp +++ b/src/road.cpp @@ -13,13 +13,14 @@ #include "engine_base.h" #include "date_func.h" #include "settings_type.h" +#include "landscape.h" bool IsPossibleCrossing(const TileIndex tile, Axis ax) { return (IsTileType(tile, MP_RAILWAY) && !HasSignals(tile) && - GetTrackBits(tile) == (ax == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X) && - GetTileSlope(tile, NULL) == SLOPE_FLAT); + GetTrackBits(tile) == (ax == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X) && + GetFoundationSlope(tile, NULL) == SLOPE_FLAT); } RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -1337,7 +1337,7 @@ static void TileLoop_Road(TileIndex tile if (t->road_build_months != 0 && (DistanceManhattan(t->xy, tile) < 8 || grp != HZB_TOWN_EDGE) && IsNormalRoad(tile) && CountBits(GetAllRoadBits(tile)) > 1 ) { - if (GetTileSlope(tile, NULL) == SLOPE_FLAT && EnsureNoVehicleOnGround(tile) && Chance16(1, 40)) { + if (GetFoundationSlope(tile, NULL) == SLOPE_FLAT && EnsureNoVehicleOnGround(tile) && Chance16(1, 40)) { StartRoadWorks(tile); SndPlayTileFx(SND_21_JACKHAMMER, tile); diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -776,7 +776,7 @@ static bool IsRoadAllowedHere(Town *t, T return false; } - cur_slope = GetTileSlope(tile, NULL); + cur_slope = _settings_game.construction.build_on_slopes ? GetFoundationSlope(tile, NULL) : GetTileSlope(tile, NULL); if (cur_slope == SLOPE_FLAT) { no_slope: /* Tile has no slope */