Index: src/settings.cpp =================================================================== --- src/settings.cpp (Revision 10753) +++ src/settings.cpp (Arbeitskopie) @@ -1423,6 +1423,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, allow_exclusive_rights, 73, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE, NULL), + SDT_CONDBOOL(Patches, allow_give_money, 73, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_PATCHES_ALLOW_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/english.txt =================================================================== --- src/lang/english.txt (Revision 10753) +++ src/lang/english.txt (Arbeitskopie) @@ -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_ALLOW_EXCLUSIVE :{LTBLUE}Allow buying exclusive transport rights: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Allow 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/settings_gui.cpp =================================================================== --- src/settings_gui.cpp (Revision 10753) +++ src/settings_gui.cpp (Arbeitskopie) @@ -691,6 +691,8 @@ "multiple_industry_per_town", "same_industry_close", "bribe", + "allow_exclusive_rights", + "allow_give_money", "colored_news_year", "ending_year", "smooth_economy", Index: src/saveload.cpp =================================================================== --- src/saveload.cpp (Revision 10753) +++ src/saveload.cpp (Arbeitskopie) @@ -30,7 +30,7 @@ #include #include -extern const uint16 SAVEGAME_VERSION = 72; +extern const uint16 SAVEGAME_VERSION = 73; 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 10753) +++ src/town_gui.cpp (Arbeitskopie) @@ -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 allowed? */ + if (!_patches.allow_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 10753) +++ src/variables.h (Arbeitskopie) @@ -238,6 +238,9 @@ bool timetabling; ///< Whether to allow timetabling. bool timetable_in_ticks; ///< Whether to show the timetable in ticks rather than days. + + bool allow_exclusive_rights; ///< allow buying exclusive rights + bool allow_give_money; ///< allow giving other players money }; VARDEF Patches _patches; Index: src/network/network_gui.cpp =================================================================== --- src/network/network_gui.cpp (Revision 10753) +++ src/network/network_gui.cpp (Arbeitskopie) @@ -1236,8 +1236,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.allow_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 10753) +++ src/misc_cmd.cpp (Arbeitskopie) @@ -346,6 +346,8 @@ SET_EXPENSES_TYPE(EXPENSES_OTHER); + if (!_patches.allow_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;