From 4c030468e13bfb113a8672a80a27efc7e1fa325f Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 22 Aug 2011 11:47:15 +0000 Subject: (svn r22809) -Fix [FS#4731]: towns expanding from the "wrong" side of a tunnel or bridge --- src/town_cmd.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 015406347..e98079db5 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1236,9 +1236,14 @@ static int GrowTownAtRoad(Town *t, TileIndex tile) return _grow_town_result; } - /* Select a random bit from the blockmask, walk a step - * and continue the search from there. */ - do target_dir = RandomDiagDir(); while (!(cur_rb & DiagDirToRoadBits(target_dir))); + if (IsTileType(tile, MP_TUNNELBRIDGE)) { + /* Only build in the direction away from the tunnel or bridge. */ + target_dir = ReverseDiagDir(GetTunnelBridgeDirection(tile)); + } else { + /* Select a random bit from the blockmask, walk a step + * and continue the search from there. */ + do target_dir = RandomDiagDir(); while (!(cur_rb & DiagDirToRoadBits(target_dir))); + } tile = TileAddByDiagDir(tile, target_dir); if (IsTileType(tile, MP_ROAD) && !IsRoadDepot(tile) && HasTileRoadType(tile, ROADTYPE_ROAD)) { -- cgit v1.2.3-70-g09d2