Changeset - r7144:19d3ab9f911f
[Not reviewed]
master
0 3 0
rubidium - 17 years ago 2007-07-03 19:16:34
rubidium@openttd.org
(svn r10418) -Codechange: implement/resurrect the industry production flags.
3 files changed with 119 insertions and 126 deletions:
0 comments (0 inline, 0 general)
src/industry.h
Show inline comments
 
@@ -28,9 +28,10 @@ enum {
 
};
 

	
 
enum IndustryLifeType {
 
	INDUSTRYLIFE_NOT_CLOSABLE,     ///< Industry can never close
 
	INDUSTRYLIFE_PRODUCTION,       ///< Industry can close and change of production
 
	INDUSTRYLIFE_CLOSABLE,         ///< Industry can only close (no production change)
 
	INDUSTRYLIFE_BLACK_HOLE =      0, ///< Like power plants and banks
 
	INDUSTRYLIFE_EXTRACTIVE = 1 << 0, ///< Like mines
 
	INDUSTRYLIFE_ORGANIC    = 1 << 1, ///< Like forests
 
	INDUSTRYLIFE_PROCESSING = 1 << 2, ///< Like factories
 
};
 

	
 
/* Procedures that can be run to check whether an industry may
src/industry_cmd.cpp
Show inline comments
 
@@ -1622,56 +1622,52 @@ static void ExtChangeIndustryProduction(
 
	int j;
 
	const IndustrySpec *indspec = GetIndustrySpec(i->type);
 

	
 
	switch (indspec->life_type) {
 
		case INDUSTRYLIFE_NOT_CLOSABLE:
 
			return;
 
	if (indspec->life_type == INDUSTRYLIFE_BLACK_HOLE) return;
 

	
 
		case INDUSTRYLIFE_CLOSABLE:
 
			if ((byte)(_cur_year - i->last_prod_year) < 5 || !CHANCE16(1, 180))
 
				closeit = false;
 
			break;
 
	if (HASBIT(indspec->life_type, INDUSTRYLIFE_ORGANIC) || HASBIT(indspec->life_type, INDUSTRYLIFE_EXTRACTIVE)) {
 
		for (j = 0; j < 2 && indspec->produced_cargo[j] != CT_INVALID; j++){
 
			uint32 r = Random();
 
			int old_prod, new_prod, percent;
 
			int mag;
 

	
 
		default: /* INDUSTRY_PRODUCTION */
 
			for (j = 0; j < 2 && indspec->produced_cargo[j] != CT_INVALID; j++){
 
				uint32 r = Random();
 
				int old_prod, new_prod, percent;
 
				int mag;
 
			new_prod = old_prod = i->production_rate[j];
 

	
 
				new_prod = old_prod = i->production_rate[j];
 

	
 
				if (CHANCE16I(20, 1024, r)) new_prod -= max(((RandomRange(50) + 10) * old_prod) >> 8, 1U);
 
				/* Chance of increasing becomes better when more is transported */
 
				if (CHANCE16I(20 + (i->last_month_pct_transported[j] * 20 >> 8), 1024, r >> 16) &&
 
						((indspec->behaviour & INDUSTRYBEH_DONT_INCR_PROD) == 0 || _opt.landscape != LT_TEMPERATE)) {
 
					new_prod += max(((RandomRange(50) + 10) * old_prod) >> 8, 1U);
 
				}
 
			if (CHANCE16I(20, 1024, r)) new_prod -= max(((RandomRange(50) + 10) * old_prod) >> 8, 1U);
 
			/* Chance of increasing becomes better when more is transported */
 
			if (CHANCE16I(20 + (i->last_month_pct_transported[j] * 20 >> 8), 1024, r >> 16) &&
 
					((indspec->behaviour & INDUSTRYBEH_DONT_INCR_PROD) == 0 || _opt.landscape != LT_TEMPERATE)) {
 
				new_prod += max(((RandomRange(50) + 10) * old_prod) >> 8, 1U);
 
			}
 

	
 
				new_prod = clamp(new_prod, 1, 255);
 
				/* Do not stop closing the industry when it has the lowest possible production rate */
 
				if (new_prod == old_prod && old_prod > 1) {
 
					closeit = false;
 
					continue;
 
				}
 
			new_prod = clamp(new_prod, 1, 255);
 
			/* Do not stop closing the industry when it has the lowest possible production rate */
 
			if (new_prod == old_prod && old_prod > 1) {
 
				closeit = false;
 
				continue;
 
			}
 

	
 
				percent = new_prod * 100 / old_prod - 100;
 
				i->production_rate[j] = new_prod;
 
			percent = (old_prod == 0) ? 100 : (new_prod * 100 / old_prod - 100);
 
			i->production_rate[j] = new_prod;
 

	
 
				/* Close the industry when it has the lowest possible production rate */
 
				if (new_prod > 1) closeit = false;
 
			/* Close the industry when it has the lowest possible production rate */
 
			if (new_prod > 1) closeit = false;
 

	
 
				mag = abs(percent);
 
				if (mag >= 10) {
 
					SetDParam(2, mag);
 
					SetDParam(0, GetCargo(indspec->produced_cargo[j])->name);
 
					SetDParam(1, i->index);
 
					AddNewsItem(
 
						percent >= 0 ? STR_INDUSTRY_PROD_GOUP : STR_INDUSTRY_PROD_GODOWN,
 
						NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ECONOMY, 0),
 
						i->xy + TileDiffXY(1, 1), 0
 
					);
 
				}
 
			mag = abs(percent);
 
			if (mag >= 10) {
 
				SetDParam(2, mag);
 
				SetDParam(0, GetCargo(indspec->produced_cargo[j])->name);
 
				SetDParam(1, i->index);
 
				AddNewsItem(
 
					percent >= 0 ? STR_INDUSTRY_PROD_GOUP : STR_INDUSTRY_PROD_GODOWN,
 
					NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ECONOMY, 0),
 
					i->xy + TileDiffXY(1, 1), 0
 
				);
 
			}
 
			break;
 
		}
 
	}
 

	
 
	if (HASBIT(indspec->life_type, INDUSTRYLIFE_PROCESSING)) {
 
		if ((byte)(_cur_year - i->last_prod_year) < 5 || !CHANCE16(1, 180)) closeit = false;
 
	}
 

	
 
	/* If industry will be closed down, show this */
 
@@ -1785,59 +1781,55 @@ static void ChangeIndustryProduction(Ind
 
	int type = i->type;
 
	const IndustrySpec *indspec = GetIndustrySpec(type);
 

	
 
	switch (indspec->life_type) {
 
		case INDUSTRYLIFE_NOT_CLOSABLE:
 
			return;
 
	if (indspec->life_type == INDUSTRYLIFE_BLACK_HOLE) return;
 

	
 
		case INDUSTRYLIFE_PRODUCTION:
 
			/* decrease or increase */
 
			if ((indspec->behaviour & INDUSTRYBEH_DONT_INCR_PROD) && _opt.landscape == LT_TEMPERATE)
 
				only_decrease = true;
 
	if (HASBIT(indspec->life_type, INDUSTRYLIFE_ORGANIC) || HASBIT(indspec->life_type, INDUSTRYLIFE_EXTRACTIVE)) {
 
		/* decrease or increase */
 
		if ((indspec->behaviour & INDUSTRYBEH_DONT_INCR_PROD) && _opt.landscape == LT_TEMPERATE)
 
			only_decrease = true;
 

	
 
			if (only_decrease || CHANCE16(1, 3)) {
 
				/* If you transport > 60%, 66% chance we increase, else 33% chance we increase */
 
				if (!only_decrease && (i->last_month_pct_transported[0] > 153) != CHANCE16(1, 3)) {
 
					/* Increase production */
 
					if (i->prod_level != 0x80) {
 
						byte b;
 
		if (only_decrease || CHANCE16(1, 3)) {
 
			/* If you transport > 60%, 66% chance we increase, else 33% chance we increase */
 
			if (!only_decrease && (i->last_month_pct_transported[0] > 153) != CHANCE16(1, 3)) {
 
				/* Increase production */
 
				if (i->prod_level != 0x80) {
 
					byte b;
 

	
 
						i->prod_level <<= 1;
 
					i->prod_level <<= 1;
 

	
 
						b = i->production_rate[0] * 2;
 
						if (i->production_rate[0] >= 128)
 
							b = 0xFF;
 
						i->production_rate[0] = b;
 
					b = i->production_rate[0] * 2;
 
					if (i->production_rate[0] >= 128)
 
						b = 0xFF;
 
					i->production_rate[0] = b;
 

	
 
						b = i->production_rate[1] * 2;
 
						if (i->production_rate[1] >= 128)
 
							b = 0xFF;
 
						i->production_rate[1] = b;
 
					b = i->production_rate[1] * 2;
 
					if (i->production_rate[1] >= 128)
 
						b = 0xFF;
 
					i->production_rate[1] = b;
 

	
 
						str = indspec->production_up_text;
 
					}
 
					str = indspec->production_up_text;
 
				}
 
			} else {
 
				/* Decrease production */
 
				if (i->prod_level == 4) {
 
					i->prod_level = 0;
 
					str = indspec->closure_text;
 
				} else {
 
					/* Decrease production */
 
					if (i->prod_level == 4) {
 
						i->prod_level = 0;
 
						str = indspec->closure_text;
 
					} else {
 
						i->prod_level >>= 1;
 
						i->production_rate[0] = (i->production_rate[0] + 1) >> 1;
 
						i->production_rate[1] = (i->production_rate[1] + 1) >> 1;
 
					i->prod_level >>= 1;
 
					i->production_rate[0] = (i->production_rate[0] + 1) >> 1;
 
					i->production_rate[1] = (i->production_rate[1] + 1) >> 1;
 

	
 
						str = indspec->production_down_text;
 
					}
 
					str = indspec->production_down_text;
 
				}
 
			}
 
			break;
 

	
 
		case INDUSTRYLIFE_CLOSABLE:
 
			/* maybe close */
 
			if ( (byte)(_cur_year - i->last_prod_year) >= 5 && CHANCE16(1, 2)) {
 
				i->prod_level = 0;
 
				str = indspec->closure_text;
 
			}
 
			break;
 
		}
 
	}
 
	if (HASBIT(indspec->life_type, INDUSTRYLIFE_PROCESSING)) {
 
		/* maybe close */
 
		if ( (byte)(_cur_year - i->last_prod_year) >= 5 && CHANCE16(1, 2)) {
 
			i->prod_level = 0;
 
			str = indspec->closure_text;
 
		}
 
	}
 

	
 
	if (str != STR_NULL) {
src/table/build_industry.h
Show inline comments
 
@@ -1152,7 +1152,7 @@ static const IndustrySpec _origin_indust
 
	   IT_POWER_STATION,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_COAL,       15, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYBEH_CAN_SUBSIDENCE,
 
	   STR_4802_COAL_MINE,                     STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4836_NEW_COAL_SEAM_FOUND_AT,   STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1162,7 +1162,7 @@ static const IndustrySpec _origin_indust
 
	   IT_COAL_MINE,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_INVALID,     0, CT_INVALID,       0, 5,
 
	   CT_COAL,        0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_NOT_CLOSABLE,              1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4803_POWER_STATION,                 STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1172,7 +1172,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FOREST,         IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_GOODS,       0, CT_INVALID,       0, 5,
 
	   CT_WOOD,      256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TEMPERATE,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4804_SAWMILL,                       STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1182,7 +1182,7 @@ static const IndustrySpec _origin_indust
 
	   IT_SAWMILL,        IT_PAPER_MILL,       IT_INVALID,       CHECK_FOREST,
 
	   CT_WOOD,       13, CT_INVALID,       0, 30,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4805_FOREST,                        STR_482E_NEW_BEING_PLANTED_NEAR,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1192,7 +1192,7 @@ static const IndustrySpec _origin_indust
 
	   IT_OIL_RIG,        IT_INVALID,          IT_INVALID,       CHECK_REFINERY,
 
	   CT_GOODS,       0, CT_INVALID,       0, 5,
 
	   CT_OIL,       256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_AIRPLANE_ATTACKS,
 
	   STR_4806_OIL_REFINERY,                  STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1202,7 +1202,7 @@ static const IndustrySpec _origin_indust
 
	   IT_OIL_REFINERY,   IT_INVALID,          IT_INVALID,       CHECK_OIL_RIG,
 
	   CT_OIL,        15, CT_PASSENGERS,    2, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_BUILT_ONWATER | INDUSTRYBEH_AFTER_1960 | INDUSTRYBEH_AI_AIRSHIP_ROUTES,
 
	   STR_4807_OIL_RIG,                       STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4837_NEW_OIL_RESERVES_FOUND,   STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1211,8 +1211,8 @@ static const IndustrySpec _origin_indust
 
	   208,                                    2, 0, 0, 0,    5, 0, 0, 0,        174,
 
	   IT_FARM,           IT_STEEL_MILL,       IT_INVALID,       CHECK_NOTHING,
 
	   CT_GOODS,       0, CT_INVALID,       0, 5,
 
	   CT_LIVESTOCK, 256, CT_GRAIN ,      256, CT_STEEL,    256,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TEMPERATE,
 
	   CT_LIVESTOCK, 256, CT_GRAIN,       256, CT_STEEL,    256,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_CHOPPER_ATTACKS,
 
	   STR_4808_FACTORY,                       STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1222,7 +1222,7 @@ static const IndustrySpec _origin_indust
 
	   IT_PAPER_MILL,     IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_GOODS,       0, CT_INVALID,       0, 5,
 
	   CT_PAPER,     256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4809_PRINTING_WORKS,                STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1232,7 +1232,7 @@ static const IndustrySpec _origin_indust
 
	   IT_IRON_MINE,      IT_FACTORY,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_STEEL,       0, CT_INVALID,       0, 5,
 
	   CT_IRON_ORE,  256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TEMPERATE,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_NONE,
 
	   STR_480A_STEEL_MILL,                    STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1242,7 +1242,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FACTORY,        IT_FOOD_PROCESS,     IT_INVALID,       CHECK_FARM,
 
	   CT_GRAIN,      10, CT_LIVESTOCK,    10, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
 
	   STR_480B_FARM,                          STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1252,7 +1252,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_COPPER_ORE, 10, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_480C_COPPER_ORE_MINE,               STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1262,7 +1262,7 @@ static const IndustrySpec _origin_indust
 
	   IT_OIL_REFINERY,   IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_OIL,        12, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_DONT_INCR_PROD | INDUSTRYBEH_BEFORE_1950,
 
	   STR_480D_OIL_WELLS,                     STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4837_NEW_OIL_RESERVES_FOUND,   STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1272,7 +1272,7 @@ static const IndustrySpec _origin_indust
 
	   IT_BANK_TEMP,      IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_VALUABLES,   6, CT_INVALID,       0, 5,
 
	   CT_VALUABLES,   0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_NOT_CLOSABLE,              1 << LT_TEMPERATE,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_TOWN1200_MORE | INDUSTRYBEH_ONLY_INTOWN,
 
	   STR_480E_BANK,                          STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1282,7 +1282,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FRUIT_PLANTATION, IT_FARM,           IT_FARM_2,        CHECK_NOTHING,
 
	   CT_FOOD,        0, CT_INVALID,       0, 5,
 
	   CT_FRUIT,     256, CT_MAIZE,       256, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_480F_FOOD_PROCESSING_PLANT,         STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1292,7 +1292,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FOREST,         IT_PRINTING_WORKS,   IT_INVALID,       CHECK_NOTHING,
 
	   CT_PAPER,       0, CT_INVALID,       0, 5,
 
	   CT_WOOD,      256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4810_PAPER_MILL,                    STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1302,7 +1302,7 @@ static const IndustrySpec _origin_indust
 
	   IT_BANK_TROPIC_ARCTIC, IT_INVALID,      IT_INVALID,       CHECK_NOTHING,
 
	   CT_GOLD,        7, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_ARCTIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4811_GOLD_MINE,                     STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1312,7 +1312,7 @@ static const IndustrySpec _origin_indust
 
	   IT_GOLD_MINE,      IT_DIAMOND_MINE,     IT_INVALID,       CHECK_NOTHING,
 
	   CT_INVALID,     0, CT_INVALID,       0, 5,
 
	   CT_GOLD,      256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_NOT_CLOSABLE,              1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_ONLY_INTOWN,
 
	   STR_4812_BANK,                          STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1322,7 +1322,7 @@ static const IndustrySpec _origin_indust
 
	   IT_BANK_TROPIC_ARCTIC, IT_INVALID,      IT_INVALID,       CHECK_NOTHING,
 
	   CT_DIAMONDS,    7, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4813_DIAMOND_MINE,                  STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1332,7 +1332,7 @@ static const IndustrySpec _origin_indust
 
	   IT_STEEL_MILL,     IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_IRON_ORE,   10, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TEMPERATE,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4814_IRON_ORE_MINE,                 STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1342,7 +1342,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FOOD_PROCESS,   IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 
	   CT_FRUIT,      10, CT_INVALID,       0, 15,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4815_FRUIT_PLANTATION,              STR_482E_NEW_BEING_PLANTED_NEAR,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1352,7 +1352,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 
	   CT_RUBBER,     10, CT_INVALID,       0, 15,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4816_RUBBER_PLANTATION,             STR_482E_NEW_BEING_PLANTED_NEAR,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1362,7 +1362,7 @@ static const IndustrySpec _origin_indust
 
	   IT_WATER_TOWER,    IT_INVALID,          IT_INVALID,       CHECK_WATER,
 
	   CT_WATER,      12, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4817_WATER_SUPPLY,                  STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1372,7 +1372,7 @@ static const IndustrySpec _origin_indust
 
	   IT_WATER_SUPPLY,   IT_INVALID,          IT_INVALID,       CHECK_WATER,
 
	   CT_INVALID,     0, CT_INVALID,       0, 5,
 
	   CT_WATER,     256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_NOT_CLOSABLE,              1 << LT_TROPIC,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_ONLY_INTOWN,
 
	   STR_4818_WATER_TOWER,                   STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1382,7 +1382,7 @@ static const IndustrySpec _origin_indust
 
	   IT_RUBBER_PLANTATION, IT_COPPER_MINE,   IT_LUMBER_MILL,   CHECK_PLANTATION,
 
	   CT_GOODS,       0, CT_INVALID,       0, 5,
 
	   CT_RUBBER,    256, CT_COPPER_ORE,  256, CT_WOOD,      256,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TROPIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4819_FACTORY,                       STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1392,7 +1392,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FOOD_PROCESS,   IT_INVALID,          IT_INVALID,       CHECK_PLANTATION,
 
	   CT_MAIZE,      11, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TROPIC,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TROPIC,
 
	   INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
 
	   STR_481A_FARM,                          STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1402,7 +1402,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FACTORY_2,      IT_INVALID,          IT_INVALID,       CHECK_LUMBERMILL,
 
	   CT_WOOD,        0, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TROPIC,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_CUT_TREES,
 
	   STR_481B_LUMBER_MILL,                   STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4834_LACK_OF_NEARBY_TREES_CAUSES,   STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1412,7 +1412,7 @@ static const IndustrySpec _origin_indust
 
	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_COTTON_CANDY, 13, CT_INVALID,    0, 30,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_481C_COTTON_CANDY_FOREST,           STR_482E_NEW_BEING_PLANTED_NEAR,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1422,7 +1422,7 @@ static const IndustrySpec _origin_indust
 
	   IT_COTTON_CANDY,   IT_TOFFEE_QUARRY,    IT_SUGAR_MINE,    CHECK_NOTHING,
 
	   CT_CANDY,       0, CT_INVALID,       0, 5,
 
	   CT_SUGAR,     256, CT_TOFFEE,      256, CT_COTTON_CANDY, 256,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_481D_CANDY_FACTORY,                 STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1432,7 +1432,7 @@ static const IndustrySpec _origin_indust
 
	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_BATTERIES,  11, CT_INVALID,      0, 30,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_481E_BATTERY_FARM,                  STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
 
@@ -1442,7 +1442,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FIZZY_DRINK_FACTORY, IT_INVALID,     IT_INVALID,       CHECK_NOTHING,
 
	   CT_COLA,       12, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_481F_COLA_WELLS,                    STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1452,7 +1452,7 @@ static const IndustrySpec _origin_indust
 
	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_INVALID,     0, CT_INVALID,       0, 5,
 
	   CT_TOYS,      256, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_NOT_CLOSABLE,              1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_ONLY_NEARTOWN,
 
	   STR_4820_TOY_SHOP,                      STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1462,7 +1462,7 @@ static const IndustrySpec _origin_indust
 
	   IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM,  IT_TOY_SHOP,     CHECK_NOTHING,
 
	   CT_TOYS,        0, CT_INVALID,       0, 5,
 
	   CT_PLASTIC,   256, CT_BATTERIES,   256, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4821_TOY_FACTORY,                   STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1472,7 +1472,7 @@ static const IndustrySpec _origin_indust
 
	   IT_TOY_FACTORY,    IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_PLASTIC,    14, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4822_PLASTIC_FOUNTAINS,             STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1482,7 +1482,7 @@ static const IndustrySpec _origin_indust
 
	   IT_COLA_WELLS,     IT_BUBBLE_GENERATOR, IT_INVALID,       CHECK_NOTHING,
 
	   CT_FIZZY_DRINKS, 0, CT_INVALID,      0, 5,
 
	   CT_COLA,       256, CT_BUBBLES,    256, CT_INVALID,     0,
 
	   INDUSTRYLIFE_CLOSABLE,                  1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4823_FIZZY_DRINK_FACTORY,           STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,      STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1492,7 +1492,7 @@ static const IndustrySpec _origin_indust
 
	   IT_FIZZY_DRINK_FACTORY, IT_INVALID,     IT_INVALID,       CHECK_BUBBLEGEN,
 
	   CT_BUBBLES,    13, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4824_BUBBLE_GENERATOR,              STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1502,7 +1502,7 @@ static const IndustrySpec _origin_indust
 
	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_TOFFEE,     10, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4825_TOFFEE_QUARRY,                 STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
 
@@ -1512,7 +1512,7 @@ static const IndustrySpec _origin_indust
 
	   IT_CANDY_FACTORY,  IT_INVALID,          IT_INVALID,       CHECK_NOTHING,
 
	   CT_SUGAR,      11, CT_INVALID,       0, 5,
 
	   CT_INVALID,     0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_PRODUCTION,                1 << LT_TOYLAND,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TOYLAND,
 
	   INDUSTRYBEH_NONE,
 
	   STR_4826_SUGAR_MINE,                    STR_482D_NEW_UNDER_CONSTRUCTION,
 
	   STR_4832_ANNOUNCES_IMMINENT_CLOSURE,    STR_4835_INCREASES_PRODUCTION,     STR_4839_PRODUCTION_DOWN_BY_50),
0 comments (0 inline, 0 general)