# HG changeset patch # User yexo # Date 2009-03-10 23:16:45 # Node ID 92ed0077d87f5d4ca59e9b451de4da6e766c7b96 # Parent c4de431f8676fba21818db944371959c6edac944 (svn r15667) -Fix (r15601)[FS#2718]: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies. diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -584,18 +584,28 @@ static inline bool CheckAllowRemoveTunne /* Floods can remove anything as well as the scenario editor */ if (_current_company == OWNER_WATER || _game_mode == GM_EDITOR) return true; - RoadTypes rts = GetRoadTypes(tile); - Owner road_owner = _current_company; - Owner tram_owner = _current_company; + switch (GetTunnelBridgeTransportType(tile)) { + case TRANSPORT_ROAD: { + RoadTypes rts = GetRoadTypes(tile); + Owner road_owner = _current_company; + Owner tram_owner = _current_company; + + if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); + if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); - if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); - if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); + /* We can remove unowned road and if the town allows it */ + if (road_owner == OWNER_NONE || (road_owner == OWNER_TOWN && (_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value))) road_owner = _current_company; + if (tram_owner == OWNER_NONE) tram_owner = _current_company; + + return CheckOwnership(road_owner) && CheckOwnership(tram_owner); + } - /* We can remove unowned road and if the town allows it */ - if (road_owner == OWNER_NONE || (road_owner == OWNER_TOWN && (_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value))) road_owner = _current_company; - if (tram_owner == OWNER_NONE) tram_owner = _current_company; + case TRANSPORT_RAIL: + case TRANSPORT_WATER: + return CheckOwnership(GetTileOwner(tile)); - return CheckOwnership(road_owner) && CheckOwnership(tram_owner); + default: NOT_REACHED(); + } } static CommandCost DoClearTunnel(TileIndex tile, DoCommandFlag flags)