diff --git a/vehicle.c b/vehicle.c index 9dcdc29be1..b61805dc9d 100644 --- a/vehicle.c +++ b/vehicle.c @@ -98,12 +98,16 @@ void VehicleServiceInDepot(Vehicle *v) bool VehicleNeedsService(const Vehicle *v) { - if (_patches.no_servicing_if_no_breakdowns && _opt.diff.vehicle_breakdowns == 0) - return false; - if (v->vehstatus & VS_CRASHED) return false; /* Crashed vehicles don't need service anymore */ + if (_patches.no_servicing_if_no_breakdowns && _opt.diff.vehicle_breakdowns == 0) { + if (EngineReplacementForPlayer(GetPlayer(v->owner), v->engine_type) != INVALID_ENGINE) + return true; /* Vehicles set for autoreplacing needs to go to a depot even if breakdowns are turned off */ + else + return false; + } + return _patches.servint_ispercent ? (v->reliability < GetEngine(v->engine_type)->reliability * (100 - v->service_interval) / 100) : (v->date_of_last_service + v->service_interval < _date);