diff --git a/src/engine.cpp b/src/engine.cpp index b4d5b9e5a1..cb0ede8c0c 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -827,8 +827,8 @@ void StartupEngines() { /* Aging of vehicles stops, so account for that when starting late */ CalTime::Year aging_stop_year = _year_engine_aging_stops; - if (_settings_game.vehicle.no_introduce_vehicles_after > 0 && _settings_game.vehicle.no_expire_vehicles_after > 0) { - aging_stop_year = std::min(aging_stop_year, std::max(_settings_game.vehicle.no_introduce_vehicles_after, _settings_game.vehicle.no_expire_vehicles_after)); + if (_settings_game.vehicle.no_expire_vehicles_after > 0) { + aging_stop_year = std::min(aging_stop_year, _settings_game.vehicle.no_expire_vehicles_after); } const CalTime::Date aging_date = std::min(CalTime::CurDate(), CalTime::ConvertYMDToDate(aging_stop_year, 0, 1)); const CalTime::YearMonthDay aging_ymd = CalTime::ConvertDateToYMD(aging_date); @@ -1197,8 +1197,10 @@ void EnginesMonthlyLoop() { if (CalTime::CurYear() < _year_engine_aging_stops) { CalTime::Date no_introduce_after = INT_MAX; + bool no_engine_aging = (_settings_game.vehicle.no_expire_vehicles_after > 0 && CalTime::CurYear() >= _settings_game.vehicle.no_expire_vehicles_after); if (_settings_game.vehicle.no_introduce_vehicles_after > 0) { - if (_settings_game.vehicle.no_expire_vehicles_after > 0 && CalTime::CurYear() >= std::max(_settings_game.vehicle.no_introduce_vehicles_after, _settings_game.vehicle.no_expire_vehicles_after)) { + if (no_engine_aging && CalTime::CurYear() >= _settings_game.vehicle.no_introduce_vehicles_after) { + /* No engine expiry or aging, and no introductions, so nothing to do */ return; } no_introduce_after = CalTime::ConvertYMDToDate(_settings_game.vehicle.no_introduce_vehicles_after, 0, 1) - 1; @@ -1207,7 +1209,7 @@ void EnginesMonthlyLoop() bool refresh = false; for (Engine *e : Engine::Iterate()) { /* Age the vehicle */ - if ((e->flags & ENGINE_AVAILABLE) && e->age != INT32_MAX) { + if (!no_engine_aging && (e->flags & ENGINE_AVAILABLE) && e->age != INT32_MAX) { e->age++; CalcEngineReliability(e, true); refresh = true; diff --git a/src/lang/extra/english.txt b/src/lang/extra/english.txt index db3c4176c2..71e8fba85c 100644 --- a/src/lang/extra/english.txt +++ b/src/lang/extra/english.txt @@ -225,7 +225,7 @@ STR_CONFIG_SETTING_WARN_NO_DEPOT_ORDER_HELPTEXT :When enabled an STR_CONFIG_SETTING_WARN_NO_DEPOT_ORDER_IF_BREAKDOWNS_ON :If vehicle breakdowns enabled STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER :No vehicles expire after: {STRING2} -STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_HELPTEXT :Vehicles which would otherwise expire after this year remain available forever +STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_HELPTEXT :Vehicles which would otherwise expire after this year remain available forever.{}Engine reliability decay is also stopped once this year is reached STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_VALUE :{NUM} STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_ZERO :Off