diff --git a/src/lang/english.txt b/src/lang/english.txt --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1134,6 +1134,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING STR_CONFIG_SETTING_AUTOSCROLL :{LTBLUE}Pan window when mouse is at the edge: {ORANGE}{STRING1} STR_CONFIG_SETTING_BRIBE :{LTBLUE}Allow bribing of the local authority: {ORANGE}{STRING1} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Allow buying exclusive transport rights: {ORANGE}{STRING1} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :{LTBLUE}Allow funding local road reconstruction: {ORANGE}{STRING1} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Allow sending money to other companies: {ORANGE}{STRING1} STR_CONFIG_SETTING_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING} STR_CONFIG_SETTING_PLANE_SPEED :{LTBLUE}Plane speed factor: {ORANGE}1 / {STRING1} diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -224,7 +224,7 @@ * 157 21862 * 158 21933 * 159 21962 - * 160 21969 + * 160 21974 */ extern const uint16 SAVEGAME_VERSION = 160; ///< Current savegame version of OpenTTD. diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1368,6 +1368,7 @@ static SettingsPage _settings_stations_p static SettingEntry _settings_economy_towns[] = { SettingEntry("economy.bribe"), SettingEntry("economy.exclusive_rights"), + SettingEntry("economy.fund_roads"), SettingEntry("economy.town_layout"), SettingEntry("economy.allow_town_roads"), SettingEntry("economy.allow_town_level_crossings"), diff --git a/src/settings_type.h b/src/settings_type.h --- a/src/settings_type.h +++ b/src/settings_type.h @@ -367,6 +367,7 @@ struct EconomySettings { uint8 feeder_payment_share; ///< percentage of leg payment to virtually pay in feeder systems byte dist_local_authority; ///< distance for town local authority, default 20 bool exclusive_rights; ///< allow buying exclusive rights + bool fund_roads; ///< allow funding local road reconstruction bool give_money; ///< allow giving other companies money bool mod_road_rebuild; ///< roadworks remove unneccesary RoadBits bool multiple_industry_per_town; ///< allow many industries of the same type per town diff --git a/src/table/settings.h b/src/table/settings.h --- a/src/table/settings.h +++ b/src/table/settings.h @@ -451,6 +451,7 @@ const SettingDesc _settings[] = { SDT_CONDNULL( 1, 0, 140), SDT_BOOL(GameSettings, economy.bribe, 0, 0, true, STR_CONFIG_SETTING_BRIBE, RedrawTownAuthority), SDT_CONDBOOL(GameSettings, economy.exclusive_rights, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_EXCLUSIVE, RedrawTownAuthority), + SDT_CONDBOOL(GameSettings, economy.fund_roads, 160, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_FUND_ROAD, RedrawTownAuthority), SDT_CONDBOOL(GameSettings, economy.give_money, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_GIVE_MONEY, NULL), SDT_VAR(GameSettings, game_creation.snow_line_height, SLE_UINT8, 0, 0, DEF_SNOWLINE_HEIGHT, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT, 0, STR_CONFIG_SETTING_SNOWLINE_HEIGHT, NULL), SDT_CONDNULL( 4, 0, 143), diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -2469,6 +2469,9 @@ static CommandCost TownActionAdvertiseLa static CommandCost TownActionRoadRebuild(Town *t, DoCommandFlag flags) { + /* Check if the company is allowed to fund new roads. */ + if (!_settings_game.economy.fund_roads) return CMD_ERROR; + if (flags & DC_EXEC) { t->road_build_months = 6; @@ -2639,6 +2642,9 @@ uint GetMaskOfTownActions(int *nump, Com /* Is the company not able to buy exclusive rights ? */ if (cur == TACT_BUY_RIGHTS && !_settings_game.economy.exclusive_rights) continue; + /* Is the company not able to fund local road reconstruction? */ + if (cur == TACT_ROAD_REBUILD && !_settings_game.economy.fund_roads) continue; + /* Is the company not able to build a statue ? */ if (cur == TACT_BUILD_STATUE && HasBit(t->statues, cid)) continue;