From 4386da53ee98051c3fc4e10ebb1d4bfc28fffe74 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 18 Mar 2021 14:04:50 +0000 Subject: [PATCH] Slightly overestimate descents when deciding if reservation long enough --- src/train_cmd.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 3092670b83..4894829b2c 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3785,7 +3785,9 @@ static bool IsReservationLookAheadLongEnough(const Train *v, const ChooseTrainTr } if (found_signal) { - int64 distance = GetRealisticBrakingDistanceForSpeed(stats, signal_speed, 0, v->lookahead->reservation_end_z - signal_z); + int delta_z = v->lookahead->reservation_end_z - signal_z; + delta_z += (delta_z >> 2); // Slightly overestimate slope changes to compensate for non-uniform descents + int64 distance = GetRealisticBrakingDistanceForSpeed(stats, signal_speed, 0, delta_z); if (signal_position + distance <= v->lookahead->reservation_end_position) return true; }