From 2a96ca698380b003d1e68f82b1d3fdc4b4df0e44 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 27 Jun 2007 19:00:14 +0000 Subject: (svn r10362) -Codechange: make tunnel costs less exponential for (very) long tunnels. --- src/tunnelbridge_cmd.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index e4ed8bf5f..82514656b 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -499,6 +499,12 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, uint32 flags, uint32 p1, uint32 } end_tile = start_tile; + + /** Tile shift coeficient. Will decrease for very long tunnels to avoid exponential growth of price*/ + int tiles_coef = 3; + /** Number of tiles from start of tunnel */ + int tiles = 0; + for (;;) { end_tile += delta; end_tileh = GetTileSlope(end_tile, &end_z); @@ -509,8 +515,11 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, uint32 flags, uint32 p1, uint32 return_cmd_error(STR_5003_ANOTHER_TUNNEL_IN_THE_WAY); } + tiles++; + if (tiles == 25 || tiles == 50 || tiles == 100 || tiles == 200 || tiles == 400 || tiles == 800) tiles_coef++; + cost.AddCost(_price.build_tunnel); - cost.AddCost(cost.GetCost() >> 3); // add a multiplier for longer tunnels + cost.AddCost(cost.GetCost() >> tiles_coef); // add a multiplier for longer tunnels } /* Add the cost of the entrance */ -- cgit v1.2.3-70-g09d2