From 0dcbcedbac00ae8f5443b52281030a8fee2d7059 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 15 Apr 2024 00:16:41 +0100 Subject: [PATCH] Fix ScriptRail::BuildSignal when using realistic braking with block signals --- src/script/api/script_rail.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index d0090ba2fb..f892a4e782 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -448,6 +448,7 @@ static bool IsValidSignalType(int signal_type) EnforcePrecondition(false, ScriptMap::DistanceManhattan(tile, front) == 1) EnforcePrecondition(false, ::IsPlainRailTile(tile)); EnforcePrecondition(false, ::IsValidSignalType(signal)); + EnforcePrecondition(false, signal < SIGNALTYPE_TWOWAY || _settings_game.vehicle.train_braking_model == TBM_ORIGINAL); Track track = INVALID_TRACK; uint signal_cycles = 0; @@ -464,7 +465,7 @@ static bool IsValidSignalType(int signal_type) uint p1 = track; if (signal < SIGNALTYPE_TWOWAY) { - if (signal != SIGNALTYPE_PBS && signal != SIGNALTYPE_PBS_ONEWAY) signal_cycles++; + if (signal != SIGNALTYPE_PBS && signal != SIGNALTYPE_PBS_ONEWAY && _settings_game.vehicle.train_braking_model == TBM_ORIGINAL) signal_cycles++; p1 |= (signal_cycles << 15); } p1 |= ((signal >= SIGNALTYPE_TWOWAY ? signal ^ SIGNALTYPE_TWOWAY : signal) << 5);