diff -r b52d2c1acc5c -r edb5b94e2094 rail.c --- a/rail.c Wed Jun 07 18:41:58 2006 +0000 +++ b/rail.c Wed Jun 07 19:35:21 2006 +0000 @@ -104,6 +104,7 @@ RailType GetTileRailType(TileIndex tile, Trackdir trackdir) { + DiagDirection exitdir = TrackdirToExitdir(trackdir); switch (GetTileType(tile)) { case MP_RAILWAY: return GetRailType(tile); @@ -123,8 +124,21 @@ return GetRailType(tile); } } else { - if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) { - return GetRailType(tile); + if (IsBridgeRamp(tile)) { + if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) { + return GetRailType(tile); + } + } else { + if (GetBridgeAxis(tile) == DiagDirToAxis(exitdir)) { + if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) { + return GetRailTypeOnBridge(tile); + } + } else { + if (IsTransportUnderBridge(tile) && + GetTransportTypeUnderBridge(tile) == TRANSPORT_RAIL) { + return GetRailType(tile); + } + } } } break;