From 830231e2bda3a2a68d3e8cc466059d8b5fcadb63 Mon Sep 17 00:00:00 2001 From: frosch Date: Tue, 24 Nov 2009 22:15:42 +0000 Subject: (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. --- src/newgrf.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/newgrf.cpp') diff --git a/src/newgrf.cpp b/src/newgrf.cpp index f481235f4..54c26de72 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -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(); + 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++) { PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers; for (Price p = PR_BEGIN; p < PR_END; p++) { -- cgit v1.2.3-54-g00ecf