Initial support for loading savegames from SpringPP v2.0.102/103
Savegame version 220 Bin all extra settings added in SpringPP. Bin extra features: trip histories, more conditional orders/jump counter, prev order time, snow-line chunk, town auto adv. campaign, etc. Fix vehicle flags. Fix bridges wrt height changes. Handle 60-bit RIFF chunk sizes. Doesn't deal with huge airports, loading games with these may lead to undefined ehaviour. PAX signals and traffic lights are ignored.
This commit is contained in:
@@ -584,7 +584,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(194)) {
|
||||
if (IsSavegameVersionBefore(194) && SlXvIsFeatureMissing(XSLFI_HEIGHT_8_BIT)) {
|
||||
_settings_game.construction.max_heightlevel = 15;
|
||||
|
||||
/* In old savegame versions, the heightlevel was coded in bits 0..3 of the type field */
|
||||
@@ -599,6 +599,17 @@ bool AfterLoadGame()
|
||||
SB(_m[t].type, 2, 2, 0);
|
||||
}
|
||||
}
|
||||
} else if (SlXvIsFeaturePresent(XSLFI_HEIGHT_8_BIT)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
SB(_m[t].type, 0, 2, GB(_me[t].m6, 0, 2));
|
||||
SB(_me[t].m6, 0, 2, 0);
|
||||
if (MayHaveBridgeAbove(t)) {
|
||||
SB(_m[t].type, 2, 2, GB(_me[t].m6, 6, 2));
|
||||
SB(_me[t].m6, 6, 2, 0);
|
||||
} else {
|
||||
SB(_m[t].type, 2, 2, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* in version 2.1 of the savegame, town owner was unified. */
|
||||
@@ -2943,6 +2954,15 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
if (SlXvIsFeaturePresent(XSLFI_SPRINGPP)) {
|
||||
// re-arrange vehicle_flags
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
SB(v->vehicle_flags, VF_AUTOMATE_TIMETABLE, 1, GB(v->vehicle_flags, 6, 1));
|
||||
SB(v->vehicle_flags, VF_STOP_LOADING, 4, GB(v->vehicle_flags, 7, 4));
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(188)) {
|
||||
/* Fix articulated road vehicles.
|
||||
* Some curves were shorter than other curves.
|
||||
|
@@ -138,6 +138,25 @@ void SlXvCheckSpecialSavegameVersions()
|
||||
_sl_is_faked_ext = true;
|
||||
_sl_xv_feature_versions[XSLFI_TRACE_RESTRICT] = 1;
|
||||
}
|
||||
|
||||
if (_sl_version == 220) { /* SL_SPRING_2013_v2_0_102 */
|
||||
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.0.102 savegame version %d as version 187", _sl_version);
|
||||
|
||||
_sl_version = 187;
|
||||
_sl_xv_feature_versions[XSLFI_RIFF_HEADER_60_BIT] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_HEIGHT_8_BIT] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_MIGHT_USE_PAX_SIGNALS] = 1;
|
||||
|
||||
_sl_xv_feature_versions[XSLFI_TIMETABLES_START_TICKS] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_VEHICLE_REPAIR_COST] = 1;
|
||||
_sl_xv_feature_versions[XLSFI_IMPROVED_BREAKDOWNS] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_INFRA_SHARING] = 1;
|
||||
_sl_xv_feature_versions[XSLFI_AUTO_TIMETABLE] = 1;
|
||||
|
||||
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 1;
|
||||
|
||||
_sl_xv_discardable_chunk_ids.push_back('SNOW');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -36,6 +36,11 @@ enum SlXvFeatureIndex {
|
||||
XSLFI_INFRA_SHARING, ///< Infrastructure sharing patch
|
||||
XSLFI_VARIABLE_DAY_LENGTH, ///< Variable day length patch
|
||||
|
||||
XSLFI_RIFF_HEADER_60_BIT, ///< Size field in RIFF chunk header is 60 bit
|
||||
XSLFI_HEIGHT_8_BIT, ///< Map tile height is 8 bit instead of 4 bit, but savegame version may be before this became true in trunk
|
||||
XSLFI_MIGHT_USE_PAX_SIGNALS, ///< This save game might use the pax-signals feature
|
||||
XSLFI_SPRINGPP, ///< This is a SpringPP game, use this for loading some settings
|
||||
|
||||
XSLFI_SIZE, ///< Total count of features, including null feature
|
||||
};
|
||||
|
||||
|
@@ -106,6 +106,7 @@ const SaveLoad *GetOrderDescription()
|
||||
static const SaveLoad _order_desc[] = {
|
||||
SLE_VAR(Order, type, SLE_UINT8),
|
||||
SLE_VAR(Order, flags, SLE_UINT8),
|
||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_VAR(Order, dest, SLE_UINT16),
|
||||
SLE_REF(Order, next, REF_ORDER),
|
||||
SLE_CONDVAR(Order, refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION),
|
||||
@@ -113,6 +114,7 @@ const SaveLoad *GetOrderDescription()
|
||||
SLE_CONDVAR(Order, wait_time, SLE_UINT16, 67, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(Order, travel_time, SLE_UINT16, 67, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(Order, max_speed, SLE_UINT16, 172, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
|
||||
/* Leftover from the minor savegame version stuff
|
||||
* We will never use those free bytes, but we have to keep this line to allow loading of old savegames */
|
||||
|
@@ -1695,6 +1695,12 @@ static void SlLoadChunk(const ChunkHandler *ch)
|
||||
/* Read length */
|
||||
len = (SlReadByte() << 16) | ((m >> 4) << 24);
|
||||
len += SlReadUint16();
|
||||
if (SlXvIsFeaturePresent(XSLFI_RIFF_HEADER_60_BIT)) {
|
||||
if (len != 0) {
|
||||
SlErrorCorrupt("RIFF chunk too large");
|
||||
}
|
||||
len = SlReadUint32();
|
||||
}
|
||||
_sl.obj_len = len;
|
||||
endoffs = _sl.reader->GetSize() + len;
|
||||
ch->load_proc();
|
||||
@@ -1741,6 +1747,12 @@ static void SlLoadCheckChunk(const ChunkHandler *ch)
|
||||
/* Read length */
|
||||
len = (SlReadByte() << 16) | ((m >> 4) << 24);
|
||||
len += SlReadUint16();
|
||||
if (SlXvIsFeaturePresent(XSLFI_RIFF_HEADER_60_BIT)) {
|
||||
if (len != 0) {
|
||||
SlErrorCorrupt("RIFF chunk too large");
|
||||
}
|
||||
len = SlReadUint32();
|
||||
}
|
||||
_sl.obj_len = len;
|
||||
endoffs = _sl.reader->GetSize() + len;
|
||||
if (ch && ch->load_check_proc) {
|
||||
|
@@ -424,7 +424,9 @@ static const SaveLoad _station_desc[] = {
|
||||
SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION),
|
||||
SLE_VAR(Station, airport.type, SLE_UINT8),
|
||||
SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_VAR(Station, airport.flags, SLE_UINT64),
|
||||
SLE_CONDNULL_X(8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION),
|
||||
SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160),
|
||||
SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION),
|
||||
|
@@ -137,6 +137,7 @@ static const SaveLoad _town_desc[] = {
|
||||
SLE_CONDVAR(Town, have_ratings, SLE_UINT16, 104, SL_MAX_VERSION),
|
||||
SLE_CONDARR(Town, ratings, SLE_INT16, 8, 0, 103),
|
||||
SLE_CONDARR(Town, ratings, SLE_INT16, MAX_COMPANIES, 104, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(MAX_COMPANIES, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
/* failed bribe attempts are stored since savegame format 4 */
|
||||
SLE_CONDARR(Town, unwanted, SLE_INT8, 8, 4, 103),
|
||||
SLE_CONDARR(Town, unwanted, SLE_INT8, MAX_COMPANIES, 104, SL_MAX_VERSION),
|
||||
@@ -217,6 +218,15 @@ static const SaveLoad _town_received_desc[] = {
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static const SaveLoad _town_received_desc_spp[] = {
|
||||
SLE_CONDVAR(TransportedCargoStat<uint16>, old_max, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(TransportedCargoStat<uint16>, new_max, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(TransportedCargoStat<uint16>, old_act, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(TransportedCargoStat<uint16>, new_act, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION),
|
||||
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static void Save_HIDS()
|
||||
{
|
||||
Save_NewGRFMapping(_house_mngr);
|
||||
@@ -247,9 +257,15 @@ static void RealSave_Town(Town *t)
|
||||
for (CargoID i = 0; i < NUM_CARGO; i++) {
|
||||
SlObject(&t->supplied[i], _town_supplied_desc);
|
||||
}
|
||||
if (SlXvIsFeaturePresent(XSLFI_SPRINGPP)) {
|
||||
for (int i = TE_BEGIN; i < NUM_TE; i++) {
|
||||
SlObject(&t->received[i], _town_received_desc_spp);
|
||||
}
|
||||
} else {
|
||||
for (int i = TE_BEGIN; i < NUM_TE; i++) {
|
||||
SlObject(&t->received[i], _town_received_desc);
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(166)) return;
|
||||
|
||||
@@ -281,9 +297,15 @@ static void Load_TOWN()
|
||||
for (CargoID i = 0; i < NUM_CARGO; i++) {
|
||||
SlObject(&t->supplied[i], _town_supplied_desc);
|
||||
}
|
||||
for (int i = TE_BEGIN; i < TE_END; i++) {
|
||||
if (SlXvIsFeaturePresent(XSLFI_SPRINGPP)) {
|
||||
for (int i = TE_BEGIN; i < NUM_TE; i++) {
|
||||
SlObject(&t->received[i], _town_received_desc_spp);
|
||||
}
|
||||
} else {
|
||||
for (int i = TE_BEGIN; i < NUM_TE; i++) {
|
||||
SlObject(&t->received[i], _town_received_desc);
|
||||
}
|
||||
}
|
||||
|
||||
if (t->townnamegrfid == 0 && !IsInsideMM(t->townnametype, SPECSTR_TOWNNAME_START, SPECSTR_TOWNNAME_LAST + 1) && GB(t->townnametype, 11, 5) != 15) {
|
||||
SlErrorCorrupt("Invalid town name generator");
|
||||
|
@@ -726,10 +726,16 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
|
||||
SLE_CONDVAR(Vehicle, current_order_time, SLE_UINT32, 67, SL_MAX_VERSION),
|
||||
SLE_CONDVAR_X(Vehicle, current_loading_time, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)),
|
||||
SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDVAR(Vehicle, lateness_counter, SLE_INT32, 67, SL_MAX_VERSION),
|
||||
|
||||
SLE_CONDNULL(10, 2, 143), // old reserved space
|
||||
|
||||
SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 30, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
@@ -813,6 +819,8 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
|
||||
SLE_VAR(Vehicle, subtype, SLE_UINT8),
|
||||
|
||||
SLE_CONDNULL_X(5, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
|
||||
SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
||||
SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION),
|
||||
|
||||
@@ -872,6 +880,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
SLE_CONDVAR(DisasterVehicle, image_override, SLE_UINT32, 191, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_FILE_U16 | SLE_VAR_U32, 0, 190),
|
||||
SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT32, 191, SL_MAX_VERSION),
|
||||
SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||
SLE_CONDVAR(DisasterVehicle, flags, SLE_UINT8, 194, SL_MAX_VERSION),
|
||||
|
||||
SLE_CONDNULL(16, 2, 143), // old reserved space
|
||||
|
@@ -335,6 +335,24 @@ min = 0
|
||||
max = 3
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = order.timetable_automated
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_TIMETABLE_AUTOMATED
|
||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_AUTOMATED_HELPTEXT
|
||||
cat = SC_EXPERT
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = order.timetable_separation
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION
|
||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_HELPTEXT
|
||||
cat = SC_EXPERT
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = order.timetable_automated
|
||||
@@ -420,6 +438,7 @@ strhelp = STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT
|
||||
strval = STR_JUST_INT
|
||||
proc = ChangeMaxHeightLevel
|
||||
cat = SC_BASIC
|
||||
extver = SlXvFeatureTest(XSLFTO_OR, XSLFI_HEIGHT_8_BIT)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
@@ -582,7 +601,12 @@ from = 0
|
||||
cat = SC_BASIC
|
||||
patxname = ""signal_tunnel_bridge.construction.simulated_wormhole_signals""
|
||||
|
||||
# construction.longbridges
|
||||
;; construction.maximum_signal_evaluations
|
||||
[SDT_NULL]
|
||||
length = 2
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; construction.longbridges
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
to = 158
|
||||
@@ -624,6 +648,16 @@ strhelp = STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT
|
||||
proc = TownFoundingChanged
|
||||
|
||||
;; economy.town_construction_cost
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.station_rating_type
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = economy.allow_town_roads
|
||||
@@ -633,6 +667,11 @@ def = true
|
||||
str = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS
|
||||
strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT
|
||||
|
||||
;; economy.town_cargo_factor
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = economy.found_town
|
||||
@@ -1006,6 +1045,11 @@ def = false
|
||||
str = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES
|
||||
strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT
|
||||
|
||||
;; vehicle.exact_intro_date
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = vehicle.max_trains
|
||||
@@ -1147,6 +1191,11 @@ strhelp = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT
|
||||
strval = STR_JUST_COMMA
|
||||
proc = UpdateConsists
|
||||
|
||||
;; vehicle.freight_mult_to_passengers
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
; order.timetabling
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
@@ -1198,6 +1247,11 @@ def = false
|
||||
str = STR_CONFIG_SETTING_IMPROVED_BREAKDOWNS
|
||||
patxname = ""improved_breakdowns.vehicle.improved_breakdowns""
|
||||
|
||||
;; vehicle.improved_breakdowns
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
; station.join_stations
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
@@ -1222,6 +1276,12 @@ var = order.selectgoods
|
||||
def = true
|
||||
cat = SC_EXPERT
|
||||
|
||||
;; economy.deliver_goods
|
||||
;; vehicle.cargo_wait_time
|
||||
[SDT_NULL]
|
||||
length = 2
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDTC_BOOL]
|
||||
var = gui.sg_new_nonstop
|
||||
from = 22
|
||||
@@ -1315,6 +1375,16 @@ str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS
|
||||
strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT
|
||||
proc = DeleteSelectStationWindow
|
||||
|
||||
;; construction.traffic_lights
|
||||
;; construction.towns_build_traffic_lights
|
||||
;; construction.allow_building_tls_in_towns
|
||||
;; construction.traffic_lights_green_phase
|
||||
;; construction.max_tlc_size
|
||||
;; construction.max_tlc_distance
|
||||
[SDT_NULL]
|
||||
length = 6
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
##
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
@@ -1376,6 +1446,13 @@ strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT
|
||||
length = 1
|
||||
to = 140
|
||||
|
||||
;; economy.minimum_distance_town
|
||||
;; economy.minimum_distance_industry
|
||||
;; economy.minimum_distance_ind_town
|
||||
[SDT_NULL]
|
||||
length = 6
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = economy.bribe
|
||||
@@ -1487,6 +1564,53 @@ strhelp = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_PERCENTAGE
|
||||
cat = SC_EXPERT
|
||||
|
||||
;; economy.day_length_factor
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.price_mult[0-70]
|
||||
[SDT_NULL]
|
||||
length = 71
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.price_rails[0-15]
|
||||
[SDT_NULL]
|
||||
length = 16
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.rail_maintenance[0-15]
|
||||
[SDT_NULL]
|
||||
length = 16
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.pay_for_repair
|
||||
;; economy.repair_cost
|
||||
;; economy.town_consumption_rate
|
||||
[SDT_NULL]
|
||||
length = 3
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.town_pop_*
|
||||
[SDT_NULL]
|
||||
length = 6
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.town_consumption_rates[0-2][0-2]
|
||||
[SDT_NULL]
|
||||
length = 18
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.town_effects[0-2]
|
||||
[SDT_NULL]
|
||||
length = 3
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.grow_if_one_delivered
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = economy.town_growth_rate
|
||||
@@ -1534,6 +1658,21 @@ from = 77
|
||||
def = true
|
||||
cat = SC_EXPERT
|
||||
|
||||
;; economy.infrastructure_sharing[0-3]
|
||||
[SDT_NULL]
|
||||
length = 4
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.sharing_fee[0-3]
|
||||
[SDT_NULL]
|
||||
length = 16
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
;; economy.sharing_payment_in_debt
|
||||
[SDT_NULL]
|
||||
length = 1
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = construction.maximum_signal_evaluations
|
||||
@@ -1991,6 +2130,11 @@ min = 0
|
||||
max = 100000
|
||||
cat = SC_EXPERT
|
||||
|
||||
# pf.npf.npf_road_trafficlight_penalty
|
||||
[SDT_NULL]
|
||||
length = 4
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = pf.npf.npf_road_dt_occupied_penalty
|
||||
@@ -2296,6 +2440,11 @@ min = 0
|
||||
max = 1000000
|
||||
cat = SC_EXPERT
|
||||
|
||||
# pf.yapf.road_trafficlight_penalty
|
||||
[SDT_NULL]
|
||||
length = 4
|
||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||
|
||||
[SDT_VAR]
|
||||
base = GameSettings
|
||||
var = pf.yapf.road_stop_penalty
|
||||
|
Reference in New Issue
Block a user