Add support for loading ChillPP v8 savegames

This commit is contained in:
Jonathan G Rennison
2020-01-03 00:03:43 +00:00
parent 223d542bf1
commit 4936b3ba51
9 changed files with 119 additions and 45 deletions

View File

@@ -215,6 +215,7 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
* The *tracerestrict* branch ([routing restrictions patch](http://www.tt-forums.net/viewtopic.php?f=33&t=73397)) * 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) * 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) * [Joker's Patch Pack](https://www.tt-forums.net/viewtopic.php?f=33&t=74365) v1.19 - v1.27 (subject to caveats, see below)
* [Chill's Patch Pack](https://www.tt-forums.net/viewtopic.php?f=33&t=47622) v8 and v14.7 (subject to caveats, see below)
* Miscellaneous * Miscellaneous
* Various improvements to the crash logger. * Various improvements to the crash logger.
@@ -284,6 +285,13 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
* Various vehicle separation settings and partially-automatic modes are not supported. * 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. * Rail ageing/grass on tracks, trip histories, waiting cargo histories, station cargo punishment and other features not in this patch pack are dropped/ignored.
#### Caveats for loading savegames from [Chill's Patch Pack](https://www.tt-forums.net/viewtopic.php?f=33&t=47622):
* This is not guaranteed to be bug free
* Speed signals are cleared, leaving ordinary signals
* Various vehicle, economy, town and other settings are not supported
* Link graph data and settings are cleared
* Train stuck counters, traffic lights and other features not in this patch pack are dropped/ignored.
#### A note on branches #### A note on branches
Many features have two branches, the *feature* branches are just the raw features, without any modified savegame code. Many features have two branches, the *feature* branches are just the raw features, without any modified savegame code.

View File

@@ -3118,7 +3118,7 @@ bool AfterLoadGame()
} }
/* This triggers only when old snow_lines were copied into the snow_line_height. */ /* This triggers only when old snow_lines were copied into the snow_line_height. */
if (IsSavegameVersionBefore(SLV_164) && _settings_game.game_creation.snow_line_height >= MIN_SNOWLINE_HEIGHT * TILE_HEIGHT) { if (IsSavegameVersionBefore(SLV_164) && _settings_game.game_creation.snow_line_height >= MIN_SNOWLINE_HEIGHT * TILE_HEIGHT && SlXvIsFeatureMissing(XSLFI_CHILLPP)) {
_settings_game.game_creation.snow_line_height /= TILE_HEIGHT; _settings_game.game_creation.snow_line_height /= TILE_HEIGHT;
} }
@@ -3449,7 +3449,7 @@ bool AfterLoadGame()
_jokerpp_auto_separation.clear(); _jokerpp_auto_separation.clear();
_jokerpp_non_auto_separation.clear(); _jokerpp_non_auto_separation.clear();
} }
if (SlXvIsFeaturePresent(XSLFI_CHILLPP)) { if (SlXvIsFeaturePresent(XSLFI_CHILLPP, SL_CHILLPP_232)) {
for (TileIndex t = 0; t < map_size; t++) { for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) { if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
if (GetSignalType(t, TRACK_LOWER) == 7) SetSignalType(t, TRACK_LOWER, SIGTYPE_NORMAL); if (GetSignalType(t, TRACK_LOWER) == 7) SetSignalType(t, TRACK_LOWER, SIGTYPE_NORMAL);

View File

@@ -50,6 +50,7 @@ uint16 _sl_xv_feature_versions[XSLFI_SIZE]; ///< array of all kn
bool _sl_is_ext_version; ///< is this an extended savegame version, with more info in the SLXI chunk? bool _sl_is_ext_version; ///< is this an extended savegame version, with more info in the SLXI chunk?
bool _sl_is_faked_ext; ///< is this a faked extended savegame version, with no SLXI chunk? See: SlXvCheckSpecialSavegameVersions. bool _sl_is_faked_ext; ///< is this a faked extended savegame version, with no SLXI chunk? See: SlXvCheckSpecialSavegameVersions.
bool _sl_maybe_springpp; ///< is this possibly a SpringPP savegame? bool _sl_maybe_springpp; ///< is this possibly a SpringPP savegame?
bool _sl_maybe_chillpp; ///< is this possibly a ChillPP v8 savegame?
std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks IDs which we can discard if no chunk loader exists std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks IDs which we can discard if no chunk loader exists
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version of SLXI chunk static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version of SLXI chunk
@@ -176,6 +177,7 @@ void SlXvResetState()
_sl_is_ext_version = false; _sl_is_ext_version = false;
_sl_is_faked_ext = false; _sl_is_faked_ext = false;
_sl_maybe_springpp = false; _sl_maybe_springpp = false;
_sl_maybe_chillpp = false;
_sl_xv_discardable_chunk_ids.clear(); _sl_xv_discardable_chunk_ids.clear();
memset(_sl_xv_feature_versions, 0, sizeof(_sl_xv_feature_versions)); memset(_sl_xv_feature_versions, 0, sizeof(_sl_xv_feature_versions));
} }
@@ -256,6 +258,10 @@ bool SlXvCheckSpecialSavegameVersions()
_sl_is_faked_ext = true; _sl_is_faked_ext = true;
return true; return true;
} }
if (_sl_version == SL_CHILLPP_201) { /* 232 - 233 */
_sl_maybe_chillpp = true;
return true;
}
if (_sl_version >= SL_CHILLPP_232 && _sl_version <= SL_CHILLPP_233) { /* 232 - 233 */ if (_sl_version >= SL_CHILLPP_232 && _sl_version <= SL_CHILLPP_233) { /* 232 - 233 */
DEBUG(sl, 1, "Loading a ChillPP v14.7 savegame version %d as version 160", _sl_version); DEBUG(sl, 1, "Loading a ChillPP v14.7 savegame version %d as version 160", _sl_version);
_sl_xv_feature_versions[XSLFI_CHILLPP] = _sl_version; _sl_xv_feature_versions[XSLFI_CHILLPP] = _sl_version;
@@ -349,6 +355,24 @@ void SlXvSpringPPSpecialSavegameVersions()
} }
} }
void SlXvChillPPSpecialSavegameVersions()
{
extern SaveLoadVersion _sl_version;
if (_sl_version == SL_CHILLPP_201) { /* 201 */
DEBUG(sl, 1, "Loading a ChillPP v8 savegame version %d as version 143", _sl_version);
_sl_xv_feature_versions[XSLFI_CHILLPP] = _sl_version;
_sl_xv_feature_versions[XSLFI_ZPOS_32_BIT] = 1;
_sl_xv_feature_versions[XSLFI_TOWN_CARGO_ADJ] = 1;
_sl_xv_feature_versions[XSLFI_AUTO_TIMETABLE] = 1;
_sl_xv_feature_versions[XSLFI_SIG_TUNNEL_BRIDGE] = 1;
_sl_xv_feature_versions[XSLFI_RAIL_AGEING] = 1;
_sl_xv_discardable_chunk_ids.push_back('LGRP');
_sl_version = SLV_143;
_sl_is_faked_ext = true;
}
}
/** /**
* Return true if this chunk has been marked as discardable * Return true if this chunk has been marked as discardable
*/ */

View File

@@ -23,6 +23,8 @@
static uint32 _map_dim_x; static uint32 _map_dim_x;
static uint32 _map_dim_y; static uint32 _map_dim_y;
extern bool _sl_maybe_chillpp;
static const SaveLoadGlobVarList _map_dimensions[] = { static const SaveLoadGlobVarList _map_dimensions[] = {
SLEG_CONDVAR(_map_dim_x, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLEG_CONDVAR(_map_dim_x, SLE_UINT32, SLV_6, SL_MAX_VERSION),
SLEG_CONDVAR(_map_dim_y, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLEG_CONDVAR(_map_dim_y, SLE_UINT32, SLV_6, SL_MAX_VERSION),
@@ -65,8 +67,24 @@ static void Load_MAPT()
} }
} }
static void Check_MAPH_common()
{
if (_sl_maybe_chillpp && (SlGetFieldLength() == 0 || SlGetFieldLength() == _map_dim_x * _map_dim_y * 2)) {
_sl_maybe_chillpp = false;
extern void SlXvChillPPSpecialSavegameVersions();
SlXvChillPPSpecialSavegameVersions();
}
}
static void Check_MAPH()
{
Check_MAPH_common();
SlSkipBytes(SlGetFieldLength());
}
static void Load_MAPH() static void Load_MAPH()
{ {
Check_MAPH_common();
if (SlXvIsFeaturePresent(XSLFI_CHILLPP)) { if (SlXvIsFeaturePresent(XSLFI_CHILLPP)) {
if (SlGetFieldLength() != 0) { if (SlGetFieldLength() != 0) {
_sl_xv_feature_versions[XSLFI_HEIGHT_8_BIT] = 2; _sl_xv_feature_versions[XSLFI_HEIGHT_8_BIT] = 2;
@@ -282,7 +300,7 @@ static void Save_WMAP()
extern const ChunkHandler _map_chunk_handlers[] = { extern const ChunkHandler _map_chunk_handlers[] = {
{ 'MAPS', Save_MAPS, Load_MAPS, nullptr, Check_MAPS, CH_RIFF }, { 'MAPS', Save_MAPS, Load_MAPS, nullptr, Check_MAPS, CH_RIFF },
{ 'MAPT', nullptr, Load_MAPT, nullptr, nullptr, CH_RIFF }, { 'MAPT', nullptr, Load_MAPT, nullptr, nullptr, CH_RIFF },
{ 'MAPH', nullptr, Load_MAPH, nullptr, nullptr, CH_RIFF }, { 'MAPH', nullptr, Load_MAPH, nullptr, Check_MAPH, CH_RIFF },
{ 'MAPO', nullptr, Load_MAP1, nullptr, nullptr, CH_RIFF }, { 'MAPO', nullptr, Load_MAP1, nullptr, nullptr, CH_RIFF },
{ 'MAP2', nullptr, Load_MAP2, nullptr, nullptr, CH_RIFF }, { 'MAP2', nullptr, Load_MAP2, nullptr, nullptr, CH_RIFF },
{ 'M3LO', nullptr, Load_MAP3, nullptr, nullptr, CH_RIFF }, { 'M3LO', nullptr, Load_MAP3, nullptr, nullptr, CH_RIFF },

View File

@@ -82,6 +82,7 @@ bool _do_autosave; ///< are we doing an autosave at the moment?
extern bool _sl_is_ext_version; extern bool _sl_is_ext_version;
extern bool _sl_maybe_springpp; extern bool _sl_maybe_springpp;
extern bool _sl_maybe_chillpp;
/** What are we currently doing? */ /** What are we currently doing? */
enum SaveLoadAction { enum SaveLoadAction {
@@ -3190,7 +3191,8 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check)
special_version = SlXvCheckSpecialSavegameVersions(); special_version = SlXvCheckSpecialSavegameVersions();
} }
DEBUG(sl, 1, "Loading savegame version %d%s%s", _sl_version, _sl_is_ext_version ? " (extended)" : "", _sl_maybe_springpp ? " which might be SpringPP" : ""); DEBUG(sl, 1, "Loading savegame version %d%s%s%s", _sl_version, _sl_is_ext_version ? " (extended)" : "",
_sl_maybe_springpp ? " which might be SpringPP" : "", _sl_maybe_chillpp ? " which might be ChillPP" : "");
/* Is the version higher than the current? */ /* Is the version higher than the current? */
if (_sl_version > SAVEGAME_VERSION && !special_version) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME); if (_sl_version > SAVEGAME_VERSION && !special_version) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME);

View File

@@ -328,6 +328,7 @@ enum SaveLoadVersion : uint16 {
SL_JOKER_1_25 = 284, SL_JOKER_1_25 = 284,
SL_JOKER_1_26 = 285, SL_JOKER_1_26 = 285,
SL_JOKER_1_27 = 286, SL_JOKER_1_27 = 286,
SL_CHILLPP_201 = 201,
SL_CHILLPP_232 = 232, SL_CHILLPP_232 = 232,
SL_CHILLPP_233 = 233, SL_CHILLPP_233 = 233,
}; };

View File

@@ -160,32 +160,32 @@ static const SaveLoad _town_desc[] = {
SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9),
SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, SLV_9, SLV_165), SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, SLV_9, SLV_165),
SLE_CONDNULL(2, SL_MIN_VERSION, SLV_164), ///< pct_pass_transported / pct_mail_transported, now computed on the fly SLE_CONDNULL(2, SL_MIN_VERSION, SLV_164), ///< pct_pass_transported / pct_mail_transported, now computed on the fly
SLE_CONDNULL_X(3, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(3, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, received[TE_FOOD].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), SLE_CONDVAR(Town, received[TE_FOOD].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165),
SLE_CONDVAR(Town, received[TE_WATER].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), SLE_CONDVAR(Town, received[TE_WATER].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165),
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, received[TE_FOOD].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), SLE_CONDVAR(Town, received[TE_FOOD].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165),
SLE_CONDVAR(Town, received[TE_WATER].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), SLE_CONDVAR(Town, received[TE_WATER].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165),
SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDARR(Town, goal, SLE_UINT32, NUM_TE, SLV_165, SL_MAX_VERSION), SLE_CONDARR(Town, goal, SLE_UINT32, NUM_TE, SLV_165, SL_MAX_VERSION),
@@ -208,7 +208,7 @@ static const SaveLoad _town_desc[] = {
SLE_VAR(Town, road_build_months, SLE_UINT8), SLE_VAR(Town, road_build_months, SLE_UINT8),
SLE_CONDVAR(Town, exclusivity, SLE_UINT8, SLV_2, SL_MAX_VERSION), SLE_CONDVAR(Town, exclusivity, SLE_UINT8, SLV_2, SL_MAX_VERSION),
SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDVAR(Town, exclusive_counter, SLE_UINT8, SLV_2, SL_MAX_VERSION), SLE_CONDVAR(Town, exclusive_counter, SLE_UINT8, SLV_2, SL_MAX_VERSION),
SLE_CONDVAR(Town, larger_town, SLE_BOOL, SLV_56, SL_MAX_VERSION), SLE_CONDVAR(Town, larger_town, SLE_BOOL, SLV_56, SL_MAX_VERSION),

View File

@@ -654,7 +654,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8),
SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5),
SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, SLV_5, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, SLV_5, SL_MAX_VERSION),
SLE_CONDVAR_X(Vehicle, last_loading_station, SLE_UINT16, SLV_182, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP)), SLE_CONDVAR_X(Vehicle, last_loading_station, SLE_UINT16, SLV_182, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_VAR(Vehicle, cargo_type, SLE_UINT8), SLE_VAR(Vehicle, cargo_type, SLE_UINT8),
SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, SLV_35, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, SLV_35, SL_MAX_VERSION),
@@ -800,7 +800,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
SLE_CONDNULL(2, SLV_2, SLV_20), SLE_CONDNULL(2, SLV_2, SLV_20),
SLE_CONDVAR(Train, gv_flags, SLE_UINT16, SLV_139, SL_MAX_VERSION), SLE_CONDVAR(Train, gv_flags, SLE_UINT16, SLV_139, SL_MAX_VERSION),
SLE_CONDNULL_X(2 , SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLE_CONDNULL_X(2 , SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)),
SLE_CONDNULL(11, SLV_2, SLV_144), // old reserved space SLE_CONDNULL(11, SLV_2, SLV_144), // old reserved space
SLE_CONDVAR_X(Train, reverse_distance, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_REVERSE_AT_WAYPOINT)), SLE_CONDVAR_X(Train, reverse_distance, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_REVERSE_AT_WAYPOINT)),
SLE_CONDVAR_X(Train, speed_restriction, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPEED_RESTRICTION)), SLE_CONDVAR_X(Train, speed_restriction, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPEED_RESTRICTION)),

View File

@@ -448,9 +448,14 @@ length = 1
from = SLV_97 from = SLV_97
to = SLV_164 to = SLV_164
;;game_creation.desert_amount + tree_line ;;game_creation.desert_amount
[SDT_NULL] [SDT_NULL]
length = 3 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
;;game_creation.tree_line
[SDT_NULL]
length = 2
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)
[SDT_OMANY] [SDT_OMANY]
@@ -1211,7 +1216,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
;; pf.back_of_one_way_pbs_waiting_point ;; pf.back_of_one_way_pbs_waiting_point
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
@@ -1253,7 +1258,7 @@ to = SLV_159
;; order.gotodepot ;; order.gotodepot
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
; path finder ; path finder
@@ -1513,17 +1518,18 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
;; ticks_per_minute ;; ticks_per_minute
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
; order.timetabling ; order.timetabling
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
from = SLV_67 from = SLV_67
to = SLV_159 to = SLV_159
extver = SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP, SL_CHILLPP_232)
;; order.timetabling, order.timetable_automated, order.timetable_separation ;; order.timetable_automated, order.timetable_separation
[SDT_NULL] [SDT_NULL]
length = 3 length = 2
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)
[SDT_VAR] [SDT_VAR]
@@ -1569,7 +1575,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
[SDT_XREF] [SDT_XREF]
xref = ""vehicle.improved_breakdowns"" xref = ""vehicle.improved_breakdowns""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_BOOL] [SDT_BOOL]
base = GameSettings base = GameSettings
@@ -1940,7 +1946,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)
;; construction.extra_industry_placement_logic ;; construction.extra_industry_placement_logic
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_NULL] [SDT_NULL]
length = 1 length = 1
@@ -2024,9 +2030,14 @@ strhelp = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT
strval = STR_JUST_COMMA strval = STR_JUST_COMMA
cat = SC_BASIC cat = SC_BASIC
;;game_creation.desert_amount + tree_line ;;game_creation.desert_amount
[SDT_NULL] [SDT_NULL]
length = 3 length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
;;game_creation.tree_line
[SDT_NULL]
length = 2
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)
;;game_creation.desert_amount ;;game_creation.desert_amount
@@ -2037,6 +2048,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
[SDT_NULL] [SDT_NULL]
length = 4 length = 4
to = SLV_144 to = SLV_144
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, 0, 0)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
@@ -2218,7 +2230,7 @@ strval = STR_JUST_COMMA
;; economy.town_growth_cargo, economy.town_pop_need_goods, economy.larger_town_growth_cargo, economy.larger_town_pop_need_goods ;; economy.town_growth_cargo, economy.town_pop_need_goods, economy.larger_town_growth_cargo, economy.larger_town_pop_need_goods
[SDT_NULL] [SDT_NULL]
length = 10 length = 10
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_BOOL] [SDT_BOOL]
base = GameSettings base = GameSettings
@@ -2286,39 +2298,39 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
[SDT_XREF] [SDT_XREF]
xref = ""economy.infrastructure_sharing[0]"" xref = ""economy.infrastructure_sharing[0]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.infrastructure_sharing[1]"" xref = ""economy.infrastructure_sharing[1]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.infrastructure_sharing[2]"" xref = ""economy.infrastructure_sharing[2]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.infrastructure_sharing[3]"" xref = ""economy.infrastructure_sharing[3]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.sharing_fee[0]"" xref = ""economy.sharing_fee[0]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.sharing_fee[1]"" xref = ""economy.sharing_fee[1]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.sharing_fee[2]"" xref = ""economy.sharing_fee[2]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.sharing_fee[3]"" xref = ""economy.sharing_fee[3]""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_XREF] [SDT_XREF]
xref = ""economy.sharing_payment_in_debt"" xref = ""economy.sharing_payment_in_debt""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
@@ -2612,14 +2624,23 @@ cat = SC_BASIC
[SDT_XREF] [SDT_XREF]
xref = ""economy.infrastructure_maintenance"" xref = ""economy.infrastructure_maintenance""
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
;; construction.traffic_lights... ;; construction.traffic_lights...
[SDT_NULL]
length = 6
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
;; linkgraph... ;; linkgraph...
[SDT_NULL] [SDT_NULL]
length = 18 length = 11
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)
;; linkgraph.no_overload_links
[SDT_NULL]
length = 1
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
var = economy.random_road_reconstruction var = economy.random_road_reconstruction
@@ -2814,7 +2835,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
# pf.npf.npf_road_trafficlight_penalty # pf.npf.npf_road_trafficlight_penalty
[SDT_NULL] [SDT_NULL]
length = 4 length = 4
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
@@ -3129,7 +3150,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
# pf.yapf.road_trafficlight_penalty # pf.yapf.road_trafficlight_penalty
[SDT_NULL] [SDT_NULL]
length = 4 length = 4
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_VAR] [SDT_VAR]
base = GameSettings base = GameSettings
@@ -3381,7 +3402,7 @@ cat = SC_BASIC
;; construction.tree_placement_drag_limit, construction.ingame_tree_line_height, construction.tree_growth_rate ;; construction.tree_placement_drag_limit, construction.ingame_tree_line_height, construction.tree_growth_rate
[SDT_NULL] [SDT_NULL]
length = 3 length = 3
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP) extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
[SDT_BOOL] [SDT_BOOL]
base = GameSettings base = GameSettings