From f91cf9e519290e1053014aa1f850ad99416324b2 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 27 Feb 2010 16:27:28 +0000 Subject: [PATCH] (svn r19277) -Fix [FS#3646]: [NewGRF] Ensure prices can't be set to zero. Zero prices break a lot of the internal logic to determine whether something has been done. --- src/economy.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/economy.cpp b/src/economy.cpp index 48a6b63c8f..de563910ac 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -668,6 +668,16 @@ void RecomputePrices() price >>= -shift; } + /* Make sure the price does not get reduced to zero. + * Zero breaks quite a few commands that use a zero + * cost to see whether something got changed or not + * and based on that cause an error. When the price + * is zero that fails even when things are done. */ + if (price == 0) { + price = Clamp(_price_base_specs[i].start_price, -1, 1); + /* No base price should be zero, but be sure. */ + assert(price != 0); + } /* Store value */ _price[i] = price; }