changeset 7095:cfd4d752ab7f draft

(svn r10362) -Codechange: make tunnel costs less exponential for (very) long tunnels.
author rubidium <rubidium@openttd.org>
date Wed, 27 Jun 2007 19:00:14 +0000
parents 82d46eff7475
children c1b9f000066e
files src/tunnelbridge_cmd.cpp
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -499,6 +499,12 @@
 	}
 
 	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 @@
 			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 */