summaryrefslogtreecommitdiff
path: root/clear_cmd.c
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2006-06-19 06:49:51 +0000
committerDarkvater <darkvater@openttd.org>2006-06-19 06:49:51 +0000
commitbefc6accba2a7bfce4aa6e36c75b12bbb12b04ea (patch)
tree99becd0ba48a9d57887cd60465cfbe39c67cce9f /clear_cmd.c
parent6102f6e2f99361b5adcd7e029b492214f8e60643 (diff)
downloadopenttd-befc6accba2a7bfce4aa6e36c75b12bbb12b04ea.tar.xz
(svn r5312) - Fix (r5288): Be very strict about terraforming. If a rail tile has a foundation already, bail out.
Diffstat (limited to 'clear_cmd.c')
-rw-r--r--clear_cmd.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/clear_cmd.c b/clear_cmd.c
index 8ccd78758..2802fc9cf 100644
--- a/clear_cmd.c
+++ b/clear_cmd.c
@@ -259,13 +259,14 @@ int32 CmdTerraformLand(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (IsSteepSlope(s)) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
if (IsPlainRailTile(tile)) {
- /* We need to check if a rail is on a leveled foundation and
- * then treat it as such. Important for correct tunneling */
+ /* If a piece of rail is on a foundation, prohibit any terraforming
+ * of that tile. We do need to check this with the original slope, not
+ * the would-be one. */
extern const TrackBits _valid_tileh_slopes[2][15];
TrackBits tb = GetTrackBits(tile);
- uint foundation = (GetRailFoundation(s, tb) == 0) ? 1 : 0;
- if (tb & ~_valid_tileh_slopes[foundation][s]) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
+ if (GetRailFoundation(GetTileSlope(tile, NULL), tb) != 0) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
+ if (tb & ~_valid_tileh_slopes[0][s]) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
} else return_cmd_error(STR_5800_OBJECT_IN_THE_WAY);
}