Add support for loading ChillPP v8 savegames
This commit is contained in:
10
README.md
10
README.md
@@ -214,7 +214,8 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
|
|||||||
* Savegames from other patched versions are not loadable in this patchpack except for savegames from:
|
* 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 *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.
|
||||||
|
@@ -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);
|
||||||
|
@@ -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
|
||||||
*/
|
*/
|
||||||
|
@@ -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 },
|
||||||
|
@@ -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);
|
||||||
|
@@ -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,
|
||||||
};
|
};
|
||||||
|
@@ -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),
|
||||||
|
@@ -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)),
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user