Changeset - r28695:fa3f7c02fccf
[Not reviewed]
master
0 6 0
Peter Nelson - 10 months ago 2024-02-05 23:11:32
peter1138@openttd.org
Fix 2fd90960: Missing default vehicles and industry acceptance/production. (#12000)

* Fix 2fd90960: Missing default vehicles and industry acceptance/production.

Some default definitions are used across multiple climate types and relied on climate-independent cargo slot even though they specified a climate-dependent cargo type.

Add MixedCargoType that indirectly allows multiple labels to be specified for these.
6 files changed with 85 insertions and 44 deletions:
0 comments (0 inline, 0 general)
src/cargo_type.h
Show inline comments
 
@@ -79,6 +79,13 @@ static const CargoID CARGO_NO_REFIT = 0x
 

	
 
static const CargoID INVALID_CARGO = UINT8_MAX;
 

	
 
/** Mixed cargo types for definitions with cargo that can vary depending on climate. */
 
enum MixedCargoType {
 
	MCT_LIVESTOCK_FRUIT, ///< Cargo can be livestock or fruit.
 
	MCT_GRAIN_WHEAT_MAIZE, ///< Cargo can be grain, wheat or maize.
 
	MCT_VALUABLES_GOLD_DIAMONDS, ///< Cargo can be valuables, gold or diamonds.
 
};
 

	
 
/**
 
 * Special cargo filter criteria.
 
 * These are used by user interface code only and must not be assigned to any entity. Not all values are valid for every UI filter.
src/engine_type.h
Show inline comments
 
@@ -149,7 +149,7 @@ struct EngineInfo {
 
	byte load_amount;
 
	byte climates;      ///< Climates supported by the engine.
 
	CargoID cargo_type;
 
	CargoLabel cargo_label;
 
	std::variant<CargoLabel, MixedCargoType> cargo_label;
 
	CargoTypes refit_mask;
 
	byte refit_cost;
 
	byte misc_flags;         ///< Miscellaneous flags. @see EngineMiscFlags
src/industrytype.h
Show inline comments
 
@@ -110,7 +110,7 @@ struct IndustrySpec {
 
	IndustryType conflicting[3];                ///< Industries this industry cannot be close to
 
	byte check_proc;                            ///< Index to a procedure to check for conflicting circumstances
 
	CargoID produced_cargo[INDUSTRY_NUM_OUTPUTS];
 
	CargoLabel produced_cargo_label[INDUSTRY_NUM_OUTPUTS];
 
	std::variant<CargoLabel, MixedCargoType> produced_cargo_label[INDUSTRY_NUM_OUTPUTS];
 
	byte production_rate[INDUSTRY_NUM_OUTPUTS];
 
	/**
 
	 * minimum amount of cargo transported to the stations.
 
@@ -118,7 +118,7 @@ struct IndustrySpec {
 
	 */
 
	byte minimal_cargo;
 
	CargoID accepts_cargo[INDUSTRY_NUM_INPUTS]; ///< 16 accepted cargoes.
 
	CargoLabel accepts_cargo_label[INDUSTRY_NUM_INPUTS];
 
	std::variant<CargoLabel, MixedCargoType> accepts_cargo_label[INDUSTRY_NUM_INPUTS];
 
	uint16_t input_cargo_multiplier[INDUSTRY_NUM_INPUTS][INDUSTRY_NUM_OUTPUTS]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes)
 
	IndustryLifeType life_type;                 ///< This is also known as Industry production flag, in newgrf specs
 
	byte climate_availability;                  ///< Bitmask, giving landscape enums as bit position
 
@@ -155,7 +155,7 @@ struct IndustrySpec {
 
 */
 
struct IndustryTileSpec {
 
	std::array<CargoID, INDUSTRY_NUM_INPUTS> accepts_cargo; ///< Cargo accepted by this tile
 
	std::array<CargoLabel, INDUSTRY_NUM_INPUTS> accepts_cargo_label;
 
	std::array<std::variant<CargoLabel, MixedCargoType>, INDUSTRY_NUM_INPUTS> accepts_cargo_label;
 
	std::array<int8_t, INDUSTRY_NUM_INPUTS> acceptance; ///< Level of acceptance per cargo type (signed, may be negative!)
 
	Slope slopes_refused;                 ///< slope pattern on which this tile cannot be built
 
	byte anim_production;                 ///< Animation frame to start when goods are produced
src/newgrf.cpp
Show inline comments
 
@@ -8962,6 +8962,38 @@ GRFFile::~GRFFile()
 
	delete[] this->language_map;
 
}
 

	
 
/**
 
 * Find first cargo label that exists and is active from a list of cargo labels.
 
 * @param labels List of cargo labels.
 
 * @returns First cargo label in list that exists, or CT_INVALID if none exist.
 
 */
 
static CargoLabel GetActiveCargoLabel(const std::initializer_list<CargoLabel> &labels)
 
{
 
	for (const CargoLabel &label : labels) {
 
		CargoID cid = GetCargoIDByLabel(label);
 
		if (cid != INVALID_CARGO) return label;
 
	}
 
	return CT_INVALID;
 
}
 

	
 
/**
 
 * Get active cargo label from either a cargo label or climate-dependent mixed cargo type.
 
 * @param label Cargo label or climate-dependent mixed cargo type.
 
 * @returns Active cargo label, or CT_INVALID if cargo label is not active.
 
 */
 
static CargoLabel GetActiveCargoLabel(const std::variant<CargoLabel, MixedCargoType> &label)
 
{
 
	if (std::holds_alternative<CargoLabel>(label)) return std::get<CargoLabel>(label);
 
	if (std::holds_alternative<MixedCargoType>(label)) {
 
		switch (std::get<MixedCargoType>(label)) {
 
			case MCT_LIVESTOCK_FRUIT: return GetActiveCargoLabel({CT_LIVESTOCK, CT_FRUIT});
 
			case MCT_GRAIN_WHEAT_MAIZE: return GetActiveCargoLabel({CT_GRAIN, CT_WHEAT, CT_MAIZE});
 
			case MCT_VALUABLES_GOLD_DIAMONDS: return GetActiveCargoLabel({CT_VALUABLES, CT_GOLD, CT_DIAMONDS});
 
			default: NOT_REACHED();
 
		}
 
	}
 
	NOT_REACHED();
 
}
 

	
 
/**
 
 * Precalculate refit masks from cargo classes for all vehicles.
 
@@ -8980,7 +9012,7 @@ static void CalculateRefitMasks()
 

	
 
		/* Apply default cargo translation map if cargo type hasn't been set, either explicitly or by aircraft cargo handling. */
 
		if (!IsValidCargoID(e->info.cargo_type)) {
 
			e->info.cargo_type = GetCargoIDByLabel(e->info.cargo_label);
 
			e->info.cargo_type = GetCargoIDByLabel(GetActiveCargoLabel(e->info.cargo_label));
 
		}
 

	
 
		/* If the NewGRF did not set any cargo properties, we apply default values. */
 
@@ -9017,7 +9049,8 @@ static void CalculateRefitMasks()
 
					_gted[engine].cargo_allowed = CC_PASSENGERS | CC_MAIL | CC_ARMOURED | CC_EXPRESS;
 
					_gted[engine].cargo_disallowed = CC_LIQUID;
 
				} else if (e->type == VEH_SHIP) {
 
					switch (ei->cargo_label.base()) {
 
					CargoLabel label = GetActiveCargoLabel(ei->cargo_label);
 
					switch (label.base()) {
 
						case CT_PASSENGERS.base():
 
							/* Ferries */
 
							_gted[engine].cargo_allowed = CC_PASSENGERS;
 
@@ -9048,9 +9081,10 @@ static void CalculateRefitMasks()
 
					_gted[engine].cargo_disallowed = 0;
 
				} else {
 
					/* Train wagons and road vehicles are classified by their default cargo type */
 
					CargoLabel label = GetActiveCargoLabel(ei->cargo_label);
 
					for (const auto &drm : _default_refit_masks) {
 
						if (!HasBit(drm.climate, _settings_game.game_creation.landscape)) continue;
 
						if (drm.cargo_label != ei->cargo_label) continue;
 
						if (drm.cargo_label != label) continue;
 

	
 
						_gted[engine].cargo_allowed = drm.cargo_allowed;
 
						_gted[engine].cargo_disallowed = drm.cargo_disallowed;
 
@@ -9446,17 +9480,17 @@ static void FinaliseIndustriesArray()
 

	
 
		/* Apply default cargo translation map for unset cargo slots */
 
		for (uint i = 0; i < lengthof(indsp.produced_cargo); ++i) {
 
			if (!IsValidCargoID(indsp.produced_cargo[i])) indsp.produced_cargo[i] = GetCargoIDByLabel(indsp.produced_cargo_label[i]);
 
			if (!IsValidCargoID(indsp.produced_cargo[i])) indsp.produced_cargo[i] = GetCargoIDByLabel(GetActiveCargoLabel(indsp.produced_cargo_label[i]));
 
		}
 
		for (uint i = 0; i < lengthof(indsp.accepts_cargo); ++i) {
 
			if (!IsValidCargoID(indsp.accepts_cargo[i])) indsp.accepts_cargo[i] = GetCargoIDByLabel(indsp.accepts_cargo_label[i]);
 
			if (!IsValidCargoID(indsp.accepts_cargo[i])) indsp.accepts_cargo[i] = GetCargoIDByLabel(GetActiveCargoLabel(indsp.accepts_cargo_label[i]));
 
		}
 
	}
 

	
 
	for (auto &indtsp : _industry_tile_specs) {
 
		/* Apply default cargo translation map for unset cargo slots */
 
		for (uint i = 0; i < lengthof(indtsp.accepts_cargo); ++i) {
 
			if (!IsValidCargoID(indtsp.accepts_cargo[i])) indtsp.accepts_cargo[i] = GetCargoIDByLabel(indtsp.accepts_cargo_label[i]);
 
			if (!IsValidCargoID(indtsp.accepts_cargo[i])) indtsp.accepts_cargo[i] = GetCargoIDByLabel(GetActiveCargoLabel(indtsp.accepts_cargo_label[i]));
 
		}
 
	}
 
}
src/table/build_industry.h
Show inline comments
 
@@ -1211,7 +1211,7 @@ static const IndustrySpec _origin_indust
 
	   208,  0xFFFFFFFF,                       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,
 
	   MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE,       256, CT_STEEL,    256,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_CHOPPER_ATTACKS,
 
	   STR_INDUSTRY_NAME_FACTORY,                       STR_NEWS_INDUSTRY_CONSTRUCTION,
 
@@ -1240,7 +1240,7 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_farm,                       3, _farm_sounds,
 
	   250,  0xD9999999,                       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,
 
	   MCT_GRAIN_WHEAT_MAIZE,      10, MCT_LIVESTOCK_FRUIT,    10, 5,
 
	   CT_INVALID,   256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TEMPERATE | 1 << LT_ARCTIC,
 
	   INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
 
@@ -1270,8 +1270,8 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_bank,                       0, nullptr,
 
	   255,  0xA6666666,                       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,   0, CT_INVALID,       0, CT_INVALID,     0,
 
	   MCT_VALUABLES_GOLD_DIAMONDS,   6, CT_INVALID,       0, 5,
 
	   MCT_VALUABLES_GOLD_DIAMONDS,   0, CT_INVALID,       0, CT_INVALID,     0,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_TEMPERATE,
 
	   INDUSTRYBEH_TOWN1200_MORE,
 
	   STR_INDUSTRY_NAME_BANK,                          STR_NEWS_INDUSTRY_CONSTRUCTION,
 
@@ -1281,7 +1281,7 @@ static const IndustrySpec _origin_indust
 
	   206,  0xFFFFFFFF,                       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,     256, CT_MAIZE,       256, CT_INVALID,   256,
 
	   MCT_LIVESTOCK_FRUIT,     256, MCT_GRAIN_WHEAT_MAIZE,       256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_PROCESSING,                1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
	   STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT,         STR_NEWS_INDUSTRY_CONSTRUCTION,
 
@@ -1300,7 +1300,7 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_gold_mine,                  0, nullptr,
 
	   208,  0x99999999,                       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,
 
	   MCT_VALUABLES_GOLD_DIAMONDS,        7, CT_INVALID,       0, 5,
 
	   CT_INVALID,   256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_ARCTIC,
 
	   INDUSTRYBEH_NONE,
 
@@ -1311,7 +1311,7 @@ static const IndustrySpec _origin_indust
 
	   151,  0xA6666666,                       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,      256, CT_INVALID,     256, CT_INVALID,   256,
 
	   MCT_VALUABLES_GOLD_DIAMONDS,      256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_BLACK_HOLE,                1 << LT_ARCTIC | 1 << LT_TROPIC,
 
	   INDUSTRYBEH_ONLY_INTOWN,
 
	   STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC,                          STR_NEWS_INDUSTRY_CONSTRUCTION,
 
@@ -1320,7 +1320,7 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_diamond_mine,               0, nullptr,
 
	   213,  0x99999999,                       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,
 
	   MCT_VALUABLES_GOLD_DIAMONDS,    7, CT_INVALID,       0, 5,
 
	   CT_INVALID,   256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_EXTRACTIVE,                1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
@@ -1340,7 +1340,7 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_fruit_plantation,           0, nullptr,
 
	   225,  0xBFFFFFFF,                       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,
 
	   MCT_LIVESTOCK_FRUIT,      10, CT_INVALID,       0, 15,
 
	   CT_INVALID,   256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TROPIC,
 
	   INDUSTRYBEH_NONE,
 
@@ -1390,7 +1390,7 @@ static const IndustrySpec _origin_indust
 
	MI(_tile_table_farm2,                      0, nullptr,
 
	   250,  0xD9999999,                       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,
 
	   MCT_GRAIN_WHEAT_MAIZE,      11, CT_INVALID,       0, 5,
 
	   CT_INVALID,   256, CT_INVALID,     256, CT_INVALID,   256,
 
	   INDUSTRYLIFE_ORGANIC,                   1 << LT_TROPIC,
 
	   INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT,
 
@@ -1594,10 +1594,10 @@ static const IndustryTileSpec _origin_in
 
	MT(0, CT_INVALID,      0, CT_INVALID,      0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Factory temperate */
 
	MT(8, CT_GRAIN,        8, CT_LIVESTOCK,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_GRAIN,        8, CT_LIVESTOCK,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_GRAIN,        8, CT_LIVESTOCK,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_GRAIN,        8, CT_LIVESTOCK,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    8, CT_STEEL,       SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Printing works */
 
	MT(0, CT_INVALID,      8, CT_PAPER,        0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
@@ -1621,14 +1621,14 @@ static const IndustryTileSpec _origin_in
 
	MT(1, CT_PASSENGERS,   8, CT_IRON_ORE,     0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Bank temperate*/
 
	MT(1, CT_PASSENGERS,   8, CT_VALUABLES,    0, CT_INVALID,     SLOPE_E,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(1, CT_PASSENGERS,   8, CT_VALUABLES,    0, CT_INVALID,     SLOPE_S,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(1, CT_PASSENGERS,   8, MCT_VALUABLES_GOLD_DIAMONDS,    0, CT_INVALID,     SLOPE_E,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(1, CT_PASSENGERS,   8, MCT_VALUABLES_GOLD_DIAMONDS,    0, CT_INVALID,     SLOPE_S,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
 
	MT(8, CT_MAIZE,        8, CT_LIVESTOCK,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_MAIZE,        8, CT_LIVESTOCK,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_MAIZE,        8, CT_LIVESTOCK,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, CT_MAIZE,        8, CT_LIVESTOCK,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(8, MCT_GRAIN_WHEAT_MAIZE,        8, MCT_LIVESTOCK_FRUIT,    0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Paper mill */
 
	MT(0, CT_INVALID,      8, CT_WOOD,         0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
@@ -1660,8 +1660,8 @@ static const IndustryTileSpec _origin_in
 
	MT(0, CT_INVALID,      0, CT_INVALID,      0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true),
 

	
 
	/* Bank Sub Arctic */
 
	MT(0, CT_INVALID,      8, CT_GOLD,         0, CT_INVALID,     SLOPE_E,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(0, CT_INVALID,      8, CT_GOLD,         0, CT_INVALID,     SLOPE_S,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(0, CT_INVALID,      8, MCT_VALUABLES_GOLD_DIAMONDS,         0, CT_INVALID,     SLOPE_E,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 
	MT(0, CT_INVALID,      8, MCT_VALUABLES_GOLD_DIAMONDS,         0, CT_INVALID,     SLOPE_S,     INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
 

	
 
	/* Diamond mine */
 
	MT(0, CT_INVALID,      0, CT_INVALID,      0, CT_INVALID,     SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
src/table/engines.h
Show inline comments
 
@@ -135,11 +135,11 @@ static const EngineInfo _orig_engine_inf
 
	MW(  1827,  20,  20,  50, CT_OIL         , T|A|S  ), //  30 Oil Tanker
 
	MW(  1827,  20,  20,  50, CT_LIVESTOCK   , T|A    ), //  31 Livestock Van
 
	MW(  1827,  20,  20,  50, CT_GOODS       , T|A|S  ), //  32 Goods Van
 
	MW(  1827,  20,  20,  50, CT_GRAIN       , T|A|S  ), //  33 Grain Hopper
 
	MW(  1827,  20,  20,  50, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), //  33 Grain Hopper
 
	MW(  1827,  20,  20,  50, CT_WOOD        , T|A|S  ), //  34 Wood Truck
 
	MW(  1827,  20,  20,  50, CT_IRON_ORE    , T      ), //  35 Iron Ore Hopper
 
	MW(  1827,  20,  20,  50, CT_STEEL       , T      ), //  36 Steel Truck
 
	MW(  1827,  20,  20,  50, CT_VALUABLES   , T|A|S  ), //  37 Armoured Van
 
	MW(  1827,  20,  20,  50, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), //  37 Armoured Van
 
	MW(  1827,  20,  20,  50, CT_FOOD        ,   A|S  ), //  38 Food Van
 
	MW(  1827,  20,  20,  50, CT_PAPER       ,   A    ), //  39 Paper Truck
 
	MW(  1827,  20,  20,  50, CT_COPPER_ORE  ,     S  ), //  40 Copper Ore Hopper
 
@@ -165,11 +165,11 @@ static const EngineInfo _orig_engine_inf
 
	MW(  1827,  20,  20,  50, CT_OIL         , T|A|S  ), //  60 Oil Tanker
 
	MW(  1827,  20,  20,  50, CT_LIVESTOCK   , T|A    ), //  61 Livestock Van
 
	MW(  1827,  20,  20,  50, CT_GOODS       , T|A|S  ), //  62 Goods Van
 
	MW(  1827,  20,  20,  50, CT_GRAIN       , T|A|S  ), //  63 Grain Hopper
 
	MW(  1827,  20,  20,  50, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), //  63 Grain Hopper
 
	MW(  1827,  20,  20,  50, CT_WOOD        , T|A|S  ), //  64 Wood Truck
 
	MW(  1827,  20,  20,  50, CT_IRON_ORE    , T      ), //  65 Iron Ore Hopper
 
	MW(  1827,  20,  20,  50, CT_STEEL       , T      ), //  66 Steel Truck
 
	MW(  1827,  20,  20,  50, CT_VALUABLES   , T|A|S  ), //  67 Armoured Van
 
	MW(  1827,  20,  20,  50, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), //  67 Armoured Van
 
	MW(  1827,  20,  20,  50, CT_FOOD        ,   A|S  ), //  68 Food Van
 
	MW(  1827,  20,  20,  50, CT_PAPER       ,   A    ), //  69 Paper Truck
 
	MW(  1827,  20,  20,  50, CT_COPPER_ORE  ,     S  ), //  70 Copper Ore Hopper
 
@@ -197,11 +197,11 @@ static const EngineInfo _orig_engine_inf
 
	MW(  1827,  20,  20,  50, CT_OIL         , T|A|S  ), //  92 Oil Tanker
 
	MW(  1827,  20,  20,  50, CT_LIVESTOCK   , T|A    ), //  93 Livestock Van
 
	MW(  1827,  20,  20,  50, CT_GOODS       , T|A|S  ), //  94 Goods Van
 
	MW(  1827,  20,  20,  50, CT_GRAIN       , T|A|S  ), //  95 Grain Hopper
 
	MW(  1827,  20,  20,  50, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), //  95 Grain Hopper
 
	MW(  1827,  20,  20,  50, CT_WOOD        , T|A|S  ), //  96 Wood Truck
 
	MW(  1827,  20,  20,  50, CT_IRON_ORE    , T      ), //  97 Iron Ore Hopper
 
	MW(  1827,  20,  20,  50, CT_STEEL       , T      ), //  98 Steel Truck
 
	MW(  1827,  20,  20,  50, CT_VALUABLES   , T|A|S  ), //  99 Armoured Van
 
	MW(  1827,  20,  20,  50, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), //  99 Armoured Van
 
	MW(  1827,  20,  20,  50, CT_FOOD        ,   A|S  ), // 100 Food Van
 
	MW(  1827,  20,  20,  50, CT_PAPER       ,   A    ), // 101 Paper Truck
 
	MW(  1827,  20,  20,  50, CT_COPPER_ORE  ,     S  ), // 102 Copper Ore Hopper
 
@@ -243,9 +243,9 @@ static const EngineInfo _orig_engine_inf
 
	MR(  5479,  20,  15,  55, CT_GOODS       , T|A|S  ), // 138 Balogh Goods Truck
 
	MR( 19724,  20,  15,  55, CT_GOODS       , T|A|S  ), // 139 Craighead Goods Truck
 
	MR( 31047,  20,  15,  85, CT_GOODS       , T|A|S  ), // 140 Goss Goods Truck
 
	MR(  5479,  20,  15,  55, CT_GRAIN       , T|A|S  ), // 141 Hereford Grain Truck
 
	MR( 21185,  20,  15,  55, CT_GRAIN       , T|A|S  ), // 142 Thomas Grain Truck
 
	MR( 32873,  20,  15,  85, CT_GRAIN       , T|A|S  ), // 143 Goss Grain Truck
 
	MR(  5479,  20,  15,  55, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), // 141 Hereford Grain Truck
 
	MR( 21185,  20,  15,  55, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), // 142 Thomas Grain Truck
 
	MR( 32873,  20,  15,  85, MCT_GRAIN_WHEAT_MAIZE, T|A|S  ), // 143 Goss Grain Truck
 
	MR(  5479,  20,  15,  55, CT_WOOD        , T|A|S  ), // 144 Witcombe Wood Truck
 
	MR( 19724,  20,  15,  55, CT_WOOD        , T|A|S  ), // 145 Foster Wood Truck
 
	MR( 35430,  20,  15,  85, CT_WOOD        , T|A|S  ), // 146 Moreland Wood Truck
 
@@ -255,9 +255,9 @@ static const EngineInfo _orig_engine_inf
 
	MR(  5479,  20,  15,  55, CT_STEEL       , T      ), // 150 Balogh Steel Truck
 
	MR( 21185,  20,  15,  55, CT_STEEL       , T      ), // 151 Uhl Steel Truck
 
	MR( 31777,  20,  15,  85, CT_STEEL       , T      ), // 152 Kelling Steel Truck
 
	MR(  5479,  20,  15,  55, CT_VALUABLES   , T|A|S  ), // 153 Balogh Armoured Truck
 
	MR( 22281,  20,  15,  55, CT_VALUABLES   , T|A|S  ), // 154 Uhl Armoured Truck
 
	MR( 33603,  20,  15,  85, CT_VALUABLES   , T|A|S  ), // 155 Foster Armoured Truck
 
	MR(  5479,  20,  15,  55, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), // 153 Balogh Armoured Truck
 
	MR( 22281,  20,  15,  55, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), // 154 Uhl Armoured Truck
 
	MR( 33603,  20,  15,  85, MCT_VALUABLES_GOLD_DIAMONDS, T|A|S  ), // 155 Foster Armoured Truck
 
	MR(  5479,  20,  15,  55, CT_FOOD        ,   A|S  ), // 156 Foster Food Van
 
	MR( 18628,  20,  15,  55, CT_FOOD        ,   A|S  ), // 157 Perry Food Van
 
	MR( 30681,  20,  15,  85, CT_FOOD        ,   A|S  ), // 158 Chippy Food Van
0 comments (0 inline, 0 general)