diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp --- a/src/pathfinder/follow_track.hpp +++ b/src/pathfinder/follow_track.hpp @@ -466,13 +466,18 @@ public: if (!IsWaterTT() && IsBridgeTile(m_old_tile)) { int spd = GetBridgeSpec(GetBridgeType(m_old_tile))->speed; if (IsRoadTT()) spd *= 2; - if (max_speed > spd) max_speed = spd; + max_speed = std::min(max_speed, spd); } /* Check for speed limit imposed by railtype */ if (IsRailTT()) { uint16 rail_speed = GetRailTypeInfo(GetRailType(m_old_tile))->max_speed; if (rail_speed > 0) max_speed = std::min(max_speed, rail_speed); } + if (IsRoadTT()) { + /* max_speed is already in roadvehicle units, no need to further modify (divide by 2) */ + uint16 road_speed = GetRoadTypeInfo(GetRoadType(m_old_tile, GetRoadTramType(RoadVehicle::From(m_veh)->roadtype)))->max_speed; + if (road_speed > 0) max_speed = std::min(max_speed, road_speed); + } /* if min speed was requested, return it */ if (pmin_speed != nullptr) *pmin_speed = min_speed;