Changeset - r11312:92ed0077d87f
[Not reviewed]
master
0 1 0
yexo - 15 years ago 2009-03-10 23:16:45
yexo@openttd.org
(svn r15667) -Fix (r15601)[FS#2718]: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies.
1 file changed with 19 insertions and 9 deletions:
0 comments (0 inline, 0 general)
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -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)
0 comments (0 inline, 0 general)