summaryrefslogtreecommitdiff
path: root/src/tunnelbridge_cmd.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-05-22 14:12:48 +0000
committerrubidium <rubidium@openttd.org>2010-05-22 14:12:48 +0000
commit6328429aac8dede8e42226fb5938c5011dc1f052 (patch)
treeface314ccb3079a152bdb96e0b23843778a87396 /src/tunnelbridge_cmd.cpp
parent03cacb797aa50a952cab1f38210b267d0db935db (diff)
downloadopenttd-6328429aac8dede8e42226fb5938c5011dc1f052.tar.xz
(svn r19881) -Fix [FS#3827]: pay for the rail/road when constructing tunnels and bridges
Diffstat (limited to 'src/tunnelbridge_cmd.cpp')
-rw-r--r--src/tunnelbridge_cmd.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
index a08410eb5..e706b27af 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -468,6 +468,12 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
if (!(flags & DC_QUERY_COST) || (c != NULL && c->is_ai)) {
bridge_len += 2; // begin and end tiles/ramps
+ switch (transport_type) {
+ case TRANSPORT_ROAD: cost.AddCost(bridge_len * _price[PR_BUILD_ROAD] * 2); break;
+ case TRANSPORT_RAIL: cost.AddCost(bridge_len * RailBuildCost(railtype)); break;
+ default: break;
+ }
+
if (c != NULL) bridge_len = CalcBridgeLenCostFactor(bridge_len);
if (transport_type != TRANSPORT_WATER) {
@@ -596,6 +602,13 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
cost.AddCost(_price[PR_BUILD_TUNNEL]);
cost.AddCost(ret);
+ /* Pay for the rail/road in the tunnel including entrances */
+ switch (transport_type) {
+ case TRANSPORT_ROAD: cost.AddCost((tiles + 2) * _price[PR_BUILD_ROAD] * 2); break;
+ case TRANSPORT_RAIL: cost.AddCost((tiles + 2) * RailBuildCost(railtype)); break;
+ default: break;
+ }
+
if (flags & DC_EXEC) {
if (transport_type == TRANSPORT_RAIL) {
MakeRailTunnel(start_tile, _current_company, direction, railtype);