diff --git a/npf.c b/npf.c index bdb26af52a..85b11bd3fd 100644 --- a/npf.c +++ b/npf.c @@ -37,8 +37,8 @@ bool IsEndOfLine(TileIndex tile, Trackdir trackdir) return false; // depot - if (IsTileDepotType(tile, TRANSPORT_RAIL)) - return false; + if (IsTileDepotType(tile, TRANSPORT_RAIL) && (exitdir != GetDepotDirection(tile, TRANSPORT_RAIL))) + return true; /* Calculate next tile */ dst_tile = tile + TileOffsByDir(exitdir); @@ -51,14 +51,14 @@ bool IsEndOfLine(TileIndex tile, Trackdir trackdir) { byte src_type = GetTileRailType(tile, trackdir); - byte dst_type = GetTileRailType(dst_tile, TrackdirToExitdir(trackdir)); + byte dst_type = GetTileRailType(dst_tile, exitdir); if (src_type != dst_type) { return true; } if (GetTileOwner(tile) != GetTileOwner(dst_tile)) return true; - if (IsTileDepotType(dst_tile, TRANSPORT_RAIL) && (TrackdirToExitdir(trackdir) != ReverseDiagdir(GetDepotDirection(dst_tile, TRANSPORT_RAIL)))) + if (IsTileDepotType(dst_tile, TRANSPORT_RAIL) && (exitdir != ReverseDiagdir(GetDepotDirection(dst_tile, TRANSPORT_RAIL)))) return true; /* Check for oneway signal against us */