Mercurial > hg > openttd
changeset 4273:bf5af70f273b draft
(svn r5901) -Fix [FS#253]: Differing price calculation for tunnels depending on starting point
author | Darkvater <Darkvater@openttd.org> |
---|---|
date | Tue, 15 Aug 2006 00:14:57 +0000 |
parents | 9ac310afc549 |
children | 2073fdfc4d26 |
files | tunnelbridge_cmd.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -465,8 +465,12 @@ 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 @@ } 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;