Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 27203) +++ src/lang/english.txt (working copy) @@ -1252,8 +1252,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-through road stops on town owned roads: {STRING2} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Allow construction of drive-through road stops on town-owned roads -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow drive-through road stops on roads owned by competitors: {STRING2} -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow certain constructions on roads/canals owned by competitors: {STRING2} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies, and construction of locks on canals owned by other companies. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Changing this setting is not possible when there are vehicles STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastructure maintenance: {STRING2} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :When enabled, infrastructure causes maintenance costs. The cost grows over-proportional with the network size, thus affecting bigger companies more than smaller ones Index: src/water_cmd.cpp =================================================================== --- src/water_cmd.cpp (revision 27203) +++ src/water_cmd.cpp (working copy) @@ -265,6 +265,16 @@ /* lower tile */ WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL; + if (!_settings_game.construction.road_stop_on_competitor_road && HasTileWaterClass(tile - delta) && GetWaterClass(tile - delta) == WATER_CLASS_CANAL) { // Skip if it's not canal + if (!IsTileType(tile - delta, MP_INDUSTRY)) { + Owner o_lower = GetTileOwner(tile - delta); + if (o_lower != OWNER_NONE) { // Skip if canal owner is none + ret = CheckTileOwnership(tile - delta); + if (ret.Failed()) return ret; + } + } + } + if (!IsWaterTile(tile - delta)) { ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; @@ -278,6 +288,16 @@ /* upper tile */ WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL; + if (!_settings_game.construction.road_stop_on_competitor_road && HasTileWaterClass(tile + delta) && GetWaterClass(tile + delta) == WATER_CLASS_CANAL) { // Skip if it's not canal + if (!IsTileType(tile + delta, MP_INDUSTRY)) { + Owner o_upper = GetTileOwner(tile + delta); + if (o_upper != OWNER_NONE) { // Skip if canal owner is none + ret = CheckTileOwnership(tile + delta); + if (ret.Failed()) return ret; + } + } + } + if (!IsWaterTile(tile + delta)) { ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret;