diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -195,10 +195,17 @@ bool Vehicle::NeedsServicing() const /* Are we ready for the next service cycle? */ const Company *c = Company::Get(this->owner); - if (this->ServiceIntervalIsPercent() ? - (this->reliability >= this->GetEngine()->reliability * (100 - this->GetServiceInterval()) / 100) : - (this->date_of_last_service + this->GetServiceInterval() >= TimerGameEconomy::date)) { - return false; + + /* Service intervals can be measured in different units, which we handle individually. */ + if (this->ServiceIntervalIsPercent()) { + /* Service interval is in percents. */ + if (this->reliability >= this->GetEngine()->reliability * (100 - this->GetServiceInterval()) / 100) return false; + } else if (TimerGameEconomy::UsingWallclockUnits()) { + /* Service interval is in minutes. */ + if (this->date_of_last_service + (this->GetServiceInterval() * EconomyTime::DAYS_IN_ECONOMY_MONTH) >= TimerGameEconomy::date) return false; + } else { + /* Service interval is in days. */ + if (this->date_of_last_service + this->GetServiceInterval() >= TimerGameEconomy::date) return false; } /* If we're servicing anyway, because we have not disabled servicing when