11
README.md
11
README.md
@@ -211,8 +211,10 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
|
||||
* Savegames from this patchpack are not loadable in trunk.
|
||||
* Savegames from trunk up to the last savegame version which has been merged into this branch (*jgrpp*) should be loadable in this patchpack.
|
||||
* Savegames from other branches which use the save/load code in the *save_ext* branch (usually suffixed: *-sx*) which are also merged into this branch (*jgrpp*), or where the added feature is marked as discardable/ignorable, should be loadable in this patchpack.
|
||||
* Savegames from other patched versions are not loadable in this patchpack except for savegames from the *tracerestrict* branch ([routing restrictions patch](http://www.tt-forums.net/viewtopic.php?f=33&t=73397)),
|
||||
savegames from the [Spring 2013 Patch Pack](http://www.tt-forums.net/viewtopic.php?f=33&t=66892) v2.0 - v2.4 (subject to caveats, see below).
|
||||
* Savegames from other patched versions are not loadable in this patchpack except for savegames from:
|
||||
* The *tracerestrict* branch ([routing restrictions patch](http://www.tt-forums.net/viewtopic.php?f=33&t=73397))
|
||||
* The [Spring 2013 Patch Pack](http://www.tt-forums.net/viewtopic.php?f=33&t=66892) v2.0 - v2.4 (subject to caveats, see below)
|
||||
* [Joker's Patch Pack](https://www.tt-forums.net/viewtopic.php?f=33&t=74365) v1.19 - v1.27 (subject to caveats, see below)
|
||||
|
||||
* Miscellaneous
|
||||
* Various improvements to the crash logger.
|
||||
@@ -276,6 +278,11 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
|
||||
* Savegames which have aircraft approaching, landing, taking off or landed at an oil rig are rejected
|
||||
* The inflation cost multiplier is adjusted on load
|
||||
|
||||
#### Caveats for loading savegames from [Joker's Patch Pack](https://www.tt-forums.net/viewtopic.php?f=33&t=74365):
|
||||
* This is not guaranteed to be bug free
|
||||
* Logic signals are cleared, leaving ordinary signals
|
||||
* Various vehicle separation settings and partially-automatic modes are not supported.
|
||||
* Rail ageing/grass on tracks, trip histories, waiting cargo histories, station cargo punishment and other features not in this patch pack are dropped/ignored.
|
||||
|
||||
#### A note on branches
|
||||
|
||||
|
@@ -794,7 +794,7 @@ bool AfterLoadGame()
|
||||
/* The value of _date_fract got divided, so make sure that old games are converted correctly. */
|
||||
if (IsSavegameVersionBefore(SLV_11, 1) || (IsSavegameVersionBefore(SLV_147) && _date_fract > DAY_TICKS)) _date_fract /= 885;
|
||||
|
||||
if (SlXvIsFeaturePresent(XSLFI_SPRINGPP)) {
|
||||
if (SlXvIsFeaturePresent(XSLFI_SPRINGPP) || SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
|
||||
assert(_settings_game.economy.day_length_factor >= 1);
|
||||
_tick_skip_counter = _date_fract % _settings_game.economy.day_length_factor;
|
||||
_date_fract /= _settings_game.economy.day_length_factor;
|
||||
@@ -803,7 +803,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
|
||||
/* Set day length factor to 1 if loading a pre day length savegame */
|
||||
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH) && SlXvIsFeatureMissing(XSLFI_SPRINGPP)) {
|
||||
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH) && SlXvIsFeatureMissing(XSLFI_SPRINGPP) && SlXvIsFeatureMissing(XSLFI_JOKERPP)) {
|
||||
_settings_game.economy.day_length_factor = 1;
|
||||
}
|
||||
|
||||
@@ -1424,7 +1424,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_ROAD_TYPES)) {
|
||||
if (IsSavegameVersionBefore(SLV_ROAD_TYPES) && !SlXvIsFeaturePresent(XSLFI_JOKERPP, SL_JOKER_1_27)) {
|
||||
/* Add road subtypes */
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
bool has_road = false;
|
||||
@@ -1971,6 +1971,13 @@ bool AfterLoadGame()
|
||||
v->current_order.SetLoadType(OLFB_NO_LOAD);
|
||||
}
|
||||
}
|
||||
} else if (SlXvIsFeaturePresent(XSLFI_JOKERPP, 1, SL_JOKER_1_23)) {
|
||||
Order* order;
|
||||
FOR_ALL_ORDERS(order) {
|
||||
if (order->IsType(OT_CONDITIONAL) && order->GetConditionVariable() == OCV_SLOT_OCCUPANCY) {
|
||||
order->GetXDataRef() = order->GetConditionValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_84)) {
|
||||
@@ -3364,6 +3371,35 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
|
||||
if (GetSignalType(t, TRACK_LOWER) == SIGTYPE_PROG) SetSignalType(t, TRACK_LOWER, SIGTYPE_NORMAL);
|
||||
if (GetSignalType(t, TRACK_UPPER) == SIGTYPE_PROG) SetSignalType(t, TRACK_UPPER, SIGTYPE_NORMAL);
|
||||
}
|
||||
}
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
SB(v->vehicle_flags, 10, 2, 0);
|
||||
}
|
||||
extern std::vector<OrderList *> _jokerpp_auto_separation;
|
||||
extern std::vector<OrderList *> _jokerpp_non_auto_separation;
|
||||
for (OrderList *list : _jokerpp_auto_separation) {
|
||||
for (Vehicle *w = list->GetFirstSharedVehicle(); w != nullptr; w = w->NextShared()) {
|
||||
SetBit(w->vehicle_flags, VF_TIMETABLE_SEPARATION);
|
||||
w->ClearSeparation();
|
||||
}
|
||||
}
|
||||
for (OrderList *list : _jokerpp_non_auto_separation) {
|
||||
for (Vehicle *w = list->GetFirstSharedVehicle(); w != nullptr; w = w->NextShared()) {
|
||||
ClrBit(w->vehicle_flags, VF_TIMETABLE_SEPARATION);
|
||||
w->ClearSeparation();
|
||||
}
|
||||
}
|
||||
_jokerpp_auto_separation.clear();
|
||||
_jokerpp_non_auto_separation.clear();
|
||||
}
|
||||
|
||||
/*
|
||||
* Only keep order-backups for network clients (and when replaying).
|
||||
* If we are a network server or not networking, then we just loaded a previously
|
||||
@@ -3688,11 +3724,6 @@ bool AfterLoadGame()
|
||||
_settings_game.economy.town_cargo_scale_factor = _settings_game.economy.old_town_cargo_factor * 10;
|
||||
}
|
||||
|
||||
/* Set day length factor to 1 if loading a pre day length savegame */
|
||||
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH) && SlXvIsFeatureMissing(XSLFI_SPRINGPP)) {
|
||||
_settings_game.economy.day_length_factor = 1;
|
||||
}
|
||||
|
||||
if (SlXvIsFeatureMissing(XSLFI_SAFER_CROSSINGS)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (IsLevelCrossingTile(t)) {
|
||||
|
@@ -46,6 +46,7 @@ static const SaveLoad _economy_desc[] = {
|
||||
SLE_VAR(Economy, infl_amount, SLE_UINT8),
|
||||
SLE_VAR(Economy, infl_amount_pr, SLE_UINT8),
|
||||
SLE_CONDVAR(Economy, industry_daily_change_counter, SLE_UINT32, SLV_102, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
|
@@ -230,6 +230,30 @@ bool SlXvCheckSpecialSavegameVersions()
|
||||
_sl_maybe_springpp = true;
|
||||
return true;
|
||||
}
|
||||
if (_sl_version >= SL_JOKER_1_19 && _sl_version <= SL_JOKER_1_27) { /* 278 - 286 */
|
||||
DEBUG(sl, 1, "Loading a JokerPP savegame version %d as version 197", _sl_version);
|
||||
_sl_xv_feature_versions[XSLFI_JOKERPP] = _sl_version;
|
||||
_sl_xv_feature_versions[XSLFI_TOWN_CARGO_ADJ] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_TEMPLATE_REPLACEMENT] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_VEH_LIFETIME_PROFIT] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_TRAIN_FLAGS_EXTRA] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_SIG_TUNNEL_BRIDGE] = 5;
|
||||
_sl_xv_feature_versions[XSLFI_REVERSE_AT_WAYPOINT] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_MULTIPLE_DOCKS] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_ST_LAST_VEH_TYPE] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_MORE_RAIL_TYPES] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_CHUNNEL] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_MORE_COND_ORDERS] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_TRACE_RESTRICT] = 1;
|
||||
if (_sl_version >= SL_JOKER_1_21) _sl_xv_feature_versions[XSLFI_LINKGRAPH_DAY_SCALE] = 1;
|
||||
if (_sl_version >= SL_JOKER_1_24) _sl_xv_feature_versions[XSLFI_TIMETABLE_EXTRA] = 1;
|
||||
if (_sl_version >= SL_JOKER_1_24) _sl_xv_feature_versions[XSLFI_ORDER_EXTRA_DATA] = 1;
|
||||
_sl_xv_discardable_chunk_ids.push_back('SPRG');
|
||||
_sl_xv_discardable_chunk_ids.push_back('SLNK');
|
||||
_sl_version = SLV_197;
|
||||
_sl_is_faked_ext = true;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -84,6 +84,7 @@ enum SlXvFeatureIndex {
|
||||
XSLFI_TRAFFIC_LIGHTS, ///< This save game uses road traffic lights
|
||||
XSLFI_RAIL_AGEING, ///< This save game uses the rail aging patch
|
||||
XSLFI_SPRINGPP, ///< This is a SpringPP game, use this for loading some settings
|
||||
XSLFI_JOKERPP, ///< This is a JokerPP game, use this for loading some settings
|
||||
|
||||
XSLFI_SIZE, ///< Total count of features, including null feature
|
||||
};
|
||||
|
@@ -16,6 +16,10 @@
|
||||
|
||||
#include "../safeguards.h"
|
||||
|
||||
static uint32 _jokerpp_separation_mode;
|
||||
std::vector<OrderList *> _jokerpp_auto_separation;
|
||||
std::vector<OrderList *> _jokerpp_non_auto_separation;
|
||||
|
||||
/**
|
||||
* Converts this order from an old savegame's version;
|
||||
* it moves all bits to the new location.
|
||||
@@ -257,6 +261,8 @@ const SaveLoad *GetOrderListDescription()
|
||||
SLE_CONDVAR_X(OrderList, scheduled_dispatch_start_full_date_fract, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)),
|
||||
SLE_CONDVAR_X(OrderList, scheduled_dispatch_last_dispatch, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)),
|
||||
SLE_CONDVAR_X(OrderList, scheduled_dispatch_max_delay, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)),
|
||||
SLEG_CONDVAR_X(_jokerpp_separation_mode, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_CONDNULL_X(21, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
@@ -275,12 +281,21 @@ static void Save_ORDL()
|
||||
|
||||
static void Load_ORDL()
|
||||
{
|
||||
_jokerpp_auto_separation.clear();
|
||||
_jokerpp_non_auto_separation.clear();
|
||||
int index;
|
||||
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
/* set num_orders to 0 so it's a valid OrderList */
|
||||
OrderList *list = new (index) OrderList(0);
|
||||
SlObject(list, GetOrderListDescription());
|
||||
if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
|
||||
if (_jokerpp_separation_mode == 0) {
|
||||
_jokerpp_auto_separation.push_back(list);
|
||||
} else {
|
||||
_jokerpp_non_auto_separation.push_back(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ static const SaveLoad _plan_desc[] = {
|
||||
SLE_VAR(Plan, visible_by_all, SLE_BOOL),
|
||||
SLE_VAR(Plan, creation_date, SLE_INT32),
|
||||
SLE_CONDSTDSTR_X(Plan, name, 0, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ENH_VIEWPORT_PLANS, 3)),
|
||||
SLE_CONDSTDSTR_X(Plan, name, 0, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_20)),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
|
@@ -319,6 +319,15 @@ enum SaveLoadVersion : uint16 {
|
||||
SL_TRACE_RESTRICT_2000 = 2000,
|
||||
SL_TRACE_RESTRICT_2001 = 2001,
|
||||
SL_TRACE_RESTRICT_2002 = 2002,
|
||||
SL_JOKER_1_19 = 278,
|
||||
SL_JOKER_1_20 = 279,
|
||||
SL_JOKER_1_21 = 280,
|
||||
SL_JOKER_1_22 = 281,
|
||||
SL_JOKER_1_23 = 282,
|
||||
SL_JOKER_1_24 = 283,
|
||||
SL_JOKER_1_25 = 284,
|
||||
SL_JOKER_1_26 = 285,
|
||||
SL_JOKER_1_27 = 286,
|
||||
};
|
||||
|
||||
/** Save or load result codes. */
|
||||
|
@@ -206,6 +206,7 @@ static const SaveLoad _old_station_desc[] = {
|
||||
|
||||
SLE_CONDNULL(2, SL_MIN_VERSION, SLV_26), ///< last-vehicle
|
||||
SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, SLV_26, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)),
|
||||
SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
|
||||
SLE_CONDNULL(2, SLV_3, SLV_26), ///< custom station class and id
|
||||
SLE_CONDVAR(Station, build_date, SLE_FILE_U16 | SLE_VAR_I32, SLV_3, SLV_31),
|
||||
@@ -292,6 +293,7 @@ const SaveLoad *GetGoodsDesc()
|
||||
SLE_CONDVAR(GoodsEntry, node, SLE_UINT16, SLV_183, SL_MAX_VERSION),
|
||||
SLEG_CONDVAR( _num_flows, SLE_UINT32, SLV_183, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(GoodsEntry, max_waiting_cargo, SLE_UINT32, SLV_183, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_CONDVAR_X(GoodsEntry, last_vehicle_type, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 1)),
|
||||
SLE_END()
|
||||
};
|
||||
@@ -457,10 +459,12 @@ static const SaveLoad _station_desc[] = {
|
||||
SLE_VAR(Station, time_since_load, SLE_UINT8),
|
||||
SLE_VAR(Station, time_since_unload, SLE_UINT8),
|
||||
SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)),
|
||||
SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_VAR(Station, had_vehicle_of_type, SLE_UINT8),
|
||||
SLE_VEC(Station, loading_vehicles, REF_VEHICLE),
|
||||
SLE_CONDVAR(Station, always_accepted, SLE_FILE_U32 | SLE_VAR_U64, SLV_127, SLV_EXTEND_CARGOTYPES),
|
||||
SLE_CONDVAR(Station, always_accepted, SLE_UINT64, SLV_EXTEND_CARGOTYPES, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(32 * 24, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_22)),
|
||||
|
||||
SLE_END()
|
||||
};
|
||||
|
@@ -43,6 +43,7 @@ const SaveLoad* GTD() {
|
||||
SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)),
|
||||
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 1)),
|
||||
SLE_CONDNULL_X(36, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 2, 3)),
|
||||
SLE_CONDNULL_X(36, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)),
|
||||
|
||||
SLE_END()
|
||||
|
@@ -184,10 +184,13 @@ static const SaveLoad _town_desc[] = {
|
||||
SLE_CONDVAR(Town, grow_counter, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_54),
|
||||
SLE_CONDVAR(Town, growth_rate, SLE_FILE_U8 | SLE_VAR_I16, SL_MIN_VERSION, SLV_54),
|
||||
|
||||
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT16, SLV_54, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_26)),
|
||||
SLE_CONDVAR(Town, grow_counter, SLE_UINT16, SLV_54, SL_MAX_VERSION),
|
||||
|
||||
SLE_CONDVAR(Town, growth_rate, SLE_FILE_I16 | SLE_VAR_U16, SLV_54, SLV_165),
|
||||
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_26)),
|
||||
SLE_CONDVAR(Town, growth_rate, SLE_UINT16, SLV_165, SL_MAX_VERSION),
|
||||
|
||||
SLE_VAR(Town, fund_buildings_months, SLE_UINT8),
|
||||
|
@@ -65,6 +65,15 @@ static void Load_TRRP()
|
||||
SlObject(&stub, _trace_restrict_program_stub_desc);
|
||||
prog->items.resize(stub.length);
|
||||
SlArray(&(prog->items[0]), stub.length, SLE_UINT32);
|
||||
if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
|
||||
for (size_t i = 0; i < prog->items.size(); i++) {
|
||||
TraceRestrictItem &item = prog->items[i]; // note this is a reference,
|
||||
if (GetTraceRestrictType(item) == 19 || GetTraceRestrictType(item) == 20) {
|
||||
SetTraceRestrictType(item, (TraceRestrictItemType)(GetTraceRestrictType(item) + 2));
|
||||
}
|
||||
if (IsTraceRestrictDoubleItem(item)) i++;
|
||||
}
|
||||
}
|
||||
CommandCost validation_result = prog->Validate();
|
||||
if (validation_result.Failed()) {
|
||||
char str[4096];
|
||||
|
@@ -670,10 +670,10 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
SLE_VAR(Vehicle, day_counter, SLE_UINT8),
|
||||
SLE_VAR(Vehicle, tick_counter, SLE_UINT8),
|
||||
SLE_CONDVAR_X(Vehicle, running_ticks, SLE_FILE_U8 | SLE_VAR_U16, SLV_88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool {
|
||||
return version_in_range && !(SlXvIsFeaturePresent(XSLFI_SPRINGPP, 3) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2));
|
||||
return version_in_range && !(SlXvIsFeaturePresent(XSLFI_SPRINGPP, 3) || SlXvIsFeaturePresent(XSLFI_JOKERPP) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2));
|
||||
})),
|
||||
SLE_CONDVAR_X(Vehicle, running_ticks, SLE_UINT16, SLV_88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool {
|
||||
return version_in_range && (SlXvIsFeaturePresent(XSLFI_SPRINGPP, 2) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2));
|
||||
return version_in_range && (SlXvIsFeaturePresent(XSLFI_SPRINGPP, 2) || SlXvIsFeaturePresent(XSLFI_JOKERPP) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2));
|
||||
})),
|
||||
|
||||
SLE_VAR(Vehicle, cur_implicit_order_index, SLE_UINT8),
|
||||
@@ -761,6 +761,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
|
||||
SLE_CONDVAR(Vehicle, current_order_time, SLE_UINT32, SLV_67, SL_MAX_VERSION),
|
||||
SLE_CONDVAR_X(Vehicle, current_loading_time, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)),
|
||||
SLE_CONDVAR_X(Vehicle, current_loading_time, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_23)),
|
||||
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDVAR(Vehicle, lateness_counter, SLE_INT32, SLV_67, SL_MAX_VERSION),
|
||||
|
||||
@@ -772,6 +773,8 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
|
||||
SLE_CONDNULL_X(160, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)),
|
||||
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
|
@@ -153,6 +153,11 @@ min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT
|
||||
max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT
|
||||
to = SLV_22
|
||||
|
||||
;;game_creation.desert_amount
|
||||
[SDT_NULL]
|
||||
length = 2
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
from = SLV_22
|
||||
|
@@ -637,6 +637,10 @@ strval = STR_CONFIG_SETTING_TILE_LENGTH
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 2)
|
||||
xref = ""construction.simulated_wormhole_signals""
|
||||
|
||||
[SDT_XREF]
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
xref = ""construction.simulated_wormhole_signals""
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = construction.max_bridge_height
|
||||
@@ -693,6 +697,10 @@ patxname = ""signal_tunnel_bridge.construction.simulated_wormhole_signals""
|
||||
xref = ""construction.maximum_signal_evaluations""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""construction.chunnel""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
;; construction.longbridges
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
@@ -803,6 +811,11 @@ strhelp = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL
|
||||
cat = SC_ADVANCED
|
||||
|
||||
;; economy.max_town_heightlevel
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
; link graph
|
||||
|
||||
[SDT_VAR]
|
||||
@@ -837,7 +850,7 @@ var = linkgraph.recalc_not_scaled_by_daylength
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_LINKGRAPH_NOT_DAYLENGTH_SCALED
|
||||
strhelp = STR_CONFIG_SETTING_LINKGRAPH_NOT_DAYLENGTH_SCALED_HELPTEXT
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_LINKGRAPH_DAY_SCALE)
|
||||
extver = SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool { return version_in_range && SlXvIsFeaturePresent(XSLFI_LINKGRAPH_DAY_SCALE) && !SlXvIsFeaturePresent(XSLFI_JOKERPP); })
|
||||
patxname = ""linkgraph_day_scale.linkgraph.recalc_not_scaled_by_daylength""
|
||||
|
||||
[SDT_ENUM]
|
||||
@@ -1074,6 +1087,10 @@ strval = STR_JUST_INT
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_TOWN_CARGO_ADJ, 1, 1)
|
||||
patxname = ""town_cargo_adj.economy.town_cargo_factor""
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""economy.old_town_cargo_factor""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = economy.town_cargo_scale_factor
|
||||
@@ -1158,6 +1175,11 @@ strhelp = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT
|
||||
proc = InvalidateShipPathCache
|
||||
cat = SC_EXPERT
|
||||
|
||||
;; pf.back_of_one_way_pbs_waiting_point
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = vehicle.max_train_length
|
||||
@@ -1409,6 +1431,16 @@ str = STR_CONFIG_SETTING_WAGONSPEEDLIMITS
|
||||
strhelp = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT
|
||||
proc = UpdateConsists
|
||||
|
||||
;; vehicle.slow_road_vehicles_in_curves
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_25)
|
||||
|
||||
;; vehicle.train_speed_adaption
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = vehicle.disable_elrails
|
||||
@@ -1562,6 +1594,19 @@ cat = SC_EXPERT
|
||||
length = 2
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; order.automatic_timetable_separation
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
;; order.timetable_auto_travel_buffer
|
||||
;; order.timetable_auto_load_buffer
|
||||
;; order.timetable_auto_travel_rounding
|
||||
;; order.timetable_auto_load_rounding
|
||||
[SDT_NULL]
|
||||
length = 4
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_24)
|
||||
|
||||
[SDTC_BOOL]
|
||||
var = gui.sg_new_nonstop
|
||||
from = SLV_22
|
||||
@@ -1678,6 +1723,10 @@ str = STR_CONFIG_SETTING_ENABLE_ROAD_CUSTOM_BRIDGE_HEADS
|
||||
strhelp = STR_CONFIG_SETTING_ENABLE_ROAD_CUSTOM_BRIDGE_HEADS_HELPTEXT
|
||||
patxname = ""custom_bridge_heads.construction.road_custom_bridge_heads""
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""construction.road_custom_bridge_heads""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = construction.rail_custom_bridge_heads
|
||||
@@ -1895,6 +1944,11 @@ str = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY
|
||||
strhelp = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT
|
||||
cat = SC_BASIC
|
||||
|
||||
;; game_creation.tree_line_height
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = game_creation.snow_line_height
|
||||
@@ -1908,6 +1962,11 @@ strhelp = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT
|
||||
strval = STR_JUST_COMMA
|
||||
cat = SC_BASIC
|
||||
|
||||
;;game_creation.desert_amount
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_NULL]
|
||||
length = 4
|
||||
to = SLV_144
|
||||
@@ -2109,6 +2168,10 @@ strhelp = STR_CONFIG_SETTING_TOWN_MIN_DISTANCE_HELPTEXT
|
||||
strval = STR_JUST_INT
|
||||
patxname = ""town_min_distance.economy.town_min_distance""
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""economy.town_min_distance""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""economy.infrastructure_sharing[0]""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
@@ -2260,6 +2323,10 @@ str = STR_CONFIG_SETTING_SHARING_PAYMENT_IN_DEBT
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
|
||||
patxname = ""infra_sharing.economy.sharing_payment_in_debt""
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""economy.day_length_factor""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
; previously ai-new setting.
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
@@ -3215,6 +3282,14 @@ strval = STR_CONFIG_SETTING_TREE_GROWTH_NORMAL
|
||||
cat = SC_BASIC
|
||||
patxname = ""reduced_tree_growth.construction.tree_growth_rate""
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""construction.tree_growth_rate""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_XREF]
|
||||
xref = ""construction.trees_around_snow_line_range""
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = game_creation.custom_sea_level
|
||||
@@ -3258,6 +3333,11 @@ str = STR_CONFIG_SETTING_RIVER_AMOUNT
|
||||
strhelp = STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT
|
||||
strval = STR_RIVERS_NONE
|
||||
|
||||
;;game_creation.build_public_roads
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
|
||||
|
||||
; locale
|
||||
|
||||
[SDT_OMANY]
|
||||
|
Reference in New Issue
Block a user