(svn r10290) -Fix: with smooth_economy, when industry production hit 32, it stayed there for ever. Give it some chance to get out of that uber-lowness (although it is a very slim chance, at least it has one)
authortruelight
Fri, 22 Jun 2007 23:53:16 +0000
changeset 7522 10627fb7b53d
parent 7521 5ecae08efe65
child 7523 ad4b2559762b
(svn r10290) -Fix: with smooth_economy, when industry production hit 32, it stayed there for ever. Give it some chance to get out of that uber-lowness (although it is a very slim chance, at least it has one)
src/industry_cmd.cpp
--- a/src/industry_cmd.cpp	Fri Jun 22 23:41:33 2007 +0000
+++ b/src/industry_cmd.cpp	Fri Jun 22 23:53:16 2007 +0000
@@ -1643,7 +1643,11 @@
 				if (CHANCE16I(20, 1024, r))
 					new_prod -= ((RandomRange(50) + 10) * old_prod) >> 8;
 				if (CHANCE16I(20 + (i->last_month_pct_transported[j] * 20 >> 8), 1024, r >> 16))
-					new_prod += ((RandomRange(50) + 10) * old_prod) >> 8;
+					/* old_prod gets stuck at '4' because 60 * 4 / 256 < 1, so in that case
+					 *  increase the odds a bit for increasing, so at least it can escape
+					 *  the production of '4' at some time in the future (instead of being
+					 *  stuck there for ever). */
+					new_prod += ((RandomRange(old_prod == 4 ? 55 : 50) + 10) * old_prod) >> 8;
 
 				new_prod = clamp(new_prod, 0, 255);
 				if (new_prod == old_prod) {