; 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 . ; ; World settings as stored in the main configuration file ("openttd.cfg") ; and in the savegame PATS chunk. ; World settings are everything related to how the world came to be, so ; basically construction and game_creation settings. [pre-amble] static bool CheckMaxHeightLevel(int32_t &new_value); static bool CheckFreeformEdges(int32_t &new_value); static void UpdateFreeformEdges(int32_t new_value); static bool CheckMapEdgeMode(int32_t &new_value); static void MapEdgeModeChanged(int32_t new_value); static void ClimateThresholdModeChanged(int32_t new_value); static void PublicRoadsSettingChange(int32_t new_value); static void MarkAllViewportsDirty(int32_t new_value); static bool AllowRoadStopsUnderBridgesSettingGUI(SettingOnGuiCtrlData &data); static bool TreePlacerSettingGUI(SettingOnGuiCtrlData &data); static bool ChunnelSettingGUI(SettingOnGuiCtrlData &data); const SettingTable _world_settings = { [post-amble] }; [templates] SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_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, $str_cb, $help_cb, $val_cb, $from, $to, $extver, $load, $cat, $guiproc, $startup, $patxname), SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $extver, $cat, $guiproc, $startup, $patxname), [validation] 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 str_cb = nullptr help_cb = nullptr val_cb = nullptr guiproc = nullptr load = nullptr from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED startup = false extver = SlXvFeatureTest() patxname = nullptr enumlist = ; 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 [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_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.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.rainforest_line_height type = SLE_UINT8 flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_PATCH 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 | SF_PATCH 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"" [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_VAR] var = game_creation.starting_year type = SLE_INT32 def = CalTime::DEF_START_YEAR min = CalTime::MIN_YEAR max = CalTime::MAX_YEAR interval = 1 str = STR_CONFIG_SETTING_STARTING_YEAR strval = STR_JUST_INT cat = SC_BASIC [SDT_VAR] var = game_creation.ending_year type = SLE_INT32 from = SLV_ENDING_YEAR flags = SF_GUI_0_IS_SPECIAL def = CalTime::DEF_END_YEAR min = CalTime::MIN_YEAR max = CalTime::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 = 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 flags = SF_NOT_IN_CONFIG def = GENERATE_NEW_SEED min = 0 max = UINT32_MAX cat = SC_EXPERT [SDT_VAR] var = game_creation.generation_unique_id flags = SF_PATCH 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 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 guiproc = TreePlacerSettingGUI [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_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 = 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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 | SF_PATCH 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_VAR] var = game_creation.build_public_roads type = SLE_UINT8 flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_PATCH 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"" [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) [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 flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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_t &new_value) -> bool { return CheckTTDPatchSettingFlag(0x0F); } [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 [SDT_BOOL] var = construction.chunnel flags = SF_PATCH def = false str = STR_CONFIG_SETTING_CHUNNEL strhelp = STR_CONFIG_SETTING_CHUNNEL_HELPTEXT cat = SC_BASIC guiproc = ChunnelSettingGUI patxname = ""chunnel.construction.chunnel"" [SDT_VAR] var = construction.old_simulated_wormhole_signals type = SLE_UINT8 flags = SF_PATCH 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_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_t &new_value) -> bool { return CheckTTDPatchSettingFlag(0x3B); } post_cb = [](auto) { MarkWholeScreenDirty(); } cat = SC_BASIC [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.crossing_with_competitor def = true str = STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR strhelp = STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT cat = SC_BASIC [SDT_BOOL] var = construction.road_custom_bridge_heads flags = SF_PATCH 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_BOOL] var = construction.rail_custom_bridge_heads flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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 | SF_PATCH def = 2 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 flags = SF_PATCH 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 | SF_PATCH def = 0 min = CalTime::MIN_YEAR max = CalTime::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 flags = SF_PATCH 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 = construction.convert_town_road_no_houses flags = SF_PATCH def = false str = STR_CONFIG_SETTING_ALLOW_CONVERT_TOWN_ROAD_NO_HOUSES strhelp = STR_CONFIG_SETTING_ALLOW_CONVERT_TOWN_ROAD_NO_HOUSES_HELPTEXT cat = SC_EXPERT patxname = ""construction.convert_town_road_no_houses"" [SDT_BOOL] var = construction.purchased_land_clear_ground flags = SF_PATCH def = true str = STR_CONFIG_SETTING_PURCHASED_LAND_CLEAR_GROUND strhelp = STR_CONFIG_SETTING_PURCHASED_LAND_CLEAR_GROUND_HELPTEXT post_cb = [](auto) { MarkWholeNonMapViewportsDirty(); } cat = SC_BASIC [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_VAR] var = construction.maximum_signal_evaluations type = SLE_UINT16 flags = SF_PATCH 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 = construction.freeform_edges from = SLV_111 def = true pre_cb = CheckFreeformEdges post_cb = UpdateFreeformEdges cat = SC_EXPERT [SDT_BOOL] var = construction.flood_from_edges flags = SF_PATCH def = true str = STR_CONFIG_SETTING_FLOOD_FROM_EDGES strhelp = STR_CONFIG_SETTING_FLOOD_FROM_EDGES_HELPTEXT cat = SC_ADVANCED patxname = ""construction.flood_from_edges"" [SDT_VAR] var = construction.map_edge_mode type = SLE_UINT8 flags = SF_GUI_DROPDOWN | SF_PATCH def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_MAP_EDGE_MODE strhelp = STR_CONFIG_SETTING_MAP_EDGE_MODE_HELPTEXT strval = STR_CONFIG_SETTING_MAP_EDGE_MODE_DEFAULT pre_cb = CheckMapEdgeMode post_cb = MapEdgeModeChanged cat = SC_ADVANCED [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 [SDT_BOOL] var = construction.trees_around_snow_line_enabled flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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 | SF_PATCH 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_BOOL] var = game_time.time_in_minutes flags = SF_PATCH 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 flags = SF_PATCH 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 flags = SF_PATCH 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"" [SDT_VAR] var = debug.chicken_bits type = SLE_UINT32 flags = SF_NOT_IN_CONFIG | SF_NO_NEWGAME | SF_PATCH 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 | SF_PATCH def = 0 min = 0 max = 0xFFFFFFFF cat = SC_EXPERT patxname = ""debug.newgrf_optimiser_flags""