From e6eede841a0f86b93826b930f2189f50218b3eee Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 13 Jul 2013 14:12:14 +0000 Subject: (svn r25604) -Fix [FS#5550]: Only the front engine's date of last service was updated --- src/vehicle.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/vehicle.cpp') diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 4b5ecfc12..0ed769b76 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -87,14 +87,24 @@ bool Vehicle::NeedsAutorenewing(const Company *c, bool use_renew_setting) const return true; } +/** + * Service a vehicle and all subsequent vehicles in the consist + * + * @param *v The vehicle or vehicle chain being serviced + */ void VehicleServiceInDepot(Vehicle *v) { - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = v->GetEngine()->reliability; - /* Prevent vehicles from breaking down directly after exiting the depot. */ - v->breakdown_chance /= 4; + assert(v != NULL); SetWindowDirty(WC_VEHICLE_DETAILS, v->index); // ensure that last service date and reliability are updated + + do { + v->date_of_last_service = _date; + v->breakdowns_since_last_service = 0; + v->reliability = v->GetEngine()->reliability; + /* Prevent vehicles from breaking down directly after exiting the depot. */ + v->breakdown_chance /= 4; + v = v->Next(); + } while (v != NULL && v->HasEngineType()); } /** -- cgit v1.2.3-54-g00ecf