diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 6cea05ac8b..49886c580c 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -494,13 +494,12 @@ inline int RoadVehicle::GetCurrentMaxSpeed() const for (const RoadVehicle *u = this; u != nullptr; u = u->Next()) { if (_settings_game.vehicle.roadveh_acceleration_model == AM_REALISTIC) { if (this->state <= RVSB_TRACKDIR_MASK && IsReversingRoadTrackdir((Trackdir)this->state)) { - max_speed = this->gcache.cached_max_track_speed / 2; - break; - } - - // Are we in a curve and should slow down? - if (((u->direction & 1) == 0) && _settings_game.vehicle.slow_road_vehicles_in_curves) { - max_speed = this->gcache.cached_max_track_speed * 3 / 4; + max_speed = std::min(max_speed, this->gcache.cached_max_track_speed / 2); + } else if ((u->direction & 1) == 0) { + // Are we in a curve and should slow down? + if (_settings_game.vehicle.slow_road_vehicles_in_curves) { + max_speed = std::min(max_speed, this->gcache.cached_max_track_speed * 3 / 4); + } } }