diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -263,22 +263,26 @@ CommandCost CmdBuildBridge(DoCommandFlag RailType railtype = INVALID_RAILTYPE; RoadType roadtype = INVALID_ROADTYPE; + ExpensesType expensestype = EXPENSES_CONSTRUCTION; if (!IsValidTile(tile_start)) return_cmd_error(STR_ERROR_BRIDGE_THROUGH_MAP_BORDER); /* type of bridge */ switch (transport_type) { case TRANSPORT_ROAD: + expensestype = EXPENSES_T_ROAD_CON; roadtype = (RoadType)road_rail_type; if (!ValParamRoadType(roadtype)) return CMD_ERROR; break; case TRANSPORT_RAIL: + expensestype = EXPENSES_T_TRAIN_CON; railtype = (RailType)road_rail_type; if (!ValParamRailtype(railtype)) return CMD_ERROR; break; case TRANSPORT_WATER: + expensestype = EXPENSES_T_SHIP_CON; break; default: @@ -336,7 +340,7 @@ CommandCost CmdBuildBridge(DoCommandFlag if (transport_type == TRANSPORT_WATER && (tileh_start == SLOPE_FLAT || tileh_end == SLOPE_FLAT)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); if (z_start != z_end) return_cmd_error(STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT); - CommandCost cost(EXPENSES_CONSTRUCTION); + CommandCost cost(expensestype); Owner owner; bool is_new_owner; RoadType road_rt = INVALID_ROADTYPE; @@ -414,6 +418,7 @@ CommandCost CmdBuildBridge(DoCommandFlag CommandCost ret = Command::Do(flags, tile_start); if (ret.Failed()) return ret; cost = ret; + cost.expense_type = expensestype; if (terraform_cost_north.Failed() || (terraform_cost_north.GetCost() != 0 && !allow_on_slopes)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); cost.AddCost(terraform_cost_north); @@ -627,14 +632,17 @@ CommandCost CmdBuildTunnel(DoCommandFlag RailType railtype = INVALID_RAILTYPE; RoadType roadtype = INVALID_ROADTYPE; + ExpensesType expensestype = EXPENSES_CONSTRUCTION; _build_tunnel_endtile = 0; switch (transport_type) { case TRANSPORT_RAIL: + expensestype = EXPENSES_T_TRAIN_CON; railtype = (RailType)road_rail_type; if (!ValParamRailtype(railtype)) return CMD_ERROR; break; case TRANSPORT_ROAD: + expensestype = EXPENSES_T_ROAD_CON; roadtype = (RoadType)road_rail_type; if (!ValParamRoadType(roadtype)) return CMD_ERROR; break; @@ -687,7 +695,7 @@ CommandCost CmdBuildTunnel(DoCommandFlag /* Number of tiles at which the cost increase coefficient per tile is halved */ int tiles_bump = 25; - CommandCost cost(EXPENSES_CONSTRUCTION); + CommandCost cost(expensestype); Slope end_tileh; for (;;) { end_tile += delta; @@ -913,8 +921,7 @@ static CommandCost DoClearTunnel(TileInd DoClearSquare(endtile); } } - - return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost); + return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost); } @@ -1013,7 +1020,7 @@ static CommandCost DoClearBridge(TileInd } } - return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost); + return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost); } /**