diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index c49c82aeb5..2c1220a832 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -4347,7 +4347,8 @@ bool AfterLoadGame() extern void YapfCheckRailSignalPenalties(); YapfCheckRailSignalPenalties(); - UpdateExtraAspectsVariable(); + bool update_always_reserve_through = SlXvIsFeaturePresent(XSLFI_REALISTIC_TRAIN_BRAKING, 8, 10); + UpdateExtraAspectsVariable(update_always_reserve_through); if (_networking && !_network_server) { SlProcessVENC(); diff --git a/src/signal.cpp b/src/signal.cpp index 2a78ad977f..98de49885a 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -1892,7 +1892,7 @@ static bool DetermineExtraAspectsVariable() return changed; } -void UpdateExtraAspectsVariable() +void UpdateExtraAspectsVariable(bool update_always_reserve_through) { std::array new_mapping; DetermineSignalStyleMapping(new_mapping); @@ -1915,6 +1915,8 @@ void UpdateExtraAspectsVariable() if (_extra_aspects > 0) UpdateAllSignalAspects(); UpdateAllBlockSignals(); MarkWholeScreenDirty(); + } else if (update_always_reserve_through) { + UpdateAllSignalReserveThroughBits(); } } diff --git a/src/signal_func.h b/src/signal_func.h index 9b02638937..8c0cf35446 100644 --- a/src/signal_func.h +++ b/src/signal_func.h @@ -195,7 +195,7 @@ void UpdateLookaheadCombinedNormalShuntSignalDeferred(TileIndex tile, Trackdir t void FlushDeferredAspectUpdates(); void FlushDeferredDetermineCombineNormalShuntMode(Train *v); void UpdateAllSignalAspects(); -void UpdateExtraAspectsVariable(); +void UpdateExtraAspectsVariable(bool update_always_reserve_through = false); void InitialiseExtraAspectsVariable(); bool IsRailSpecialSignalAspect(TileIndex tile, Track track); diff --git a/src/sl/extended_ver_sl.cpp b/src/sl/extended_ver_sl.cpp index 619c91a040..26ee1be67c 100644 --- a/src/sl/extended_ver_sl.cpp +++ b/src/sl/extended_ver_sl.cpp @@ -157,7 +157,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { { XSLFI_ANIMATED_TILE_EXTRA, XSCF_NULL, 1, 1, "animated_tile_extra", nullptr, nullptr, nullptr }, { XSLFI_NEWGRF_INFO_EXTRA, XSCF_NULL, 1, 1, "newgrf_info_extra", nullptr, nullptr, nullptr }, { XSLFI_INDUSTRY_CARGO_ADJ, XSCF_IGNORABLE_UNKNOWN, 1, 1, "industry_cargo_adj", nullptr, nullptr, nullptr }, - { XSLFI_REALISTIC_TRAIN_BRAKING, XSCF_NULL, 10, 10, "realistic_train_braking", nullptr, nullptr, "VLKA" }, + { XSLFI_REALISTIC_TRAIN_BRAKING, XSCF_NULL, 11, 11, "realistic_train_braking", nullptr, nullptr, "VLKA" }, { XSLFI_INFLATION_FIXED_DATES, XSCF_IGNORABLE_ALL, 1, 1, "inflation_fixed_dates", nullptr, nullptr, nullptr }, { XSLFI_WATER_FLOODING, XSCF_NULL, 2, 2, "water_flooding", nullptr, nullptr, nullptr }, { XSLFI_MORE_HOUSES, XSCF_NULL, 2, 2, "more_houses", nullptr, nullptr, nullptr },