mirror of https://github.com/OpenTTD/OpenTTD
(svn r18283) -Feature: [NewGRF] Add new price bases for removing industries, building/removing unmovables (new objects), building/removing rail-waypoints/buoys, interacting with town-authority, building foundations, funding primary industries (when not prospecting) and towns.
If a GRF does not set price multipliers for these new prices, but for the previously used ones, the old modifiers will be propagated to the new bases.release/1.0
parent
8da21d58a9
commit
830231e2bd
|
@ -114,6 +114,17 @@ enum Price {
|
||||||
PR_RUNNING_ROADVEH,
|
PR_RUNNING_ROADVEH,
|
||||||
PR_RUNNING_SHIP,
|
PR_RUNNING_SHIP,
|
||||||
PR_BUILD_INDUSTRY,
|
PR_BUILD_INDUSTRY,
|
||||||
|
PR_CLEAR_INDUSTRY,
|
||||||
|
PR_BUILD_UNMOVABLE,
|
||||||
|
PR_CLEAR_UNMOVABLE,
|
||||||
|
PR_BUILD_WAYPOINT_RAIL,
|
||||||
|
PR_CLEAR_WAYPOINT_RAIL,
|
||||||
|
PR_BUILD_WAYPOINT_BUOY,
|
||||||
|
PR_CLEAR_WAYPOINT_BUOY,
|
||||||
|
PR_TOWN_ACTION,
|
||||||
|
PR_BUILD_FOUNDATION,
|
||||||
|
PR_BUILD_INDUSTRY_RAW,
|
||||||
|
PR_BUILD_TOWN,
|
||||||
|
|
||||||
PR_END,
|
PR_END,
|
||||||
INVALID_PRICE = 0xFF
|
INVALID_PRICE = 0xFF
|
||||||
|
@ -157,6 +168,7 @@ struct PriceBaseSpec {
|
||||||
Money start_price; ///< Default value at game start, before adding multipliers.
|
Money start_price; ///< Default value at game start, before adding multipliers.
|
||||||
PriceCategory category; ///< Price is affected by certain difficulty settings.
|
PriceCategory category; ///< Price is affected by certain difficulty settings.
|
||||||
uint grf_feature; ///< GRF Feature, that decides whether price multipliers apply locally or globally. GSF_END if none.
|
uint grf_feature; ///< GRF Feature, that decides whether price multipliers apply locally or globally. GSF_END if none.
|
||||||
|
Price fallback_price; ///< Fallback price multiplier for new prices but old grfs.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The "steps" in loan size, in British Pounds! */
|
/** The "steps" in loan size, in British Pounds! */
|
||||||
|
|
|
@ -2425,14 +2425,14 @@ bool IndustrySpec::IsRawIndustry() const
|
||||||
|
|
||||||
Money IndustrySpec::GetConstructionCost() const
|
Money IndustrySpec::GetConstructionCost() const
|
||||||
{
|
{
|
||||||
/* Building raw industries like secondary is more expensive */
|
/* Building raw industries like secondary uses different price base */
|
||||||
return (_price[PR_BUILD_INDUSTRY] * this->cost_multiplier) >>
|
return (_price[(_settings_game.construction.raw_industry_construction == 1 && this->IsRawIndustry()) ?
|
||||||
((_settings_game.construction.raw_industry_construction == 1 && this->IsRawIndustry()) ? 5 : 8);
|
PR_BUILD_INDUSTRY_RAW : PR_BUILD_INDUSTRY] * this->cost_multiplier) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
Money IndustrySpec::GetRemovalCost() const
|
Money IndustrySpec::GetRemovalCost() const
|
||||||
{
|
{
|
||||||
return (_price[PR_CLEAR_HOUSE] * this->removal_cost_multiplier) >> 8;
|
return (_price[PR_CLEAR_INDUSTRY] * this->removal_cost_multiplier) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CommandCost TerraformTile_Industry(TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new)
|
static CommandCost TerraformTile_Industry(TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new)
|
||||||
|
@ -2454,10 +2454,10 @@ static CommandCost TerraformTile_Industry(TileIndex tile, DoCommandFlag flags, u
|
||||||
if (HasBit(itspec->callback_mask, CBM_INDT_AUTOSLOPE)) {
|
if (HasBit(itspec->callback_mask, CBM_INDT_AUTOSLOPE)) {
|
||||||
/* If the callback fails, allow autoslope. */
|
/* If the callback fails, allow autoslope. */
|
||||||
uint16 res = GetIndustryTileCallback(CBID_INDUSTRY_AUTOSLOPE, 0, 0, gfx, Industry::GetByTile(tile), tile);
|
uint16 res = GetIndustryTileCallback(CBID_INDUSTRY_AUTOSLOPE, 0, 0, gfx, Industry::GetByTile(tile), tile);
|
||||||
if ((res == 0) || (res == CALLBACK_FAILED)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if ((res == 0) || (res == CALLBACK_FAILED)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
} else {
|
} else {
|
||||||
/* allow autoslope */
|
/* allow autoslope */
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6217,8 +6217,21 @@ static void FinalisePriceBaseMultipliers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decide local/global scope of price base multipliers */
|
/* Apply fallback prices */
|
||||||
const GRFFile * const *end = _grf_files.End();
|
const GRFFile * const *end = _grf_files.End();
|
||||||
|
for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
|
||||||
|
PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers;
|
||||||
|
for (Price p = PR_BEGIN; p < PR_END; p++) {
|
||||||
|
Price fallback_price = _price_base_specs[p].fallback_price;
|
||||||
|
if (fallback_price != INVALID_PRICE && (byte)price_base_multipliers[p] == 0x80) {
|
||||||
|
/* No price multiplier has been set.
|
||||||
|
* So copy the multiplier from the fallback price, maybe a multiplier was set there. */
|
||||||
|
price_base_multipliers[p] = price_base_multipliers[fallback_price];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Decide local/global scope of price base multipliers */
|
||||||
for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
|
for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
|
||||||
PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers;
|
PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers;
|
||||||
for (Price p = PR_BEGIN; p < PR_END; p++) {
|
for (Price p = PR_BEGIN; p < PR_END; p++) {
|
||||||
|
|
|
@ -297,7 +297,7 @@ static CommandCost CheckRailSlope(Slope tileh, TrackBits rail_bits, TrackBits ex
|
||||||
}
|
}
|
||||||
|
|
||||||
Foundation f_old = GetRailFoundation(tileh, existing);
|
Foundation f_old = GetRailFoundation(tileh, existing);
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, f_new != f_old ? _price[PR_TERRAFORM] : (Money)0);
|
return CommandCost(EXPENSES_CONSTRUCTION, f_new != f_old ? _price[PR_BUILD_FOUNDATION] : (Money)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Validate functions for rail building */
|
/* Validate functions for rail building */
|
||||||
|
@ -2490,7 +2490,7 @@ static CommandCost TestAutoslopeOnRailTile(TileIndex tile, uint flags, uint z_ol
|
||||||
case TRACK_BIT_UPPER: track_corner = CORNER_N; break;
|
case TRACK_BIT_UPPER: track_corner = CORNER_N; break;
|
||||||
|
|
||||||
/* Surface slope must not be changed */
|
/* Surface slope must not be changed */
|
||||||
default: return (((z_old != z_new) || (tileh_old != tileh_new)) ? CMD_ERROR : CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]));
|
default: return (((z_old != z_new) || (tileh_old != tileh_new)) ? CMD_ERROR : CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The height of the track_corner must not be changed. The rest ensures GetRailFoundation() already. */
|
/* The height of the track_corner must not be changed. The rest ensures GetRailFoundation() already. */
|
||||||
|
@ -2498,7 +2498,7 @@ static CommandCost TestAutoslopeOnRailTile(TileIndex tile, uint flags, uint z_ol
|
||||||
z_new += GetSlopeZInCorner(RemoveHalftileSlope(tileh_new), track_corner);
|
z_new += GetSlopeZInCorner(RemoveHalftileSlope(tileh_new), track_corner);
|
||||||
if (z_old != z_new) return CMD_ERROR;
|
if (z_old != z_new) return CMD_ERROR;
|
||||||
|
|
||||||
CommandCost cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
CommandCost cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
/* Make the ground dirty, if surface slope has changed */
|
/* Make the ground dirty, if surface slope has changed */
|
||||||
if (tileh_old != tileh_new) {
|
if (tileh_old != tileh_new) {
|
||||||
/* If there is flat water on the lower halftile add the cost for clearing it */
|
/* If there is flat water on the lower halftile add the cost for clearing it */
|
||||||
|
@ -2550,7 +2550,7 @@ static CommandCost TerraformTile_Track(TileIndex tile, DoCommandFlag flags, uint
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, was_water ? _price[PR_CLEAR_WATER] : (Money)0);
|
return CommandCost(EXPENSES_CONSTRUCTION, was_water ? _price[PR_CLEAR_WATER] : (Money)0);
|
||||||
} else if (_settings_game.construction.build_on_slopes && AutoslopeEnabled() &&
|
} else if (_settings_game.construction.build_on_slopes && AutoslopeEnabled() &&
|
||||||
AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRailDepotDirection(tile))) {
|
AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRailDepotDirection(tile))) {
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,7 +313,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec
|
||||||
|
|
||||||
/* If we change the foundation we have to pay for it. */
|
/* If we change the foundation we have to pay for it. */
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, CountBits(pieces) * _price[PR_CLEAR_ROAD] +
|
return CommandCost(EXPENSES_CONSTRUCTION, CountBits(pieces) * _price[PR_CLEAR_ROAD] +
|
||||||
((GetRoadFoundation(tileh, present) != f) ? _price[PR_TERRAFORM] : (Money)0));
|
((GetRoadFoundation(tileh, present) != f) ? _price[PR_BUILD_FOUNDATION] : (Money)0));
|
||||||
}
|
}
|
||||||
|
|
||||||
case ROAD_TILE_CROSSING: {
|
case ROAD_TILE_CROSSING: {
|
||||||
|
@ -401,7 +401,7 @@ static CommandCost CheckRoadSlope(Slope tileh, RoadBits *pieces, RoadBits existi
|
||||||
existing |= other;
|
existing |= other;
|
||||||
|
|
||||||
if ((existing == ROAD_NONE || existing == *pieces) && IsStraightRoad(*pieces)) {
|
if ((existing == ROAD_NONE || existing == *pieces) && IsStraightRoad(*pieces)) {
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
return CMD_ERROR;
|
return CMD_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -433,12 +433,12 @@ static CommandCost CheckRoadSlope(Slope tileh, RoadBits *pieces, RoadBits existi
|
||||||
if (_settings_game.construction.build_on_slopes) {
|
if (_settings_game.construction.build_on_slopes) {
|
||||||
|
|
||||||
/* If we add foundation we've got to pay for it */
|
/* If we add foundation we've got to pay for it */
|
||||||
if ((other | existing) == ROAD_NONE) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if ((other | existing) == ROAD_NONE) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
|
|
||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (CountBits(existing) == 1) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (CountBits(existing) == 1) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1608,11 +1608,11 @@ static CommandCost TerraformTile_Road(TileIndex tile, DoCommandFlag flags, uint
|
||||||
if (_settings_game.construction.build_on_slopes && AutoslopeEnabled()) {
|
if (_settings_game.construction.build_on_slopes && AutoslopeEnabled()) {
|
||||||
switch (GetRoadTileType(tile)) {
|
switch (GetRoadTileType(tile)) {
|
||||||
case ROAD_TILE_CROSSING:
|
case ROAD_TILE_CROSSING:
|
||||||
if (!IsSteepSlope(tileh_new) && (GetTileMaxZ(tile) == z_new + GetSlopeMaxZ(tileh_new)) && HasBit(VALID_LEVEL_CROSSING_SLOPES, tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (!IsSteepSlope(tileh_new) && (GetTileMaxZ(tile) == z_new + GetSlopeMaxZ(tileh_new)) && HasBit(VALID_LEVEL_CROSSING_SLOPES, tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROAD_TILE_DEPOT:
|
case ROAD_TILE_DEPOT:
|
||||||
if (AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRoadDepotDirection(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRoadDepotDirection(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROAD_TILE_NORMAL: {
|
case ROAD_TILE_NORMAL: {
|
||||||
|
@ -1630,7 +1630,7 @@ static CommandCost TerraformTile_Road(TileIndex tile, DoCommandFlag flags, uint
|
||||||
z_new += ApplyFoundationToSlope(GetRoadFoundation(tileh_new, bits), &tileh_new);
|
z_new += ApplyFoundationToSlope(GetRoadFoundation(tileh_new, bits), &tileh_new);
|
||||||
|
|
||||||
/* The surface slope must not be changed */
|
/* The surface slope must not be changed */
|
||||||
if ((z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if ((z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -699,7 +699,7 @@ CommandCost CheckFlatLandBelow(TileIndex tile, uint w, uint h, DoCommandFlag fla
|
||||||
(HasBit(invalid_dirs, DIAGDIR_NW) && !(tileh & SLOPE_NW))) {
|
(HasBit(invalid_dirs, DIAGDIR_NW) && !(tileh & SLOPE_NW))) {
|
||||||
return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED);
|
return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED);
|
||||||
}
|
}
|
||||||
cost.AddCost(_price[PR_TERRAFORM]);
|
cost.AddCost(_price[PR_BUILD_FOUNDATION]);
|
||||||
flat_z += TILE_HEIGHT;
|
flat_z += TILE_HEIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1375,7 +1375,7 @@ CommandCost CmdRemoveFromRailWaypoint(TileIndex start, DoCommandFlag flags, uint
|
||||||
TileArea ta(start, end);
|
TileArea ta(start, end);
|
||||||
SmallVector<Waypoint *, 4> affected_stations;
|
SmallVector<Waypoint *, 4> affected_stations;
|
||||||
|
|
||||||
return RemoveFromRailBaseStation(ta, affected_stations, flags, _price[PR_CLEAR_DEPOT_TRAIN], HasBit(p2, 0));
|
return RemoveFromRailBaseStation(ta, affected_stations, flags, _price[PR_CLEAR_WAYPOINT_RAIL], HasBit(p2, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3257,11 +3257,11 @@ static CommandCost TerraformTile_Station(TileIndex tile, DoCommandFlag flags, ui
|
||||||
DiagDirection direction = AxisToDiagDir(GetRailStationAxis(tile));
|
DiagDirection direction = AxisToDiagDir(GetRailStationAxis(tile));
|
||||||
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, direction)) break;
|
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, direction)) break;
|
||||||
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, ReverseDiagDir(direction))) break;
|
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, ReverseDiagDir(direction))) break;
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
case STATION_AIRPORT:
|
case STATION_AIRPORT:
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
|
|
||||||
case STATION_TRUCK:
|
case STATION_TRUCK:
|
||||||
case STATION_BUS: {
|
case STATION_BUS: {
|
||||||
|
@ -3270,7 +3270,7 @@ static CommandCost TerraformTile_Station(TileIndex tile, DoCommandFlag flags, ui
|
||||||
if (IsDriveThroughStopTile(tile)) {
|
if (IsDriveThroughStopTile(tile)) {
|
||||||
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, ReverseDiagDir(direction))) break;
|
if (!AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, ReverseDiagDir(direction))) break;
|
||||||
}
|
}
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
|
|
|
@ -10,54 +10,65 @@
|
||||||
/** @file pricebase.h Price Bases */
|
/** @file pricebase.h Price Bases */
|
||||||
|
|
||||||
extern const PriceBaseSpec _price_base_specs[] = {
|
extern const PriceBaseSpec _price_base_specs[] = {
|
||||||
{ 100, PCAT_NONE, GSF_END }, ///< PR_STATION_VALUE
|
{ 100, PCAT_NONE, GSF_END, INVALID_PRICE }, ///< PR_STATION_VALUE
|
||||||
{ 100, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_RAIL
|
{ 100, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_RAIL
|
||||||
{ 95, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_ROAD
|
{ 95, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_ROAD
|
||||||
{ 65, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_SIGNALS
|
{ 65, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_SIGNALS
|
||||||
{ 275, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_BRIDGE
|
{ 275, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_BRIDGE
|
||||||
{ 600, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_DEPOT_TRAIN
|
{ 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_TRAIN
|
||||||
{ 500, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_DEPOT_ROAD
|
{ 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_ROAD
|
||||||
{ 700, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_DEPOT_SHIP
|
{ 700, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_SHIP
|
||||||
{ 450, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_TUNNEL
|
{ 450, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TUNNEL
|
||||||
{ 200, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_RAIL
|
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL
|
||||||
{ 180, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_RAIL_LENGTH
|
{ 180, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL_LENGTH
|
||||||
{ 600, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_AIRPORT
|
{ 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_AIRPORT
|
||||||
{ 200, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_BUS
|
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_BUS
|
||||||
{ 200, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_TRUCK
|
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_TRUCK
|
||||||
{ 350, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_STATION_DOCK
|
{ 350, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_DOCK
|
||||||
{ 400000, PCAT_CONSTRUCTION, GSF_TRAIN }, ///< PR_BUILD_VEHICLE_TRAIN
|
{ 400000, PCAT_CONSTRUCTION, GSF_TRAIN, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_TRAIN
|
||||||
{ 2000, PCAT_CONSTRUCTION, GSF_TRAIN }, ///< PR_BUILD_VEHICLE_WAGON
|
{ 2000, PCAT_CONSTRUCTION, GSF_TRAIN, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_WAGON
|
||||||
{ 700000, PCAT_CONSTRUCTION, GSF_AIRCRAFT }, ///< PR_BUILD_VEHICLE_AIRCRAFT
|
{ 700000, PCAT_CONSTRUCTION, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_AIRCRAFT
|
||||||
{ 14000, PCAT_CONSTRUCTION, GSF_ROAD }, ///< PR_BUILD_VEHICLE_ROAD
|
{ 14000, PCAT_CONSTRUCTION, GSF_ROAD, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_ROAD
|
||||||
{ 65000, PCAT_CONSTRUCTION, GSF_SHIP }, ///< PR_BUILD_VEHICLE_SHIP
|
{ 65000, PCAT_CONSTRUCTION, GSF_SHIP, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_SHIP
|
||||||
{ 20, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_TREES
|
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TREES
|
||||||
{ 250, PCAT_CONSTRUCTION, GSF_END }, ///< PR_TERRAFORM
|
{ 250, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_TERRAFORM
|
||||||
{ 20, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_GRASS
|
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_GRASS
|
||||||
{ 40, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_ROUGH
|
{ 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROUGH
|
||||||
{ 200, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_ROCKS
|
{ 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROCKS
|
||||||
{ 500, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_FILEDS
|
{ 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_FILEDS
|
||||||
{ 20, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_TREES
|
{ 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TREES
|
||||||
{ -70, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_RAIL
|
{ -70, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_RAIL
|
||||||
{ 10, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_SIGNALS
|
{ 10, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_SIGNALS
|
||||||
{ 50, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_BRIDGE
|
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_BRIDGE
|
||||||
{ 80, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_DEPOT_TRAIN
|
{ 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_TRAIN
|
||||||
{ 80, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_DEPOT_ROAD
|
{ 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_ROAD
|
||||||
{ 90, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_DEPOT_SHIP
|
{ 90, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_SHIP
|
||||||
{ 30, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_TUNNEL
|
{ 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TUNNEL
|
||||||
{ 10000, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_WATER
|
{ 10000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_WATER
|
||||||
{ 50, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_STATION_RAIL
|
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_RAIL
|
||||||
{ 30, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_STATION_AIRPORT
|
{ 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_AIRPORT
|
||||||
{ 50, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_STATION_BUS
|
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_BUS
|
||||||
{ 50, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_STATION_TRUCK
|
{ 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_TRUCK
|
||||||
{ 55, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_STATION_DOCK
|
{ 55, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_DOCK
|
||||||
{ 1600, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_HOUSE
|
{ 1600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_HOUSE
|
||||||
{ 40, PCAT_CONSTRUCTION, GSF_END }, ///< PR_CLEAR_ROAD
|
{ 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROAD
|
||||||
{ 5600, PCAT_RUNNING, GSF_TRAIN }, ///< PR_RUNNING_TRAIN_STEAM
|
{ 5600, PCAT_RUNNING, GSF_TRAIN, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_STEAM
|
||||||
{ 5200, PCAT_RUNNING, GSF_TRAIN }, ///< PR_RUNNING_TRAIN_DIESEL
|
{ 5200, PCAT_RUNNING, GSF_TRAIN, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_DIESEL
|
||||||
{ 4800, PCAT_RUNNING, GSF_TRAIN }, ///< PR_RUNNING_TRAIN_ELECTRIC
|
{ 4800, PCAT_RUNNING, GSF_TRAIN, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_ELECTRIC
|
||||||
{ 9600, PCAT_RUNNING, GSF_AIRCRAFT }, ///< PR_RUNNING_AIRCRAFT
|
{ 9600, PCAT_RUNNING, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_RUNNING_AIRCRAFT
|
||||||
{ 1600, PCAT_RUNNING, GSF_ROAD }, ///< PR_RUNNING_ROADVEH
|
{ 1600, PCAT_RUNNING, GSF_ROAD, INVALID_PRICE }, ///< PR_RUNNING_ROADVEH
|
||||||
{ 5600, PCAT_RUNNING, GSF_SHIP }, ///< PR_RUNNING_SHIP
|
{ 5600, PCAT_RUNNING, GSF_SHIP, INVALID_PRICE }, ///< PR_RUNNING_SHIP
|
||||||
{1000000, PCAT_CONSTRUCTION, GSF_END }, ///< PR_BUILD_INDUSTRY
|
{1000000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_INDUSTRY
|
||||||
|
{ 1600, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_HOUSE }, ///< PR_CLEAR_INDUSTRY
|
||||||
|
{ 40, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_ROUGH }, ///< PR_BUILD_UNMOVABLE
|
||||||
|
{ 40, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_ROUGH }, ///< PR_CLEAR_UNMOVABLE
|
||||||
|
{ 600, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_DEPOT_TRAIN }, ///< PR_BUILD_WAYPOINT_RAIL
|
||||||
|
{ 80, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_DEPOT_TRAIN }, ///< PR_CLEAR_WAYPOINT_RAIL
|
||||||
|
{ 350, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_STATION_DOCK }, ///< PR_BUILD_WAYPOINT_BUOY
|
||||||
|
{ 50, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_STATION_TRUCK}, ///< PR_CLEAR_WAYPOINT_BUOY
|
||||||
|
{1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_TOWN_ACTION
|
||||||
|
{ 250, PCAT_CONSTRUCTION, GSF_END, PR_TERRAFORM }, ///< PR_BUILD_FOUNDATION
|
||||||
|
{8000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_INDUSTRY_RAW
|
||||||
|
{1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_TOWN
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_price_base_specs) == PR_END);
|
assert_compile(lengthof(_price_base_specs) == PR_END);
|
||||||
|
|
|
@ -1570,7 +1570,7 @@ CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
|
||||||
/* multidimensional arrays have to have defined length of non-first dimension */
|
/* multidimensional arrays have to have defined length of non-first dimension */
|
||||||
assert_compile(lengthof(price_mult[0]) == 4);
|
assert_compile(lengthof(price_mult[0]) == 4);
|
||||||
|
|
||||||
CommandCost cost(EXPENSES_OTHER, _price[PR_BUILD_INDUSTRY]);
|
CommandCost cost(EXPENSES_OTHER, _price[PR_BUILD_TOWN]);
|
||||||
byte mult = price_mult[city][size];
|
byte mult = price_mult[city][size];
|
||||||
|
|
||||||
cost.MultiplyCost(mult);
|
cost.MultiplyCost(mult);
|
||||||
|
@ -2511,7 +2511,6 @@ uint GetMaskOfTownActions(int *nump, CompanyID cid, const Town *t)
|
||||||
|
|
||||||
/* Things worth more than this are not shown */
|
/* Things worth more than this are not shown */
|
||||||
Money avail = Company::Get(cid)->money + _price[PR_STATION_VALUE] * 200;
|
Money avail = Company::Get(cid)->money + _price[PR_STATION_VALUE] * 200;
|
||||||
Money ref = _price[PR_BUILD_INDUSTRY] >> 8;
|
|
||||||
|
|
||||||
/* Check the action bits for validity and
|
/* Check the action bits for validity and
|
||||||
* if they are valid add them */
|
* if they are valid add them */
|
||||||
|
@ -2530,7 +2529,7 @@ uint GetMaskOfTownActions(int *nump, CompanyID cid, const Town *t)
|
||||||
if (cur == TACT_BUILD_STATUE && HasBit(t->statues, cid))
|
if (cur == TACT_BUILD_STATUE && HasBit(t->statues, cid))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (avail >= _town_action_costs[i] * ref) {
|
if (avail >= _town_action_costs[i] * _price[PR_TOWN_ACTION] >> 8) {
|
||||||
buttons |= cur;
|
buttons |= cur;
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
|
@ -2558,7 +2557,7 @@ CommandCost CmdDoTownAction(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
||||||
|
|
||||||
if (!HasBit(GetMaskOfTownActions(NULL, _current_company, t), p2)) return CMD_ERROR;
|
if (!HasBit(GetMaskOfTownActions(NULL, _current_company, t), p2)) return CMD_ERROR;
|
||||||
|
|
||||||
CommandCost cost(EXPENSES_OTHER, (_price[PR_BUILD_INDUSTRY] >> 8) * _town_action_costs[p2]);
|
CommandCost cost(EXPENSES_OTHER, _price[PR_TOWN_ACTION] * _town_action_costs[p2] >> 8);
|
||||||
|
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
_town_action_proc[p2](t);
|
_town_action_proc[p2](t);
|
||||||
|
@ -2894,7 +2893,7 @@ static CommandCost TerraformTile_Town(TileIndex tile, DoCommandFlag flags, uint
|
||||||
if ((res != 0) && (res != CALLBACK_FAILED)) allow_terraform = false;
|
if ((res != 0) && (res != CALLBACK_FAILED)) allow_terraform = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allow_terraform) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (allow_terraform) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,7 @@ public:
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case TWA_ACTION_INFO:
|
case TWA_ACTION_INFO:
|
||||||
if (this->sel_index != -1) {
|
if (this->sel_index != -1) {
|
||||||
SetDParam(1, (_price[PR_BUILD_INDUSTRY] >> 8) * _town_action_costs[this->sel_index]);
|
SetDParam(1, _price[PR_TOWN_ACTION] * _town_action_costs[this->sel_index] >> 8);
|
||||||
SetDParam(0, STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + this->sel_index);
|
SetDParam(0, STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + this->sel_index);
|
||||||
DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM,
|
DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM,
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + this->sel_index);
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + this->sel_index);
|
||||||
|
@ -223,7 +223,7 @@ public:
|
||||||
size->height -= WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
size->height -= WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||||
Dimension d = {0, 0};
|
Dimension d = {0, 0};
|
||||||
for (int i = 0; i < TACT_COUNT; i++) {
|
for (int i = 0; i < TACT_COUNT; i++) {
|
||||||
SetDParam(1, (_price[PR_BUILD_INDUSTRY] >> 8) * _town_action_costs[i]);
|
SetDParam(1, _price[PR_TOWN_ACTION] * _town_action_costs[i] >> 8);
|
||||||
SetDParam(0, STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + i);
|
SetDParam(0, STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + i);
|
||||||
d = maxdim(d, GetStringMultiLineBoundingBox(STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + i, *size));
|
d = maxdim(d, GetStringMultiLineBoundingBox(STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + i, *size));
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,7 +133,7 @@ static CommandCost CheckBridgeSlopeNorth(Axis axis, Slope *tileh, uint *z)
|
||||||
|
|
||||||
if (f == FOUNDATION_NONE) return CommandCost();
|
if (f == FOUNDATION_NONE) return CommandCost();
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -154,7 +154,7 @@ static CommandCost CheckBridgeSlopeSouth(Axis axis, Slope *tileh, uint *z)
|
||||||
|
|
||||||
if (f == FOUNDATION_NONE) return CommandCost();
|
if (f == FOUNDATION_NONE) return CommandCost();
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags)
|
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags)
|
||||||
|
@ -1506,7 +1506,7 @@ static CommandCost TerraformTile_TunnelBridge(TileIndex tile, DoCommandFlag flag
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Surface slope is valid and remains unchanged? */
|
/* Surface slope is valid and remains unchanged? */
|
||||||
if (!CmdFailed(res) && (z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (!CmdFailed(res) && (z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
|
|
|
@ -23,8 +23,8 @@ struct UnmovableSpec {
|
||||||
uint8 buy_cost_multiplier;
|
uint8 buy_cost_multiplier;
|
||||||
uint8 sell_cost_multiplier;
|
uint8 sell_cost_multiplier;
|
||||||
|
|
||||||
Money GetRemovalCost() const { return (_price[PR_CLEAR_ROUGH] * this->sell_cost_multiplier); }
|
Money GetRemovalCost() const { return (_price[PR_CLEAR_UNMOVABLE] * this->sell_cost_multiplier); }
|
||||||
Money GetBuildingCost() const { return (_price[PR_CLEAR_ROUGH] * this->buy_cost_multiplier); }
|
Money GetBuildingCost() const { return (_price[PR_BUILD_UNMOVABLE] * this->buy_cost_multiplier); }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -502,7 +502,7 @@ static CommandCost TerraformTile_Unmovable(TileIndex tile, DoCommandFlag flags,
|
||||||
if (IsOwnedLand(tile) && CheckTileOwnership(tile)) return CommandCost();
|
if (IsOwnedLand(tile) && CheckTileOwnership(tile)) return CommandCost();
|
||||||
|
|
||||||
if (AutoslopeEnabled() && (IsStatue(tile) || IsCompanyHQ(tile))) {
|
if (AutoslopeEnabled() && (IsStatue(tile) || IsCompanyHQ(tile))) {
|
||||||
if (!IsSteepSlope(tileh_new) && (z_new + GetSlopeMaxZ(tileh_new) == GetTileMaxZ(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_TERRAFORM]);
|
if (!IsSteepSlope(tileh_new) && (z_new + GetSlopeMaxZ(tileh_new) == GetTileMaxZ(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
|
|
|
@ -319,7 +319,7 @@ CommandCost CmdBuildRailWaypoint(TileIndex start_tile, DoCommandFlag flags, uint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, count * _price[PR_BUILD_DEPOT_TRAIN]);
|
return CommandCost(EXPENSES_CONSTRUCTION, count * _price[PR_BUILD_WAYPOINT_RAIL]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Build a buoy.
|
/** Build a buoy.
|
||||||
|
@ -366,7 +366,7 @@ CommandCost CmdBuildBuoy(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
|
||||||
InvalidateWindowData(WC_WAYPOINT_VIEW, wp->index);
|
InvalidateWindowData(WC_WAYPOINT_VIEW, wp->index);
|
||||||
}
|
}
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_STATION_DOCK]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_WAYPOINT_BUOY]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -404,7 +404,7 @@ CommandCost RemoveBuoy(TileIndex tile, DoCommandFlag flags)
|
||||||
wp->delete_ctr = 0;
|
wp->delete_ctr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_STATION_TRUCK]);
|
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_WAYPOINT_BUOY]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue