diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index bfdfcbfea8..ee3176e6d5 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1118,10 +1118,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, SetBitTunnelBridgeExit(tile); } } - SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE); - SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE); - SetTunnelBridgePBS(tile, is_pbs); - SetTunnelBridgePBS(tile_exit, is_pbs); + if (p2 == 0 || p2 == 4 || p2 == 8) { + SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE); + SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE); + SetTunnelBridgePBS(tile, is_pbs); + SetTunnelBridgePBS(tile_exit, is_pbs); + } } if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile) && !HasTunnelBridgeReservation(tile)) SetTunnelBridgeExitGreen(tile, false); if (IsTunnelBridgeExit(tile_exit) && IsTunnelBridgePBS(tile_exit) && !HasTunnelBridgeReservation(tile_exit)) SetTunnelBridgeExitGreen(tile_exit, false);