diff --git a/src/openrct2/peep/Staff.cpp b/src/openrct2/peep/Staff.cpp index 465a49bdfa..18d17b94dd 100644 --- a/src/openrct2/peep/Staff.cpp +++ b/src/openrct2/peep/Staff.cpp @@ -2435,7 +2435,7 @@ bool Staff::UpdateFixingMoveToStationStart(bool firstRun, Ride* ride) CoordsXYE input; input.x = stationPosition.x * 32; input.y = stationPosition.y * 32; - input.element = map_get_track_element_at_from_ride(input.x, input.y, stationZ, current_ride); + input.element = map_get_track_element_at_from_ride({ input.x, input.y, stationZ << 3 }, current_ride); if (input.element == nullptr) { return true; diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 93c7f40d79..dbddc1c97a 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -2288,16 +2288,17 @@ TileElement* map_get_track_element_at_of_type_from_ride(const CoordsXYZ& trackPo * @param y y units, not tiles. * @param z Base height. */ -TileElement* map_get_track_element_at_from_ride(int32_t x, int32_t y, int32_t z, ride_id_t rideIndex) +TileElement* map_get_track_element_at_from_ride(const CoordsXYZ& trackPos, ride_id_t rideIndex) { - TileElement* tileElement = map_get_first_element_at({ x, y }); + TileElement* tileElement = map_get_first_element_at(trackPos); if (tileElement == nullptr) return nullptr; + auto trackTilePos = TileCoordsXYZ{ trackPos }; do { if (tileElement->GetType() != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->base_height != z) + if (tileElement->base_height != trackTilePos.z) continue; if (tileElement->AsTrack()->GetRideIndex() != rideIndex) continue; diff --git a/src/openrct2/world/Map.h b/src/openrct2/world/Map.h index 75d1692902..3a38e84693 100644 --- a/src/openrct2/world/Map.h +++ b/src/openrct2/world/Map.h @@ -235,7 +235,7 @@ TileElement* map_get_track_element_at_of_type_seq(const CoordsXYZ& trackPos, int TrackElement* map_get_track_element_at_of_type(CoordsXYZD location, int32_t trackType); TrackElement* map_get_track_element_at_of_type_seq(CoordsXYZD location, int32_t trackType, int32_t sequence); TileElement* map_get_track_element_at_of_type_from_ride(const CoordsXYZ& trackPos, int32_t trackType, ride_id_t rideIndex); -TileElement* map_get_track_element_at_from_ride(int32_t x, int32_t y, int32_t z, ride_id_t rideIndex); +TileElement* map_get_track_element_at_from_ride(const CoordsXYZ& trackPos, ride_id_t rideIndex); TileElement* map_get_track_element_at_with_direction_from_ride( int32_t x, int32_t y, int32_t z, int32_t direction, ride_id_t rideIndex);