(svn r9866) -Codechange: remove the technical one-input-cargo-creates-one-output-cargo limit in the factories, sawmills, steelmills and the ones I'm forgetting to mention right now. Use of this functionality will come later.

This commit is contained in:
rubidium 2007-05-17 20:19:55 +00:00
parent 5b74a6ab2f
commit 44ddf033ed
3 changed files with 70 additions and 53 deletions

View File

@ -1178,34 +1178,47 @@ int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, C
static void DeliverGoodsToIndustry(TileIndex xy, CargoID cargo_type, int num_pieces)
{
Industry* best = NULL;
Industry* ind;
uint u;
Industry *best = NULL;
Industry *ind;
const IndustrySpec *indspec;
uint best_dist;
uint accepted_cargo_index;
/* Check if there's an industry close to the station that accepts the cargo
* XXX - Think of something better to
* 1) Only deliver to industries which are withing the catchment radius
* 2) Distribute between industries if more then one is present */
u = (_patches.station_spread + 8) * 2;
best_dist = (_patches.station_spread + 8) * 2;
FOR_ALL_INDUSTRIES(ind) {
uint t;
indspec = GetIndustrySpec(ind->type);
if (( cargo_type == ind->accepts_cargo[0] ||
cargo_type == ind->accepts_cargo[1] ||
cargo_type == ind->accepts_cargo[2]
) &&
ind->produced_cargo[0] != CT_INVALID &&
ind->produced_cargo[0] != cargo_type &&
(t = DistanceManhattan(ind->xy, xy)) < u) {
u = t;
if (indspec->produced_cargo[0] == CT_INVALID) continue;
uint i;
for (i = 0; i < lengthof(indspec->accepts_cargo); i++) {
if (cargo_type == indspec->accepts_cargo[i] &&
(indspec->input_cargo_multiplier[i][0] != 0 || indspec->input_cargo_multiplier[i][1] != 0)) {
break;
}
}
if (i == lengthof(indspec->accepts_cargo)) continue;
uint dist = DistanceManhattan(ind->xy, xy);
if (dist < best_dist) {
best = ind;
best_dist = dist;
accepted_cargo_index = i;
}
}
/* Found one? */
if (best != NULL) {
indspec = GetIndustrySpec(best->type);
best->was_cargo_delivered = true;
best->cargo_waiting[0] = min(best->cargo_waiting[0] + num_pieces, 0xFFFF);
best->cargo_waiting[0] = min(best->cargo_waiting[0] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][0] / 256), 0xFFFF);
best->cargo_waiting[1] = min(best->cargo_waiting[1] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][1] / 256), 0xFFFF);
}
}

View File

@ -107,6 +107,7 @@ struct IndustrySpec {
byte minimal_cargo; ///< minimum amount of cargo transported to the stations
///< If the waiting cargo is less than this number, no cargo is moved to it
CargoID accepts_cargo[3]; ///< 3 accepted cargos
uint16 input_cargo_multiplier[3][2]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargos)
IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs
byte climate_availability; ///< Bitmask, giving landscape enums as bit position
IndustyBehaviour behaviour; ///< How this industry will behave, and how others entities can use it

View File

@ -1102,8 +1102,11 @@ static const IndustryTileTable * const _tile_table_sugar_mine[] = {
* @param r2 rate of production 1
* @param m minimum cargo moved to station
* @param a1 accepted cargo 1
* @param im1 input multiplier for cargo 1
* @param a2 accepted cargo 2
* @param im2 input multiplier for cargo 2
* @param a3 accepted cargo 3
* @param im3 input multiplier for cargo 3
* @param pr industry life (actually, the same as extractive, organic, processing in ttdpatch's specs)
* @param clim climate availaility
* @param bev industry behaviour
@ -1115,9 +1118,9 @@ static const IndustryTileTable * const _tile_table_sugar_mine[] = {
*/
#define MI(tbl, d, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \
c1, c2, c3, proc, p1, r1, p2, r2, m, a1, a2, a3, pr, clim, bev, in, intx, s1, s2, s3) \
c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
{tbl, lengthof(tbl), d, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m, \
{a1, a2, a3}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, 0, 0, 0, 0}
{a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, 0, 0, 0, 0}
static const IndustrySpec _industry_specs[] = {
/* Format:
@ -1132,7 +1135,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_coal_mine, 210, 2, 3, 0, 0, 8, 8, 0, 0, 215,
IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COAL, 15, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
INDUSTRYBEH_CAN_SUBSIDENCE,
STR_4802_COAL_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1141,7 +1144,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_power_station, 30, 2, 2, 0, 0, 5, 5, 0, 0, 184,
IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_COAL, CT_INVALID, CT_INVALID,
CT_COAL, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
INDUSTRYBEH_NONE,
STR_4803_POWER_STATION, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1150,7 +1153,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_sawmill, 28, 2, 0, 0, 0, 5, 0, 0, 0, 194,
IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_WOOD, CT_INVALID, CT_INVALID,
CT_WOOD, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TEMPERATE,
INDUSTRYBEH_NONE,
STR_4804_SAWMILL, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1159,7 +1162,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_forest, 200, 3, 4, 0, 0, 5, 5, 0, 0, 86,
IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
CT_WOOD, 13, CT_INVALID, 0, 30,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
INDUSTRYBEH_NONE,
STR_4805_FOREST, STR_482E_NEW_BEING_PLANTED_NEAR,
@ -1168,7 +1171,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_oil_refinery, 31, 2, 2, 2, 0, 4, 4, 4, 0, 191,
IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_OIL, CT_INVALID, CT_INVALID,
CT_OIL, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
INDUSTRYBEH_AIRPLANE_ATTACKS,
STR_4806_OIL_REFINERY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1177,7 +1180,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_oil_rig, 240, 6, 0, 0, 0, 0, 0, 0, 0, 152,
IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
CT_OIL, 15, CT_PASSENGERS, 2, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TEMPERATE,
INDUSTRYBEH_BUILT_ONWATER | INDUSTRYBEH_AFTER_1960 | INDUSTRYBEH_AI_AIRSHIP_ROUTES,
STR_4807_OIL_RIG, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1186,7 +1189,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_factory, 26, 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, CT_GRAIN, CT_STEEL,
CT_LIVESTOCK, 256, CT_GRAIN , 256, CT_STEEL, 256,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TEMPERATE,
INDUSTRYBEH_CHOPPER_ATTACKS,
STR_4808_FACTORY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1195,7 +1198,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_printing_works, 26, 0, 2, 0, 0, 0, 5, 0, 0, 174,
IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_PAPER, CT_INVALID, CT_INVALID,
CT_PAPER, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_ARCTIC,
INDUSTRYBEH_NONE,
STR_4809_PRINTING_WORKS, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1204,7 +1207,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_steel_mill, 27, 2, 0, 0, 0, 5, 0, 0, 0, 10,
IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
CT_STEEL, 0, CT_INVALID, 0, 5,
CT_IRON_ORE, CT_INVALID, CT_INVALID,
CT_IRON_ORE, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TEMPERATE,
INDUSTRYBEH_NONE,
STR_480A_STEEL_MILL, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1213,7 +1216,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_farm, 250, 2, 4, 0, 0, 9, 9, 0, 0, 48,
IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
CT_GRAIN, 10, CT_LIVESTOCK, 10, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
STR_480B_FARM, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1222,7 +1225,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_copper_mine, 205, 0, 0, 3, 0, 0, 0, 4, 0, 10,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_480C_COPPER_ORE_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1231,7 +1234,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_oil_well, 220, 0, 5, 3, 0, 4, 5, 5, 0, 152,
IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_OIL, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 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,
@ -1240,7 +1243,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_bank, 193, 7, 0, 0, 0, 0, 0, 0, 0, 15,
IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_VALUABLES, 6, CT_INVALID, 0, 5,
CT_VALUABLES, CT_INVALID, CT_INVALID,
CT_VALUABLES, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_TEMPERATE,
INDUSTRYBEH_TOWN1200_MORE | INDUSTRYBEH_ONLY_INTOWN,
STR_480E_BANK, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1249,7 +1252,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_food_process, 26, 0, 2, 2, 0, 0, 3, 4, 0, 55,
IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
CT_FOOD, 0, CT_INVALID, 0, 5,
CT_FRUIT, CT_MAIZE, CT_INVALID,
CT_FRUIT, 256, CT_MAIZE, 256, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_480F_FOOD_PROCESSING_PLANT, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1258,7 +1261,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_paper_mill, 28, 0, 2, 0, 0, 0, 5, 0, 0, 10,
IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
CT_PAPER, 0, CT_INVALID, 0, 5,
CT_WOOD, CT_INVALID, CT_INVALID,
CT_WOOD, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_ARCTIC,
INDUSTRYBEH_NONE,
STR_4810_PAPER_MILL, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1267,7 +1270,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_gold_mine, 208, 0, 3, 0, 0, 0, 4, 0, 0, 194,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOLD, 7, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_ARCTIC,
INDUSTRYBEH_NONE,
STR_4811_GOLD_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1276,7 +1279,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_bank2, 19, 0, 3, 3, 0, 0, 6, 5, 0, 15,
IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_GOLD, CT_INVALID, CT_INVALID,
CT_GOLD, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
INDUSTRYBEH_ONLY_INTOWN,
STR_4812_BANK, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1285,7 +1288,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_diamond_mine, 213, 0, 0, 3, 0, 0, 0, 4, 0, 184,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_DIAMONDS, 7, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_4813_DIAMOND_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1294,7 +1297,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_iron_mine, 220, 2, 0, 0, 0, 5, 0, 0, 0, 55,
IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_IRON_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TEMPERATE,
INDUSTRYBEH_NONE,
STR_4814_IRON_ORE_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1303,7 +1306,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_fruit_plantation, 225, 0, 0, 2, 0, 0, 0, 4, 0, 86,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_FRUIT, 10, CT_INVALID, 0, 15,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_4815_FRUIT_PLANTATION, STR_482E_NEW_BEING_PLANTED_NEAR,
@ -1312,7 +1315,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_rubber_plantation, 218, 0, 0, 3, 0, 0, 0, 4, 0, 39,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_RUBBER, 10, CT_INVALID, 0, 15,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_4816_RUBBER_PLANTATION, STR_482E_NEW_BEING_PLANTED_NEAR,
@ -1321,7 +1324,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_water_supply, 199, 0, 0, 3, 0, 0, 0, 4, 0, 37,
IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_WATER, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_4817_WATER_SUPPLY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1330,7 +1333,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_water_tower, 14, 0, 0, 4, 0, 0, 0, 8, 0, 208,
IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_WATER, CT_INVALID, CT_INVALID,
CT_WATER, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_TROPIC,
INDUSTRYBEH_ONLY_INTOWN,
STR_4818_WATER_TOWER, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1339,7 +1342,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_factory2, 26, 0, 0, 2, 0, 0, 0, 4, 0, 174,
IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_RUBBER, CT_COPPER_ORE, CT_WOOD,
CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TROPIC,
INDUSTRYBEH_NONE,
STR_4819_FACTORY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1348,7 +1351,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_farm2, 250, 0, 0, 1, 0, 0, 0, 2, 0, 48,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_MAIZE, 11, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TROPIC,
INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
STR_481A_FARM, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1357,7 +1360,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_lumber_mill, 17, 0, 0, 0, 0, 0, 0, 0, 0, 194,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
CT_WOOD, 0, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TROPIC,
INDUSTRYBEH_CUT_TREES,
STR_481B_LUMBER_MILL, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1366,7 +1369,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_cotton_candy, 195, 0, 0, 0, 3, 0, 0, 0, 5, 48,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_481C_COTTON_CANDY_FOREST, STR_482E_NEW_BEING_PLANTED_NEAR,
@ -1375,7 +1378,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_candy_factory, 26, 0, 0, 0, 3, 0, 0, 0, 5, 174,
IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
CT_CANDY, 0, CT_INVALID, 0, 5,
CT_SUGAR, CT_TOFFEE, CT_COTTON_CANDY,
CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_481D_CANDY_FACTORY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1384,7 +1387,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_battery_farm, 187, 0, 0, 0, 3, 0, 0, 0, 4, 39,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_BATTERIES, 11, CT_INVALID, 0, 30,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_481E_BATTERY_FARM, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1393,7 +1396,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_cola_wells, 193, 0, 0, 0, 3, 0, 0, 0, 5, 55,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COLA, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_481F_COLA_WELLS, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1402,7 +1405,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_toy_shop, 17, 0, 0, 0, 3, 0, 0, 0, 4, 208,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_TOYS, CT_INVALID, CT_INVALID,
CT_TOYS, 256, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_TOYLAND,
INDUSTRYBEH_ONLY_NEARTOWN,
STR_4820_TOY_SHOP, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1411,7 +1414,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_toy_factory, 20, 0, 0, 0, 3, 0, 0, 0, 5, 10,
IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
CT_TOYS, 0, CT_INVALID, 0, 5,
CT_PLASTIC, CT_BATTERIES, CT_INVALID,
CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4821_TOY_FACTORY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1420,7 +1423,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_plastic_fountain, 192, 0, 0, 0, 3, 0, 0, 0, 5, 37,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_PLASTIC, 14, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4822_PLASTIC_FOUNTAINS, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1429,7 +1432,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_fizzy_drink, 22, 0, 0, 0, 3, 0, 0, 0, 4, 184,
IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
CT_COLA, CT_BUBBLES, CT_INVALID,
CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 0,
INDUSTRYLIFE_CLOSABLE, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4823_FIZZY_DRINK_FACTORY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1438,7 +1441,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_bubble_generator, 203, 0, 0, 0, 3, 0, 0, 0, 5, 152,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
CT_BUBBLES, 13, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4824_BUBBLE_GENERATOR, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1447,7 +1450,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_toffee_quarry, 213, 0, 0, 0, 3, 0, 0, 0, 5, 194,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_TOFFEE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4825_TOFFEE_QUARRY, STR_482D_NEW_UNDER_CONSTRUCTION,
@ -1456,7 +1459,7 @@ static const IndustrySpec _industry_specs[] = {
MI(_tile_table_sugar_mine, 210, 0, 0, 0, 2, 0, 0, 0, 4, 15,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_SUGAR, 11, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
INDUSTRYLIFE_PRODUCTION, 1 << LT_TOYLAND,
INDUSTRYBEH_NONE,
STR_4826_SUGAR_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,