; This file is part of OpenTTD.
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
;

; Settings as stored in the main configuration file ("openttd.cfg") and in the
; savegame PATS chunk (if not flagged not to).

[pre-amble]
/* Begin - Callback Functions for the various settings */
static void v_PositionMainToolbar(int32 new_value);
static void v_PositionStatusbar(int32 new_value);
static void RedrawSmallmap(int32 new_value);
static void StationSpreadChanged(int32 new_value);
static void UpdateConsists(int32 new_value);
static void TrainAccelerationModelChanged(int32 new_value);
static bool CheckTrainBrakingModelChange(int32 &new_value);
static void TrainBrakingModelChanged(int32 new_value);
static void RoadVehAccelerationModelChanged(int32 new_value);
static void TrainSlopeSteepnessChanged(int32 new_value);
static void RoadVehSlopeSteepnessChanged(int32 new_value);
static void ProgrammableSignalsShownChanged(int32 new_value);
static void VehListCargoFilterShownChanged(int32 new_value);
static void TownFoundingChanged(int32 new_value);
static bool TownCouncilToleranceAdjust(int32 &new_value);
static void DifficultyNoiseChange(int32 new_value);
static void DifficultyMoneyCheatMultiplayerChange(int32 new_value);
static void DifficultyRenameTownsMultiplayerChange(int32 new_value);
static void DifficultyOverrideTownSettingsMultiplayerChange(int32 new_value);
static void MaxNoAIsChange(int32 new_value);
static bool CheckRoadSide(int32 &new_value);
static void RoadSideChanged(int32 new_value);
static bool CheckMaxHeightLevel(int32 &new_value);
static bool CheckFreeformEdges(int32 &new_value);
static void UpdateFreeformEdges(int32 new_value);
static bool CheckDynamicEngines(int32 &new_value);
static void StationCatchmentChanged(int32 new_value);
static void InvalidateVehTimetableWindow(int32 new_value);
static void ChangeTimetableInTicksMode(int32 new_value);
static void UpdateTimeSettings(int32 new_value);
static void ChangeTimeOverrideMode(int32 new_value);
static void DeveloperModeChanged(int32 new_value);
static void ScriptMaxOpsChange(int32 new_value);
static bool CheckScriptMaxMemoryChange(int32 &new_value);
static void ScriptMaxMemoryChange(int32 new_value);
static void InvalidateCompanyWindow(int32 new_value);
static void InvalidateCompanyLiveryWindow(int32 new_value);
static void InvalidateNewGRFChangeWindows(int32 new_value);
static void ZoomMinMaxChanged(int32 new_value);
static void SpriteZoomMinChanged(int32 new_value);
static void MaxVehiclesChanged(int32 new_value);
static void InvalidateShipPathCache(int32 new_value);
static void ImprovedBreakdownsSettingChanged(int32 new_value);
static void DayLengthChanged(int32 new_value);
static void EnableSingleVehSharedOrderGuiChanged(int32 new_value);
static void CheckYapfRailSignalPenalties(int32 new_value);
static void ViewportMapShowTunnelModeChanged(int32 new_value);
static void ViewportMapLandscapeModeChanged(int32 new_value);
static void UpdateLinkgraphColours(int32 new_value);
static void ClimateThresholdModeChanged(int32 new_value);
static void VelocityUnitsChanged(int32 new_value);
static void ChangeTrackTypeSortMode(int32 new_value);
static void PublicRoadsSettingChange(int32 new_value);
static void TrainSpeedAdaptationChanged(int32 new_value);
static void AutosaveModeChanged(int32 new_value);
static bool CheckSharingRail(int32 &new_value);
static void SharingRailChanged(int32 new_value);
static bool CheckSharingRoad(int32 &new_value);
static bool CheckSharingWater(int32 &new_value);
static bool CheckSharingAir(int32 &new_value);
static void TownZoneModeChanged(int32 new_value);
static void TownZoneCustomValueChanged(int32 new_value);
static bool CheckTTDPatchSettingFlag(uint flag);

/* End - Callback Functions for the various settings */

/* Begin - xref conversion callbacks */

static int64 LinkGraphDistModeXrefChillPP(int64 val);

/* End - xref conversion callbacks */

/* Begin - GUI callbacks */

static bool LinkGraphDistributionSettingGUI(SettingOnGuiCtrlData &data);
static bool OrderTownGrowthRate(SettingOnGuiCtrlData &data);
static bool AllowRoadStopsUnderBridgesSettingGUI(SettingOnGuiCtrlData &data);
static bool ZoomMaxCfgName(SettingOnGuiCtrlData &data);

/* End - GUI callbacks */

static const SettingDescEnumEntry _linkgraph_mode_symmetric[] = {
{ DT_MANUAL, STR_CONFIG_SETTING_DISTRIBUTION_MANUAL },
{ DT_SYMMETRIC, STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC },
{ DT_ASYMMETRIC, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC },
{ DT_ASYMMETRIC_EQ, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_EQ },
{ DT_ASYMMETRIC_NEAR, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_NEAREST },
{ 0, STR_NULL }
};
static const SettingDescEnumEntry _linkgraph_mode_asymmetric[] = {
{ DT_MANUAL, STR_CONFIG_SETTING_DISTRIBUTION_MANUAL },
{ DT_ASYMMETRIC, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC },
{ DT_ASYMMETRIC_EQ, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_EQ },
{ DT_ASYMMETRIC_NEAR, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_NEAREST },
{ 0, STR_NULL }
};
static const SettingDescEnumEntry _linkgraph_mode_per_cargo[] = {
{ DT_PER_CARGO_DEFAULT, STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO_DEFAULT },
{ DT_MANUAL, STR_CONFIG_SETTING_DISTRIBUTION_MANUAL },
{ DT_SYMMETRIC, STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC },
{ DT_ASYMMETRIC, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC },
{ DT_ASYMMETRIC_EQ, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_EQ },
{ DT_ASYMMETRIC_NEAR, STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_NEAREST },
{ 0, STR_NULL }
};
static const SettingDescEnumEntry _town_council_approval[] = {
{ 0, STR_CITY_APPROVAL_LENIENT },
{ 1, STR_CITY_APPROVAL_TOLERANT },
{ 2, STR_CITY_APPROVAL_HOSTILE },
{ 3, STR_CITY_APPROVAL_PERMISSIVE },
{ 0, STR_NULL }
};

static const SettingDescEnumEntry _train_braking_model[] = {
{ TBM_ORIGINAL, STR_CONFIG_SETTING_ORIGINAL },
{ TBM_REALISTIC, STR_CONFIG_SETTING_TRAIN_BRAKING_REALISTIC },
{ 0, STR_NULL }
};

static const SettingDescEnumEntry _realistic_braking_aspect_limited[] = {
{ TRBALM_OFF, STR_CONFIG_SETTING_OFF },
{ TRBALM_ON, STR_CONFIG_SETTING_TRAIN_BRAKING_ASPECT_LIMITED_ON },
{ 0, STR_NULL }
};

static const SettingDescEnumEntry _station_delivery_mode[] = {
{ SD_NEAREST_FIRST, STR_CONFIG_SETTING_ORIGINAL},
{ SD_BALANCED, STR_CONFIG_SETTING_DELIVERY_BALANCED},
{ 0, STR_NULL }
};

static const SettingDescEnumEntry _disable_water_animation[] = {
{ 255, STR_CONFIG_SETTING_OFF },
{ 3, STR_CONFIG_SETTING_DISABLE_WATER_ANIMATION_8X },
{ 4, STR_CONFIG_SETTING_DISABLE_WATER_ANIMATION_16X },
{ 5, STR_CONFIG_SETTING_DISABLE_WATER_ANIMATION_32X },
{ 0, STR_NULL }
};

static const SettingDescEnumEntry _no_depot_order_warn[] = {
{ 0, STR_CONFIG_SETTING_OFF },
{ 2, STR_CONFIG_SETTING_WARN_NO_DEPOT_ORDER_IF_BREAKDOWNS_ON },
{ 1, STR_CONFIG_SETTING_ON },
{ 0, STR_NULL }
};

/* Some settings do not need to be synchronised when playing in multiplayer.
 * These include for example the GUI settings and will not be saved with the
 * savegame.
 * It is also a bit tricky since you would think that service_interval
 * for example does not need to be synched. Every client assigns the
 * service_interval value to the v->service_interval, meaning that every client
 * assigns its own value. If the setting was company-based, that would mean that
 * vehicles could decide on different moments that they are heading back to a
 * service depot, causing desyncs on a massive scale. */
const SettingTable _settings{
[post-amble]
};
[templates]
SDTG_BOOL  =  SDTG_BOOL($name,                     $flags, $var, $def,                        $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTG_VAR   =   SDTG_VAR($name,              $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTG_ENUM   = SDTG_ENUM($name,              $type, $flags, $var, $def,                        $str, $strhelp,          $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname, $enumlist),
SDTG_OMANY = SDTG_OMANY($name,              $type, $flags, $var, $def,       $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_BOOL  =  SDTC_BOOL(              $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_LIST  =  SDTC_LIST(              $var, $type, $flags, $def,                                                                          $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_OMANY = SDTC_OMANY(              $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_SSTR  =  SDTC_SSTR(              $var, $type, $flags, $def,             $length,                                  $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_VAR   =   SDTC_VAR(              $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDTC_ENUM   = SDTC_ENUM(              $var, $type, $flags, $def,                              $str, $strhelp,          $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname, $enumlist),
SDT_BOOL   =   SDT_BOOL(GameSettings, $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDT_OMANY  =  SDT_OMANY(GameSettings, $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $load, $cat, $guiproc, $startup, $patxname),
SDT_SSTR   =   SDT_SSTR(GameSettings, $var, $type, $flags, $def,                                                       $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDT_VAR    =    SDT_VAR(GameSettings, $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname),
SDT_ENUM   =   SDT_ENUM(GameSettings, $var, $type, $flags, $def,                              $str, $strhelp,          $pre_cb, $post_cb, $from, $to, $extver,        $cat, $guiproc, $startup, $patxname, $enumlist),
SDT_NULL   =   SDT_NULL($length, $from, $to, $extver),
SDT_XREF     = SDT_XREF(         $from, $to, $extver, $xref, $xrefcvt),

SDT_LINKGRAPH_PER_CARGO = SDT_ENUM(GameSettings, linkgraph.distribution_per_cargo[$linkgraph_cargo], SLE_UINT8, $flags | SF_NOT_IN_CONFIG | SF_NO_NEWGAME, DT_PER_CARGO_DEFAULT, STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO, STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO_HELPTEXT, $pre_cb, $post_cb, $from, $to, SlXvFeatureTest(XSLFTO_AND, XSLFI_LINKGRAPH_MODES), SC_EXPERT, LinkGraphDistributionSettingGUI, false, nullptr, _linkgraph_mode_per_cargo),

[validation]
SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size");
SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size");

[defaults]
flags    = SF_NONE
interval = 0
str      = STR_NULL
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval   = STR_NULL
pre_cb   = nullptr
post_cb  = nullptr
guiproc  = nullptr
load     = nullptr
from     = SL_MIN_VERSION
to       = SL_MAX_VERSION
cat      = SC_ADVANCED
startup  = false
extver   = SlXvFeatureTest()
patxname = nullptr
xref     = <this parameter must be set>
xrefcvt  = nullptr
enumlist = <this parameter must be set>



; Saved settings variables.
; The next 18 entries are important for savegame compatibility. Do NOT remove those. See HandleOldDiffCustom() for more details.
[SDT_VAR]
var      = difficulty.max_no_competitors
type     = SLE_UINT8
from     = SLV_97
def      = 0
min      = 0
max      = MAX_COMPANIES - 1
interval = 1
post_cb  = MaxNoAIsChange
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.competitor_start_time
type     = SLE_UINT8
from     = SLV_97
to       = SLV_110
def      = 2
min      = 0
max      = 3

[SDT_VAR]
var      = difficulty.number_towns
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NEWGAME_ONLY
def      = 2
min      = 0
max      = 4
interval = 1
strval   = STR_NUM_VERY_LOW
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.industry_density
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN
def      = ID_HIGH
min      = 0
max      = ID_END - 1
interval = 1
str      = STR_CONFIG_SETTING_INDUSTRY_DENSITY
strhelp  = STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT
strval   = STR_FUNDING_ONLY
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.max_loan
type     = SLE_UINT32
from     = SLV_97
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY
def      = 300000
min      = 0
max      = 2000000000
interval = 50000
str      = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN
strhelp  = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT
strval   = STR_JUST_CURRENCY_LONG
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.initial_interest
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 2
min      = 2
max      = 4
interval = 1
str      = STR_CONFIG_SETTING_INTEREST_RATE
strhelp  = STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE

[SDT_VAR]
var      = difficulty.vehicle_costs
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_RUNNING_COSTS
strhelp  = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT
strval   = STR_SEA_LEVEL_LOW
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.vehicle_costs_in_depot
type     = SLE_UINT8
from     = SLV_97
def      = 1
min      = 1
max      = 8
str      = STR_CONFIG_SETTING_RUNNING_COSTS_IN_DEPOT
strhelp  = STR_CONFIG_SETTING_RUNNING_COSTS_IN_DEPOT_HELPTEXT
strval   = STR_CONFIG_SETTING_RUNNING_COSTS_IN_DEPOT_VALUE
patxname = ""difficulty.vehicle_costs_in_depot""

[SDT_VAR]
var      = difficulty.vehicle_costs_when_stopped
type     = SLE_UINT8
from     = SLV_97
def      = 1
min      = 1
max      = 8
str      = STR_CONFIG_SETTING_RUNNING_COSTS_WHEN_STOPPED
strhelp  = STR_CONFIG_SETTING_RUNNING_COSTS_WHEN_STOPPED_HELPTEXT
strval   = STR_CONFIG_SETTING_RUNNING_COSTS_WHEN_STOPPED_VALUE
strval   = STR_CONFIG_SETTING_RUNNING_COSTS_IN_DEPOT_VALUE
patxname = ""difficulty.vehicle_costs_when_stopped""

[SDT_VAR]
var      = difficulty.competitor_speed
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 4
interval = 1
str      = STR_CONFIG_SETTING_CONSTRUCTION_SPEED
strhelp  = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT
strval   = STR_AI_SPEED_VERY_SLOW
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.competitor_intelligence
type     = SLE_UINT8
from     = SLV_97
to       = SLV_110
def      = 0
min      = 0
max      = 2

[SDT_VAR]
var      = difficulty.vehicle_breakdowns
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS
strhelp  = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT
strval   = STR_DISASTER_NONE
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.subsidy_multiplier
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 3
interval = 1
str      = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER
strhelp  = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT
strval   = STR_SUBSIDY_X1_5

[SDT_VAR]
var      = difficulty.subsidy_duration
type     = SLE_UINT16
from     = SLV_CUSTOM_SUBSIDY_DURATION
flags    = SF_GUI_0_IS_SPECIAL
def      = 1
min      = 0
max      = 5000
interval = 1
str      = STR_CONFIG_SETTING_SUBSIDY_DURATION
strhelp  = STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT
strval   = STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE

[SDT_VAR]
var      = difficulty.construction_cost
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_CONSTRUCTION_COSTS
strhelp  = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT
strval   = STR_SEA_LEVEL_LOW
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.terrain_type
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 1
min      = 0
max      = 5
interval = 1
str      = STR_CONFIG_SETTING_TERRAIN_TYPE
strhelp  = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT
strval   = STR_TERRAIN_TYPE_VERY_FLAT
cat      = SC_BASIC

[SDT_VAR]
var      = difficulty.quantity_sea_lakes
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NEWGAME_ONLY
def      = 0
min      = 0
max      = 4
interval = 1
strval   = STR_SEA_LEVEL_VERY_LOW
cat      = SC_BASIC

[SDT_BOOL]
var      = difficulty.economy
from     = SLV_97
def      = false
str      = STR_CONFIG_SETTING_RECESSIONS
strhelp  = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT

[SDT_BOOL]
var      = difficulty.line_reverse_mode
from     = SLV_97
def      = false
str      = STR_CONFIG_SETTING_TRAIN_REVERSING
strhelp  = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT

[SDT_BOOL]
var      = difficulty.disasters
from     = SLV_97
def      = false
str      = STR_CONFIG_SETTING_DISASTERS
strhelp  = STR_CONFIG_SETTING_DISASTERS_HELPTEXT
cat      = SC_BASIC

[SDT_ENUM]
var      = difficulty.town_council_tolerance
type     = SLE_UINT8
from     = SLV_97
flags    = SF_ENUM_PRE_CB_VALIDATE
def      = 0
enumlist = _town_council_approval
str      = STR_CONFIG_SETTING_CITY_APPROVAL
strhelp  = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT
pre_cb   = TownCouncilToleranceAdjust
post_cb  = DifficultyNoiseChange

[SDT_BOOL]
var      = difficulty.money_cheat_in_multiplayer
def      = false
str      = STR_CONFIG_SETTING_MONEY_CHEAT_MULTIPLAYER
strhelp  = STR_CONFIG_SETTING_MONEY_CHEAT_MULTIPLAYER_HELPTEXT
post_cb  = DifficultyMoneyCheatMultiplayerChange
cat      = SC_EXPERT
patxname = ""cheat.difficulty.money_cheat_in_multiplayer""

[SDT_BOOL]
var      = difficulty.rename_towns_in_multiplayer
def      = false
str      = STR_CONFIG_SETTING_RENAME_TOWNS_MULTIPLAYER
strhelp  = STR_CONFIG_SETTING_RENAME_TOWNS_MULTIPLAYER_HELPTEXT
post_cb  = DifficultyRenameTownsMultiplayerChange
cat      = SC_EXPERT
patxname = ""cheat.difficulty.rename_towns_in_multiplayer""

[SDT_BOOL]
var      = difficulty.override_town_settings_in_multiplayer
def      = false
str      = STR_CONFIG_SETTING_OVERRIDE_TOWN_SETTINGS_MULTIPLAYER
strhelp  = STR_CONFIG_SETTING_OVERRIDE_TOWN_SETTINGS_MULTIPLAYER_HELPTEXT
post_cb  = DifficultyOverrideTownSettingsMultiplayerChange
cat      = SC_EXPERT
patxname = ""cheat.difficulty.override_town_settings_in_multiplayer""

[SDTG_VAR]
name     = ""diff_level""
var      = _old_diff_level
type     = SLE_UINT8
flags    = SF_NOT_IN_CONFIG
from     = SLV_97
to       = SLV_178
def      = 3
min      = 0
max      = 3
cat      = SC_BASIC

[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""order.old_timetable_separation""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_BOOL]
var      = order.old_timetable_separation
def      = true
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 1, 3)
patxname = ""auto_timetables.order.timetable_separation""

[SDT_VAR]
var      = order.old_timetable_separation_rate
type     = SLE_UINT8
def      = 100
min      = 0
max      = 100
interval = 10
str      = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE
strhelp  = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 1, 2)
patxname = ""auto_timetables.order.timetable_separation_rate""

; There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow
; these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI.
[SDT_OMANY]
var      = game_creation.town_name
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NO_NETWORK
def      = 0
max      = 255
full     = _town_names
cat      = SC_BASIC

[SDT_OMANY]
var      = game_creation.landscape
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 0
max      = 3
full     = _climates
load     = ConvertLandscape
str      = STR_CONFIG_SETTING_LANDSCAPE
strhelp  = STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT
strval   = STR_CLIMATE_TEMPERATE_LANDSCAPE
cat      = SC_BASIC

; Snow line upper byte
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

; Snow line (or snow_line_height * TILE_HEIGHT)
[SDT_NULL]
length   = 1
from     = SLV_97
to       = SLV_164

;;game_creation.desert_amount
[SDT_NULL]
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)

[SDT_OMANY]
var      = vehicle.road_side
type     = SLE_UINT8
from     = SLV_97
flags    = SF_GUI_DROPDOWN | SF_NO_NETWORK
def      = 1
max      = 1
full     = _roadsides
str      = STR_CONFIG_SETTING_ROAD_SIDE
strhelp  = STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT
strval   = STR_CONFIG_SETTING_ROAD_SIDE_LEFT
pre_cb   = CheckRoadSide
post_cb  = RoadSideChanged
cat      = SC_BASIC

; Construction

[SDT_VAR]
var      = construction.map_height_limit
type     = SLE_UINT8
from     = SLV_194
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
def      = 0
min      = MIN_MAP_HEIGHT_LIMIT
max      = MAX_MAP_HEIGHT_LIMIT
interval = 1
str      = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT
strhelp  = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT
strval   = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE
pre_cb   = CheckMaxHeightLevel
post_cb  = [](auto) { InvalidateWindowClassesData(WC_SMALLMAP, 2); }
cat      = SC_ADVANCED
extver   = SlXvFeatureTest(XSLFTO_OR, XSLFI_HEIGHT_8_BIT, 1, 1)

;; construction.allow_more_heightlevels
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = game_creation.heightmap_height
type     = SLE_UINT8
from     = SLV_MAPGEN_SETTINGS_REVAMP
flags    = SF_NEWGAME_ONLY
def      = MAP_HEIGHT_LIMIT_AUTO_MINIMUM
min      = MIN_HEIGHTMAP_HEIGHT
max      = MAX_MAP_HEIGHT_LIMIT
interval = 1

[SDT_BOOL]
var      = construction.build_on_slopes
flags    = SF_NO_NETWORK
def      = true
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.command_pause_level
type     = SLE_UINT8
from     = SLV_154
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 3
interval = 1
str      = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL
strhelp  = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT
strval   = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS

[SDT_BOOL]
var      = construction.enable_build_river
def      = false
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_ENABLE_BUILD_RIVER
strhelp  = STR_CONFIG_SETTING_ENABLE_BUILD_RIVER_HELPTEXT
patxname = ""enable_build_river.construction.enable_build_river""

[SDT_BOOL]
var      = construction.enable_remove_water
def      = true
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_ENABLE_REMOVE_WATER
strhelp  = STR_CONFIG_SETTING_ENABLE_REMOVE_WATER_HELPTEXT
patxname = ""enable_build_river.construction.enable_remove_water""

[SDT_VAR]
var      = construction.terraform_per_64k_frames
type     = SLE_UINT32
from     = SLV_156
def      = 64 << 16
min      = 0
max      = 1 << 30
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.terraform_frame_burst
type     = SLE_UINT16
from     = SLV_156
def      = 4096
min      = 0
max      = 1 << 15
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.clear_per_64k_frames
type     = SLE_UINT32
from     = SLV_156
def      = 64 << 16
min      = 0
max      = 1 << 30
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.clear_frame_burst
type     = SLE_UINT16
from     = SLV_156
def      = 4096
min      = 0
max      = 1 << 15
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.tree_per_64k_frames
type     = SLE_UINT32
from     = SLV_175
def      = 64 << 16
min      = 0
max      = 1 << 30
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.tree_frame_burst
type     = SLE_UINT16
from     = SLV_175
def      = 4096
min      = 0
max      = 1 << 15
interval = 1
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.purchase_land_per_64k_frames
type     = SLE_UINT32
def      = 16 << 16
min      = 0
max      = 1 << 30
interval = 1
cat      = SC_EXPERT
patxname = ""buy_land_rate_limit.construction.purchase_land_per_64k_frames""

[SDT_VAR]
var      = construction.purchase_land_frame_burst
type     = SLE_UINT16
def      = 1024
min      = 0
max      = 1 << 15
interval = 1
cat      = SC_EXPERT
patxname = ""buy_land_rate_limit.construction.purchase_land_frame_burst""

[SDT_VAR]
var      = construction.build_object_per_64k_frames
type     = SLE_UINT32
def      = 32 << 16
min      = 0
max      = 1 << 30
interval = 1
cat      = SC_EXPERT
patxname = ""build_object_rate_limit.construction.build_object_per_64k_frames""

[SDT_VAR]
var      = construction.build_object_frame_burst
type     = SLE_UINT16
def      = 2048
min      = 0
max      = 1 << 15
interval = 1
cat      = SC_EXPERT
patxname = ""build_object_rate_limit.construction.build_object_frame_burst""

[SDT_BOOL]
var      = construction.autoslope
from     = SLV_75
def      = true
str      = STR_CONFIG_SETTING_AUTOSLOPE
strhelp  = STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT
cat      = SC_EXPERT

[SDT_BOOL]
var      = construction.extra_dynamite
def      = true
str      = STR_CONFIG_SETTING_EXTRADYNAMITE
strhelp  = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT

[SDT_VAR]
var      = construction.max_bridge_length
type     = SLE_UINT16
from     = SLV_159
def      = 64
min      = 1
max      = 4096
interval = 1
str      = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH
strhelp  = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT
strval   = STR_CONFIG_SETTING_TILE_LENGTH
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x0F); }

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 2)
xref     = ""construction.old_simulated_wormhole_signals""

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
xref     = ""construction.old_simulated_wormhole_signals""

[SDT_VAR]
var      = construction.max_bridge_height
type     = SLE_UINT8
from     = SLV_194
flags    = SF_NO_NETWORK
def      = 12
min      = 1
max      = MAX_TILE_HEIGHT
interval = 1
str      = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT
strhelp  = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT

[SDT_VAR]
var      = construction.max_tunnel_length
type     = SLE_UINT16
from     = SLV_159
flags    = SF_NO_NETWORK
def      = 64
min      = 1
max      = 4096
interval = 1
str      = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH
strhelp  = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT
strval   = STR_CONFIG_SETTING_TILE_LENGTH

;; construction.max_chunnel_exit_length
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_233)

[SDT_BOOL]
var      = construction.chunnel
def      = false
str      = STR_CONFIG_SETTING_CHUNNEL
strhelp  = STR_CONFIG_SETTING_CHUNNEL_HELPTEXT
cat      = SC_BASIC
patxname = ""chunnel.construction.chunnel""

[SDT_VAR]
var      = construction.old_simulated_wormhole_signals
type     = SLE_UINT8
def      = 2
min      = 1
max      = 16
str      = STR_CONFIG_SETTING_SIMULATE_SIGNALS
strval   = STR_CONFIG_SETTING_SIMULATE_SIGNALS_VALUE
cat      = SC_BASIC
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SIG_TUNNEL_BRIDGE, 1, 7)
patxname = ""signal_tunnel_bridge.construction.simulated_wormhole_signals""

[SDT_XREF]
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
to       = SLV_159

[SDT_VAR]
var      = construction.train_signal_side
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_SIGNALSIDE
strhelp  = STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT
strval   = STR_CONFIG_SETTING_SIGNALSIDE_LEFT
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x3B); }
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDT_BOOL]
var      = station.never_expire_airports
def      = false
str      = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS
strhelp  = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x0C); }

[SDT_VAR]
var      = economy.town_layout
type     = SLE_UINT8
from     = SLV_59
flags    = SF_GUI_DROPDOWN
def      = TL_ORIGINAL
min      = TL_BEGIN
max      = NUM_TLS - 1
interval = 1
str      = STR_CONFIG_SETTING_TOWN_LAYOUT
strhelp  = STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT
post_cb  = 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)

;; economy.scale_industry_production
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)

[SDT_BOOL]
var      = economy.allow_town_roads
from     = SLV_113
def      = true
str      = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS
strhelp  = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x62); }

[SDT_XREF]
xref     = ""economy.old_town_cargo_factor""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.day_length_factor""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = economy.found_town
type     = SLE_UINT8
from     = SLV_128
flags    = SF_GUI_DROPDOWN
def      = TF_FORBIDDEN
min      = TF_BEGIN
max      = TF_END - 1
interval = 1
str      = STR_CONFIG_SETTING_TOWN_FOUNDING
strhelp  = STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN
post_cb  = TownFoundingChanged
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.allow_town_level_crossings
from     = SLV_143
def      = true
str      = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS
strhelp  = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT

[SDT_VAR]
var      = economy.town_build_tunnels
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = TTM_ALLOWED
min      = TTM_BEGIN
max      = TTM_END - 1
interval = 1
str      = STR_CONFIG_SETTING_TOWN_TUNNELS
strhelp  = STR_CONFIG_SETTING_TOWN_TUNNELS_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_TUNNELS_FORBIDDEN
cat      = SC_BASIC
patxname = ""economy.town_build_tunnels""

[SDT_VAR]
var      = economy.town_max_road_slope
type     = SLE_UINT8
flags    = SF_GUI_0_IS_SPECIAL
def      = 4
min      = 0
max      = 8
interval = 1
str      = STR_CONFIG_SETTING_TOWN_MAX_ROAD_SLOPE
strhelp  = STR_CONFIG_SETTING_TOWN_MAX_ROAD_SLOPE_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_MAX_ROAD_SLOPE_VALUE
cat      = SC_BASIC
patxname = ""economy.town_max_road_slope""

[SDT_XREF]
xref     = ""economy.old_town_cargo_factor""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = economy.town_cargogen_mode
type     = SLE_UINT8
from     = SLV_TOWN_CARGOGEN
flags    = SF_GUI_DROPDOWN
def      = TCGM_BITCOUNT
min      = TCGM_BEGIN
max      = TCGM_END - 1
interval = 1
str      = STR_CONFIG_SETTING_TOWN_CARGOGENMODE
strhelp  = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL
cat      = SC_ADVANCED

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
xref     = ""economy.max_town_heightlevel""

[SDT_VAR]
var      = economy.max_town_heightlevel
type     = SLE_UINT8
def      = MAX_MAP_HEIGHT_LIMIT
min      = 2
max      = MAX_MAP_HEIGHT_LIMIT
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT
strhelp  = STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT_HELPTEXT
strval   = STR_JUST_INT
cat      = SC_BASIC
patxname = ""max_town_heightlevel.economy.max_town_heightlevel""

[SDT_VAR]
base     = GameSettings
var      = economy.min_town_land_area
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
def      = 0
min      = 0
max      = 400
interval = 5
str      = STR_CONFIG_SETTING_MIN_TOWN_LAND_AREA
strhelp  = STR_CONFIG_SETTING_MIN_TOWN_LAND_AREA_HELPTEXT
strval   = STR_CONFIG_SETTING_MIN_LAND_AREA_VALUE
cat      = SC_BASIC
patxname = ""max_town_heightlevel.economy.min_town_land_area""

[SDT_VAR]
base     = GameSettings
var      = economy.min_city_land_area
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
def      = 75
min      = 0
max      = 400
interval = 5
str      = STR_CONFIG_SETTING_MIN_CITY_LAND_AREA
strhelp  = STR_CONFIG_SETTING_MIN_CITY_LAND_AREA_HELPTEXT
strval   = STR_CONFIG_SETTING_MIN_LAND_AREA_VALUE
cat      = SC_BASIC
patxname = ""max_town_heightlevel.economy.min_city_land_area""

; link graph

[SDT_VAR]
var      = linkgraph.recalc_interval
type     = SLE_UINT16
from     = SLV_183
def      = 4
min      = 2
max      = 32
interval = 2
str      = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL
strval   = STR_JUST_COMMA
strhelp  = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT

[SDT_VAR]
var      = linkgraph.recalc_time
type     = SLE_UINT16
from     = SLV_183
def      = 16
min      = 1
max      = 4096
interval = 1
str      = STR_CONFIG_SETTING_LINKGRAPH_TIME
strval   = STR_JUST_COMMA
strhelp  = STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT

[SDT_BOOL]
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([](uint16 version, bool version_in_range, uint16 feature_versions[XSLFI_SIZE]) -> bool { return version_in_range && SlXvIsFeaturePresent(feature_versions, XSLFI_LINKGRAPH_DAY_SCALE) && !SlXvIsFeaturePresent(feature_versions, XSLFI_JOKERPP); })
patxname = ""linkgraph_day_scale.linkgraph.recalc_not_scaled_by_daylength""

[SDT_ENUM]
var      = linkgraph.distribution_pax
type     = SLE_UINT8
from     = SLV_183
def      = DT_MANUAL
enumlist = _linkgraph_mode_symmetric
str      = STR_CONFIG_SETTING_DISTRIBUTION_PAX
strhelp  = STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT
guiproc  = LinkGraphDistributionSettingGUI

[SDT_ENUM]
var      = linkgraph.distribution_mail
type     = SLE_UINT8
from     = SLV_183
def      = DT_MANUAL
enumlist = _linkgraph_mode_symmetric
str      = STR_CONFIG_SETTING_DISTRIBUTION_MAIL
strhelp  = STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT
guiproc  = LinkGraphDistributionSettingGUI

[SDT_ENUM]
var      = linkgraph.distribution_armoured
type     = SLE_UINT8
from     = SLV_183
def      = DT_MANUAL
enumlist = _linkgraph_mode_symmetric
str      = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED
strhelp  = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT
guiproc  = LinkGraphDistributionSettingGUI

[SDT_ENUM]
var      = linkgraph.distribution_default
type     = SLE_UINT8
from     = SLV_183
def      = DT_MANUAL
enumlist = _linkgraph_mode_asymmetric
str      = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT
strhelp  = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT
guiproc  = LinkGraphDistributionSettingGUI

[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 0
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 1
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 2
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 3
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 4
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 5
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 6
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 7
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 8
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 9
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 10
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 11
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 12
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 13
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 14
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 15
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 16
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 17
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 18
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 19
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 20
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 21
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 22
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 23
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 24
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 25
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 26
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 27
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 28
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 29
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 30
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 31
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 32
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 33
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 34
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 35
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 36
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 37
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 38
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 39
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 40
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 41
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 42
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 43
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 44
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 45
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 46
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 47
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 48
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 49
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 50
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 51
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 52
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 53
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 54
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 55
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 56
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 57
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 58
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 59
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 60
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 61
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 62
[SDT_LINKGRAPH_PER_CARGO]
linkgraph_cargo = 63

[SDT_VAR]
var      = linkgraph.accuracy
type     = SLE_UINT8
from     = SLV_183
def      = 16
min      = 2
max      = 64
interval = 1
str      = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY
strval   = STR_JUST_COMMA
strhelp  = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT

[SDT_VAR]
var      = linkgraph.demand_distance
type     = SLE_UINT8
from     = SLV_183
def      = 100
min      = 0
max      = 255
interval = 5
str      = STR_CONFIG_SETTING_DEMAND_DISTANCE
strval   = STR_CONFIG_SETTING_PERCENTAGE
strhelp  = STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT

[SDT_VAR]
var      = linkgraph.demand_size
type     = SLE_UINT8
from     = SLV_183
def      = 100
min      = 0
max      = 100
interval = 5
str      = STR_CONFIG_SETTING_DEMAND_SIZE
strval   = STR_CONFIG_SETTING_PERCENTAGE
strhelp  = STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT

[SDT_VAR]
var      = linkgraph.short_path_saturation
type     = SLE_UINT8
from     = SLV_183
def      = 80
min      = 0
max      = 250
interval = 5
str      = STR_CONFIG_SETTING_SHORT_PATH_SATURATION
strval   = STR_CONFIG_SETTING_PERCENTAGE
strhelp  = STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT

[SDT_VAR]
var      = linkgraph.aircraft_link_scale
type     = SLE_UINT16
def      = 100
min      = 100
max      = 1000
interval = 50
str      = STR_CONFIG_SETTING_AIRCRAFT_PATH_COST
strval   = STR_CONFIG_SETTING_PERCENTAGE
strhelp  = STR_CONFIG_SETTING_AIRCRAFT_PATH_COST_HELPTEXT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_LINKGRAPH_AIRCRAFT)

[SDT_VAR]
var      = economy.old_town_cargo_factor
type     = SLE_INT8
def      = 0
min      = -16
max      = +8
interval = 1
str      = STR_CONFIG_SETTING_TOWN_CARGO_FACTOR
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]
var      = economy.town_cargo_scale_factor
type     = SLE_INT16
flags    = SF_DECIMAL1 | SF_DEC1SCALE
def      = 0
min      = -160
max      = +80
interval = 1
str      = STR_CONFIG_SETTING_TOWN_CARGO_FACTOR
strval   = STR_DECIMAL1_WITH_SCALE
strhelp  = STR_CONFIG_SETTING_TOWN_CARGO_FACTOR_HELPTEXT
patxname = ""town_cargo_adj.economy.town_cargo_scale_factor""

[SDT_VAR]
var      = economy.industry_cargo_scale_factor
type     = SLE_INT16
flags    = SF_DECIMAL1 | SF_DEC1SCALE
def      = 0
min      = -50
max      = +50
interval = 1
str      = STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR
strval   = STR_DECIMAL1_WITH_SCALE
strhelp  = STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR_HELPTEXT
patxname = ""industry_cargo_adj.economy.industry_cargo_scale_factor""

; Vehicles

[SDT_VAR]
var      = vehicle.train_acceleration_model
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 1
interval = 1
str      = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL
strhelp  = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT
strval   = STR_CONFIG_SETTING_ORIGINAL
post_cb  = TrainAccelerationModelChanged

[SDT_ENUM]
var      = vehicle.train_braking_model
type     = SLE_UINT8
def      = TBM_ORIGINAL
enumlist = _train_braking_model
str      = STR_CONFIG_SETTING_TRAIN_BRAKING_MODEL
strhelp  = STR_CONFIG_SETTING_TRAIN_BRAKING_MODEL_HELPTEXT
pre_cb   = CheckTrainBrakingModelChange
post_cb  = TrainBrakingModelChanged
cat      = SC_EXPERT
patxname = ""realistic_braking.vehicle.train_braking_model""

[SDT_ENUM]
var      = vehicle.realistic_braking_aspect_limited
type     = SLE_UINT8
def      = TRBALM_OFF
enumlist = _realistic_braking_aspect_limited
str      = STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED
strhelp  = STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT
cat      = SC_EXPERT
patxname = ""realistic_braking.vehicle.realistic_braking_aspect_limited""

[SDT_VAR]
var      = vehicle.roadveh_acceleration_model
type     = SLE_UINT8
from     = SLV_139
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 1
interval = 1
str      = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL
strhelp  = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT
strval   = STR_CONFIG_SETTING_ORIGINAL
post_cb  = RoadVehAccelerationModelChanged

[SDT_VAR]
var      = vehicle.train_slope_steepness
type     = SLE_UINT8
from     = SLV_133
def      = 3
min      = 0
max      = 10
interval = 1
str      = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS
strhelp  = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
post_cb  = TrainSlopeSteepnessChanged
cat      = SC_EXPERT

[SDT_VAR]
var      = vehicle.roadveh_slope_steepness
type     = SLE_UINT8
from     = SLV_139
def      = 7
min      = 0
max      = 10
interval = 1
str      = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS
strhelp  = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
post_cb  = RoadVehSlopeSteepnessChanged
cat      = SC_EXPERT

[SDT_VAR]
var      = vehicle.through_load_speed_limit
type     = SLE_UINT16
flags    = SF_GUI_VELOCITY
def      = 15
min      = 5
max      = 500
interval = 5
str      = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT
strhelp  = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT
strval   = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL
cat      = SC_EXPERT
patxname = ""vehicle.through_load_speed_limit""

[SDT_BOOL]
var      = pf.forbid_90_deg
def      = false
str      = STR_CONFIG_SETTING_FORBID_90_DEG
strhelp  = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT
post_cb  = InvalidateShipPathCache
cat      = SC_EXPERT

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
xref     = ""pf.back_of_one_way_pbs_waiting_point""

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)
xref     = ""pf.back_of_one_way_pbs_waiting_point""

[SDT_BOOL]
var      = pf.back_of_one_way_pbs_waiting_point
def      = true
str      = STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING
str      = STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT
cat      = SC_EXPERT
patxname = ""pf.back_of_one_way_pbs_waiting_point""

[SDT_VAR]
var      = vehicle.max_train_length
type     = SLE_UINT8
from     = SLV_159
def      = 7
min      = 1
max      = 64
interval = 1
str      = STR_CONFIG_SETTING_TRAIN_LENGTH
strhelp  = STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT
strval   = STR_CONFIG_SETTING_TILE_LENGTH
cat      = SC_BASIC

; vehicle.mammoth_trains
[SDT_NULL]
length   = 1
to       = SLV_159

[SDT_VAR]
var      = vehicle.smoke_amount
type     = SLE_UINT8
from     = SLV_145
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_SMOKE_AMOUNT
strhelp  = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT
strval   = STR_CONFIG_SETTING_NONE

; order.gotodepot
[SDT_NULL]
length   = 1
to       = SLV_159

;; order.gotodepot
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

; path finder

[SDT_BOOL]
var      = pf.roadveh_queue
def      = true
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.reroute_rv_on_layout_change
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_REROUTE_RV_ON_LAYOUT_CHANGE
strhelp  = STR_CONFIG_SETTING_REROUTE_RV_ON_LAYOUT_CHANGE_HELPTEXT
strval   = STR_CONFIG_SETTING_REROUTE_RV_ON_LAYOUT_CHANGE_NO
cat      = SC_ADVANCED
patxname = ""pf.reroute_rv_on_layout_change""

[SDT_BOOL]
var      = pf.new_pathfinding_all
to       = SLV_87
def      = false
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.yapf.ship_use_yapf
from     = SLV_28
to       = SLV_87
def      = false
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.yapf.road_use_yapf
from     = SLV_28
to       = SLV_87
def      = true
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.yapf.rail_use_yapf
from     = SLV_28
to       = SLV_87
def      = true
cat      = SC_EXPERT

##
[SDT_VAR]
var      = pf.pathfinder_for_trains
type     = SLE_UINT8
from     = SLV_87
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 1
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS
strhelp  = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT
strval   = STR_CONFIG_SETTING_PATHFINDER_NPF
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.pathfinder_for_roadvehs
type     = SLE_UINT8
from     = SLV_87
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 1
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES
strhelp  = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT
strval   = STR_CONFIG_SETTING_PATHFINDER_NPF
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.pathfinder_for_ships
type     = SLE_UINT8
from     = SLV_87
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 1
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS
strhelp  = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT
strval   = STR_CONFIG_SETTING_PATHFINDER_NPF
post_cb  = InvalidateShipPathCache
cat      = SC_EXPERT

[SDT_BOOL]
var      = vehicle.never_expire_vehicles
flags    = SF_NO_NETWORK
def      = false
str      = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES
strhelp  = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT

[SDT_VAR]
var      = vehicle.no_expire_vehicles_after
type     = SLE_INT32
flags    = SF_NO_NETWORK | SF_GUI_0_IS_SPECIAL
def      = 0
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER
strhelp  = STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_HELPTEXT
strval   = STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_VALUE
cat      = SC_EXPERT
patxname = ""vehicle.no_expire_vehicles_after""

[SDT_VAR]
var      = vehicle.no_introduce_vehicles_after
type     = SLE_INT32
flags    = SF_NO_NETWORK | SF_GUI_0_IS_SPECIAL
def      = 0
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_NO_INTRODUCE_VEHICLES_AFTER
strhelp  = STR_CONFIG_SETTING_NO_INTRODUCE_VEHICLES_AFTER_HELPTEXT
strval   = STR_CONFIG_SETTING_NO_INTRODUCE_VEHICLES_AFTER_VALUE
cat      = SC_EXPERT
patxname = ""vehicle.no_introduce_vehicles_after""

;; vehicle.exact_intro_date
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_VAR]
var      = vehicle.max_trains
type     = SLE_UINT16
def      = 500
min      = 0
max      = 10000
str      = STR_CONFIG_SETTING_MAX_TRAINS
strhelp  = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = MaxVehiclesChanged
cat      = SC_BASIC

[SDT_VAR]
var      = vehicle.max_roadveh
type     = SLE_UINT16
def      = 500
min      = 0
max      = 10000
str      = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES
strhelp  = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = MaxVehiclesChanged
cat      = SC_BASIC

[SDT_VAR]
var      = vehicle.max_aircraft
type     = SLE_UINT16
def      = 200
min      = 0
max      = 10000
str      = STR_CONFIG_SETTING_MAX_AIRCRAFT
strhelp  = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = MaxVehiclesChanged
cat      = SC_BASIC

[SDT_VAR]
var      = vehicle.max_ships
type     = SLE_UINT16
def      = 300
min      = 0
max      = 10000
str      = STR_CONFIG_SETTING_MAX_SHIPS
strhelp  = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = MaxVehiclesChanged
cat      = SC_BASIC

[SDTG_BOOL]
name     = ""vehicle.servint_ispercent""
flags    = SF_NO_NETWORK
var      = _old_vds.servint_ispercent
def      = false
to       = SLV_120

[SDTG_VAR]
name     = ""vehicle.servint_trains""
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
var      = _old_vds.servint_trains
def      = 150
min      = 5
max      = 800
to       = SLV_120

[SDTG_VAR]
name     = ""vehicle.servint_roadveh""
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
var      = _old_vds.servint_roadveh
def      = 150
min      = 5
max      = 800
to       = SLV_120

[SDTG_VAR]
name     = ""vehicle.servint_ships""
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
var      = _old_vds.servint_ships
def      = 360
min      = 5
max      = 800
to       = SLV_120

[SDTG_VAR]
name     = ""vehicle.servint_aircraft""
type     = SLE_UINT16
flags    = SF_GUI_0_IS_SPECIAL
var      = _old_vds.servint_aircraft
def      = 150
min      = 5
max      = 800
to       = SLV_120

[SDT_BOOL]
var      = order.no_servicing_if_no_breakdowns
def      = true
str      = STR_CONFIG_SETTING_NOSERVICE
strhelp  = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT

[SDT_BOOL]
var      = vehicle.wagon_speed_limits
def      = true
str      = STR_CONFIG_SETTING_WAGONSPEEDLIMITS
strhelp  = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x5D); }
post_cb  = UpdateConsists

;; vehicle.slow_road_vehicles_in_curves
[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_25)
xref     = ""vehicle.slow_road_vehicles_in_curves""

[SDT_BOOL]
var      = vehicle.slow_road_vehicles_in_curves
def      = true
str      = STR_CONFIG_SETTING_SLOW_ROAD_VEHICLES_IN_CURVES
strhelp  = STR_CONFIG_SETTING_SLOW_ROAD_VEHICLES_IN_CURVES_HELPTEXT
cat      = SC_BASIC
patxname = ""slow_road_vehicles_in_curves.vehicle.slow_road_vehicles_in_curves""

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
xref     = ""vehicle.train_speed_adaptation""

[SDT_BOOL]
var      = vehicle.train_speed_adaptation
def      = false
str      = STR_CONFIG_SETTING_TRAIN_SPEED_ADAPTATION
strhelp  = STR_CONFIG_SETTING_TRAIN_SPEED_ADAPTATION_HELPTEXT
cat      = SC_EXPERT
post_cb  = TrainSpeedAdaptationChanged
patxname = ""train_speed_adaptation.vehicle.train_speed_adaptation""

[SDT_BOOL]
var      = vehicle.disable_elrails
from     = SLV_38
flags    = SF_NO_NETWORK
def      = false
str      = STR_CONFIG_SETTING_DISABLE_ELRAILS
strhelp  = STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT
post_cb  = SettingsDisableElrail
cat      = SC_EXPERT

[SDT_VAR]
var      = vehicle.freight_trains
type     = SLE_UINT8
from     = SLV_39
def      = 1
min      = 1
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_FREIGHT_TRAINS
strhelp  = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT
strval   = STR_JUST_COMMA
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x58); }
post_cb  = UpdateConsists

;; vehicle.freight_mult_to_passengers
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

;; ticks_per_minute
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

; order.timetabling
[SDT_NULL]
length   = 1
from     = SLV_67
to       = SLV_159
extver   = SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP, SL_CHILLPP_232)

;;  order.timetable_automated
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""order.old_timetable_separation""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = vehicle.plane_speed
type     = SLE_UINT8
from     = SLV_90
flags    = SF_NO_NETWORK
def      = 4
min      = 1
max      = 4
str      = STR_CONFIG_SETTING_PLANE_SPEED
strhelp  = STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT
strval   = STR_CONFIG_SETTING_PLANE_SPEED_VALUE

[SDT_BOOL]
var      = vehicle.dynamic_engines
from     = SLV_95
flags    = SF_NO_NETWORK
def      = true
pre_cb   = CheckDynamicEngines
cat      = SC_EXPERT

[SDT_VAR]
var      = vehicle.plane_crashes
type     = SLE_UINT8
from     = SLV_138
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_PLANE_CRASHES
strhelp  = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT
strval   = STR_CONFIG_SETTING_PLANE_CRASHES_NONE
cat      = SC_BASIC

[SDT_XREF]
xref     = ""vehicle.improved_breakdowns""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""vehicle.improved_breakdowns""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_BOOL]
var      = vehicle.improved_breakdowns
def      = false
str      = STR_CONFIG_SETTING_IMPROVED_BREAKDOWNS
post_cb  = ImprovedBreakdownsSettingChanged
patxname = ""improved_breakdowns.vehicle.improved_breakdowns""

[SDT_BOOL]
var      = vehicle.ship_collision_avoidance
def      = true
str      = STR_CONFIG_SETTING_SHIP_COLLISION_AVOIDANCE
strhelp  = STR_CONFIG_SETTING_SHIP_COLLISION_AVOIDANCE_HELPTEXT
patxname = ""ship_collision_avoidance.vehicle.ship_collision_avoidance""
cat      = SC_BASIC

[SDT_BOOL]
var      = vehicle.no_train_crash_other_company
def      = false
str      = STR_CONFIG_SETTING_NO_TRAIN_CRASH_OTHER_COMPANY
strhelp  = STR_CONFIG_SETTING_NO_TRAIN_CRASH_OTHER_COMPANY_HELPTEXT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.vehicle.no_train_crash_other_company""

[SDT_BOOL]
var      = vehicle.flip_direction_all_trains
def      = false
str      = STR_CONFIG_SETTING_FLIP_DIRECTION_ALL_TRAINS
strhelp  = STR_CONFIG_SETTING_FLIP_DIRECTION_ALL_TRAINS_HELPTEXT
patxname = ""flip_direction_all_trains.vehicle.flip_direction_all_trains""
cat      = SC_EXPERT

[SDT_BOOL]
var      = vehicle.roadveh_articulated_overtaking
def      = true
str      = STR_CONFIG_SETTING_ROADVEH_ARTICULATED_OVERTAKING
strhelp  = STR_CONFIG_SETTING_ROADVEH_ARTICULATED_OVERTAKING_HELPTEXT
patxname = ""roadveh_articulated_overtaking.vehicle.roadveh_articulated_overtaking""
cat      = SC_BASIC

[SDT_BOOL]
var      = vehicle.roadveh_cant_quantum_tunnel
def      = false
str      = STR_CONFIG_SETTING_ROADVEH_CANT_QUANTUM_TUNNEL
strhelp  = STR_CONFIG_SETTING_ROADVEH_CANT_QUANTUM_TUNNEL_HELPTEXT
patxname = ""roadveh_cant_quantum_tunnel.vehicle.roadveh_cant_quantum_tunnel""
cat      = SC_BASIC

[SDT_BOOL]
var      = vehicle.drive_through_train_depot
def      = false
str      = STR_CONFIG_SETTING_DRIVE_THROUGH_TRAIN_DEPOT
strhelp  = STR_CONFIG_SETTING_DRIVE_THROUGH_TRAIN_DEPOT_HELPTEXT
patxname = ""drive_through_train_depot.vehicle.drive_through_train_depot""

; station.join_stations
[SDT_NULL]
length   = 1
to       = SLV_159

[SDTC_BOOL]
var      = gui.sg_full_load_any
from     = SLV_22
to       = SLV_93
def      = true

[SDT_BOOL]
var      = order.improved_load
flags    = SF_NO_NETWORK
def      = true
cat      = SC_EXPERT

[SDT_BOOL]
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)

;; 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
to       = SLV_93
def      = false

; station.nonuniform_stations
[SDT_NULL]
length   = 1
to       = SLV_159

[SDT_VAR]
var      = station.station_spread
type     = SLE_UINT8
def      = 12
min      = 4
max      = 64
str      = STR_CONFIG_SETTING_STATION_SPREAD
strhelp  = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT
strval   = STR_CONFIG_SETTING_TILE_LENGTH
post_cb  = StationSpreadChanged
cat      = SC_BASIC

[SDT_BOOL]
var      = order.serviceathelipad
def      = true
str      = STR_CONFIG_SETTING_SERVICEATHELIPAD
strhelp  = STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT
cat      = SC_EXPERT

[SDT_BOOL]
var      = order.nonstop_only
def      = false
str      = STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY
strhelp  = STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY_HELPTEXT
cat      = SC_EXPERT
patxname = ""nonstop_only.order.nonstop_only""

[SDT_BOOL]
var      = station.modified_catchment
def      = true
str      = STR_CONFIG_SETTING_CATCHMENT
strhelp  = STR_CONFIG_SETTING_CATCHMENT_HELPTEXT
post_cb  = StationCatchmentChanged
cat      = SC_EXPERT

[SDT_VAR]
var      = station.catchment_increase
type     = SLE_UINT8
def      = 0
min      = 0
max      = 5
str      = STR_CONFIG_SETTING_CATCHMENT_INCREASE
strhelp  = STR_CONFIG_SETTING_CATCHMENT_INCREASE_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = StationCatchmentChanged
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_STATION_CATCHMENT_INC)
patxname = ""station_catchment_inc.station.catchment_increase""

[SDT_BOOL]
var      = station.cargo_class_rating_wait_time
def      = false
str      = STR_CONFIG_SETTING_STATION_RATING_CARGO_CLASS_WAIT_TIME
strhelp  = STR_CONFIG_SETTING_STATION_RATING_CARGO_CLASS_WAIT_TIME_HELPTEXT
patxname = ""station_rating.station.cargo_class_rating_wait_time""

[SDT_BOOL]
var      = station.station_size_rating_cargo_amount
def      = false
str      = STR_CONFIG_SETTING_STATION_RATING_SIZE_CARGO_AMOUNT
strhelp  = STR_CONFIG_SETTING_STATION_RATING_SIZE_CARGO_AMOUNT_HELPTEXT
patxname = ""station_rating.station.station_size_rating_cargo_amount""

[SDT_BOOL]
var      = station.serve_neutral_industries
def      = true
from     = SLV_SERVE_NEUTRAL_INDUSTRIES
str      = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES
strhelp  = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT
post_cb  = StationCatchmentChanged

[SDT_ENUM]
var      = station.station_delivery_mode
type     = SLE_UINT8
def      = SD_NEAREST_FIRST
enumlist = _station_delivery_mode
str      = STR_CONFIG_SETTING_CARGO_DELIVERY_MODE
strhelp  = STR_CONFIG_SETTING_CARGO_DELIVERY_MODE_HELPTEXT
patxname = ""station.station_delivery_mode""

[SDT_BOOL]
var      = order.gradual_loading
from     = SLV_40
flags    = SF_NO_NETWORK
def      = true
cat      = SC_EXPERT

[SDT_BOOL]
var      = construction.road_stop_on_town_road
from     = SLV_47
def      = true
str      = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD
strhelp  = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT
cat      = SC_BASIC

[SDT_BOOL]
var      = construction.road_stop_on_competitor_road
from     = SLV_114
def      = true
str      = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD
strhelp  = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT
cat      = SC_BASIC

[SDT_BOOL]
var      = construction.road_custom_bridge_heads
def      = true
cat      = SC_BASIC
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]
var      = construction.rail_custom_bridge_heads
def      = true
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_ENABLE_RAIL_CUSTOM_BRIDGE_HEADS
strhelp  = STR_CONFIG_SETTING_ENABLE_RAIL_CUSTOM_BRIDGE_HEADS_HELPTEXT
patxname = ""custom_bridge_heads.construction.rail_custom_bridge_heads""

[SDT_BOOL]
var      = construction.allow_grf_objects_under_bridges
def      = false
cat      = SC_ADVANCED
str      = STR_CONFIG_SETTING_ALLOW_GRF_OBJECTS_UNDER_BRIDGES
strhelp  = STR_CONFIG_SETTING_ALLOW_GRF_OBJECTS_UNDER_BRIDGES_HELPTEXT
patxname = ""allow_grf_objects_under_bridges.construction.allow_grf_objects_under_bridges""

[SDT_BOOL]
var      = construction.allow_stations_under_bridges
def      = false
cat      = SC_ADVANCED
str      = STR_CONFIG_SETTING_ALLOW_GRF_STATIONS_UNDER_BRIDGES
strhelp  = STR_CONFIG_SETTING_ALLOW_GRF_STATIONS_UNDER_BRIDGES_HELPTEXT
patxname = ""allow_stations_under_bridges.construction.allow_stations_under_bridges""

[SDT_BOOL]
var      = construction.allow_road_stops_under_bridges
def      = true
cat      = SC_ADVANCED
str      = STR_CONFIG_SETTING_ALLOW_ROAD_STATIONS_UNDER_BRIDGES
strhelp  = STR_CONFIG_SETTING_ALLOW_ROAD_STATIONS_UNDER_BRIDGES_HELPTEXT
patxname = ""allow_stations_under_bridges.construction.allow_road_stops_under_bridges""
guiproc  = AllowRoadStopsUnderBridgesSettingGUI

[SDT_BOOL]
var      = construction.allow_docks_under_bridges
def      = false
cat      = SC_ADVANCED
str      = STR_CONFIG_SETTING_ALLOW_DOCKS_UNDER_BRIDGES
strhelp  = STR_CONFIG_SETTING_ALLOW_DOCKS_UNDER_BRIDGES_HELPTEXT
patxname = ""allow_stations_under_bridges.construction.allow_docks_under_bridges""

[SDT_VAR]
var      = construction.purchase_land_permitted
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_PURCHASE_LAND_PERMITTED
strhelp  = STR_CONFIG_SETTING_PURCHASE_LAND_PERMITTED_HELPTEXT
strval   = STR_PURCHASE_LAND_PERMITTED_NO
patxname = ""purchase_land_permitted.construction.purchase_land_permitted""

[SDT_BOOL]
var      = construction.build_object_area_permitted
def      = true
str      = STR_CONFIG_SETTING_BUILD_OBJECT_PERMITTED
strhelp  = STR_CONFIG_SETTING_BUILD_OBJECT_PERMITTED_HELPTEXT
patxname = ""build_object_area_permitted.construction.build_object_area_permitted""

[SDT_VAR]
var      = construction.no_expire_objects_after
type     = SLE_INT32
flags    = SF_GUI_0_IS_SPECIAL
def      = 0
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_NO_EXPIRE_OBJECTS_AFTER
strhelp  = STR_CONFIG_SETTING_NO_EXPIRE_OBJECTS_AFTER_HELPTEXT
strval   = STR_CONFIG_SETTING_NO_EXPIRE_OBJECTS_AFTER_VALUE
cat      = SC_ADVANCED
patxname = ""construction.no_expire_objects_after""
post_cb  = [](auto) { InvalidateWindowClassesData(WC_BUILD_OBJECT, 0); }

[SDT_BOOL]
var      = construction.ignore_object_intro_dates
def      = false
str      = STR_CONFIG_SETTING_IGNORE_OBJECT_INTRO_DATES
strhelp  = STR_CONFIG_SETTING_IGNORE_OBJECT_INTRO_DATES_HELPTEXT
patxname = ""construction.ignore_object_intro_dates""
post_cb  = [](auto) { InvalidateWindowClassesData(WC_BUILD_OBJECT, 0); }

[SDT_BOOL]
var      = station.adjacent_stations
from     = SLV_62
def      = true
cat      = SC_EXPERT

[SDT_BOOL]
var      = economy.station_noise_level
from     = SLV_96
flags    = SF_NO_NETWORK
def      = false
str      = STR_CONFIG_SETTING_NOISE_LEVEL
strhelp  = STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT
post_cb  = [](auto new_value) { InvalidateWindowClassesData(WC_TOWN_VIEW, new_value); }

[SDT_BOOL]
var      = station.distant_join_stations
from     = SLV_106
def      = true
str      = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS
strhelp  = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT
post_cb  = [](auto) { DeleteWindowById(WC_SELECT_STATION, 0); }

;; 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]
var      = economy.inflation
def      = false
str      = STR_CONFIG_SETTING_INFLATION
strhelp  = STR_CONFIG_SETTING_INFLATION_HELPTEXT
cat      = SC_BASIC
pre_cb   = [](int32 &new_value) -> bool { return CheckTTDPatchSettingFlag(0x81); }

[SDT_BOOL]
var      = economy.inflation_fixed_dates
def      = true
str      = STR_CONFIG_SETTING_INFLATION_FIXED_DATES
strhelp  = STR_CONFIG_SETTING_INFLATION_FIXED_DATES_HELPTEXT
patxname = ""inflation_fixed_dates.economy.inflation_fixed_dates""

[SDT_VAR]
var      = economy.day_length_factor
type     = SLE_UINT8
def      = 1
min      = 1
max      = 125
str      = STR_CONFIG_SETTING_DAY_LENGTH_FACTOR
strhelp  = STR_CONFIG_SETTING_DAY_LENGTH_FACTOR_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = DayLengthChanged
cat      = SC_BASIC
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)
patxname = ""variable_day_length.economy.day_length_factor""

[SDT_VAR]
var      = construction.raw_industry_construction
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD
strhelp  = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT
strval   = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE
post_cb  = [](auto) { InvalidateWindowData(WC_BUILD_INDUSTRY, 0); }
cat      = SC_BASIC

[SDT_VAR]
var      = construction.industry_platform
type     = SLE_UINT8
from     = SLV_148
def      = 1
min      = 0
max      = 4
str      = STR_CONFIG_SETTING_INDUSTRY_PLATFORM
strhelp  = STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT
strval   = STR_CONFIG_SETTING_TILE_LENGTH
cat      = SC_EXPERT

[SDT_BOOL]
var      = economy.multiple_industry_per_town
def      = false
str      = STR_CONFIG_SETTING_MULTIPINDTOWN
strhelp  = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT

;; economy.allow_automatic_industries
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)

;; construction.extra_industry_placement_logic
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_NULL]
length   = 1
to       = SLV_141

;; 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]
var      = economy.bribe
def      = true
str      = STR_CONFIG_SETTING_BRIBE
strhelp  = STR_CONFIG_SETTING_BRIBE_HELPTEXT
post_cb  = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.exclusive_rights
from     = SLV_79
def      = true
str      = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE
strhelp  = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT
post_cb  = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.fund_buildings
from     = SLV_165
def      = true
str      = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS
strhelp  = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT
post_cb  = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.fund_roads
from     = SLV_160
def      = true
str      = STR_CONFIG_SETTING_ALLOW_FUND_ROAD
strhelp  = STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT
post_cb  = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.give_money
from     = SLV_79
def      = true
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)

; Snow line upper byte
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = game_creation.snow_line_height
type     = SLE_UINT8
flags    = SF_NO_NETWORK
def      = DEF_SNOWLINE_HEIGHT
min      = MIN_SNOWLINE_HEIGHT
max      = MAX_SNOWLINE_HEIGHT
interval = 1
str      = STR_CONFIG_SETTING_SNOWLINE_HEIGHT
strhelp  = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.rainforest_line_height
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = DEF_RAINFOREST_HEIGHT
min      = MIN_RAINFOREST_HEIGHT
max      = MAX_RAINFOREST_HEIGHT
interval = 1
str      = STR_CONFIG_SETTING_RAINFORESTLINE_HEIGHT
strhelp  = STR_CONFIG_SETTING_RAINFORESTLINE_HEIGHT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC
patxname = ""rainforest_line_height.game_creation.rainforest_line_height""

[SDT_VAR]
var      = game_creation.climate_threshold_mode
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 0
min      = 0
max      = 1
str      = STR_CONFIG_SETTING_CLIMATE_THRESHOLD_MODE
strhelp  = STR_CONFIG_SETTING_CLIMATE_THRESHOLD_MODE_HELPTEXT
strval   = STR_CONFIG_SETTING_CLIMATE_THRESHOLD_COVERAGE
post_cb  = ClimateThresholdModeChanged
patxname = ""climate.game_creation.climate_threshold_mode""

;;game_creation.desert_amount
[SDT_NULL]
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)

;;game_creation.desert_amount
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)

[SDT_VAR]
var      = game_creation.snow_coverage
type     = SLE_UINT8
from     = SLV_MAPGEN_SETTINGS_REVAMP
flags    = SF_NEWGAME_ONLY
def      = DEF_SNOW_COVERAGE
min      = 0
max      = 100
interval = 10
str      = STR_CONFIG_SETTING_SNOW_COVERAGE
strhelp  = STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT
strval   = STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.desert_coverage
type     = SLE_UINT8
from     = SLV_MAPGEN_SETTINGS_REVAMP
flags    = SF_NEWGAME_ONLY
def      = DEF_DESERT_COVERAGE
min      = 0
max      = 100
interval = 10
str      = STR_CONFIG_SETTING_DESERT_COVERAGE
strhelp  = STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT
strval   = STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE
cat      = SC_BASIC

[SDT_NULL]
length   = 4
to       = SLV_144
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, 0, 0)

[SDT_VAR]
var      = game_creation.starting_year
type     = SLE_INT32
def      = DEF_START_YEAR
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_STARTING_YEAR
strval   = STR_JUST_INT
cat      = SC_BASIC

[SDT_NULL]
length   = 4
to       = SLV_105

[SDT_VAR]
var      = game_creation.ending_year
type     = SLE_INT32
from     = SLV_ENDING_YEAR
flags    = SF_GUI_0_IS_SPECIAL
def      = DEF_END_YEAR
min      = MIN_YEAR
max      = MAX_YEAR - 1
interval = 1
str      = STR_CONFIG_SETTING_ENDING_YEAR
strhelp  = STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT
strval   = STR_CONFIG_SETTING_ENDING_YEAR_VALUE
cat      = SC_ADVANCED

[SDT_VAR]
var      = economy.type
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = ET_SMOOTH
min      = ET_BEGIN
max      = ET_END - 1
str      = STR_CONFIG_SETTING_ECONOMY_TYPE
strhelp  = STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT
strval   = STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL
post_cb  = [](auto) { InvalidateWindowClassesData(WC_INDUSTRY_VIEW); }
cat      = SC_BASIC

[SDT_BOOL]
var      = economy.allow_shares
def      = false
str      = STR_CONFIG_SETTING_ALLOW_SHARES
strhelp  = STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT
post_cb  = InvalidateCompanyWindow

[SDT_VAR]
var      = economy.min_years_for_shares
type     = SLE_UINT8
from     = SLV_TRADING_AGE
def      = 6
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES
strhelp  = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT
strval   = STR_JUST_INT
cat      = SC_EXPERT

[SDT_VAR]
var      = economy.feeder_payment_share
type     = SLE_UINT8
from     = SLV_134
def      = 75
min      = 0
max      = 100
str      = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE
strhelp  = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
cat      = SC_EXPERT

[SDT_XREF]
xref     = ""economy.day_length_factor""
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)

; note that this has changed format in SpringPP 2.1.147
[SDT_XREF]
xref     = ""vehicle.pay_for_repair""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""vehicle.repair_cost""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

;; economy.town_consumption_rate
[SDT_NULL]
length   = 1
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]
var      = economy.town_growth_rate
type     = SLE_INT8
from     = SLV_54
flags    = SF_GUI_DROPDOWN
def      = 2
min      = -2
max      = 4
str      = STR_CONFIG_SETTING_TOWN_GROWTH
strhelp  = STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT
strval   = STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW
guiproc  = OrderTownGrowthRate

[SDT_BOOL]
var      = economy.town_zone_calc_mode
def      = false
str      = STR_CONFIG_SETTING_TOWN_ZONE_CALC_MODE
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_CALC_MODE_HELPTEXT
cat      = SC_EXPERT
post_cb  = TownZoneModeChanged
patxname = ""town_zone.economy.town_zone_calc_mode""

[SDT_VAR]
var      = economy.town_zone_0_mult
type     = SLE_UINT16
def      = 15
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ZONE_0_MULT
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_0_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_0_mult""

[SDT_VAR]
var      = economy.town_zone_1_mult
type     = SLE_UINT16
def      = 9
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ZONE_1_MULT
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_1_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_1_mult""

[SDT_VAR]
var      = economy.town_zone_2_mult
type     = SLE_UINT16
def      = 0
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ZONE_2_MULT
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_2_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_2_mult""

[SDT_VAR]
var      = economy.town_zone_3_mult
type     = SLE_UINT16
def      = 5
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ZONE_3_MULT
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_3_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_3_mult""

[SDT_VAR]
var      = economy.town_zone_4_mult
type     = SLE_UINT16
def      = 3
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_TOWN_ZONE_4_MULT
strhelp  = STR_CONFIG_SETTING_TOWN_ZONE_4_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_4_mult""

[SDT_VAR]
var      = economy.city_zone_0_mult
type     = SLE_UINT16
def      = 15
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_CITY_ZONE_0_MULT
strhelp  = STR_CONFIG_SETTING_CITY_ZONE_0_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_0_mult""

[SDT_VAR]
var      = economy.city_zone_1_mult
type     = SLE_UINT16
def      = 9
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_CITY_ZONE_1_MULT
strhelp  = STR_CONFIG_SETTING_CITY_ZONE_1_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_1_mult""

[SDT_VAR]
var      = economy.city_zone_2_mult
type     = SLE_UINT16
def      = 0
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_CITY_ZONE_2_MULT
strhelp  = STR_CONFIG_SETTING_CITY_ZONE_2_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_2_mult""

[SDT_VAR]
var      = economy.city_zone_3_mult
type     = SLE_UINT16
def      = 5
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_CITY_ZONE_3_MULT
strhelp  = STR_CONFIG_SETTING_CITY_ZONE_3_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_3_mult""

[SDT_VAR]
var      = economy.city_zone_4_mult
type     = SLE_UINT16
def      = 3
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_CITY_ZONE_4_MULT
strhelp  = STR_CONFIG_SETTING_CITY_ZONE_4_MULT_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
post_cb  = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_4_mult""

[SDT_VAR]
var      = economy.town_growth_cargo_transported
type     = SLE_UINT8
def      = 0
min      = 0
max      = 100
interval = 10
str      = STR_CONFIG_SETTING_TOWN_GROWTH_CARGO_TRANSPORTED
strhelp  = STR_CONFIG_SETTING_TOWN_GROWTH_CARGO_TRANSPORTED_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
cat      = SC_EXPERT
patxname = ""town_growth.economy.town_growth_cargo_transported""

[SDT_VAR]
var      = economy.larger_towns
type     = SLE_UINT8
from     = SLV_54
flags    = SF_GUI_0_IS_SPECIAL
def      = 4
min      = 0
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_LARGER_TOWNS
strhelp  = STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT
strval   = STR_CONFIG_SETTING_LARGER_TOWNS_VALUE

[SDT_VAR]
var      = economy.initial_city_size
type     = SLE_UINT8
from     = SLV_56
def      = 2
min      = 1
max      = 10
interval = 1
str      = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER
strhelp  = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT
strval   = STR_JUST_COMMA

;; economy.town_growth_cargo, economy.town_pop_need_goods, economy.larger_town_growth_cargo, economy.larger_town_pop_need_goods
[SDT_NULL]
length   = 10
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_BOOL]
var      = economy.mod_road_rebuild
from     = SLV_77
def      = true
cat      = SC_EXPERT

[SDT_XREF]
xref     = ""construction.maximum_signal_evaluations""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_VAR]
var      = economy.town_min_distance
type     = SLE_UINT16
def      = 20
min      = 15
max      = 500
interval = 5
str      = STR_CONFIG_SETTING_TOWN_MIN_DISTANCE
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)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[1]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[2]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[3]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.sharing_fee[0]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.sharing_fee[1]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.sharing_fee[2]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.sharing_fee[3]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.sharing_payment_in_debt""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[0]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[1]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[2]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.infrastructure_sharing[3]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.sharing_fee[0]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.sharing_fee[1]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.sharing_fee[2]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.sharing_fee[3]""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""economy.sharing_payment_in_debt""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_VAR]
var      = construction.maximum_signal_evaluations
type     = SLE_UINT16
def      = 256
min      = 64
max      = 4096
interval = 1
str      = STR_CONFIG_SETTING_MAX_SIGNAL_EVALUATIONS
strhelp  = STR_CONFIG_SETTING_MAX_SIGNAL_EVALUATIONS_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_PROG_SIGS)
patxname = ""programmable_signals.construction.maximum_signal_evaluations""

[SDT_BOOL]
var      = economy.infrastructure_sharing[0]
def      = false
str      = STR_CONFIG_SETTING_SHARING_RAIL
pre_cb   = CheckSharingRail
post_cb  = SharingRailChanged
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.infrastructure_sharing.rail""

[SDT_BOOL]
var      = economy.infrastructure_sharing[1]
def      = false
str      = STR_CONFIG_SETTING_SHARING_ROAD
pre_cb   = CheckSharingRoad
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.infrastructure_sharing.road""

[SDT_BOOL]
var      = economy.infrastructure_sharing[2]
def      = false
str      = STR_CONFIG_SETTING_SHARING_WATER
pre_cb   = CheckSharingWater
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.infrastructure_sharing.water""

[SDT_BOOL]
var      = economy.infrastructure_sharing[3]
def      = false
str      = STR_CONFIG_SETTING_SHARING_AIR
pre_cb   = CheckSharingAir
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.infrastructure_sharing.air""

[SDT_VAR]
var      = economy.sharing_fee[0]
type     = SLE_UINT
flags    = SF_GUI_CURRENCY
def      = 100
min      = 0
max      = 1000000
interval = 10
str      = STR_CONFIG_SETTING_SHARING_FEE_RAIL
strhelp  = STR_CONFIG_SETTING_SHARING_FEE_HELPTEXT
strval   = STR_JUST_CURRENCY_LONG
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.sharing_fee.rail""

[SDT_VAR]
var      = economy.sharing_fee[1]
type     = SLE_UINT
flags    = SF_GUI_CURRENCY
def      = 100
min      = 0
max      = 1000000
interval = 10
str      = STR_CONFIG_SETTING_SHARING_FEE_ROAD
strhelp  = STR_CONFIG_SETTING_SHARING_FEE_HELPTEXT
strval   = STR_JUST_CURRENCY_LONG
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.sharing_fee.road""

[SDT_VAR]
var      = economy.sharing_fee[2]
type     = SLE_UINT
flags    = SF_GUI_CURRENCY
def      = 100
min      = 0
max      = 1000000
interval = 10
str      = STR_CONFIG_SETTING_SHARING_FEE_WATER
strhelp  = STR_CONFIG_SETTING_SHARING_FEE_HELPTEXT
strval   = STR_JUST_CURRENCY_LONG
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.sharing_fee.water""

[SDT_VAR]
var      = economy.sharing_fee[3]
type     = SLE_UINT
flags    = SF_GUI_CURRENCY
def      = 100
min      = 0
max      = 1000000
interval = 10
str      = STR_CONFIG_SETTING_SHARING_FEE_AIR
strhelp  = STR_CONFIG_SETTING_SHARING_FEE_HELPTEXT
strval   = STR_JUST_CURRENCY_LONG
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)
patxname = ""infra_sharing.economy.sharing_fee.air""

[SDT_BOOL]
var      = economy.sharing_payment_in_debt
def      = false
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
to       = SLV_106

[SDT_OMANY]
var      = script.settings_profile
type     = SLE_UINT8
from     = SLV_178
flags    = SF_GUI_DROPDOWN
def      = SP_EASY
min      = SP_EASY
max      = SP_HARD
full     = _settings_profiles
str      = STR_CONFIG_SETTING_AI_PROFILE
strhelp  = STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT
strval   = STR_CONFIG_SETTING_AI_PROFILE_EASY
cat      = SC_BASIC

[SDT_BOOL]
var      = ai.ai_in_multiplayer
def      = true
str      = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER
strhelp  = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT
cat      = SC_BASIC

[SDT_BOOL]
var      = ai.ai_disable_veh_train
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_TRAINS
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_roadveh
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_aircraft
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_ship
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_SHIPS
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT

[SDT_VAR]
var      = script.script_max_opcode_till_suspend
type     = SLE_UINT32
from     = SLV_107
def      = 10000
min      = 500
max      = 250000
interval = 2500
str      = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES
strhelp  = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = ScriptMaxOpsChange
cat      = SC_EXPERT

[SDT_VAR]
var      = script.script_max_memory_megabytes
type     = SLE_UINT32
from     = SLV_SCRIPT_MEMLIMIT
def      = 1024
min      = 8
max      = 8192
interval = 8
str      = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY
strhelp  = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT
strval   = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE
pre_cb   = CheckScriptMaxMemoryChange
post_cb  = ScriptMaxMemoryChange
cat      = SC_EXPERT

##
[SDT_VAR]
var      = vehicle.extend_vehicle_life
type     = SLE_UINT8
def      = 0
min      = 0
max      = 100
cat      = SC_EXPERT

[SDT_VAR]
var      = economy.dist_local_authority
type     = SLE_UINT8
def      = 20
min      = 5
max      = 60
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.reverse_at_signals
from     = SLV_159
def      = false
str      = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS
strhelp  = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT

[SDT_VAR]
var      = pf.wait_oneway_signal
type     = SLE_UINT8
def      = 15
min      = 2
max      = 255
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.wait_twoway_signal
type     = SLE_UINT8
def      = 41
min      = 2
max      = 255
cat      = SC_EXPERT

[SDT_VAR]
var      = economy.town_noise_population[0]
type     = SLE_UINT16
from     = SLV_96
def      = 800
min      = 200
max      = 65535
cat      = SC_EXPERT

[SDT_VAR]
var      = economy.town_noise_population[1]
type     = SLE_UINT16
from     = SLV_96
def      = 2000
min      = 400
max      = 65535
cat      = SC_EXPERT

[SDT_VAR]
var      = economy.town_noise_population[2]
type     = SLE_UINT16
from     = SLV_96
def      = 4000
min      = 800
max      = 65535
cat      = SC_EXPERT

[SDT_BOOL]
var      = economy.infrastructure_maintenance
from     = SLV_166
def      = false
str      = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE
strhelp  = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); }
cat      = SC_BASIC

[SDT_XREF]
xref     = ""economy.infrastructure_maintenance""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

;; construction.traffic_lights...
[SDT_NULL]
length   = 6
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_XREF]
xref     = ""linkgraph.recalc_interval""
xrefcvt  = LinkGraphDistModeXrefChillPP
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.distribution_pax""
xrefcvt  = LinkGraphDistModeXrefChillPP
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.distribution_mail""
xrefcvt  = LinkGraphDistModeXrefChillPP
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

;; linkgraph.distribution_express
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.distribution_armoured""
xrefcvt  = LinkGraphDistModeXrefChillPP
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.distribution_default""
xrefcvt  = LinkGraphDistModeXrefChillPP
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.accuracy""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.demand_size""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.demand_distance""
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)

[SDT_XREF]
xref     = ""linkgraph.short_path_saturation""
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]
var      = economy.random_road_reconstruction
type     = SLE_UINT16
def      = 0
min      = 0
max      = 1000
str      = STR_CONFIG_SETTING_RANDOM_ROAD_RECONSTRUCTION
strhelp  = STR_CONFIG_SETTING_RANDOM_ROAD_RECONSTRUCTION_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC
patxname = ""economy.random_road_reconstruction""

##
[SDT_VAR]
var      = pf.wait_for_pbs_path
type     = SLE_UINT8
from     = SLV_100
def      = 30
min      = 2
max      = 255
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.reserve_paths
from     = SLV_100
def      = false
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.path_backoff_interval
type     = SLE_UINT8
from     = SLV_100
def      = 20
min      = 1
max      = 255
cat      = SC_EXPERT

##
; Used to be pf.opf.pf_maxlength & pf.opf.pf_maxdepth
[SDT_NULL]
length   = 3
to       = SLV_REMOVE_OPF

##
[SDT_VAR]
var      = pf.npf.npf_max_search_nodes
type     = SLE_UINT
def      = 10000
min      = 500
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_firstred_penalty
type     = SLE_UINT
def      = 10 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_firstred_exit_penalty
type     = SLE_UINT
def      = 100 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_lastred_penalty
type     = SLE_UINT
def      = 10 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_station_penalty
type     = SLE_UINT
def      = 1 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_slope_penalty
type     = SLE_UINT
def      = 1 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_curve_penalty
type     = SLE_UINT
def      = 1 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_depot_reverse_penalty
type     = SLE_UINT
def      = 50 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_pbs_cross_penalty
type     = SLE_UINT
from     = SLV_100
def      = 3 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_rail_pbs_signal_back_penalty
type     = SLE_UINT
from     = SLV_100
def      = 15 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_buoy_penalty
type     = SLE_UINT
def      = 2 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_water_curve_penalty
type     = SLE_UINT
def      = 1 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_road_curve_penalty
type     = SLE_UINT
def      = 1 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_crossing_penalty
type     = SLE_UINT
def      = 3 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_road_drive_through_penalty
type     = SLE_UINT
from     = SLV_47
def      = 8 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

# pf.npf.npf_road_trafficlight_penalty
[SDT_NULL]
length   = 4
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

# pf.npf.npf_road_trafficlight_penalty
[SDT_NULL]
length   = 4
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_VAR]
var      = pf.npf.npf_road_dt_occupied_penalty
type     = SLE_UINT
from     = SLV_130
def      = 8 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.npf_road_bay_occupied_penalty
type     = SLE_UINT
from     = SLV_130
def      = 15 * NPF_TILE_LENGTH
min      = 0
max      = 100000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.npf.maximum_go_to_depot_penalty
type     = SLE_UINT
from     = SLV_131
def      = 20 * NPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

##
[SDT_BOOL]
var      = pf.yapf.disable_node_optimization
from     = SLV_28
def      = false
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.max_search_nodes
type     = SLE_UINT
from     = SLV_28
def      = 10000
min      = 500
max      = 1000000
cat      = SC_EXPERT

[SDT_BOOL]
var      = pf.yapf.rail_firstred_twoway_eol
from     = SLV_28
def      = true
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_firstred_penalty
type     = SLE_UINT
from     = SLV_28
def      = 10 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_firstred_exit_penalty
type     = SLE_UINT
from     = SLV_28
def      = 100 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_lastred_penalty
type     = SLE_UINT
from     = SLV_28
def      = 10 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_lastred_exit_penalty
type     = SLE_UINT
from     = SLV_28
def      = 100 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_station_penalty
type     = SLE_UINT
from     = SLV_28
def      = 10 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_slope_penalty
type     = SLE_UINT
from     = SLV_28
def      = 2 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_curve45_penalty
type     = SLE_UINT
from     = SLV_28
def      = 1 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_curve90_penalty
type     = SLE_UINT
from     = SLV_28
def      = 6 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_depot_reverse_penalty
type     = SLE_UINT
from     = SLV_28
def      = 50 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_crossing_penalty
type     = SLE_UINT
from     = SLV_28
def      = 3 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_look_ahead_max_signals
type     = SLE_UINT
from     = SLV_28
def      = 10
min      = 1
max      = 100
cat      = SC_EXPERT
post_cb  = CheckYapfRailSignalPenalties

[SDT_VAR]
var      = pf.yapf.rail_look_ahead_signal_p0
type     = SLE_INT
from     = SLV_28
def      = 500
min      = -1000000
max      = 1000000
cat      = SC_EXPERT
post_cb  = CheckYapfRailSignalPenalties

[SDT_VAR]
var      = pf.yapf.rail_look_ahead_signal_p1
type     = SLE_INT
from     = SLV_28
def      = -100
min      = -1000000
max      = 1000000
cat      = SC_EXPERT
post_cb  = CheckYapfRailSignalPenalties

[SDT_VAR]
var      = pf.yapf.rail_look_ahead_signal_p2
type     = SLE_INT
from     = SLV_28
def      = 5
min      = -1000000
max      = 1000000
cat      = SC_EXPERT
post_cb  = CheckYapfRailSignalPenalties

[SDT_VAR]
var      = pf.yapf.rail_pbs_cross_penalty
type     = SLE_UINT
from     = SLV_100
def      = 3 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_pbs_station_penalty
type     = SLE_UINT
from     = SLV_100
def      = 8 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_pbs_signal_back_penalty
type     = SLE_UINT
from     = SLV_100
def      = 15 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_doubleslip_penalty
type     = SLE_UINT
from     = SLV_100
def      = 1 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_longer_platform_penalty
type     = SLE_UINT
from     = SLV_33
def      = 8 * YAPF_TILE_LENGTH
min      = 0
max      = 20000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_longer_platform_per_tile_penalty
type     = SLE_UINT
from     = SLV_33
def      = 0 * YAPF_TILE_LENGTH
min      = 0
max      = 20000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_shorter_platform_penalty
type     = SLE_UINT
from     = SLV_33
def      = 40 * YAPF_TILE_LENGTH
min      = 0
max      = 20000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.rail_shorter_platform_per_tile_penalty
type     = SLE_UINT
from     = SLV_33
def      = 0 * YAPF_TILE_LENGTH
min      = 0
max      = 20000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.road_slope_penalty
type     = SLE_UINT
from     = SLV_33
def      = 2 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.road_curve_penalty
type     = SLE_UINT
from     = SLV_33
def      = 1 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.road_crossing_penalty
type     = SLE_UINT
from     = SLV_33
def      = 3 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

# pf.yapf.road_trafficlight_penalty
[SDT_NULL]
length   = 4
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)

# pf.yapf.road_trafficlight_penalty
[SDT_NULL]
length   = 4
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_VAR]
var      = pf.yapf.road_stop_penalty
type     = SLE_UINT
from     = SLV_47
def      = 8 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.road_stop_occupied_penalty
type     = SLE_UINT
from     = SLV_130
def      = 8 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.road_stop_bay_occupied_penalty
type     = SLE_UINT
from     = SLV_130
def      = 15 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.maximum_go_to_depot_penalty
type     = SLE_UINT
from     = SLV_131
def      = 20 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.ship_curve45_penalty
type     = SLE_UINT
from     = SLV_SHIP_CURVE_PENALTY
def      = 1 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = pf.yapf.ship_curve90_penalty
type     = SLE_UINT
from     = SLV_SHIP_CURVE_PENALTY
def      = 6 * YAPF_TILE_LENGTH
min      = 0
max      = 1000000
cat      = SC_EXPERT

[SDT_VAR]
var      = order.old_occupancy_smoothness
type     = SLE_UINT8
def      = 75
min      = 0
max      = 100
interval = 10
str      = STR_CONFIG_OCCUPANCY_SMOOTHNESS
strhelp  = STR_CONFIG_OCCUPANCY_SMOOTHNESS_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_ORDER_OCCUPANCY, 1, 1)
patxname = ""order_occupancy.order.occupancy_smoothness""

##
[SDT_VAR]
var      = game_creation.land_generator
type     = SLE_UINT8
from     = SLV_30
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 1
min      = 0
max      = 1
str      = STR_CONFIG_SETTING_LAND_GENERATOR
strhelp  = STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT
strval   = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL

[SDT_VAR]
var      = game_creation.oil_refinery_limit
type     = SLE_UINT8
from     = SLV_30
def      = 32
min      = 12
max      = 128
str      = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE
strval   = STR_CONFIG_SETTING_TILE_LENGTH
strhelp  = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT

[SDT_VAR]
var      = game_creation.tgen_smoothness
type     = SLE_UINT8
from     = SLV_30
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 1
min      = TGEN_SMOOTHNESS_BEGIN
max      = TGEN_SMOOTHNESS_END - 1
str      = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN
strhelp  = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT
strval   = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.variety
type     = SLE_UINT8
from     = SLV_197
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 0
min      = 0
max      = 5
str      = STR_CONFIG_SETTING_VARIETY
strhelp  = STR_CONFIG_SETTING_VARIETY_HELPTEXT
strval   = STR_VARIETY_NONE

[SDT_VAR]
var      = game_creation.generation_seed
type     = SLE_UINT32
from     = SLV_30
def      = GENERATE_NEW_SEED
min      = 0
max      = UINT32_MAX
cat      = SC_EXPERT

[SDT_VAR]
var      = game_creation.generation_unique_id
type     = SLE_UINT32
def      = 0
min      = 0
max      = UINT32_MAX
patxname = ""savegame_unique_id.game_creation.generation_unique_id""

[SDT_VAR]
var      = game_creation.tree_placer
type     = SLE_UINT8
from     = SLV_30
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 3
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_TREE_PLACER
strhelp  = STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT
strval   = STR_CONFIG_SETTING_TREE_PLACER_NONE
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.heightmap_rotation
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 1
str      = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION
strval   = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.se_flat_world_height
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 1
min      = 0
max      = 15
str      = STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT
strval   = STR_JUST_COMMA
cat      = SC_BASIC

##
[SDT_VAR]
var      = game_creation.map_x
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 8
min      = MIN_MAP_SIZE_BITS
max      = MAX_MAP_SIZE_BITS
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.map_y
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 8
min      = MIN_MAP_SIZE_BITS
max      = MAX_MAP_SIZE_BITS
cat      = SC_BASIC

[SDT_BOOL]
var      = construction.freeform_edges
from     = SLV_111
def      = true
pre_cb   = CheckFreeformEdges
post_cb  = UpdateFreeformEdges
cat      = SC_EXPERT

[SDT_VAR]
var      = game_creation.water_borders
type     = SLE_UINT8
from     = SLV_111
def      = 15
min      = 0
max      = 16

[SDT_VAR]
var      = game_creation.custom_town_number
type     = SLE_UINT16
from     = SLV_115
def      = 1
min      = 1
max      = 5000
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.custom_industry_number
type     = SLE_UINT16
def      = 1
min      = 1
max      = 64000
cat      = SC_BASIC
patxname = ""game_creation.custom_industry_number""

[SDT_VAR]
var      = construction.extra_tree_placement
type     = SLE_UINT8
from     = SLV_132
flags    = SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT
strhelp  = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT
strval   = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD
cat      = SC_BASIC

;; construction.tree_placement_drag_limit, construction.ingame_tree_line_height, construction.tree_growth_rate
[SDT_NULL]
length   = 3
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)

[SDT_BOOL]
var      = construction.trees_around_snow_line_enabled
def      = true
str      = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE
strhelp  = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT
cat      = SC_BASIC
patxname = ""everest_treeline.construction.trees_around_snow_line_enabled""

[SDT_VAR]
var      = construction.trees_around_snow_line_range
type     = SLE_UINT8
def      = 8
min      = 1
max      = 64
str      = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_RANGE
strhelp  = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_RANGE_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC
patxname = ""everest_treeline.construction.trees_around_snow_line_range""

[SDT_VAR]
var      = construction.trees_around_snow_line_dynamic_range
type     = SLE_UINT8
def      = 75
min      = 0
max      = 100
interval = 5
str      = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_DYNAMIC_RANGE
strhelp  = STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_DYNAMIC_RANGE_HELPTEXT
strval   = STR_CONFIG_SETTING_PERCENTAGE
cat      = SC_EXPERT
patxname = ""everest_treeline.construction.trees_around_snow_line_dynamic_range""
post_cb  = [](auto) { UpdateCachedSnowLineBounds(); }

[SDT_VAR]
var      = construction.tree_growth_rate
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 4
str      = STR_CONFIG_SETTING_TREE_GROWTH
strhelp  = STR_CONFIG_SETTING_TREE_GROWTH_HELPTEXT
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]
var      = game_creation.custom_terrain_type
type     = SLE_UINT8
from     = SLV_MAPGEN_SETTINGS_REVAMP
flags    = SF_NEWGAME_ONLY
def      = MAP_HEIGHT_LIMIT_AUTO_MINIMUM
min      = MIN_CUSTOM_TERRAIN_TYPE
max      = MAX_MAP_HEIGHT_LIMIT
interval = 1

[SDT_VAR]
var      = game_creation.custom_sea_level
type     = SLE_UINT8
from     = SLV_149
def      = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE
min      = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE
max      = CUSTOM_SEA_LEVEL_MAX_PERCENTAGE
cat      = SC_BASIC

[SDT_VAR]
var      = game_creation.min_river_length
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
from     = SLV_163
def      = 16
min      = 2
max      = 255
cat      = SC_EXPERT
str      = STR_CONFIG_SETTING_RIVER_MIN_LENGTH
strhelp  = STR_CONFIG_SETTING_RIVER_MIN_LENGTH_HELPTEXT
strval   = STR_JUST_COMMA

[SDT_VAR]
var      = game_creation.river_route_random
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
from     = SLV_163
def      = 5
min      = 1
max      = 255
cat      = SC_EXPERT
str      = STR_CONFIG_SETTING_RIVER_ROUTE_RANDOM
strhelp  = STR_CONFIG_SETTING_RIVER_ROUTE_RANDOM_HELPTEXT
strval   = STR_JUST_COMMA

[SDT_BOOL]
var      = game_creation.rivers_top_of_hill
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = true
cat      = SC_EXPERT
str      = STR_CONFIG_SETTING_RIVERS_TOP_OF_HILL
strhelp  = STR_CONFIG_SETTING_RIVERS_TOP_OF_HILL_HELPTEXT
patxname = ""rivers.game_creation.rivers_top_of_hill""

[SDT_VAR]
var      = game_creation.river_tropics_width
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 5
min      = 2
max      = 51
interval = 1
str      = STR_CONFIG_SETTING_RIVER_TROPICS_WIDTH
strhelp  = STR_CONFIG_SETTING_RIVER_TROPICS_WIDTH_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC
patxname = ""rivers.game_creation.river_tropics_width""

[SDT_VAR]
var      = game_creation.lake_tropics_width
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 5
min      = 2
max      = 51
interval = 1
str      = STR_CONFIG_SETTING_LAKE_TROPICS_WIDTH
strhelp  = STR_CONFIG_SETTING_LAKE_TROPICS_WIDTH_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC
patxname = ""rivers.game_creation.lake_tropics_width""

[SDT_VAR]
var      = game_creation.coast_tropics_width
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 0
min      = 0
max      = 3
interval = 1
str      = STR_CONFIG_SETTING_COAST_TROPICS_WIDTH
strhelp  = STR_CONFIG_SETTING_COAST_TROPICS_WIDTH_HELPTEXT
strval   = STR_CONFIG_SETTING_COAST_TROPICS_WIDTH_DEFAULT
cat      = SC_BASIC
patxname = ""rivers.game_creation.coast_tropics_width""

[SDT_VAR]
var      = game_creation.lake_size
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
def      = 8
min      = 0
max      = 100
cat      = SC_EXPERT
str      = STR_CONFIG_SETTING_LAKE_SIZE
strhelp  = STR_CONFIG_SETTING_LAKE_SIZE_HELPTEXT
strval   = STR_CONFIG_SETTING_LAKE_SIZE_VALUE
patxname = ""rivers.game_creation.lake_size""

[SDT_BOOL]
var      = game_creation.lakes_allowed_in_deserts
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = false
cat      = SC_EXPERT
str      = STR_CONFIG_SETTING_LAKES_ALLOWED_IN_DESERTS
strhelp  = STR_CONFIG_SETTING_LAKES_ALLOWED_IN_DESERTS_HELPTEXT
patxname = ""rivers.game_creation.lakes_allowed_in_deserts""

[SDT_VAR]
var      = game_creation.amount_of_rivers
type     = SLE_UINT8
from     = SLV_163
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
def      = 2
min      = 0
max      = 5
str      = STR_CONFIG_SETTING_RIVER_AMOUNT
strhelp  = STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT
strval   = STR_RIVERS_NONE

[SDT_VAR]
var      = game_creation.amount_of_rocks
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 5
min      = 1
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_ROCKS_AMOUNT
strhelp  = STR_CONFIG_SETTING_ROCKS_AMOUNT_HELPTEXT
strval   = STR_JUST_COMMA
patxname = ""rocks.game_creation.amount_of_rocks""

[SDT_VAR]
var      = game_creation.height_affects_rocks
type     = SLE_UINT8
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 0
min      = 0
max      = 25
interval = 1
str      = STR_CONFIG_SETTING_HEIGHT_ROCKS
strhelp  = STR_CONFIG_SETTING_HEIGHT_ROCKS_HELPTEXT
strval   = STR_JUST_COMMA
patxname = ""rocks.game_creation.height_affects_rocks""

[SDT_XREF]
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)
xref     = ""game_creation.build_public_roads""

[SDT_VAR]
var      = game_creation.build_public_roads
type     = SLE_UINT8
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_BUILD_PUBLIC_ROADS
strhelp  = STR_CONFIG_SETTING_BUILD_PUBLIC_ROADS_HELPTEXT
strval   = STR_CONFIG_SETTING_BUILD_PUBLIC_ROADS_NONE
post_cb  = PublicRoadsSettingChange
patxname = ""public_roads.game_creation.build_public_roads""

; locale

[SDT_OMANY]
var      = locale.currency
type     = SLE_UINT8
from     = SLV_97
flags    = SF_NO_NETWORK_SYNC
def      = 0
max      = CURRENCY_END - 1
full     = _locale_currencies
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTG_OMANY]
name     = ""units""
var      = _old_units
type     = SLE_UINT8
from     = SLV_97
to       = SLV_184
flags    = SF_NOT_IN_CONFIG
def      = 1
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDT_OMANY]
var      = locale.units_velocity
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 3
full     = _locale_units
post_cb  = VelocityUnitsChanged
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL

[SDT_OMANY]
var      = locale.units_power
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL

[SDT_OMANY]
var      = locale.units_weight
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL

[SDT_OMANY]
var      = locale.units_volume
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL

[SDT_OMANY]
var      = locale.units_force
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL

[SDT_OMANY]
var      = locale.units_height
type     = SLE_UINT8
from     = SLV_184
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _locale_units
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT
strhelp  = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT
strval   = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL

[SDT_SSTR]
var      = locale.digit_group_separator
type     = SLE_STRQ
from     = SLV_118
flags    = SF_NO_NETWORK_SYNC
def      = nullptr
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDT_SSTR]
var      = locale.digit_group_separator_currency
type     = SLE_STRQ
from     = SLV_118
flags    = SF_NO_NETWORK_SYNC
def      = nullptr
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDT_SSTR]
var      = locale.digit_decimal_separator
type     = SLE_STRQ
from     = SLV_126
flags    = SF_NO_NETWORK_SYNC
def      = nullptr
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = client_locale.sync_locale_network_server
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SYNC_LOCALE_SETTINGS_NETWORK_SERVER
strhelp  = STR_CONFIG_SETTING_SYNC_LOCALE_SETTINGS_NETWORK_SERVER_HELPTEXT
cat      = SC_BASIC

[SDT_BOOL]
var      = vehicle.adjacent_crossings
def      = true
str      = STR_CONFIG_SETTING_ADJACENT_CROSSINGS
strhelp  = STR_CONFIG_SETTING_ADJACENT_CROSSINGS_HELPTEXT
cat      = SC_BASIC
patxname = ""adjacent_crossings.vehicle.adjacent_crossings""

[SDT_BOOL]
var      = vehicle.safer_crossings
def      = false
str      = STR_CONFIG_SETTING_SAFER_CROSSINGS
strhelp  = STR_CONFIG_SETTING_SAFER_CROSSINGS_HELPTEXT
cat      = SC_BASIC
patxname = ""safer_crossings.vehicle.safer_crossings""


;***************************************************************************
; Unsaved setting variables.

[SDTC_OMANY]
var      = gui.autosave
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 6
full     = _autosave_interval
str      = STR_CONFIG_SETTING_AUTOSAVE
strhelp  = STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT
strval   = STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF
post_cb  = AutosaveModeChanged
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.autosave_custom_days
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 14
min      = 1
max      = 4000
interval = 7
str      = STR_CONFIG_SETTING_AUTOSAVE_CUSTOM_DAYS
strhelp  = STR_CONFIG_SETTING_AUTOSAVE_CUSTOM_DAYS_HELPTEXT
strval   = STR_TIMETABLE_DAYS
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.autosave_custom_minutes
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 30
min      = 3
max      = 8000
interval = 10
str      = STR_CONFIG_SETTING_AUTOSAVE_CUSTOM_MINUTES
strhelp  = STR_CONFIG_SETTING_AUTOSAVE_CUSTOM_MINUTES_HELPTEXT
strval   = STR_TIMETABLE_MINUTES
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.threaded_saves
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
cat      = SC_EXPERT

[SDTC_OMANY]
var      = gui.date_format_in_default_names
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _savegame_date
str      = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES
strhelp  = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT
strval   = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG

[SDTC_BOOL]
var      = gui.show_finances
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOWFINANCES
strhelp  = STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.auto_scrolling
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_AUTOSCROLL
strhelp  = STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT
strval   = STR_CONFIG_SETTING_AUTOSCROLL_DISABLED
cat      = SC_BASIC

[SDTC_VAR]
ifdef    = __EMSCRIPTEN__
var      = gui.scroll_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_SCROLLMODE
strhelp  = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT
strval   = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT
cat      = SC_BASIC

[SDTC_VAR]
ifndef    = __EMSCRIPTEN__
var      = gui.scroll_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_SCROLLMODE
strhelp  = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT
strval   = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.smooth_scroll
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SMOOTH_SCROLLING
strhelp  = STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT

[SDTC_BOOL]
var      = gui.right_mouse_wnd_close
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE
strhelp  = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT
cat      = SC_BASIC

; We might need to emulate a right mouse button on mac
[SDTC_VAR]
ifdef    = __APPLE__
var      = gui.right_mouse_btn_emulation
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU
strhelp  = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT
strval   = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.measure_tooltip
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_MEASURE_TOOLTIP
strhelp  = STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.errmsg_duration
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 5
min      = 0
max      = 20
str      = STR_CONFIG_SETTING_ERRMSG_DURATION
strhelp  = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT
strval   = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE

[SDTC_VAR]
var      = gui.hover_delay_ms
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
def      = 250
min      = 50
max      = 6000
interval = 50
str      = STR_CONFIG_SETTING_HOVER_DELAY
strhelp  = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT
strval   = STR_CONFIG_SETTING_HOVER_DELAY_VALUE

[SDTC_OMANY]
var      = gui.osk_activation
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
str      = STR_CONFIG_SETTING_OSK_ACTIVATION
strhelp  = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT
strval   = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED
full     = _osk_activation
def      = 1
min      = 0
max      = 3
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.toolbar_pos
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_TOOLBAR_POS
strhelp  = STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT
strval   = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT
post_cb  = v_PositionMainToolbar
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.statusbar_pos
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_STATUSBAR_POS
strhelp  = STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT
strval   = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT
post_cb  = v_PositionStatusbar
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.window_snap_radius
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
def      = 10
min      = 1
max      = 32
str      = STR_CONFIG_SETTING_SNAP_RADIUS
strhelp  = STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT
strval   = STR_CONFIG_SETTING_SNAP_RADIUS_VALUE
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.window_soft_limit
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
def      = 20
min      = 5
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_SOFT_LIMIT
strhelp  = STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT
strval   = STR_CONFIG_SETTING_SOFT_LIMIT_VALUE
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.zoom_min
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = ZOOM_LVL_MIN
min      = ZOOM_LVL_MIN
max      = ZOOM_LVL_OUT_4X
str      = STR_CONFIG_SETTING_ZOOM_MIN
strhelp  = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT
strval   = STR_CONFIG_SETTING_ZOOM_LVL_MIN
post_cb  = ZoomMinMaxChanged
startup  = true

[SDTC_VAR]
var      = gui.zoom_max
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = ZOOM_LVL_MAX
min      = ZOOM_LVL_OUT_8X
max      = ZOOM_LVL_MAX
str      = STR_CONFIG_SETTING_ZOOM_MAX
strhelp  = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT
strval   = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X
post_cb  = ZoomMinMaxChanged
guiproc  = ZoomMaxCfgName
startup  = true

[SDTC_VAR]
var      = gui.sprite_zoom_min
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = ZOOM_LVL_MIN
min      = ZOOM_LVL_MIN
max      = ZOOM_LVL_OUT_4X
str      = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN
strhelp  = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT
strval   = STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN
post_cb  = SpriteZoomMinChanged
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.population_in_label
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_POPULATION_IN_LABEL
strhelp  = STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT
post_cb  = [](auto) { UpdateAllTownVirtCoords(); }

[SDTC_BOOL]
var      = gui.link_terraform_toolbar
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR
strhelp  = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT

[SDTC_VAR]
var      = gui.smallmap_land_colour
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR
strhelp  = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT
strval   = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN
post_cb  = RedrawSmallmap

[SDTC_VAR]
var      = gui.liveries
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_LIVERIES
strhelp  = STR_CONFIG_SETTING_LIVERIES_HELPTEXT
strval   = STR_CONFIG_SETTING_LIVERIES_NONE
post_cb  = InvalidateCompanyLiveryWindow

[SDTC_VAR]
var      = gui.starting_colour
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = COLOUR_END
min      = 0
max      = COLOUR_END
str      = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR
strhelp  = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT
strval   = STR_COLOUR_DARK_BLUE

[SDTC_BOOL]
var      = gui.auto_remove_signals
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS
strhelp  = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT
cat      = SC_ADVANCED

[SDTC_BOOL]
var      = gui.prefer_teamchat
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_PREFER_TEAMCHAT
strhelp  = STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.scrollwheel_scrolling
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING
strhelp  = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT
strval   = STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.scrollwheel_multiplier
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 5
min      = 1
max      = 15
interval = 1
str      = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER
strhelp  = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.viewport_map_scan_surroundings
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SCAN_SURROUNDINGS
post_cb  = ViewportMapLandscapeModeChanged

[SDTC_BOOL]
var      = gui.show_slopes_on_viewport_map
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_SLOPES
post_cb  = ViewportMapLandscapeModeChanged

[SDTC_BOOL]
var      = gui.show_bridges_on_map
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_BRIDGES
post_cb  = ViewportMapLandscapeModeChanged

[SDTC_BOOL]
var      = gui.show_tunnels_on_map
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_TUNNELS
post_cb  = ViewportMapShowTunnelModeChanged

[SDTC_VAR]
var      = gui.show_vehicle_route_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE
strhelp  = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_HELPTEXT
strval   = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_OFF
post_cb  = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }

[SDTC_BOOL]
var      = gui.show_vehicle_route_steps
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS
strhelp  = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }

[SDTC_BOOL]
var      = gui.show_vehicle_route
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE
strhelp  = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }

[SDTC_VAR]
var      = gui.dash_level_of_route_lines
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
def      = 0
min      = 0
max      = 10
interval = 1
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH
strval   = STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.use_owner_colour_for_tunnelbridge
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_USE_OWNER_COLOUR_BRIDGE_TUNNEL
post_cb  = ViewportMapLandscapeModeChanged

[SDTC_VAR]
var      = gui.show_scrolling_viewport_on_map
type     = SLE_UINT32
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 3
min      = 0
max      = 3
interval = 1
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_SCROLLING_VP
strval   = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_SCROLLING_VP_NOTHING

[SDTC_VAR]
var      = gui.default_viewport_map_mode
type     = SLE_UINT32
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_DEFAULT_MODE
strval   = STR_CONFIG_SETTING_VIEWPORT_MAP_DEFAULT_MODE_VEGETATION

[SDTC_VAR]
var      = gui.action_when_viewport_map_is_dblclicked
type     = SLE_UINT32
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK
strval   = STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING

[SDTC_BOOL]
var      = gui.pause_on_newgame
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME
strhelp  = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.advanced_vehicle_list
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS
strhelp  = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT
strval   = STR_CONFIG_SETTING_COMPANIES_OFF

[SDTC_BOOL]
var      = gui.timetable_in_ticks
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS
strhelp  = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT
post_cb  = ChangeTimetableInTicksMode
cat      = SC_EXPERT

;; gui.time_in_minutes
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)

[SDTC_BOOL]
var      = gui.timetable_leftover_ticks
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_TIMETABLE_LEFTOVER_TICKS
strhelp  = STR_CONFIG_SETTING_TIMETABLE_LEFTOVER_TICKS_HELPTEXT
post_cb  = InvalidateVehTimetableWindow
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.override_time_settings
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_OVERRIDE_TIME_SETTINGS
strhelp  = STR_CONFIG_SETTING_OVERRIDE_TIME_SETTINGS_HELPTEXT
post_cb  = ChangeTimeOverrideMode

[SDTC_BOOL]
var      = gui.time_in_minutes
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_TIME_IN_MINUTES
strhelp  = STR_CONFIG_SETTING_TIME_IN_MINUTES_HELPTEXT
post_cb  = UpdateTimeSettings

[SDTC_VAR]
var      = gui.ticks_per_minute
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
strval   = STR_JUST_INT
def      = 74
min      = 1
max      = 8192
interval = 10
str      = STR_CONFIG_SETTING_TICKS_PER_MINUTE
strhelp  = STR_CONFIG_SETTING_TICKS_PER_MINUTE_HELPTEXT
post_cb  = UpdateTimeSettings

[SDTC_VAR]
var      = gui.clock_offset
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
strval   = STR_JUST_INT
def      = 0
min      = 0
max      = 1439
interval = 60
str      = STR_CONFIG_SETTING_CLOCK_OFFSET
strhelp  = STR_CONFIG_SETTING_CLOCK_OFFSET_HELPTEXT
post_cb  = UpdateTimeSettings

[SDT_BOOL]
var      = game_time.time_in_minutes
def      = false
str      = STR_CONFIG_SETTING_TIME_IN_MINUTES
strhelp  = STR_CONFIG_SETTING_TIME_IN_MINUTES_HELPTEXT
post_cb  = UpdateTimeSettings
patxname = ""game_time.time_in_minutes""

[SDT_VAR]
var      = game_time.ticks_per_minute
type     = SLE_UINT16
strval   = STR_JUST_INT
def      = 74
min      = 1
max      = 8192
interval = 10
str      = STR_CONFIG_SETTING_TICKS_PER_MINUTE
strhelp  = STR_CONFIG_SETTING_TICKS_PER_MINUTE_HELPTEXT
post_cb  = UpdateTimeSettings
patxname = ""game_time.ticks_per_minute""

[SDT_VAR]
var      = game_time.clock_offset
type     = SLE_UINT16
strval   = STR_JUST_INT
def      = 0
min      = 0
max      = 1439
interval = 60
str      = STR_CONFIG_SETTING_CLOCK_OFFSET
strhelp  = STR_CONFIG_SETTING_CLOCK_OFFSET_HELPTEXT
post_cb  = UpdateTimeSettings
patxname = ""game_time.clock_offset""

;; gui.ticks_per_minute
[SDT_NULL]
length   = 1
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)

[SDTC_VAR]
var      = gui.date_with_time
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_DATE_WITH_TIME
strval   = STR_CONFIG_SETTING_DATE_WITH_TIME_NONE
strhelp  = STR_CONFIG_SETTING_DATE_WITH_TIME_HELPTEXT
post_cb  = UpdateTimeSettings

[SDTC_BOOL]
var      = gui.timetable_start_text_entry
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_TIMETABLE_START_TEXT_ENTRY
strhelp  = STR_CONFIG_SETTING_TIMETABLE_START_TEXT_ENTRY_HELPTEXT

[SDTC_BOOL]
var      = gui.timetable_arrival_departure
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE
strhelp  = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT
post_cb  = InvalidateVehTimetableWindow

[SDTC_VAR]
var      = gui.max_departures
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
strval   = STR_JUST_INT
def      = 10
min      = 1
max      = 30
interval = 1
str      = STR_CONFIG_MAX_DEPARTURES
strhelp  = STR_CONFIG_MAX_DEPARTURES_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_VAR]
var      = gui.max_departure_time
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
strval   = STR_JUST_INT
def      = 120
min      = 30
max      = 240
interval = 1
str      = STR_CONFIG_MAX_DEPARTURE_TIME
strhelp  = STR_CONFIG_MAX_DEPARTURE_TIME_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_VAR]
var      = gui.departure_calc_frequency
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
strval   = STR_JUST_INT
def      = 10
min      = 1
max      = 120
interval = 1
str      = STR_CONFIG_DEPARTURE_CALC_FREQUENCY
strhelp  = STR_CONFIG_DEPARTURE_CALC_FREQUENCY_HELPTEXT

[SDTC_BOOL]
var      = gui.departure_show_vehicle
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_VEHICLE_NAME
strhelp  = STR_CONFIG_DEPARTURE_VEHICLE_NAME_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_group
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_GROUP_NAME
strhelp  = STR_CONFIG_DEPARTURE_GROUP_NAME_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_company
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_COMPANY_NAME
strhelp  = STR_CONFIG_DEPARTURE_COMPANY_NAME_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_vehicle_type
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_VEHICLE_TYPE
strhelp  = STR_CONFIG_DEPARTURE_VEHICLE_TYPE_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_vehicle_color
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_VEHICLE_COLOR
strhelp  = STR_CONFIG_DEPARTURE_VEHICLE_COLOR_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_larger_font
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_LARGER_FONT
strhelp  = STR_CONFIG_DEPARTURE_LARGER_FONT_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_destination_type
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_DESTINATION_TYPE
strhelp  = STR_CONFIG_DEPARTURE_DESTINATION_TYPE_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_both
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_SHOW_BOTH
strhelp  = STR_CONFIG_DEPARTURE_SHOW_BOTH_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_only_passengers
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS
strhelp  = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_smart_terminus
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_SMART_TERMINUS
strhelp  = STR_CONFIG_DEPARTURE_SMART_TERMINUS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_show_all_stops
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS
strhelp  = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.departure_merge_identical
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL
strhelp  = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_VAR]
var      = gui.departure_conditionals
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_DEPARTURE_CONDITIONALS
strval   = STR_CONFIG_DEPARTURE_CONDITIONALS_1
strhelp  = STR_CONFIG_DEPARTURE_CONDITIONALS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }

[SDTC_BOOL]
var      = gui.quick_goto
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_QUICKGOTO
strhelp  = STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.loading_indicators
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_LOADING_INDICATORS
strhelp  = STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT
strval   = STR_CONFIG_SETTING_COMPANIES_OFF
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.default_rail_type
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE
strhelp  = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT
strval   = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.default_road_type
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_DEFAULT_ROAD_TYPE
strhelp  = STR_CONFIG_SETTING_DEFAULT_ROAD_TYPE_HELPTEXT
strval   = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.signal_gui_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 1
str      = STR_CONFIG_SETTING_SIGNAL_GUI_MODE
strhelp  = STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT
strval   = STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH
post_cb  = ProgrammableSignalsShownChanged
cat      = SC_ADVANCED

[SDTC_VAR]
var      = gui.coloured_news_year
type     = SLE_INT32
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 2000
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR
strhelp  = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT
strval   = STR_JUST_INT
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.cycle_signal_types
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 1
interval = 1
str      = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES
strhelp  = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT
strval   = STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS
cat      = SC_ADVANCED

[SDTC_VAR]
var      = gui.default_signal_type
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 5
min      = 0
max      = 5

[SDTC_VAR]
var      = gui.drag_signals_density
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 4
min      = 1
max      = 20
str      = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY
strhelp  = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT
strval   = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE
post_cb  = [](auto) { InvalidateWindowData(WC_BUILD_SIGNAL, 0); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.drag_signals_fixed_distance
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE
strhelp  = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.semaphore_build_before
type     = SLE_INT32
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 1950
min      = MIN_YEAR
max      = MAX_YEAR
interval = 1
str      = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE
strhelp  = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT
strval   = STR_JUST_INT
post_cb  = ResetSignalVariant

[SDTC_BOOL]
var      = gui.vehicle_income_warn
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_WARN_INCOME_LESS
strhelp  = STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.order_review_system
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_ORDER_REVIEW
strhelp  = STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT
strval   = STR_CONFIG_SETTING_ORDER_REVIEW_OFF
cat      = SC_BASIC

[SDTC_ENUM]
var      = gui.no_depot_order_warn
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_CONVERT_BOOL_TO_INT
def      = 0
enumlist = _no_depot_order_warn
str      = STR_CONFIG_SETTING_WARN_NO_DEPOT_ORDER
strhelp  = STR_CONFIG_SETTING_WARN_NO_DEPOT_ORDER_HELPTEXT

[SDTC_BOOL]
var      = gui.lost_vehicle_warn
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_WARN_LOST_VEHICLE
strhelp  = STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT

[SDTC_BOOL]
var      = gui.restriction_wait_vehicle_warn
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE
strhelp  = STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE_HELPTEXT

[SDTC_BOOL]
var      = gui.new_nonstop
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT
strhelp  = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.stop_location
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_STOP_LOCATION
strhelp  = STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT
strval   = STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.keep_all_autosave
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false

[SDTC_BOOL]
var      = gui.autosave_on_exit
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.autosave_on_network_disconnect
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT
strhelp  = STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT_HELPTEXT
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.max_num_autosaves
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 16
min      = 0
max      = 255

[SDTC_OMANY]
var      = gui.savegame_overwrite_confirm
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
str      = STR_CONFIG_SETTING_SAVEGAME_OVERWRITE_CONFIRM
strhelp  = STR_CONFIG_SETTING_SAVEGAME_OVERWRITE_CONFIRM_HELPTEXT
strval   = STR_CONFIG_SETTING_SAVEGAME_OVERWRITE_CONFIRM_DISABLED
full     = _savegame_overwrite_confirm
def      = 3
min      = 0
max      = 3

[SDTC_BOOL]
var      = gui.auto_euro
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true

[SDTC_VAR]
var      = gui.news_message_timeout
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 2
min      = 1
max      = 255

[SDTC_BOOL]
var      = gui.show_track_reservation
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION
strhelp  = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.station_numtracks
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 1
min      = 1
max      = 7

[SDTC_VAR]
var      = gui.station_platlength
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 5
min      = 1
max      = 7
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.station_dragdrop
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.station_show_coverage
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.persistent_buildingtools
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS
strhelp  = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.station_gui_group_order
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 0
min      = 0
max      = 5
interval = 1

[SDTC_VAR]
var      = gui.station_gui_sort_by
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 0
min      = 0
max      = 3
interval = 1

[SDTC_VAR]
var      = gui.station_gui_sort_order
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 0
min      = 0
max      = 1
interval = 1

[SDTC_VAR]
var      = gui.missing_strings_threshold
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 25
min      = 1
max      = UINT8_MAX
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.graph_line_thickness
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 3
min      = 1
max      = 5
str      = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS
strhelp  = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT
strval   = STR_JUST_COMMA
post_cb  = [](auto) { MarkWholeScreenDirty(); }

[SDTC_BOOL]
var      = gui.show_train_length_in_details
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS
strhelp  = STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_train_weight_ratios_in_details
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_TRAIN_WEIGHT_RATIOS_IN_DETAILS
strhelp  = STR_CONFIG_SETTING_SHOW_TRAIN_WEIGHT_RATIOS_IN_DETAILS_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.show_vehicle_group_in_details
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_IN_DETAILS
strhelp  = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_IN_DETAILS_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_vehicle_list_company_colour
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR
strhelp  = STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_restricted_signal_default
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_RESTRICTED_SIG_DEF
strhelp  = STR_CONFIG_SETTING_SHOW_RESTRICTED_SIG_DEF_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }

[SDTC_BOOL]
var      = gui.show_all_signal_default
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_ALL_SIG_DEF
strhelp  = STR_CONFIG_SETTING_SHOW_ALL_SIG_DEF_HELPTEXT
post_cb  = [](auto) { UpdateRailGuiSprites(); MarkWholeScreenDirty(); }

[SDTC_BOOL]
var      = gui.show_adv_tracerestrict_features
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_ADV_TRACE_RESTRICT_FEATURES
strhelp  = STR_CONFIG_SETTING_SHOW_ADV_TRACE_RESTRICT_FEATURES_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.show_progsig_ui
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_PROGSIG_FEATURES
strhelp  = STR_CONFIG_SETTING_SHOW_PROGSIG_FEATURES_HELPTEXT
post_cb  = ProgrammableSignalsShownChanged
cat      = SC_ADVANCED

[SDTC_BOOL]
var      = gui.show_noentrysig_ui
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_NOENTRYSIG_FEATURES
strhelp  = STR_CONFIG_SETTING_SHOW_NOENTRYSIG_FEATURES_HELPTEXT
post_cb  = ProgrammableSignalsShownChanged
cat      = SC_ADVANCED

[SDTC_BOOL]
var      = gui.show_veh_list_cargo_filter
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHOW_VEH_LIST_CARGO_FILTER
strhelp  = STR_CONFIG_SETTING_SHOW_VEH_LIST_CARGO_FILTER_HELPTEXT
post_cb  = VehListCargoFilterShownChanged

[SDTC_BOOL]
var      = gui.enable_single_veh_shared_order_gui
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_ENABLE_SINGLE_VEH_SHARED_ORDER_GUI
strhelp  = STR_CONFIG_SETTING_ENABLE_SINGLE_VEH_SHARED_ORDER_GUI_HELPTEXT
post_cb  = EnableSingleVehSharedOrderGuiChanged
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.show_adv_load_mode_features
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_ADV_LOADING_MODE_FEATURES
strhelp  = STR_CONFIG_SETTING_SHOW_ADV_LOADING_MODE_FEATURES_HELPTEXT
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.disable_top_veh_list_mass_actions
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_DISABLE_TOP_VEH_LIST_MASS_ACTIONS
strhelp  = STR_CONFIG_SETTING_DISABLE_TOP_VEH_LIST_MASS_ACTIONS_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.adv_sig_bridge_tun_modes
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES
strhelp  = STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.sort_track_types_by_speed
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SORT_TRACK_TYPES_BY_SPEED
strhelp  = STR_CONFIG_SETTING_SORT_TRACK_TYPES_BY_SPEED_HELPTEXT
post_cb  = ChangeTrackTypeSortMode
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.show_depot_sell_gui
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_DEPOT_SELL_GUI
strhelp  = STR_CONFIG_SETTING_SHOW_DEPOT_SELL_GUI_HELPTEXT
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.open_vehicle_gui_clone_share
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_OPEN_VEHICLE_GUI_CLONE_SHARE
strhelp  = STR_CONFIG_SETTING_OPEN_VEHICLE_GUI_CLONE_SHARE_HELPTEXT
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.show_newgrf_name
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME
strhelp  = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_ADVANCED

[SDTC_BOOL]
var      = gui.show_cargo_in_vehicle_lists
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS
strhelp  = STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_ADVANCED

[SDTC_BOOL]
var      = gui.scale_bevels
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
post_cb  = [](auto) { SetupWidgetDimensions(); ReInitAllWindows(true); }
cat      = SC_BASIC
startup  = true

[SDTC_BOOL]
var      = gui.show_wagon_intro_year
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_WAGON_INTRO_YEAR
strhelp  = STR_CONFIG_SETTING_SHOW_WAGON_INTRO_YEAR_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_ADVANCED

[SDTC_VAR]
var      = gui.linkgraph_colours
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 3
str      = STR_CONFIG_SETTING_LINKGRAPH_COLOURS
strhelp  = STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT
strval   = STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED
post_cb  = UpdateLinkgraphColours
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.vehicle_names
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_VEHICLE_NAMES
strhelp  = STR_CONFIG_SETTING_VEHICLE_NAMES_HELPTEXT
strval   = STR_CONFIG_SETTING_VEHICLE_NAMES_TRADITIONAL
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.shade_trees_on_slopes
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SHADED_TREES_ON_SLOPES
strhelp  = STR_CONFIG_SETTING_SHADED_TREES_ON_SLOPES_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_VAR]
var      = gui.station_rating_tooltip_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE
strhelp  = STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT
strval   = STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF

[SDTC_VAR]
var      = gui.demolish_confirm_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
min      = 0
max      = 2
str      = STR_CONFIG_SETTING_DEMOLISH_CONFIRM_MODE
strhelp  = STR_CONFIG_SETTING_DEMOLISH_CONFIRM_MODE_HELPTEXT
strval   = STR_CONFIG_SETTING_DEMOLISH_CONFIRM_MODE_OFF
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.dual_pane_train_purchase_window
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_DUAL_PANE_TRAIN_PURCHASE_WINDOW
strhelp  = STR_CONFIG_SETTING_DUAL_PANE_TRAIN_PURCHASE_WINDOW_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); }

[SDTC_BOOL]
var      = gui.dual_pane_train_purchase_window_dual_buttons
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_DUAL_PANE_TRAIN_PURCHASE_WINDOW_DUAL_BUTTONS
strhelp  = STR_CONFIG_SETTING_DUAL_PANE_TRAIN_PURCHASE_WINDOW_DUAL_BUTTONS_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_BUILD_VEHICLE); InvalidateWindowClassesData(WC_BUILD_VIRTUAL_TRAIN); }

[SDTC_BOOL]
var      = gui.allow_hiding_waypoint_labels
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_ALLOW_HIDE_WAYPOINT_LABEL
strhelp  = STR_CONFIG_SETTING_ALLOW_HIDE_WAYPOINT_LABEL_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); InvalidateWindowClassesData(WC_WAYPOINT_VIEW, 0); }

[SDTC_ENUM]
var      = gui.disable_water_animation
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 255
enumlist = _disable_water_animation
str      = STR_CONFIG_SETTING_DISABLE_WATER_ANIMATION
strhelp  = STR_CONFIG_SETTING_DISABLE_WATER_ANIMATION_HELPTEXT
post_cb  = SpriteZoomMinChanged

[SDTC_BOOL]
var      = gui.show_order_occupancy_by_default
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_ORDER_OCCUPANCY_BY_DEFAULT
strhelp  = STR_CONFIG_SETTING_SHOW_ORDER_OCCUPANCY_BY_DEFAULT_HELPTEXT
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_order_management_button
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_ORDER_MANAGEMENT_BY_DEFAULT
strhelp  = STR_CONFIG_SETTING_SHOW_ORDER_MANAGEMENT_BY_DEFAULT_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_ORDERS); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_group_hierarchy_name
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME
strhelp  = STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME_HELPTEXT
post_cb  = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }
cat      = SC_BASIC

[SDTC_BOOL]
var      = gui.show_vehicle_group_hierarchy_name
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME
strhelp  = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT
post_cb  = [](auto) { MarkWholeScreenDirty(); }
cat      = SC_ADVANCED

; For the dedicated build we'll enable dates in logs by default.
[SDTC_BOOL]
ifdef    = DEDICATED
var      = gui.show_date_in_logs
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true

[SDTC_BOOL]
ifndef   = DEDICATED
var      = gui.show_date_in_logs
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false

[SDTC_VAR]
var      = gui.settings_restriction_mode
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 0
min      = 0
max      = 2

[SDTC_VAR]
var      = gui.developer
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 1
min      = 0
max      = 2
post_cb  = DeveloperModeChanged
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.newgrf_developer_tools
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
post_cb  = InvalidateNewGRFChangeWindows
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.ai_developer_tools
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
post_cb  = [](auto) { InvalidateWindowClassesData(WC_AI_SETTINGS); }
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.scenario_developer
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
post_cb  = InvalidateNewGRFChangeWindows

[SDTC_BOOL]
var      = gui.newgrf_show_old_versions
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.newgrf_default_palette
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
min      = 0
max      = 1
post_cb  = UpdateNewGRFConfigPalette
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.console_show_unlisted
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_EXPERT

[SDTC_BOOL]
var      = gui.newgrf_disable_big_gui
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.console_backlog_timeout
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 100
min      = 10
max      = 65500

[SDTC_VAR]
var      = gui.console_backlog_length
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 100
min      = 10
max      = 65500

[SDTC_VAR]
var      = gui.refresh_rate
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 60
min      = 10
max      = 1000
cat      = SC_EXPERT
startup  = true

[SDTC_VAR]
var      = gui.fast_forward_speed_limit
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NO_NETWORK
def      = 2500
min      = 0
max      = 50000
interval = 10
str      = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT
strhelp  = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT
strval   = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL
cat      = SC_BASIC

[SDTC_BOOL]
var      = sound.news_ticker
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_TICKER
strhelp  = STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT

[SDTC_BOOL]
var      = sound.news_full
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_NEWS
strhelp  = STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT

[SDTC_BOOL]
var      = sound.new_year
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_NEW_YEAR
strhelp  = STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT

[SDTC_BOOL]
var      = sound.confirm
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_CONFIRM
strhelp  = STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT

[SDTC_BOOL]
var      = sound.click_beep
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_CLICK
strhelp  = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT

[SDTC_BOOL]
var      = sound.disaster
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_DISASTER
strhelp  = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT

[SDTC_BOOL]
var      = sound.vehicle
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_VEHICLE
strhelp  = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT

[SDTC_BOOL]
var      = sound.ambient
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
str      = STR_CONFIG_SETTING_SOUND_AMBIENT
strhelp  = STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT

[SDTC_VAR]
var      = music.playlist
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 0
min      = 0
max      = 5
interval = 1
cat      = SC_BASIC

[SDTC_VAR]
var      = music.music_vol
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 50
min      = 0
max      = 127
interval = 1
cat      = SC_BASIC

[SDTC_VAR]
var      = music.effect_vol
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 100
min      = 0
max      = 127
interval = 1
cat      = SC_BASIC

[SDTC_LIST]
var      = music.custom_1
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = nullptr
cat      = SC_BASIC

[SDTC_LIST]
var      = music.custom_2
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = nullptr
cat      = SC_BASIC

[SDTC_BOOL]
var      = music.playing
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = true
cat      = SC_BASIC

[SDTC_BOOL]
var      = music.shuffle
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
cat      = SC_BASIC

[SDTC_OMANY]
var      = news_display.arrival_player
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN
strhelp  = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.arrival_other
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER
strhelp  = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.accident
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS
strhelp  = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.accident_other
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER
strhelp  = STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.company_info
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION
strhelp  = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.open
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN
strhelp  = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.close
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE
strhelp  = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.economy
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES
strhelp  = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.production_player
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY
strhelp  = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.production_other
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER
strhelp  = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.production_nobody
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED
strhelp  = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.advice
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_ADVICE
strhelp  = STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.new_vehicles
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES
strhelp  = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.acceptance
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE
strhelp  = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.subsidies
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 1
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_SUBSIDIES
strhelp  = STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_OMANY]
var      = news_display.general
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 2
max      = 2
full     = _news_display
str      = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION
strhelp  = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT
strval   = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

[SDTC_BOOL]
var      = scenario.multiple_buildings
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SCENARIO_MULTIPLE_BUILDINGS
strhelp  = STR_CONFIG_SETTING_SCENARIO_MULTIPLE_BUILDINGS_HELPTEXT

[SDTC_BOOL]
var      = scenario.house_ignore_dates
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_DATES
strhelp  = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_DATES_HELPTEXT

[SDTC_VAR]
var      = scenario.house_ignore_zones
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def      = 0
min      = 0
max      = 2
interval = 1
str      = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES
strhelp  = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_HELPTEXT
strval   = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_OFF

[SDTC_BOOL]
var      = scenario.house_ignore_grf
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = false
str      = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_GRF
strhelp  = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_GRF_HELPTEXT

[SDTC_VAR]
var      = gui.network_chat_box_width_pct
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 40
min      = 10
max      = 100
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.network_chat_box_height
type     = SLE_UINT8
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 25
min      = 5
max      = 255
cat      = SC_EXPERT

[SDTC_VAR]
var      = gui.network_chat_timeout
type     = SLE_UINT16
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def      = 20
min      = 1
max      = 65535
cat      = SC_EXPERT

[SDT_BOOL]
var      = vehicle.pay_for_repair
def      = true
str      = STR_CONFIG_SETTING_PAY_FOR_REPAIR_VEHICLE
strhelp  = STR_CONFIG_SETTING_PAY_FOR_REPAIR_VEHICLE_HELPTEXT
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST)
patxname = ""vehicle_repair_cost.vehicle.pay_for_repair""

[SDT_VAR]
var      = vehicle.repair_cost
type     = SLE_UINT8
def      = 100
min      = 1
max      = 255
interval = 1
str      = STR_CONFIG_SETTING_REPAIR_COST
strhelp  = STR_CONFIG_SETTING_REPAIR_COST_HELPTEXT
strval   = STR_JUST_INT
cat      = SC_EXPERT
extver   = SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST)
patxname = ""vehicle_repair_cost.vehicle.repair_cost""

[SDT_VAR]
var      = debug.chicken_bits
type     = SLE_UINT32
flags    = SF_NOT_IN_CONFIG | SF_NO_NEWGAME
def      = 0
min      = 0
max      = 0xFFFFFFFF
cat      = SC_EXPERT
patxname = ""debug.chicken_bits""

[SDT_VAR]
var      = debug.newgrf_optimiser_flags
type     = SLE_UINT32
flags    = SF_NOT_IN_CONFIG | SF_NO_NEWGAME | SF_NO_NETWORK
def      = 0
min      = 0
max      = 0xFFFFFFFF
cat      = SC_EXPERT
patxname = ""debug.newgrf_optimiser_flags""
