1; This file is part of OpenTTD. 2; 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. 3; 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. 4; 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/>. 5; 6 7; Difficulty settings as stored in the main configuration file ("openttd.cfg") 8; and in the savegame PATS chunk. 9 10[pre-amble] 11const std::array<std::string, GAME_DIFFICULTY_NUM> _old_diff_settings{"max_no_competitors", "competitor_start_time", "number_towns", "industry_density", "max_loan", "initial_interest", "vehicle_costs", "competitor_speed", "competitor_intelligence", "vehicle_breakdowns", "subsidy_multiplier", "construction_cost", "terrain_type", "quantity_sea_lakes", "economy", "line_reverse_mode", "disasters", "town_council_tolerance"}; 12 13uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; 14uint8 _old_diff_level; ///< Old difficulty level from old savegames 15 16static void DifficultyNoiseChange(int32 new_value); 17static void MaxNoAIsChange(int32 new_value); 18 19static const SettingVariant _difficulty_settings_table[] = { 20[post-amble] 21}; 22[templates] 23SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), 24SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), 25SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), 26 27[validation] 28SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); 29SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); 30 31[defaults] 32flags = SF_NONE 33interval = 0 34str = STR_NULL 35strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT 36strval = STR_NULL 37pre_cb = nullptr 38post_cb = nullptr 39load = nullptr 40from = SL_MIN_VERSION 41to = SL_MAX_VERSION 42cat = SC_ADVANCED 43extra = 0 44startup = false 45 46 47; Saved settings variables. 48; The next 18 entries are important for savegame compatibility. Do NOT remove those. See HandleOldDiffCustom() for more details. 49[SDT_VAR] 50var = difficulty.max_no_competitors 51type = SLE_UINT8 52from = SLV_97 53def = 0 54min = 0 55max = MAX_COMPANIES - 1 56interval = 1 57post_cb = MaxNoAIsChange 58cat = SC_BASIC 59 60[SDT_VAR] 61var = difficulty.competitor_start_time 62type = SLE_UINT8 63from = SLV_97 64to = SLV_110 65def = 2 66min = 0 67max = 3 68 69[SDT_VAR] 70var = difficulty.number_towns 71type = SLE_UINT8 72from = SLV_97 73flags = SF_NEWGAME_ONLY 74def = 2 75min = 0 76max = 4 77interval = 1 78strval = STR_NUM_VERY_LOW 79cat = SC_BASIC 80 81[SDT_VAR] 82var = difficulty.industry_density 83type = SLE_UINT8 84from = SLV_97 85flags = SF_GUI_DROPDOWN 86def = ID_END - 1 87min = 0 88max = ID_END - 1 89interval = 1 90str = STR_CONFIG_SETTING_INDUSTRY_DENSITY 91strhelp = STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT 92strval = STR_FUNDING_ONLY 93cat = SC_BASIC 94 95[SDT_VAR] 96var = difficulty.max_loan 97type = SLE_UINT32 98from = SLV_97 99flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY 100def = 300000 101min = 0 102max = 2000000000 103interval = 50000 104str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN 105strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT 106strval = STR_JUST_CURRENCY_LONG 107cat = SC_BASIC 108 109[SDT_VAR] 110var = difficulty.initial_interest 111type = SLE_UINT8 112from = SLV_97 113flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO 114def = 2 115min = 2 116max = 4 117interval = 1 118str = STR_CONFIG_SETTING_INTEREST_RATE 119strhelp = STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT 120strval = STR_CONFIG_SETTING_PERCENTAGE 121 122[SDT_VAR] 123var = difficulty.vehicle_costs 124type = SLE_UINT8 125from = SLV_97 126flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN 127def = 0 128min = 0 129max = 2 130interval = 1 131str = STR_CONFIG_SETTING_RUNNING_COSTS 132strhelp = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT 133strval = STR_SEA_LEVEL_LOW 134cat = SC_BASIC 135 136[SDT_VAR] 137var = difficulty.competitor_speed 138type = SLE_UINT8 139from = SLV_97 140flags = SF_GUI_DROPDOWN 141def = 2 142min = 0 143max = 4 144interval = 1 145str = STR_CONFIG_SETTING_CONSTRUCTION_SPEED 146strhelp = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT 147strval = STR_AI_SPEED_VERY_SLOW 148cat = SC_BASIC 149 150[SDT_VAR] 151var = difficulty.competitor_intelligence 152type = SLE_UINT8 153from = SLV_97 154to = SLV_110 155def = 0 156min = 0 157max = 2 158 159[SDT_VAR] 160var = difficulty.vehicle_breakdowns 161type = SLE_UINT8 162from = SLV_97 163flags = SF_GUI_DROPDOWN 164def = 1 165min = 0 166max = 2 167interval = 1 168str = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS 169strhelp = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT 170strval = STR_DISASTER_NONE 171cat = SC_BASIC 172 173[SDT_VAR] 174var = difficulty.subsidy_multiplier 175type = SLE_UINT8 176from = SLV_97 177flags = SF_GUI_DROPDOWN 178def = 2 179min = 0 180max = 3 181interval = 1 182str = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER 183strhelp = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT 184strval = STR_SUBSIDY_X1_5 185 186[SDT_VAR] 187var = difficulty.subsidy_duration 188type = SLE_UINT16 189from = SLV_CUSTOM_SUBSIDY_DURATION 190flags = SF_GUI_0_IS_SPECIAL 191def = 1 192min = 0 193max = 5000 194interval = 1 195str = STR_CONFIG_SETTING_SUBSIDY_DURATION 196strhelp = STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT 197strval = STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE 198 199[SDT_VAR] 200var = difficulty.construction_cost 201type = SLE_UINT8 202from = SLV_97 203flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN 204def = 0 205min = 0 206max = 2 207interval = 1 208str = STR_CONFIG_SETTING_CONSTRUCTION_COSTS 209strhelp = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT 210strval = STR_SEA_LEVEL_LOW 211cat = SC_BASIC 212 213[SDT_VAR] 214var = difficulty.terrain_type 215type = SLE_UINT8 216from = SLV_97 217flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY 218def = 1 219min = 0 220max = 5 221interval = 1 222str = STR_CONFIG_SETTING_TERRAIN_TYPE 223strhelp = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT 224strval = STR_TERRAIN_TYPE_VERY_FLAT 225cat = SC_BASIC 226 227[SDT_VAR] 228var = difficulty.quantity_sea_lakes 229type = SLE_UINT8 230from = SLV_97 231flags = SF_NEWGAME_ONLY 232def = 0 233min = 0 234max = 4 235interval = 1 236strval = STR_SEA_LEVEL_VERY_LOW 237cat = SC_BASIC 238 239[SDT_BOOL] 240var = difficulty.economy 241from = SLV_97 242def = false 243str = STR_CONFIG_SETTING_RECESSIONS 244strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT 245 246[SDT_BOOL] 247var = difficulty.line_reverse_mode 248from = SLV_97 249def = false 250str = STR_CONFIG_SETTING_TRAIN_REVERSING 251strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT 252 253[SDT_BOOL] 254var = difficulty.disasters 255from = SLV_97 256def = false 257str = STR_CONFIG_SETTING_DISASTERS 258strhelp = STR_CONFIG_SETTING_DISASTERS_HELPTEXT 259cat = SC_BASIC 260 261[SDT_VAR] 262var = difficulty.town_council_tolerance 263type = SLE_UINT8 264from = SLV_97 265flags = SF_GUI_DROPDOWN 266def = 0 267min = 0 268max = 2 269interval = 1 270str = STR_CONFIG_SETTING_CITY_APPROVAL 271strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT 272strval = STR_CITY_APPROVAL_PERMISSIVE 273post_cb = DifficultyNoiseChange 274 275[SDTG_VAR] 276name = ""diff_level"" 277var = _old_diff_level 278type = SLE_UINT8 279flags = SF_NOT_IN_CONFIG 280from = SLV_97 281to = SLV_178 282def = 3 283min = 0 284max = 3 285cat = SC_BASIC 286 287