(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.

This commit is contained in:
rubidium 2010-02-27 16:27:28 +00:00
parent d9b2bf78c5
commit e338c26504
1 changed files with 10 additions and 0 deletions

View File

@ -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;
}