diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp index be40cad17b..f8e5b48808 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -45,6 +45,7 @@ std::vector _sl_xv_discardable_chunk_ids; ///< list of chunks static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { + { XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 1, 1, "vehicle_repair_cost", NULL, NULL, NULL }, { XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker }; diff --git a/src/saveload/extended_ver_sl.h b/src/saveload/extended_ver_sl.h index 3dffee5a7c..78efaf3f26 100644 --- a/src/saveload/extended_ver_sl.h +++ b/src/saveload/extended_ver_sl.h @@ -21,6 +21,7 @@ */ enum SlXvFeatureIndex { XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use + XSLFI_VEHICLE_REPAIR_COST, ///< Vehicle repair costs patch XSLFI_SIZE, ///< Total count of features, including null feature }; diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index b080cd0f9b..711d9ac7ac 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -92,7 +92,6 @@ enum SLRefType { /** Highest possible savegame version. */ #define SL_MAX_VERSION UINT16_MAX -#define SL_REPAIRCOST 200 /** Flags of a chunk. */ enum ChunkType { diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index db57da3dd8..6d534e80c1 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -369,7 +369,7 @@ void AfterLoadVehicles(bool part_of_load) } } - if (IsSavegameVersionBefore(SL_REPAIRCOST)) { + if (SlXvIsFeatureMissing(XSLFI_VEHICLE_REPAIR_COST)) { /* repair cost is value for new vehicles and each week +/256 part for old */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle()) continue; @@ -706,7 +706,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLEG_CONDVAR( _cargo_loaded_at_xy, SLE_UINT32, 51, 67), SLE_CONDVAR(Vehicle, value, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, value, SLE_INT64, 65, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, repair_cost, SLE_INT64, SL_REPAIRCOST, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle, repair_cost, SLE_INT64, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST)), SLE_CONDVAR(Vehicle, random_bits, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, waiting_triggers, SLE_UINT8, 2, SL_MAX_VERSION), diff --git a/src/table/settings.ini b/src/table/settings.ini index e5473374b8..9e18e2c75a 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -3941,17 +3941,17 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = vehicle.pay_for_repair -from = SL_REPAIRCOST def = true str = STR_CONFIG_SETTING_PAY_FOR_REPAIR_VEHICLE strhelp = STR_CONFIG_SETTING_PAY_FOR_REPAIR_VEHICLE_HELPTEXT cat = SC_EXPERT +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST) +patxname = ""vehicle_repair_cost.vehicle.pay_for_repair"" [SDT_VAR] base = GameSettings var = vehicle.repair_cost type = SLE_UINT8 -from = SL_REPAIRCOST def = 100 min = 1 max = 255 @@ -3960,6 +3960,8 @@ str = STR_CONFIG_SETTING_REPAIR_COST strhelp = STR_CONFIG_SETTING_REPAIR_COST_HELPTEXT strval = STR_JUST_INT cat = SC_EXPERT +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST) +patxname = ""vehicle_repair_cost.vehicle.repair_cost"" [SDT_END]