summaryrefslogtreecommitdiff
path: root/src/table
diff options
context:
space:
mode:
authormaedhros <maedhros@openttd.org>2007-03-19 11:27:30 +0000
committermaedhros <maedhros@openttd.org>2007-03-19 11:27:30 +0000
commit209101391abfaf901bfc68c83c79bf8c9865b0bb (patch)
tree8ccaccab74c6399452d6ff3f09d5c94335516a62 /src/table
parent3d3d8d7c47f3fb98abeefe943f7c94f4485f3dec (diff)
downloadopenttd-209101391abfaf901bfc68c83c79bf8c9865b0bb.tar.xz
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
the newhouses grf specs, so all newhouses grfs will be playable in the game. Many thanks to everyone who contributed code and ideas, and all the testers who found things we missed.
Diffstat (limited to 'src/table')
-rw-r--r--src/table/sprites.h3
-rw-r--r--src/table/town_land.h810
2 files changed, 368 insertions, 445 deletions
diff --git a/src/table/sprites.h b/src/table/sprites.h
index e9b9c9b69..0301d9f20 100644
--- a/src/table/sprites.h
+++ b/src/table/sprites.h
@@ -35,7 +35,6 @@
* @todo Split the "Sprites" enum into smaller chunks and document them
*/
-
enum Sprites {
SPR_SELECT_TILE = 752,
SPR_DOT = 774, // corner marker for lower/raise land
@@ -1324,6 +1323,7 @@ enum SpriteSetup {
*/
enum Modifiers {
SPRITE_MODIFIER_USE_OFFSET = OFFSET_BIT,
+ SPRITE_MODIFIER_OPAQUE = OFFSET_BIT,
///when a sprite is to be displayed transparently, this bit needs to be set.
PALETTE_MODIFIER_TRANSPARENT = TRANSPARENT_BIT,
///this bit is set when a recoloring process is in action
@@ -1418,6 +1418,5 @@ enum PaletteSprites {
PALETTE_59E = 0x59E,
PALETTE_59F = 0x59F,
};
-#undef PALETTE_RECOLOR_SPRITE
#endif /* SPRITES_H */
diff --git a/src/table/town_land.h b/src/table/town_land.h
index 091b8926a..313c2b2b0 100644
--- a/src/table/town_land.h
+++ b/src/table/town_land.h
@@ -2,17 +2,6 @@
/** @file town_land.h */
-enum {
- HOUSE_TEMP_CHURCH = 0x03,
- HOUSE_STADIUM = 0x14,
- HOUSE_MODERN_STADIUM = 0x20,
- HOUSE_ARCT_CHURCH = 0x3c,
- HOUSE_SNOW_CHURCH = 0x3d,
- HOUSE_TROP_CHURCH = 0x53,
- HOUSE_TOY_CHURCH = 0x5b,
-
- HOUSE_MAX = 110
-};
/** Writes the data into the Town Tile Drawing Struct
* @param s1 The first sprite of the building, mostly the ground sprite
@@ -1790,437 +1779,372 @@ static const DrawBuildingsTileStruct _town_draw_tile_data[] = {
M(0x1244, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0),
};
#undef M
-// 4 variants * 4 build stages
-assert_compile(lengthof(_town_draw_tile_data) == HOUSE_MAX * 4 * 4);
-
-
-static const StringID _town_tile_names[] = {
- STR_200F_TALL_OFFICE_BLOCK,
- STR_2010_OFFICE_BLOCK,
- STR_2011_SMALL_BLOCK_OF_FLATS,
- STR_2012_CHURCH,
- STR_2013_LARGE_OFFICE_BLOCK,
- STR_2013_LARGE_OFFICE_BLOCK,
- STR_2014_TOWN_HOUSES,
- STR_2015_HOTEL,
- STR_2015_HOTEL,
- STR_2016_STATUE,
- STR_2017_FOUNTAIN,
- STR_2018_PARK,
- STR_2018_PARK,
- STR_2019_OFFICE_BLOCK,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201B_MODERN_OFFICE_BUILDING,
- STR_201C_WAREHOUSE,
- STR_201D_OFFICE_BLOCK,
- STR_201E_STADIUM,
- STR_201E_STADIUM,
- STR_201E_STADIUM,
- STR_201E_STADIUM,
- STR_201F_OLD_HOUSES,
- STR_2036_COTTAGES,
- STR_2037_HOUSES,
- STR_2038_FLATS,
- STR_2039_TALL_OFFICE_BLOCK,
- STR_203A_SHOPS_AND_OFFICES,
- STR_203B_SHOPS_AND_OFFICES,
- STR_203C_THEATER,
- STR_203D_STADIUM,
- STR_203D_STADIUM,
- STR_203D_STADIUM,
- STR_203D_STADIUM,
- STR_203E_OFFICES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_2040_CINEMA,
- STR_2041_SHOPPING_MALL,
- STR_2041_SHOPPING_MALL,
- STR_2041_SHOPPING_MALL,
- STR_2041_SHOPPING_MALL,
- STR_2038_FLATS,
- STR_2038_FLATS,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_2012_CHURCH,
- STR_2012_CHURCH,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_2015_HOTEL,
- STR_2015_HOTEL,
- STR_2015_HOTEL,
- STR_2015_HOTEL,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_2038_FLATS,
- STR_2012_CHURCH,
- STR_203F_HOUSES,
- STR_2038_FLATS,
- STR_2038_FLATS,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_2038_FLATS,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_2012_CHURCH,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_203F_HOUSES,
- STR_203F_HOUSES,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_2059_IGLOO,
- STR_205A_TEPEES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_201A_SHOPS_AND_OFFICES,
- STR_200F_TALL_OFFICE_BLOCK,
- STR_2016_STATUE,
- STR_205B_TEAPOT_HOUSE,
- STR_205C_PIGGY_BANK,
-};
-assert_compile(lengthof(_town_tile_names) == HOUSE_MAX);
-
-static const uint16 _housetype_flags[] = {
- 0x1010, 0x1018, 0x100E, 0x100F, 0x7010, 0x0810, 0x100F, 0x1014,
- 0x0000, 0x7018, 0x7010, 0x1004, 0x1008, 0x1018, 0x101C, 0x101C,
- 0x101C, 0x7010, 0x1010, 0x1010, 0x100F, 0x0000, 0x0000, 0x0000,
- 0x1003, 0x1001, 0x100F, 0x101C, 0x101C, 0x101C, 0x5014, 0x1018,
- 0x700F, 0x0000, 0x0000, 0x0000, 0x7018, 0x2003, 0x0803, 0x101C,
- 0x101E, 0x0000, 0x0000, 0x0000, 0x201C, 0x081C, 0x200F, 0x080F,
- 0x2007, 0x0807, 0x6018, 0x0818, 0x2018, 0x0818, 0x6018, 0x0818,
- 0x2001, 0x0801, 0x201E, 0x081E, 0x200F, 0x080F, 0x2007, 0x0807,
- 0x201C, 0x081C, 0x201C, 0x0000, 0x081C, 0x0000, 0x601C, 0x081C,
- 0x2018, 0x0818, 0x201C, 0x0000, 0x081C, 0x0000, 0x401E, 0x401E,
- 0x401E, 0x4001, 0x401C, 0x400E, 0x401E, 0x401C, 0x401C, 0x4018,
- 0x4000, 0x401C, 0x4018, 0x801F, 0x801F, 0x8003, 0x800F, 0x800F,
- 0x800F, 0x800F, 0x801C, 0x801F, 0x0000, 0x801C, 0x8001, 0x8001,
- 0x801C, 0x801C, 0x801C, 0x801C, 0x801F, 0x801F,
-};
-assert_compile(lengthof(_housetype_flags) == HOUSE_MAX);
-
-static const byte _housetype_extra_flags[] = {
- 0, 0, 0, 0, 32, 32, 0, 8,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 8, 0, 8, 0, 0, 0,
- 0, 0, 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
-};
-assert_compile(lengthof(_housetype_extra_flags) == HOUSE_MAX);
-
-static const byte _housetype_population[] = {
- 187, 85, 40, 5, 220, 220, 30, 140,
- 0, 0, 0, 0, 0, 150, 95, 95,
- 95, 130, 6, 110, 65, 0, 0, 0,
- 15, 12, 13, 100, 170, 100, 180, 35,
- 65, 0, 0, 0, 140, 15, 15, 35,
- 180, 0, 0, 0, 80, 80, 16, 16,
- 14, 14, 135, 135, 170, 170, 210, 210,
- 10, 10, 25, 25, 6, 6, 17, 17,
- 90, 90, 140, 0, 140, 0, 105, 105,
- 190, 190, 250, 0, 250, 0, 16, 16,
- 16, 7, 45, 8, 18, 90, 120, 250,
- 0, 80, 180, 8, 18, 7, 15, 17,
- 19, 21, 75, 35, 0, 85, 11, 10,
- 67, 86, 95, 30, 25, 18,
-};
-assert_compile(lengthof(_housetype_population) == HOUSE_MAX);
-
-static const byte _housetype_mailamount[] = {
- 70, 55, 20, 2, 85, 85, 12, 22,
- 22, 0, 0, 0, 0, 65, 48, 48,
- 48, 50, 10, 55, 5, 5, 5, 5,
- 6, 7, 8, 35, 50, 40, 64, 23,
- 5, 5, 5, 5, 65, 6, 6, 23,
- 5, 5, 5, 5, 20, 20, 6, 6,
- 6, 6, 60, 60, 70, 70, 80, 80,
- 5, 5, 20, 20, 2, 2, 7, 7,
- 45, 45, 25, 25, 25, 25, 50, 50,
- 75, 75, 60, 60, 60, 60, 6, 6,
- 5, 4, 15, 3, 7, 24, 25, 80,
- 80, 23, 90, 3, 5, 3, 6, 6,
- 6, 6, 20, 9, 0, 18, 3, 3,
- 22, 23, 28, 10, 8, 7,
-};
-assert_compile(lengthof(_housetype_mailamount) == HOUSE_MAX);
-
-static const byte _housetype_remove_cost[] = {
- 150, 140, 100, 90, 160, 160, 80, 180,
- 180, 65, 65, 60, 60, 130, 110, 105,
- 107, 200, 145, 155, 250, 250, 250, 250,
- 70, 75, 71, 135, 145, 132, 155, 220,
- 250, 250, 250, 250, 170, 70, 70, 210,
- 250, 250, 250, 250, 100, 100, 70, 70,
- 80, 80, 150, 150, 170, 170, 200, 200,
- 60, 60, 100, 100, 85, 85, 80, 80,
- 140, 140, 160, 160, 160, 160, 130, 130,
- 190, 190, 140, 140, 140, 140, 80, 80,
- 80, 30, 130, 90, 80, 110, 120, 190,
- 190, 110, 180, 90, 90, 70, 80, 80,
- 80, 80, 160, 90, 90, 150, 60, 60,
- 140, 145, 165, 90, 75, 85,
-};
-assert_compile(lengthof(_housetype_remove_cost) == HOUSE_MAX);
-
-static const uint16 _housetype_remove_ratingmod[] = {
- 140, 130, 90, 230, 160, 160, 80, 150,
- 150, 40, 40, 75, 75, 110, 100, 100,
- 100, 150, 110, 110, 300, 300, 300, 300,
- 75, 75, 75, 100, 170, 135, 180, 230,
- 300, 300, 300, 300, 250, 75, 75, 230,
- 300, 300, 300, 300, 90, 90, 70, 70,
- 70, 70, 120, 120, 130, 130, 140, 140,
- 60, 60, 80, 80, 230, 230, 80, 80,
- 110, 110, 160, 160, 160, 160, 105, 105,
- 135, 135, 200, 200, 200, 200, 80, 80,
- 80, 30, 95, 200, 80, 95, 95, 140,
- 140, 95, 150, 200, 90, 50, 75, 75,
- 75, 75, 130, 80, 80, 130, 45, 45,
- 130, 130, 130, 70, 65, 95,
-};
-assert_compile(lengthof(_housetype_remove_ratingmod) == HOUSE_MAX);
-
-
-struct HousetypeYear {
- Year min, max;
-};
-
-static const HousetypeYear _housetype_years[] = {
- { 1963, MAX_YEAR },
- { 1957, MAX_YEAR },
- { 1968, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1975, MAX_YEAR },
- { 1975, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1959, MAX_YEAR },
- { 1959, MAX_YEAR },
- { 1945, MAX_YEAR },
- { 1945, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1935, MAX_YEAR },
- { 1951, MAX_YEAR },
- { 1930, 1960 },
- { 1930, 1960 },
- { 1930, 1960 },
- { 1977, MAX_YEAR },
- { 1983, MAX_YEAR },
- { 1985, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, 1951 },
- { 0, 1952 },
- { 1931, MAX_YEAR },
- { 1935, MAX_YEAR },
- { 1963, MAX_YEAR },
- { 0, 1955 },
- { 1973, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1958, MAX_YEAR },
- { 1958, MAX_YEAR },
- { 1958, MAX_YEAR },
- { 1958, MAX_YEAR },
- { 2000, MAX_YEAR },
- { 0, 1960 },
- { 0, 1960 },
- { 1945, MAX_YEAR },
- { 1983, MAX_YEAR },
- { 1983, MAX_YEAR },
- { 1983, MAX_YEAR },
- { 1983, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, 1963 },
- { 0, 1963 },
- { 1966, MAX_YEAR },
- { 1966, MAX_YEAR },
- { 1970, MAX_YEAR },
- { 1970, MAX_YEAR },
- { 1974, MAX_YEAR },
- { 1974, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, 1960 },
- { 0, 1960 },
- { 1972, MAX_YEAR },
- { 1972, MAX_YEAR },
- { 1972, MAX_YEAR },
- { 1972, MAX_YEAR },
- { 1963, MAX_YEAR },
- { 1963, MAX_YEAR },
- { 1978, MAX_YEAR },
- { 1978, MAX_YEAR },
- { 1967, MAX_YEAR },
- { 1967, MAX_YEAR },
- { 1967, MAX_YEAR },
- { 1967, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1973, MAX_YEAR },
- { 1962, MAX_YEAR },
- { 1984, MAX_YEAR },
- { 1984, MAX_YEAR },
- { 0, MAX_YEAR },
- { 1993, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
- { 0, MAX_YEAR },
-};
-assert_compile(lengthof(_housetype_years) == HOUSE_MAX);
-
-static const byte _housetype_cargo_passengers[] = {
- 8, 8, 8, 2, 10, 10, 4, 6,
- 6, 2, 2, 2, 2, 8, 6, 6,
- 6, 10, 6, 6, 4, 4, 4, 4,
- 3, 3, 3, 7, 8, 6, 8, 8,
- 4, 4, 4, 4, 8, 3, 3, 8,
- 8, 8, 8, 8, 5, 5, 3, 3,
- 3, 3, 8, 8, 9, 9, 10, 10,
- 2, 2, 3, 3, 2, 2, 3, 3,
- 6, 6, 6, 6, 6, 6, 7, 7,
- 9, 9, 7, 7, 7, 7, 3, 3,
- 3, 3, 6, 2, 3, 6, 6, 8,
- 8, 6, 8, 2, 6, 3, 3, 3,
- 3, 3, 8, 4, 4, 8, 3, 3,
- 8, 8, 8, 4, 3, 3,
-};
-assert_compile(lengthof(_housetype_cargo_passengers) == HOUSE_MAX);
+/* 4 variants * 4 build stages */
+assert_compile(lengthof(_town_draw_tile_data) == (NEW_HOUSE_OFFSET) * 4 * 4);
-static const byte _housetype_cargo_mail[] = {
- 3, 3, 3, 0, 4, 4, 1, 1,
- 1, 0, 0, 0, 0, 2, 2, 2,
- 2, 3, 3, 2, 0, 0, 0, 0,
- 1, 1, 1, 2, 3, 2, 3, 2,
- 0, 0, 0, 0, 3, 1, 1, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 3, 3, 3, 3, 3, 3,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 2, 2, 1, 1, 1, 1, 2, 2,
- 3, 3, 2, 2, 2, 2, 1, 1,
- 1, 1, 2, 0, 1, 2, 2, 3,
- 3, 2, 3, 0, 2, 1, 1, 1,
- 1, 1, 4, 1, 1, 4, 1, 1,
- 4, 4, 4, 1, 1, 2,
-};
-assert_compile(lengthof(_housetype_cargo_mail) == HOUSE_MAX);
-
-static const byte _housetype_cargo_goods[] = {
- 4, 4, 1, 0, 6, 6, 0, 2,
- 2, 0, 0, 0, 0, 4, 3, 3,
- 3, 6, 8, 6, 0, 0, 0, 0,
- 0, 0, 0, 2, 3, 3, 3, 2,
- 0, 0, 0, 0, 2, 0, 0, 2,
- 3, 3, 3, 3, 0, 0, 0, 0,
- 0, 0, 4, 4, 4, 4, 5, 5,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 2, 0, 2, 3, 3,
- 4, 4, 2, 2, 2, 2, 0, 0,
- 0, 0, 1, 0, 0, 1, 1, 4,
- 4, 1, 4, 0, 2, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 0, 0, 2, 2, 2, 0
-};
-assert_compile(lengthof(_housetype_cargo_goods) == HOUSE_MAX);
-
-static const byte _housetype_cargo_food[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 2, 2, 2, 2,
- 2, 2, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 0, 0, 3, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2, 2,
- 2, 1, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 4, 0, 0, 0, 4
-};
-assert_compile(lengthof(_housetype_cargo_food) == HOUSE_MAX);
-
-static const byte _house_more_flags[] = {
- 8, 8, 8, 8, 8, 8, 8, 12,
- 0, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 15, 0, 0, 0,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 15, 0, 0, 0, 8, 8, 8, 8,
- 15, 0, 0, 0, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 12, 0, 12, 0, 8, 8,
- 8, 8, 10, 0, 10, 0, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 10,
- 0, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 12, 0, 8, 8, 8,
- 8, 8, 8, 8, 8, 8,
+/** Describes the data that defines each house in the game
+ * @param mnd introduction year of the house
+ * @param mxd last year it can be built
+ * @param p population
+ * @param rc cost multiplier for removing it
+ * @param bn building name
+ * @param rr rating decrease if removed
+ * @param mg mail generation multiplier
+ * @param pa passenger acceptance
+ * @param ma mail acceptance
+ * @param ga goods acceptance
+ * @param fa food acceptance
+ * @param bf building flags (size, stadium etc...)
+ * @param ba building availability (zone, climate...)
+ * @see HouseSpec
+ */
+#define M(mnd, mxd, p, rc, bn, rr, mg, pa, ma, ga, fa, bf, ba) \
+ {mnd, mxd, p, rc, bn, rr, mg, pa, ma, ga, fa, bf, ba, true, \
+ 0, NULL, 0, 0, {0, 0, 0, 0}, 16, NO_EXTRA_FLAG, HOUSE_NO_CLASS, 0, 2, 0, 0, NULL}
+static const HouseSpec _original_house_specs[] = {
+ /**
+ * remove_rating_decrease
+ * | mail_generation
+ * min_date | | passenger_acceptance
+ * | max_date | | | mail_acceptance
+ * | | population | | | | goods_acceptance
+ * | | | removal_cost | | | | | food_acceptance
+ * | | | | building_name | | | | | |
+ * | | | | | | | | | | |
+ * | | | | | | | | | | |
+ * +-building_flags | | | | | | | | |
+ * +-building_availability | | | | | | | |
+ * | | | | | | | | | | | |*/
+ M( 1963, MAX_YEAR, 187, 150, STR_200F_TALL_OFFICE_BLOCK, 140, 70, 8, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5),
+ M( 1957, MAX_YEAR, 85, 140, STR_2010_OFFICE_BLOCK, 130, 55, 8, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4),
+ M( 1968, MAX_YEAR, 40, 100, STR_2011_SMALL_BLOCK_OF_FLATS, 90, 20, 8, 3, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 5, 90, STR_2012_CHURCH, 230, 2, 2, 0, 0, 0,
+ BUILDING_IS_CHURCH | TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 1975, MAX_YEAR, 220, 160, STR_2013_LARGE_OFFICE_BLOCK, 160, 85, 10, 4, 6, 0,
+ BUILDING_IS_ANIMATED | TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5),
+ M( 1975, MAX_YEAR, 220, 160, STR_2013_LARGE_OFFICE_BLOCK, 160, 85, 10, 4, 6, 0,
+ BUILDING_IS_ANIMATED | TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5),
+ M( 0, MAX_YEAR, 30, 80, STR_2014_TOWN_HOUSES, 80, 12, 4, 1, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 1959, MAX_YEAR, 140, 180, STR_2015_HOTEL, 150, 22, 6, 1, 2, 0,
+ TILE_SIZE_1x2,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON3),
+ M( 1959, MAX_YEAR, 0, 180, STR_2015_HOTEL, 150, 22, 6, 1, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1945, MAX_YEAR, 0, 65, STR_2016_STATUE, 40, 0, 2, 0, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4),
+ M( 1945, MAX_YEAR, 0, 65, STR_2017_FOUNTAIN, 40, 0, 2, 0, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5),
+ M( 0, MAX_YEAR, 0, 60, STR_2018_PARK, 75, 0, 2, 0, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON3),
+ M( 1935, MAX_YEAR, 0, 60, STR_2018_PARK, 75, 0, 2, 0, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON4),
+ M( 1951, MAX_YEAR, 150, 130, STR_2019_OFFICE_BLOCK, 110, 65, 8, 2, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4),
+ M( 1930, 1960, 95, 110, STR_201A_SHOPS_AND_OFFICES, 100, 48, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1930, 1960, 95, 105, STR_201A_SHOPS_AND_OFFICES, 100, 48, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1930, 1960, 95, 107, STR_201A_SHOPS_AND_OFFICES, 100, 48, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1977, MAX_YEAR, 130, 200, STR_201B_MODERN_OFFICE_BUILDING, 150, 50, 10, 3, 6, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5),
+ M( 1983, MAX_YEAR, 6, 145, STR_201C_WAREHOUSE, 110, 10, 6, 3, 8, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5),
+ M( 1985, MAX_YEAR, 110, 155, STR_201D_OFFICE_BLOCK, 110, 55, 6, 2, 6, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5),
+ M( 0, MAX_YEAR, 65, 250, STR_201E_STADIUM, 300, 5, 4, 0, 0, 0,
+ BUILDING_IS_STADIUM | TILE_SIZE_2x2,
+ HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 0, 250, STR_201E_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, MAX_YEAR, 0, 250, STR_201E_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, MAX_YEAR, 0, 250, STR_201E_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, 1951, 15, 70, STR_201F_OLD_HOUSES, 75, 6, 3, 1, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON2 | HZ_ZON1),
+ M( 0, 1952, 12, 75, STR_2036_COTTAGES, 75, 7, 3, 1, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON1),
+ M( 1931, MAX_YEAR, 13, 71, STR_2037_HOUSES, 75, 8, 3, 1, 0, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 1935, MAX_YEAR, 100, 135, STR_2038_FLATS, 100, 35, 7, 2, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1963, MAX_YEAR, 170, 145, STR_2039_TALL_OFFICE_BLOCK, 170, 50, 8, 3, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, 1955, 100, 132, STR_203A_SHOPS_AND_OFFICES, 135, 40, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1973, MAX_YEAR, 180, 155, STR_203B_SHOPS_AND_OFFICES, 180, 64, 8, 3, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON3),
+ M( 0, MAX_YEAR, 35, 220, STR_203C_THEATER, 230, 23, 8, 2, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4),
+ M( 1958, MAX_YEAR, 65, 250, STR_203D_STADIUM, 300, 5, 4, 0, 0, 0,
+ BUILDING_IS_STADIUM | TILE_SIZE_2x2,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 1958, MAX_YEAR, 0, 250, STR_203D_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1958, MAX_YEAR, 0, 250, STR_203D_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1958, MAX_YEAR, 0, 250, STR_203D_STADIUM, 300, 5, 4, 0, 0, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 2000, MAX_YEAR, 140, 170, STR_203E_OFFICES, 250, 65, 8, 3, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4),
+ M( 0, 1960, 15, 70, STR_203F_HOUSES, 75, 6, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON2 | HZ_ZON1),
+ M( 0, 1960, 15, 70, STR_203F_HOUSES, 75, 6, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON2 | HZ_ZON1),
+ M( 1945, MAX_YEAR, 35, 210, STR_2040_CINEMA, 230, 23, 8, 2, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1983, MAX_YEAR, 180, 250, STR_2041_SHOPPING_MALL, 300, 5, 8, 2, 3, 0,
+ TILE_SIZE_2x2,
+ HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 |HZ_ZON2),
+ M( 1983, MAX_YEAR, 0, 250, STR_2041_SHOPPING_MALL, 300, 5, 8, 2, 3, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1983, MAX_YEAR, 0, 250, STR_2041_SHOPPING_MALL, 300, 5, 8, 2, 3, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1983, MAX_YEAR, 0, 250, STR_2041_SHOPPING_MALL, 300, 5, 8, 2, 3, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, MAX_YEAR, 80, 100, STR_2038_FLATS, 90, 20, 5, 2, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 80, 100, STR_2038_FLATS, 90, 20, 5, 2, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 16, 70, STR_203F_HOUSES, 70, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 16, 70, STR_203F_HOUSES, 70, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, 1963, 14, 80, STR_203F_HOUSES, 70, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, 1963, 14, 80, STR_203F_HOUSES, 70, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 1966, MAX_YEAR, 135, 150, STR_200F_TALL_OFFICE_BLOCK, 120, 60, 8, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4),
+ M( 1966, MAX_YEAR, 135, 150, STR_200F_TALL_OFFICE_BLOCK, 120, 60, 8, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4),
+ M( 1970, MAX_YEAR, 170, 170, STR_200F_TALL_OFFICE_BLOCK, 130, 70, 9, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4),
+ M( 1970, MAX_YEAR, 170, 170, STR_200F_TALL_OFFICE_BLOCK, 130, 70, 9, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4),
+ M( 1974, MAX_YEAR, 210, 200, STR_200F_TALL_OFFICE_BLOCK, 140, 80, 10, 3, 5, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4),
+ M( 1974, MAX_YEAR, 210, 200, STR_200F_TALL_OFFICE_BLOCK, 140, 80, 10, 3, 5, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4),
+ M( 0, MAX_YEAR, 10, 60, STR_203F_HOUSES, 60, 5, 2, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON1),
+ M( 0, MAX_YEAR, 10, 60, STR_203F_HOUSES, 60, 5, 2, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON1),
+ M( 0, MAX_YEAR, 25, 100, STR_201A_SHOPS_AND_OFFICES, 80, 20, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 25, 100, STR_201A_SHOPS_AND_OFFICES, 80, 20, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 6, 85, STR_2012_CHURCH, 230, 2, 2, 0, 0, 0,
+ BUILDING_IS_CHURCH | TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 6, 85, STR_2012_CHURCH, 230, 2, 2, 0, 0, 0,
+ BUILDING_IS_CHURCH | TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 17, 80, STR_203F_HOUSES, 80, 7, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 17, 80, STR_203F_HOUSES, 80, 7, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, 1960, 90, 140, STR_201A_SHOPS_AND_OFFICES, 110, 45, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, 1960, 90, 140, STR_201A_SHOPS_AND_OFFICES, 110, 45, 6, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1972, MAX_YEAR, 140, 160, STR_2015_HOTEL, 160, 25, 6, 1, 0, 3,
+ TILE_SIZE_1x2,
+ HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1972, MAX_YEAR, 0, 160, STR_2015_HOTEL, 160, 25, 6, 1, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1972, MAX_YEAR, 140, 160, STR_2015_HOTEL, 160, 25, 6, 1, 0, 3,
+ TILE_SIZE_1x2,
+ HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1972, MAX_YEAR, 0, 160, STR_2015_HOTEL, 160, 25, 6, 1, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1963, MAX_YEAR, 105, 130, STR_201A_SHOPS_AND_OFFICES, 105, 50, 7, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1963, MAX_YEAR, 105, 130, STR_201A_SHOPS_AND_OFFICES, 105, 50, 7, 2, 3, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1978, MAX_YEAR, 190, 190, STR_200F_TALL_OFFICE_BLOCK, 135, 75, 9, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4),
+ M( 1978, MAX_YEAR, 190, 190, STR_200F_TALL_OFFICE_BLOCK, 135, 75, 9, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4),
+ M( 1967, MAX_YEAR, 250, 140, STR_200F_TALL_OFFICE_BLOCK, 200, 60, 7, 2, 2, 0,
+ TILE_SIZE_2x1,
+ HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1967, MAX_YEAR, 0, 140, STR_200F_TALL_OFFICE_BLOCK, 200, 60, 7, 2, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 1967, MAX_YEAR, 250, 140, STR_200F_TALL_OFFICE_BLOCK, 200, 60, 7, 2, 2, 0,
+ TILE_SIZE_2x1,
+ HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1967, MAX_YEAR, 0, 140, STR_200F_TALL_OFFICE_BLOCK, 200, 60, 7, 2, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, MAX_YEAR, 16, 80, STR_203F_HOUSES, 80, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 16, 80, STR_203F_HOUSES, 80, 6, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 16, 80, STR_203F_HOUSES, 80, 5, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 7, 30, STR_203F_HOUSES, 30, 4, 3, 1, 0, 1,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON1),
+ M( 0, MAX_YEAR, 45, 130, STR_2038_FLATS, 95, 15, 6, 2, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 8, 90, STR_2012_CHURCH, 200, 3, 2, 0, 0, 0,
+ BUILDING_IS_CHURCH | TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 0, MAX_YEAR, 18, 80, STR_203F_HOUSES, 80, 7, 3, 1, 0, 2,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2),
+ M( 1973, MAX_YEAR, 90, 110, STR_2038_FLATS, 95, 24, 6, 2, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1962, MAX_YEAR, 120, 120, STR_2038_FLATS, 95, 25, 6, 2, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1984, MAX_YEAR, 250, 190, STR_200F_TALL_OFFICE_BLOCK, 140, 80, 8, 3, 4, 0,
+ TILE_SIZE_2x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4),
+ M( 1984, MAX_YEAR, 0, 190, STR_200F_TALL_OFFICE_BLOCK, 140, 80, 8, 3, 4, 0,
+ TILE_NO_FLAG,
+ HZ_SUBTROPIC),
+ M( 0, MAX_YEAR, 80, 110, STR_2038_FLATS, 95, 23, 6, 2, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 1993, MAX_YEAR, 180, 180, STR_200F_TALL_OFFICE_BLOCK, 150, 90, 8, 3, 4, 0,
+ TILE_SIZE_1x1,
+ HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 8, 90, STR_2012_CHURCH, 200, 3, 2, 0, 0, 0,
+ BUILDING_IS_CHURCH | TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 18, 90, STR_203F_HOUSES, 90, 5, 6, 2, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 7, 70, STR_203F_HOUSES, 50, 3, 3, 1, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 15, 80, STR_203F_HOUSES, 75, 6, 3, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 17, 80, STR_203F_HOUSES, 75, 6, 3, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 19, 80, STR_203F_HOUSES, 75, 6, 3, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 21, 80, STR_203F_HOUSES, 75, 6, 3, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 75, 160, STR_200F_TALL_OFFICE_BLOCK, 130, 20, 8, 4, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 35, 90, STR_203F_HOUSES, 80, 9, 4, 1, 2, 0,
+ TILE_SIZE_1x2,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 0, 90, STR_203F_HOUSES, 80, 0, 4, 1, 2, 0,
+ TILE_NO_FLAG,
+ HZ_NOZNS),
+ M( 0, MAX_YEAR, 85, 150, STR_200F_TALL_OFFICE_BLOCK, 130, 18, 8, 4, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 11, 60, STR_2059_IGLOO, 45, 3, 3, 1, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON1),
+ M( 0, MAX_YEAR, 10, 60, STR_205A_TEPEES, 45, 3, 3, 1, 1, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON1),
+ M( 0, MAX_YEAR, 67, 140, STR_201A_SHOPS_AND_OFFICES, 130, 22, 8, 4, 0, 4,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 86, 145, STR_201A_SHOPS_AND_OFFICES, 130, 23, 8, 4, 0, 4,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 95, 165, STR_200F_TALL_OFFICE_BLOCK, 130, 28, 8, 4, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 30, 90, STR_2016_STATUE, 70, 10, 4, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3),
+ M( 0, MAX_YEAR, 25, 75, STR_205B_TEAPOT_HOUSE, 65, 8, 3, 1, 2, 0,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
+ M( 0, MAX_YEAR, 18, 85, STR_205C_PIGGY_BANK, 95, 7, 3, 2, 0, 4,
+ TILE_SIZE_1x1,
+ HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1),
};
-assert_compile(lengthof(_house_more_flags) == HOUSE_MAX);
+#undef M
+assert_compile(lengthof(_original_house_specs) == NEW_HOUSE_OFFSET);