From 9534c9795b65f39cc2154a107ee09fd3c914dc93 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 3 Jul 2007 19:16:34 +0000 Subject: [PATCH] (svn r10418) -Codechange: implement/resurrect the industry production flags. --- src/industry.h | 7 +- src/industry_cmd.cpp | 166 ++++++++++++++++++------------------- src/table/build_industry.h | 76 ++++++++--------- 3 files changed, 121 insertions(+), 128 deletions(-) diff --git a/src/industry.h b/src/industry.h index 57b4fdc9ee..6486888d77 100644 --- a/src/industry.h +++ b/src/industry.h @@ -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 diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index c20246c421..ce15919a72 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1622,56 +1622,52 @@ static void ExtChangeIndustryProduction(Industry *i) int j; const IndustrySpec *indspec = GetIndustrySpec(i->type); - switch (indspec->life_type) { - case INDUSTRYLIFE_NOT_CLOSABLE: - return; - - case INDUSTRYLIFE_CLOSABLE: - if ((byte)(_cur_year - i->last_prod_year) < 5 || !CHANCE16(1, 180)) - closeit = false; - break; + if (indspec->life_type == INDUSTRYLIFE_BLACK_HOLE) return; - 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; + 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; - 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; - - /* 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 - ); - } + 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; + + 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(Industry *i) 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) { diff --git a/src/table/build_industry.h b/src/table/build_industry.h index 02b0a524b2..600dfbbb50 100644 --- a/src/table/build_industry.h +++ b/src/table/build_industry.h @@ -1152,7 +1152,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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_industry_specs[NEW_INDUSTRYOFFSET] = { 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),