From 6a6d9f37735a18baac58baaecdb64676c157e6e2 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 14 Jan 2021 17:53:28 +0000 Subject: [PATCH] Fix tunnel/bridge PBS start tile in TryPathReserve --- src/train_cmd.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 68d8356c2e..8bdbf58b26 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3472,8 +3472,13 @@ bool TryPathReserve(Train *v, bool mark_as_stuck, bool first_tile_okay) } DiagDirection exitdir = TrackdirToExitdir(origin.trackdir); - TileIndex new_tile = TileAddByDiagDir(origin.tile, exitdir); - TrackBits reachable = TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(GetTileTrackStatus(new_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTrackdirs(exitdir)); + TileIndex new_tile; + if (IsTileType(origin.tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(origin.tile) == exitdir) { + new_tile = GetOtherTunnelBridgeEnd(origin.tile); + } else { + new_tile = TileAddByDiagDir(origin.tile, exitdir); + } + TrackBits reachable = TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(GetTileTrackStatus(new_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTrackdirs(exitdir)); if (Rail90DegTurnDisallowedTilesFromDiagDir(origin.tile, new_tile, exitdir)) reachable &= ~TrackCrossesTracks(TrackdirToTrack(origin.trackdir));