に低い場合などに提示価格がおかしくなるバグを修正. 売却時はadjustは負
になり得るのにu32bにしてしまっていたことが原因.
/* Mega-Hack -- Black market sucks */
if (cur_store_num == STORE_BLACK)
price = price / 2;
/* Mega-Hack -- Black market sucks */
if (cur_store_num == STORE_BLACK)
price = price / 2;
+
+ /* Compute the final price (with rounding) */
+ /* Hack -- prevent underflow */
+ price = (price * adjust + 50L) / 100L;
/* Mega-Hack -- Black market sucks */
if (cur_store_num == STORE_BLACK)
price = price * 2;
/* Mega-Hack -- Black market sucks */
if (cur_store_num == STORE_BLACK)
price = price * 2;
- /* Compute the final price (with rounding) */
- /* Hack -- prevent overflow */
- price = (s32b)(((u32b)price * (u32b)adjust + 50UL) / 100UL);
+ /* Compute the final price (with rounding) */
+ /* Hack -- prevent overflow */
+ price = (s32b)(((u32b)price * (u32b)adjust + 50UL) / 100UL);
+ }
/* Note -- Never become "free" */
if (price <= 0L) return (1L);
/* Note -- Never become "free" */
if (price <= 0L) return (1L);