Merge branch 'vehicle_repair_costs-sx' into jgrpp
Conflicts: src/lang/english.txt src/saveload/extended_ver_sl.cpp src/saveload/extended_ver_sl.h src/settings_type.h
This commit is contained in:
@@ -56,6 +56,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||
{ XLSFI_IMPROVED_BREAKDOWNS, XSCF_NULL, 1, 1, "improved_breakdowns", NULL, NULL, NULL },
|
||||
{ XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", NULL, NULL, NULL },
|
||||
{ XSLFI_AUTO_TIMETABLE, XSCF_NULL, 1, 1, "auto_timetables", NULL, NULL, NULL },
|
||||
{ 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
|
||||
};
|
||||
|
||||
|
@@ -31,6 +31,7 @@ enum SlXvFeatureIndex {
|
||||
XLSFI_IMPROVED_BREAKDOWNS, ///< Improved breakdowns patch
|
||||
XSLFI_TT_WAIT_IN_DEPOT, ///< Timetabling waiting time in depot patch
|
||||
XSLFI_AUTO_TIMETABLE, ///< Auto timetables and separation patch
|
||||
XSLFI_VEHICLE_REPAIR_COST, ///< Vehicle repair costs patch
|
||||
|
||||
XSLFI_SIZE, ///< Total count of features, including null feature
|
||||
};
|
||||
|
@@ -368,6 +368,24 @@ void AfterLoadVehicles(bool part_of_load)
|
||||
v->SetServiceIntervalIsPercent(c->settings.vehicle.servint_ispercent);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
v->repair_cost = v->value;
|
||||
for (int w = 0; w < v->age / 7; w++, v->repair_cost += v->repair_cost >> 8);
|
||||
//DEBUG(misc,0, "eid#%d, value=%lld, weeks=%d/%d, repair cost=%lld",
|
||||
// v->engine_type, (int64)v->value, v->age, v->max_age, (int64)v->repair_cost );
|
||||
|
||||
if (v->age > v->max_age) {
|
||||
Date weeks = (v->age - v->max_age) / 7;
|
||||
for (int w = 0; w < weeks; w++, v->repair_cost += v->repair_cost >> 8);
|
||||
//DEBUG(misc,0, "OLD: value=%lld, weeks=%d, repair cost=%lld", (int64)v->value, weeks, (int64)v->repair_cost );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CheckValidVehicles();
|
||||
@@ -692,6 +710,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_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),
|
||||
|
Reference in New Issue
Block a user