Index: src/settings.cpp =================================================================== --- src/settings.cpp (revision 10556) +++ src/settings.cpp (working copy) @@ -1422,6 +1422,8 @@ SDT_BOOL(Patches, multiple_industry_per_town, 0, 0, false, STR_CONFIG_PATCHES_MULTIPINDTOWN, NULL), SDT_BOOL(Patches, same_industry_close, 0, 0, false, STR_CONFIG_PATCHES_SAMEINDCLOSE, NULL), SDT_BOOL(Patches, bribe, 0, 0, true, STR_CONFIG_PATCHES_BRIBE, NULL), + SDT_CONDBOOL(Patches, forbid_exclusive_rights, 71, SL_MAX_VERSION, 0, 0, false, STR_CONFIG_PATCHES_FORBID_EXCLUSIVE, NULL), + SDT_CONDBOOL(Patches, forbid_give_money, 71, SL_MAX_VERSION, 0, 0, false, STR_CONFIG_PATCHES_FORBID_GIVE_MONEY, NULL), SDT_VAR(Patches, snow_line_height,SLE_UINT8, 0, 0, 7, 2, 13, 0, STR_CONFIG_PATCHES_SNOWLINE_HEIGHT, NULL), SDT_VAR(Patches, colored_news_year,SLE_INT32, 0,NC, 2000, MIN_YEAR, MAX_YEAR, 1, STR_CONFIG_PATCHES_COLORED_NEWS_YEAR,NULL), SDT_VAR(Patches, starting_year, SLE_INT32, 0,NC, 1950, MIN_YEAR, MAX_YEAR, 1, STR_CONFIG_PATCHES_STARTING_YEAR,NULL), Index: src/lang/american.txt =================================================================== --- src/lang/american.txt (revision 10556) +++ src/lang/american.txt (working copy) @@ -1047,6 +1047,8 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Road vehicle queueing (with quantum effects): {ORANGE}{STRING} STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Pan window when mouse is at the edge: {ORANGE}{STRING} STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Allow bribing of the local authority: {ORANGE}{STRING} +STR_CONFIG_PATCHES_FORBID_EXCLUSIVE :{LTBLUE}Disallow buying exclusive transport rights: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_FORBID_GIVE_MONEY :{LTBLUE}Disallow sending money to other companies: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING} STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING} STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING} Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 10556) +++ src/lang/english.txt (working copy) @@ -1047,6 +1047,8 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Road vehicle queueing (with quantum effects): {ORANGE}{STRING1} STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Pan window when mouse is at the edge: {ORANGE}{STRING1} STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Allow bribing of the local authority: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_FORBID_EXCLUSIVE :{LTBLUE}Disallow buying exclusive transport rights: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_FORBID_GIVE_MONEY :{LTBLUE}Disallow sending money to other companies: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING1} STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING} Index: src/lang/czech.txt =================================================================== --- src/lang/czech.txt (revision 10556) +++ src/lang/czech.txt (working copy) @@ -1105,6 +1105,8 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Silniční vozidla stojí fronty (s kvantovým efektem): {ORANGE}{STRING} STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Posouvat okno, když je kurzor na okraji: {ORANGE}{STRING} STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Povolit úplatek místní správě: {ORANGE}{STRING} +STR_CONFIG_PATCHES_FORBID_EXCLUSIVE :{LTBLUE}Zakázat kupování výhradních práv k přepravě: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_FORBID_GIVE_MONEY :{LTBLUE}Zakázat posílání peněz ostatním společnostem: {ORANGE}{STRING1} STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nejednolité stanice: {ORANGE}{STRING} STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nový globální algoritmus hledání cesty (NPF, nahradí NTP): {ORANGE}{STRING} STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Pro simulaci těžkých vlaků vynásobit hmotnost nákladu: {ORANGE}{STRING}x Index: src/settings_gui.cpp =================================================================== --- src/settings_gui.cpp (revision 10556) +++ src/settings_gui.cpp (working copy) @@ -691,6 +691,8 @@ "multiple_industry_per_town", "same_industry_close", "bribe", + "forbid_exclusive_rights", + "forbid_give_money", "colored_news_year", "ending_year", "smooth_economy", Index: src/saveload.cpp =================================================================== --- src/saveload.cpp (revision 10556) +++ src/saveload.cpp (working copy) @@ -30,7 +30,7 @@ #include #include -extern const uint16 SAVEGAME_VERSION = 70; +extern const uint16 SAVEGAME_VERSION = 71; uint16 _sl_version; ///< the major savegame version identifier byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! Index: src/town_gui.cpp =================================================================== --- src/town_gui.cpp (revision 10556) +++ src/town_gui.cpp (working copy) @@ -71,11 +71,17 @@ } /* Disable build statue if already built */ - if (HASBIT(t->statues, pid)) { + if (HASBIT(t->statues, pid) && HASBIT(buttons, 4)) { CLRBIT(buttons, 4); num--; } + /* Exclusive right are forbidden? */ + if (_patches.forbid_exclusive_rights && HASBIT(buttons, 6)) { + CLRBIT(buttons, 6); // Disallow exclusive rights + num--; + } + } if (nump != NULL) *nump = num; Index: src/variables.h =================================================================== --- src/variables.h (revision 10556) +++ src/variables.h (working copy) @@ -241,6 +241,9 @@ bool timetabling; ///< Whether to allow timetabling. bool timetable_in_ticks; ///< Whether to show the timetable in ticks rather than days. + + bool forbid_exclusive_rights; // forbid buying exclusive rights + bool forbid_give_money; // forbid giving other players money }; VARDEF Patches _patches; Index: src/network/network_gui.cpp =================================================================== --- src/network/network_gui.cpp (revision 10556) +++ src/network/network_gui.cpp (working copy) @@ -1213,8 +1213,10 @@ GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL, lastof(_clientlist_action[i])); _clientlist_proc[i++] = &ClientList_SpeakToAll; - if (_network_own_client_index != ci->client_index) { - /* We are no spectator and the player we want to give money to is no spectator */ + if (_network_own_client_index != ci->client_index && !_patches.forbid_give_money) { + /* We are no spectator and the player we want to give money to is no spectator + * and server settings allow giving money + */ if (IsValidPlayer(_network_playas) && IsValidPlayer(ci->client_playas)) { GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_GIVE_MONEY, lastof(_clientlist_action[i])); _clientlist_proc[i++] = &ClientList_GiveMoney; Index: src/misc_cmd.cpp =================================================================== --- src/misc_cmd.cpp (revision 10556) +++ src/misc_cmd.cpp (working copy) @@ -346,6 +346,8 @@ SET_EXPENSES_TYPE(EXPENSES_OTHER); + if (_patches.forbid_give_money) return CMD_ERROR; + /* You can only transfer funds that is in excess of your loan */ if (p->player_money - p->current_loan < amount.GetCost() || amount.GetCost() <= 0) return CMD_ERROR; if (!_networking || !IsValidPlayer((PlayerID)p2)) return CMD_ERROR;