diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 888574c13f..3efadbb4ea 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -29,6 +29,7 @@ - Change: [#17762] Use vertical tabs in the New Game dialog. - Fix: [#5141] Headless server is counted as a player. - Fix: [#7466] Coaster track not drawn at tunnel exit. +- Fix: [#10535] Guests getting stuck at specific level crossings. - Fix: [#14337] Guest blocking ride entrance after ride price changed to be unaffordable. - Fix: [#15328] Wooden Roller Coaster incorrectly draws a railing on the first station piece (original bug). - Fix: [#16392] Scenery on sloped surface is placed at wrong height. diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 36ebeb9d98..c1ccb78f1a 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -9258,18 +9258,18 @@ void Vehicle::UpdateCrossings() const uint8_t freeCount = travellingForwards ? 3 : 1; while (freeCount-- > 0) { - if (travellingForwards && track_block_get_previous(xyElement, &output)) - { - xyElement.x = output.begin_x; - xyElement.y = output.begin_y; - xyElement.element = output.begin_element; - } - auto* pathElement = map_get_path_element_at(TileCoordsXYZ(CoordsXYZ{ xyElement, xyElement.element->GetBaseZ() })); if (pathElement != nullptr) { pathElement->SetIsBlockedByVehicle(false); } + + if (travellingForwards && freeCount > 0 && track_block_get_previous(xyElement, &output)) + { + xyElement.x = output.begin_x; + xyElement.y = output.begin_y; + xyElement.element = output.begin_element; + } } }