Changeset - r4273:3f53ee93856b
[Not reviewed]
master
0 1 0
Darkvater - 18 years ago 2006-08-15 00:14:57
darkvater@openttd.org
(svn r5901) -Fix [FS#253]: Differing price calculation for tunnels depending on starting point
1 file changed with 9 insertions and 2 deletions:
0 comments (0 inline, 0 general)
tunnelbridge_cmd.c
Show inline comments
 
@@ -465,8 +465,12 @@ int32 CmdBuildTunnel(TileIndex start_til
 

	
 
	ret = DoCommand(start_tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 
	if (CmdFailed(ret)) return ret;
 
	cost = _price.build_tunnel + ret;
 

	
 
	/* XXX - do NOT change 'ret' in the loop, as it is used as the price
 
	 * for the clearing of the entrance of the tunnel. Assigning it to
 
	 * cost before the loop will yield different costs depending on start-
 
	 * position, because of increased-cost-by-length: 'cost += cost >> 3' */
 
	cost = 0;
 
	delta = TileOffsByDir(direction);
 
	end_tile = start_tile;
 
	for (;;) {
 
@@ -480,10 +484,13 @@ int32 CmdBuildTunnel(TileIndex start_til
 
		}
 

	
 
		cost += _price.build_tunnel;
 
		cost += cost >> 3;
 
		cost += cost >> 3; // add a multiplier for longer tunnels
 
		if (cost >= 400000000) cost = 400000000;
 
	}
 

	
 
	/* Add the cost of the entrance */
 
	cost += _price.build_tunnel + ret;
 

	
 
	// if the command fails from here on we want the end tile to be highlighted
 
	_build_tunnel_endtile = end_tile;
 

	
0 comments (0 inline, 0 general)