Stop engine reliability decay once no vehicles expire after year is reached
Instead of maximum of expire and introduction year settings See: #646
This commit is contained in:
@@ -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<CalTime::Year>(aging_stop_year, std::max<CalTime::Year>(_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<CalTime::Year>(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<CalTime::Year>(_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;
|
||||
|
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user