From 880a947eb34f864d746cbcae280579fdd12a8df5 Mon Sep 17 00:00:00 2001 From: frosch Date: Tue, 22 Apr 2025 18:34:28 +0200 Subject: [PATCH] Fix: [NewGRF] Randomisation-trigger 'path reservation' did not work for waypoints. --- src/pathfinder/yapf/yapf_rail.cpp | 5 +++++ src/pbs.cpp | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pathfinder/yapf/yapf_rail.cpp b/src/pathfinder/yapf/yapf_rail.cpp index 21563b2d9a..ab126ae5fe 100644 --- a/src/pathfinder/yapf/yapf_rail.cpp +++ b/src/pathfinder/yapf/yapf_rail.cpp @@ -110,6 +110,11 @@ private: SetSignalStateByTrackdir(tile, rev_td, SIGNAL_STATE_RED); MarkTileDirtyByTile(tile); } + + if (IsRailWaypointTile(tile)) { + auto *st = BaseStation::GetByTile(tile); + TriggerStationRandomisation(st, tile, StationRandomTrigger::PathReservation); + } } return tile != this->res_dest_tile || td != this->res_dest_td; diff --git a/src/pbs.cpp b/src/pbs.cpp index 917ca48988..e76c88a85a 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -113,8 +113,8 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations) case MP_STATION: if (HasStationRail(tile) && !HasStationReservation(tile)) { SetRailStationReservation(tile, true); - if (trigger_stations && IsRailStation(tile)) { - auto *st = Station::GetByTile(tile); + if (trigger_stations) { + auto *st = BaseStation::GetByTile(tile); TriggerStationRandomisation(st, tile, StationRandomTrigger::PathReservation); } MarkTileDirtyByTile(tile); // some GRFs need redraw after reserving track