Split date types into calendar and economy dates

See: 735abfe1
This commit is contained in:
Jonathan G Rennison
2024-02-13 21:34:09 +00:00
parent fad5ee56e7
commit 7ce06e22b8
141 changed files with 1325 additions and 1082 deletions

View File

@@ -394,21 +394,21 @@ static const Direction _default_airports_rotation[] = {
/* The helidepot and helistation have ATP_TTDP_SMALL because they are at ground level */
extern const AirportSpec _origin_airport_specs[] = {
AS(country, 4, 3, 0, 1959, 4, 3, 7, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_SMALL, SPR_AIRPORT_PREVIEW_SMALL),
AS(city, 6, 6, 1955, MAX_YEAR, 5, 5, 24, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_CITY, SPR_AIRPORT_PREVIEW_LARGE),
AS_ND(heliport, 1, 1, 1963, MAX_YEAR, 4, 1, 4, ATP_TTDP_HELIPORT, APC_HELIPORT, STR_AIRPORT_HELIPORT, SPR_AIRPORT_PREVIEW_HELIPORT),
AS(metropolitan, 6, 6, 1980, MAX_YEAR, 6, 8, 28, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_METRO, SPR_AIRPORT_PREVIEW_METROPOLITAN),
AS(international, 7, 7, 1990, MAX_YEAR, 8, 17, 42, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERNATIONAL, SPR_AIRPORT_PREVIEW_INTERNATIONAL),
AS(commuter, 5, 4, 1983, MAX_YEAR, 4, 4, 20, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_COMMUTER, SPR_AIRPORT_PREVIEW_COMMUTER),
AS(helidepot, 2, 2, 1976, MAX_YEAR, 4, 2, 7, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT, SPR_AIRPORT_PREVIEW_HELIDEPOT),
AS(intercontinental, 9, 11, 2002, MAX_YEAR, 10, 25, 72, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL, SPR_AIRPORT_PREVIEW_INTERCONTINENTAL),
AS(helistation, 4, 2, 1980, MAX_YEAR, 4, 3, 14, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION, SPR_AIRPORT_PREVIEW_HELISTATION),
AS(country, 4, 3, 0, 1959, 4, 3, 7, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_SMALL, SPR_AIRPORT_PREVIEW_SMALL),
AS(city, 6, 6, 1955, CalTime::MAX_YEAR, 5, 5, 24, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_CITY, SPR_AIRPORT_PREVIEW_LARGE),
AS_ND(heliport, 1, 1, 1963, CalTime::MAX_YEAR, 4, 1, 4, ATP_TTDP_HELIPORT, APC_HELIPORT, STR_AIRPORT_HELIPORT, SPR_AIRPORT_PREVIEW_HELIPORT),
AS(metropolitan, 6, 6, 1980, CalTime::MAX_YEAR, 6, 8, 28, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_METRO, SPR_AIRPORT_PREVIEW_METROPOLITAN),
AS(international, 7, 7, 1990, CalTime::MAX_YEAR, 8, 17, 42, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERNATIONAL, SPR_AIRPORT_PREVIEW_INTERNATIONAL),
AS(commuter, 5, 4, 1983, CalTime::MAX_YEAR, 4, 4, 20, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_COMMUTER, SPR_AIRPORT_PREVIEW_COMMUTER),
AS(helidepot, 2, 2, 1976, CalTime::MAX_YEAR, 4, 2, 7, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT, SPR_AIRPORT_PREVIEW_HELIDEPOT),
AS(intercontinental, 9, 11, 2002, CalTime::MAX_YEAR, 10, 25, 72, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL, SPR_AIRPORT_PREVIEW_INTERCONTINENTAL),
AS(helistation, 4, 2, 1980, CalTime::MAX_YEAR, 4, 3, 14, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION, SPR_AIRPORT_PREVIEW_HELISTATION),
AS_GENERIC(&_airportfta_oilrig, nullptr, _default_airports_rotation, 0, nullptr, 0, 1, 1, 0, 4, 0, 0, 0, ATP_TTDP_OILRIG, APC_HELIPORT, STR_NULL, 0, false),
};
static_assert(NEW_AIRPORT_OFFSET == lengthof(_origin_airport_specs));
const AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, nullptr, _default_airports_rotation, 0, nullptr, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false);
const AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, nullptr, _default_airports_rotation, 0, nullptr, 0, 0, 0, 0, 0, CalTime::MIN_YEAR, CalTime::MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false);
#undef AS
#undef AS_ND

View File

@@ -798,9 +798,9 @@ const BridgeSpec _orig_bridge[] = {
MBR(2010, 2, 0xFFFF, 510, 608, 0xA28, PALETTE_TO_STRUCT_CONCRETE,
STR_BRIDGE_TUBULAR_SILICON, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL, CANT_PILLARS),
MBR(MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
MBR(MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
MBR(MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
MBR(CalTime::MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
MBR(CalTime::MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
MBR(CalTime::MAX_YEAR + 1, 1, 0, 1, 0xFFFF, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_EMPTY, STR_EMPTY, STR_EMPTY, ALL_PILLARS),
};
#undef CANT_PILLARS

View File

@@ -24,7 +24,7 @@
* @param f Bitmask of the climates
* @note the 5 between b and f is the load amount
*/
#define MT(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MT(a, b, c, d, e, f) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/**
* Writes the properties of a multiple-unit train into the EngineInfo struct.
@@ -37,7 +37,7 @@
* @param f Bitmask of the climates
* @note the 5 between b and f is the load amount
*/
#define MM(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_IS_MU, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MM(a, b, c, d, e, f) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_IS_MU, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/**
* Writes the properties of a train carriage into the EngineInfo struct.
@@ -50,7 +50,7 @@
* @see MT
* @note the 5 between b and f is the load amount
*/
#define MW(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MW(a, b, c, d, e, f) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/**
* Writes the properties of a road vehicle into the EngineInfo struct.
@@ -63,7 +63,7 @@
* @param f Bitmask of the climates
* @note the 5 between b and f is the load amount
*/
#define MR(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MR(a, b, c, d, e, f) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/**
* Writes the properties of a ship into the EngineInfo struct.
@@ -75,7 +75,7 @@
* @param f Bitmask of the climates
* @note the 10 between b and f is the load amount
*/
#define MS(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MS(a, b, c, d, e, f) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/**
* Writes the properties of an aeroplane into the EngineInfo struct.
@@ -86,7 +86,7 @@
* @param e Bitmask of the climates
* @note the 20 between b and e is the load amount
*/
#define MA(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
#define MA(a, b, c, d, e) { CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None }
/* Climates
* T = Temperate

View File

@@ -578,11 +578,11 @@ class NIHVehicle : public NIHelper {
caps++;
}
}
YearMonthDay ymd = ConvertDateToYMD(e->intro_date);
YearMonthDay base_ymd = ConvertDateToYMD(e->info.base_intro);
CalTime::YearMonthDay ymd = CalTime::ConvertDateToYMD(e->intro_date);
CalTime::YearMonthDay base_ymd = CalTime::ConvertDateToYMD(e->info.base_intro);
seprintf(buffer, lastof(buffer), " Intro: %4i-%02i-%02i (base: %4i-%02i-%02i), Age: %u, Base life: %u, Durations: %u %u %u (sum: %u)",
ymd.year, ymd.month + 1, ymd.day, base_ymd.year, base_ymd.month + 1, base_ymd.day,
e->age, e->info.base_life, e->duration_phase_1, e->duration_phase_2, e->duration_phase_3,
ymd.year.base(), ymd.month + 1, ymd.day, base_ymd.year.base(), base_ymd.month + 1, base_ymd.day,
e->age, e->info.base_life.base(), e->duration_phase_1, e->duration_phase_2, e->duration_phase_3,
e->duration_phase_1 + e->duration_phase_2 + e->duration_phase_3);
output.print(buffer);
seprintf(buffer, lastof(buffer), " Reliability: %u, spd_dec: %u, start: %u, max: %u, final: %u",
@@ -1571,13 +1571,13 @@ class NIHObject : public NIHelper {
output.print(buffer);
{
YearMonthDay ymd = ConvertDateToYMD(spec->introduction_date);
CalTime::YearMonthDay ymd = CalTime::ConvertDateToYMD(spec->introduction_date);
char *b = buffer + seprintf(buffer, lastof(buffer), " intro: %4i-%02i-%02i",
ymd.year, ymd.month + 1, ymd.day);
if (spec->end_of_life_date < MAX_DATE) {
ymd = ConvertDateToYMD(spec->end_of_life_date);
ymd.year.base(), ymd.month + 1, ymd.day);
if (spec->end_of_life_date < CalTime::MAX_DATE) {
ymd = CalTime::ConvertDateToYMD(spec->end_of_life_date);
seprintf(b, lastof(buffer), ", end of life: %4i-%02i-%02i",
ymd.year, ymd.month + 1, ymd.day);
ymd.year.base(), ymd.month + 1, ymd.day);
}
output.print(buffer);
}
@@ -1721,8 +1721,8 @@ class NIHRailType : public NIHelper {
seprintf(buffer, lastof(buffer), " Cost multiplier: %u/8, Maintenance multiplier: %u/8", info->cost_multiplier, info->maintenance_multiplier);
output.print(buffer);
YearMonthDay ymd = ConvertDateToYMD(info->introduction_date);
seprintf(buffer, lastof(buffer), " Introduction date: %4i-%02i-%02i", ymd.year, ymd.month + 1, ymd.day);
CalTime::YearMonthDay ymd = CalTime::ConvertDateToYMD(info->introduction_date);
seprintf(buffer, lastof(buffer), " Introduction date: %4i-%02i-%02i", ymd.year.base(), ymd.month + 1, ymd.day);
output.print(buffer);
seprintf(buffer, lastof(buffer), " Intro required railtypes: 0x" OTTD_PRINTFHEX64, info->introduction_required_railtypes);
output.print(buffer);

View File

@@ -121,7 +121,7 @@ static const DrawTileSprites _object_hq[] = {
#undef TILE_SPRITE_LINE
#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), {0, 0, 0, 0}, INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, MAX_DATE + 1, flags, OBJECT_CTRL_FLAG_NONE, {0, 0, 0, 0}, 0, height, 1, gen_amount, OVMT_DEFAULT, 0 }
#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), {0, 0, 0, 0}, INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, CalTime::MAX_DATE + 1, flags, OBJECT_CTRL_FLAG_NONE, {0, 0, 0, 0}, 0, height, 1, gen_amount, OVMT_DEFAULT, 0 }
/* Climates
* T = Temperate

View File

@@ -108,7 +108,7 @@ static const RailTypeInfo _original_railtypes[] = {
0x0A,
/* introduction date */
INVALID_DATE,
CalTime::INVALID_DATE,
/* railtypes required for this to be introduced */
RAILTYPES_NONE,
@@ -218,7 +218,7 @@ static const RailTypeInfo _original_railtypes[] = {
0x0A,
/* introduction date */
INVALID_DATE,
CalTime::INVALID_DATE,
/* railtypes required for this to be introduced */
RAILTYPES_NONE,
@@ -324,7 +324,7 @@ static const RailTypeInfo _original_railtypes[] = {
0x0A,
/* introduction date */
INVALID_DATE,
CalTime::INVALID_DATE,
/* railtypes required for this to be introduced */
RAILTYPES_NONE,
@@ -430,7 +430,7 @@ static const RailTypeInfo _original_railtypes[] = {
0x0A,
/* introduction date */
INVALID_DATE,
CalTime::INVALID_DATE,
/* railtypes required for this to be introduced */
RAILTYPES_NONE,

View File

@@ -88,7 +88,7 @@ static const RoadTypeInfo _original_roadtypes[] = {
0x01,
/* introduction date */
MIN_DATE,
CalTime::MIN_DATE,
/* roadtypes required for this to be introduced */
ROADTYPES_NONE,
@@ -174,7 +174,7 @@ static const RoadTypeInfo _original_roadtypes[] = {
0x01,
/* introduction date */
INVALID_DATE,
CalTime::INVALID_DATE,
/* roadtypes required for this to be introduced */
ROADTYPES_NONE,

View File

@@ -51,8 +51,8 @@ cat = SC_BASIC
var = to_euro
type = SLE_INT32
def = 0
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
[SDT_SSTR]
var = prefix

View File

@@ -432,8 +432,8 @@ var = vehicle.no_expire_vehicles_after
type = SLE_INT32
flags = SF_NO_NETWORK | SF_GUI_0_IS_SPECIAL | SF_PATCH
def = 0
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER
strhelp = STR_CONFIG_SETTING_NO_EXPIRE_VEHICLES_AFTER_HELPTEXT
@@ -446,8 +446,8 @@ var = vehicle.no_introduce_vehicles_after
type = SLE_INT32
flags = SF_NO_NETWORK | SF_GUI_0_IS_SPECIAL | SF_PATCH
def = 0
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_NO_INTRODUCE_VEHICLES_AFTER
strhelp = STR_CONFIG_SETTING_NO_INTRODUCE_VEHICLES_AFTER_HELPTEXT

View File

@@ -1037,8 +1037,8 @@ var = gui.coloured_news_year
type = SLE_INT32
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = 2000
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR
strhelp = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT
@@ -1092,8 +1092,8 @@ var = gui.semaphore_build_before
type = SLE_INT32
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = 1950
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE
strhelp = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT

View File

@@ -239,8 +239,8 @@ var = network.restart_game_year
type = SLE_INT32
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
def = 0
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
[SDTC_VAR]

View File

@@ -161,9 +161,9 @@ cat = SC_BASIC
[SDT_VAR]
var = game_creation.starting_year
type = SLE_INT32
def = DEF_START_YEAR
min = MIN_YEAR
max = MAX_YEAR
def = CalTime::DEF_START_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_STARTING_YEAR
strval = STR_JUST_INT
@@ -174,9 +174,9 @@ var = game_creation.ending_year
type = SLE_INT32
from = SLV_ENDING_YEAR
flags = SF_GUI_0_IS_SPECIAL
def = DEF_END_YEAR
min = MIN_YEAR
max = MAX_YEAR - 1
def = CalTime::DEF_END_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR - 1
interval = 1
str = STR_CONFIG_SETTING_ENDING_YEAR
strhelp = STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT
@@ -849,8 +849,8 @@ var = construction.no_expire_objects_after
type = SLE_INT32
flags = SF_GUI_0_IS_SPECIAL | SF_PATCH
def = 0
min = MIN_YEAR
max = MAX_YEAR
min = CalTime::MIN_YEAR
max = CalTime::MAX_YEAR
interval = 1
str = STR_CONFIG_SETTING_NO_EXPIRE_OBJECTS_AFTER
strhelp = STR_CONFIG_SETTING_NO_EXPIRE_OBJECTS_AFTER_HELPTEXT

View File

@@ -1809,6 +1809,7 @@ static_assert(lengthof(_town_draw_tile_data) == (NEW_HOUSE_OFFSET) * 4 * 4);
* @param cg3 3rd CargoID available
* @see HouseSpec
*/
#define CMAXYEAR CalTime::MAX_YEAR
#define MS(mnd, mxd, p, rc, bn, rr, mg, ca1, ca2, ca3, bf, ba, cg1, cg2, cg3) \
{mnd, mxd, p, rc, bn, rr, mg, \
{ca1, ca2, ca3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
@@ -1832,59 +1833,59 @@ static const HouseSpec _original_house_specs[] = {
* +-cargoID accepted | | | | | | | |
* | | | | | | | | | | |
*/
MS(1963, MAX_YEAR, 187, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 70, 8, 3, 4,
MS(1963, CMAXYEAR, 187, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 70, 8, 3, 4,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 00
MS(1957, MAX_YEAR, 85, 140, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1, 130, 55, 8, 3, 4,
MS(1957, CMAXYEAR, 85, 140, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1, 130, 55, 8, 3, 4,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 01
MS(1968, MAX_YEAR, 40, 100, STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1, 90, 20, 8, 3, 1,
MS(1968, CMAXYEAR, 40, 100, STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1, 90, 20, 8, 3, 1,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 02
MS( 0, MAX_YEAR, 5, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
MS( 0, CMAXYEAR, 5, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
BUILDING_IS_CHURCH | TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 03
MS(1975, MAX_YEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6,
MS(1975, CMAXYEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6,
BUILDING_IS_ANIMATED | TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 04
MS(1975, MAX_YEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6,
MS(1975, CMAXYEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6,
BUILDING_IS_ANIMATED | TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 05
MS( 0, MAX_YEAR, 30, 80, STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1, 80, 12, 4, 1, 0,
MS( 0, CMAXYEAR, 30, 80, STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1, 80, 12, 4, 1, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 06
MS(1959, MAX_YEAR, 140, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2,
MS(1959, CMAXYEAR, 140, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2,
TILE_SIZE_1x2,
HZ_TEMP | HZ_ZON5 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 07
MS(1959, MAX_YEAR, 0, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2,
MS(1959, CMAXYEAR, 0, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 08
MS(1945, MAX_YEAR, 0, 65, STR_TOWN_BUILDING_NAME_STATUE_1, 40, 0, 2, 0, 0,
MS(1945, CMAXYEAR, 0, 65, STR_TOWN_BUILDING_NAME_STATUE_1, 40, 0, 2, 0, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 09
MS(1945, MAX_YEAR, 0, 65, STR_TOWN_BUILDING_NAME_FOUNTAIN_1, 40, 0, 2, 0, 0,
MS(1945, CMAXYEAR, 0, 65, STR_TOWN_BUILDING_NAME_FOUNTAIN_1, 40, 0, 2, 0, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0A
MS( 0, MAX_YEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0,
MS( 0, CMAXYEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0B
MS(1935, MAX_YEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0,
MS(1935, CMAXYEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0C
MS(1951, MAX_YEAR, 150, 130, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2, 110, 65, 8, 2, 4,
MS(1951, CMAXYEAR, 150, 130, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2, 110, 65, 8, 2, 4,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0D
@@ -1900,31 +1901,31 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 10
MS(1977, MAX_YEAR, 130, 200, STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1, 150, 50, 10, 3, 6,
MS(1977, CMAXYEAR, 130, 200, STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1, 150, 50, 10, 3, 6,
TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 11
MS(1983, MAX_YEAR, 6, 145, STR_TOWN_BUILDING_NAME_WAREHOUSE_1, 110, 10, 6, 3, 8,
MS(1983, CMAXYEAR, 6, 145, STR_TOWN_BUILDING_NAME_WAREHOUSE_1, 110, 10, 6, 3, 8,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 12
MS(1985, MAX_YEAR, 110, 155, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3, 110, 55, 6, 2, 6,
MS(1985, CMAXYEAR, 110, 155, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3, 110, 55, 6, 2, 6,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 13
MS( 0, MAX_YEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
MS( 0, CMAXYEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
BUILDING_IS_STADIUM | TILE_SIZE_2x2,
HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 14
MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
MS( 0, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 15
MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
MS( 0, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 16
MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
MS( 0, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 17
@@ -1936,15 +1937,15 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 19
MS(1931, MAX_YEAR, 13, 71, STR_TOWN_BUILDING_NAME_HOUSES_1, 75, 8, 3, 1, 0,
MS(1931, CMAXYEAR, 13, 71, STR_TOWN_BUILDING_NAME_HOUSES_1, 75, 8, 3, 1, 0,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1A
MS(1935, MAX_YEAR, 100, 135, STR_TOWN_BUILDING_NAME_FLATS_1, 100, 35, 7, 2, 2,
MS(1935, CMAXYEAR, 100, 135, STR_TOWN_BUILDING_NAME_FLATS_1, 100, 35, 7, 2, 2,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1B
MS(1963, MAX_YEAR, 170, 145, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2, 170, 50, 8, 3, 3,
MS(1963, CMAXYEAR, 170, 145, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2, 170, 50, 8, 3, 3,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1C
@@ -1952,31 +1953,31 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1D
MS(1973, MAX_YEAR, 180, 155, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3, 180, 64, 8, 3, 3,
MS(1973, CMAXYEAR, 180, 155, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3, 180, 64, 8, 3, 3,
TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1E
MS( 0, MAX_YEAR, 35, 220, STR_TOWN_BUILDING_NAME_THEATER_1, 230, 23, 8, 2, 2,
MS( 0, CMAXYEAR, 35, 220, STR_TOWN_BUILDING_NAME_THEATER_1, 230, 23, 8, 2, 2,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1F
MS(1958, MAX_YEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
MS(1958, CMAXYEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
BUILDING_IS_STADIUM | TILE_SIZE_2x2,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 20
MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
MS(1958, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 21
MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
MS(1958, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 22
MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
MS(1958, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 23
MS(2000, MAX_YEAR, 140, 170, STR_TOWN_BUILDING_NAME_OFFICES_1, 250, 65, 8, 3, 2,
MS(2000, CMAXYEAR, 140, 170, STR_TOWN_BUILDING_NAME_OFFICES_1, 250, 65, 8, 3, 2,
TILE_SIZE_1x1,
HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 24
@@ -1988,39 +1989,39 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 26
MS(1945, MAX_YEAR, 35, 210, STR_TOWN_BUILDING_NAME_CINEMA_1, 230, 23, 8, 2, 2,
MS(1945, CMAXYEAR, 35, 210, STR_TOWN_BUILDING_NAME_CINEMA_1, 230, 23, 8, 2, 2,
TILE_SIZE_1x1,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 27
MS(1983, MAX_YEAR, 180, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
MS(1983, CMAXYEAR, 180, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
TILE_SIZE_2x2,
HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 |HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 28
MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
MS(1983, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 29
MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
MS(1983, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 2A
MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
MS(1983, CMAXYEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 2B
MS( 0, MAX_YEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2,
MS( 0, CMAXYEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2C
MS( 0, MAX_YEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2,
MS( 0, CMAXYEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2D
MS( 0, MAX_YEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2E
MS( 0, MAX_YEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2F
@@ -2032,59 +2033,59 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 31
MS(1966, MAX_YEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4,
MS(1966, CMAXYEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 32
MS(1966, MAX_YEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4,
MS(1966, CMAXYEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 33
MS(1970, MAX_YEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4,
MS(1970, CMAXYEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 34
MS(1970, MAX_YEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4,
MS(1970, CMAXYEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 35
MS(1974, MAX_YEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5,
MS(1974, CMAXYEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 36
MS(1974, MAX_YEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5,
MS(1974, CMAXYEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 37
MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1,
MS( 0, CMAXYEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 38
MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1,
MS( 0, CMAXYEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 39
MS( 0, MAX_YEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1,
MS( 0, CMAXYEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3A
MS( 0, MAX_YEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1,
MS( 0, CMAXYEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3B
MS( 0, MAX_YEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
MS( 0, CMAXYEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
BUILDING_IS_CHURCH | TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 3C
MS( 0, MAX_YEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
MS( 0, CMAXYEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0,
BUILDING_IS_CHURCH | TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 3D
MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1,
MS( 0, CMAXYEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3E
MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1,
MS( 0, CMAXYEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3F
@@ -2096,184 +2097,185 @@ static const HouseSpec _original_house_specs[] = {
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 41
MS(1972, MAX_YEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3,
MS(1972, CMAXYEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3,
TILE_SIZE_1x2,
HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 42
MS(1972, MAX_YEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2,
MS(1972, CMAXYEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 43
MS(1972, MAX_YEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3,
MS(1972, CMAXYEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3,
TILE_SIZE_1x2,
HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 44
MS(1972, MAX_YEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2,
MS(1972, CMAXYEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 45
MS(1963, MAX_YEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3,
MS(1963, CMAXYEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 46
MS(1963, MAX_YEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3,
MS(1963, CMAXYEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 47
MS(1978, MAX_YEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4,
MS(1978, CMAXYEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 48
MS(1978, MAX_YEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4,
MS(1978, CMAXYEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4,
TILE_SIZE_1x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 49
MS(1967, MAX_YEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
MS(1967, CMAXYEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
TILE_SIZE_2x1,
HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4A
MS(1967, MAX_YEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
MS(1967, CMAXYEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4B
MS(1967, MAX_YEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
MS(1967, CMAXYEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
TILE_SIZE_2x1,
HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4C
MS(1967, MAX_YEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
MS(1967, CMAXYEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4D
MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 4E
MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 4F
MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 5, 3, 1, 2,
MS( 0, CMAXYEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 5, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 50
MS( 0, MAX_YEAR, 7, 30, STR_TOWN_BUILDING_NAME_HOUSES_2, 30, 4, 3, 1, 1,
MS( 0, CMAXYEAR, 7, 30, STR_TOWN_BUILDING_NAME_HOUSES_2, 30, 4, 3, 1, 1,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 51
MS( 0, MAX_YEAR, 45, 130, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 15, 6, 2, 1,
MS( 0, CMAXYEAR, 45, 130, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 15, 6, 2, 1,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 52
MS( 0, MAX_YEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0,
MS( 0, CMAXYEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0,
BUILDING_IS_CHURCH | TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 53
MS( 0, MAX_YEAR, 18, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 2,
MS( 0, CMAXYEAR, 18, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 2,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2,
CT_PASSENGERS, CT_MAIL, CT_FOOD), // 54
MS(1973, MAX_YEAR, 90, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 24, 6, 2, 1,
MS(1973, CMAXYEAR, 90, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 24, 6, 2, 1,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 55
MS(1962, MAX_YEAR, 120, 120, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 25, 6, 2, 1,
MS(1962, CMAXYEAR, 120, 120, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 25, 6, 2, 1,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 56
MS(1984, MAX_YEAR, 250, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4,
MS(1984, CMAXYEAR, 250, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4,
TILE_SIZE_2x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 57
MS(1984, MAX_YEAR, 0, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4,
MS(1984, CMAXYEAR, 0, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4,
TILE_NO_FLAG,
HZ_SUBTROPIC,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 58
MS( 0, MAX_YEAR, 80, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 23, 6, 2, 1,
MS( 0, CMAXYEAR, 80, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 23, 6, 2, 1,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 59
MS(1993, MAX_YEAR, 180, 180, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 150, 90, 8, 3, 4,
MS(1993, CMAXYEAR, 180, 180, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 150, 90, 8, 3, 4,
TILE_SIZE_1x1,
HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_GOODS), // 5A
MS( 0, MAX_YEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0,
MS( 0, CMAXYEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0,
BUILDING_IS_CHURCH | TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5B
MS( 0, MAX_YEAR, 18, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 90, 5, 6, 2, 2,
MS( 0, CMAXYEAR, 18, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 90, 5, 6, 2, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5C
MS( 0, MAX_YEAR, 7, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 50, 3, 3, 1, 1,
MS( 0, CMAXYEAR, 7, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 50, 3, 3, 1, 1,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5D
MS( 0, MAX_YEAR, 15, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 15, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5E
MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5F
MS( 0, MAX_YEAR, 19, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 19, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 60
MS( 0, MAX_YEAR, 21, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
MS( 0, CMAXYEAR, 21, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 61
MS( 0, MAX_YEAR, 75, 160, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 20, 8, 4, 2,
MS( 0, CMAXYEAR, 75, 160, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 20, 8, 4, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 62
MS( 0, MAX_YEAR, 35, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 9, 4, 1, 2,
MS( 0, CMAXYEAR, 35, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 9, 4, 1, 2,
TILE_SIZE_1x2,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 63
MS( 0, MAX_YEAR, 0, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 0, 4, 1, 2,
MS( 0, CMAXYEAR, 0, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 0, 4, 1, 2,
TILE_NO_FLAG,
HZ_NOZNS,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 64
MS( 0, MAX_YEAR, 85, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 18, 8, 4, 2,
MS( 0, CMAXYEAR, 85, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 18, 8, 4, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 65
MS( 0, MAX_YEAR, 11, 60, STR_TOWN_BUILDING_NAME_IGLOO_1, 45, 3, 3, 1, 1,
MS( 0, CMAXYEAR, 11, 60, STR_TOWN_BUILDING_NAME_IGLOO_1, 45, 3, 3, 1, 1,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 66
MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_TEPEES_1, 45, 3, 3, 1, 1,
MS( 0, CMAXYEAR, 10, 60, STR_TOWN_BUILDING_NAME_TEPEES_1, 45, 3, 3, 1, 1,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 67
MS( 0, MAX_YEAR, 67, 140, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 22, 8, 4, 4,
MS( 0, CMAXYEAR, 67, 140, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 22, 8, 4, 4,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 68
MS( 0, MAX_YEAR, 86, 145, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 23, 8, 4, 4,
MS( 0, CMAXYEAR, 86, 145, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 23, 8, 4, 4,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 69
MS( 0, MAX_YEAR, 95, 165, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 28, 8, 4, 2,
MS( 0, CMAXYEAR, 95, 165, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 28, 8, 4, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6A
MS( 0, MAX_YEAR, 30, 90, STR_TOWN_BUILDING_NAME_STATUE_1, 70, 10, 4, 1, 2,
MS( 0, CMAXYEAR, 30, 90, STR_TOWN_BUILDING_NAME_STATUE_1, 70, 10, 4, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6B
MS( 0, MAX_YEAR, 25, 75, STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1, 65, 8, 3, 1, 2,
MS( 0, CMAXYEAR, 25, 75, STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1, 65, 8, 3, 1, 2,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6C
MS( 0, MAX_YEAR, 18, 85, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1, 95, 7, 3, 2, 4,
MS( 0, CMAXYEAR, 18, 85, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1, 95, 7, 3, 2, 4,
TILE_SIZE_1x1,
HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1,
CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 6D
};
#undef MS
#undef CMAXYEAR
/** Make sure we have the right number of elements: one entry for each house */
static_assert(lengthof(_original_house_specs) == NEW_HOUSE_OFFSET);