summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/economy.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index 48a6b63c8..de563910a 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;
}