namegen.c
changeset 193 0a7025304867
parent 124 3da466676241
child 233 dd177a8c9f19
equal deleted inserted replaced
192:614bba52258d 193:0a7025304867
     9 	byte *s;
     9 	byte *s;
    10 
    10 
    11 	while (--num>=0) {
    11 	while (--num>=0) {
    12 		do names++; while (names[-1]);
    12 		do names++; while (names[-1]);
    13 	}
    13 	}
    14 	
    14 
    15 	for(s=*buf; (*s++ = *names++) != 0;) {}
    15 	for(s=*buf; (*s++ = *names++) != 0;) {}
    16 	*buf = s - 1;
    16 	*buf = s - 1;
    17 }
    17 }
    18 
    18 
    19 #define MK(x) x "\x0"
    19 #define MK(x) x "\x0"
    20 
    20 
    21 #define NUM_ENGLISH_1 4
    21 #define NUM_ENGLISH_1 4
    22 static const char english_1[] = 
    22 static const char english_1[] =
    23 	MK("Great ")
    23 	MK("Great ")
    24 	MK("Little ")
    24 	MK("Little ")
    25 	MK("New ")
    25 	MK("New ")
    26 	MK("Fort ")
    26 	MK("Fort ")
    27 ;
    27 ;
    28 
    28 
    29 #define NUM_ENGLISH_2 26 
    29 #define NUM_ENGLISH_2 26
    30 static const char english_2[] =
    30 static const char english_2[] =
    31 	MK("Wr")
    31 	MK("Wr")
    32 	MK("B")
    32 	MK("B")
    33 	MK("C")
    33 	MK("C")
    34 	MK("Ch")
    34 	MK("Ch")
    55 	MK("Tr")
    55 	MK("Tr")
    56 	MK("W")
    56 	MK("W")
    57 ;
    57 ;
    58 
    58 
    59 #define NUM_ENGLISH_3 8
    59 #define NUM_ENGLISH_3 8
    60 static const char english_3[] = 
    60 static const char english_3[] =
    61 	MK("ar")
    61 	MK("ar")
    62 	MK("a")
    62 	MK("a")
    63 	MK("e")
    63 	MK("e")
    64 	MK("in")
    64 	MK("in")
    65 	MK("on")
    65 	MK("on")
    67 	MK("un")
    67 	MK("un")
    68 	MK("en")
    68 	MK("en")
    69 ;
    69 ;
    70 
    70 
    71 #define NUM_ENGLISH_4 7
    71 #define NUM_ENGLISH_4 7
    72 static const char english_4[] = 
    72 static const char english_4[] =
    73 	MK("n")
    73 	MK("n")
    74 	MK("ning")
    74 	MK("ning")
    75 	MK("ding")
    75 	MK("ding")
    76 	MK("d")
    76 	MK("d")
    77 	MK("")
    77 	MK("")
    78 	MK("t")
    78 	MK("t")
    79 	MK("fing")
    79 	MK("fing")
    80 ;
    80 ;
    81 
    81 
    82 #define NUM_ENGLISH_5 23
    82 #define NUM_ENGLISH_5 23
    83 static const char english_5[] = 
    83 static const char english_5[] =
    84 	MK("ville")
    84 	MK("ville")
    85 	MK("ham")
    85 	MK("ham")
    86 	MK("field")
    86 	MK("field")
    87 	MK("ton")
    87 	MK("ton")
    88 	MK("town")
    88 	MK("town")
   105 	MK("hattan")
   105 	MK("hattan")
   106 	MK("burg")
   106 	MK("burg")
   107 ;
   107 ;
   108 
   108 
   109 #define NUM_ENGLISH_6 9
   109 #define NUM_ENGLISH_6 9
   110 static const char english_6[] = 
   110 static const char english_6[] =
   111 	MK("-on-sea")
   111 	MK("-on-sea")
   112 	MK(" Bay")
   112 	MK(" Bay")
   113 	MK(" Market")
   113 	MK(" Market")
   114 	MK(" Cross")
   114 	MK(" Cross")
   115 	MK(" Bridge")
   115 	MK(" Bridge")
   128 	byte *start;
   128 	byte *start;
   129 
   129 
   130 	i = GETNUM(0, 54) - 50;
   130 	i = GETNUM(0, 54) - 50;
   131 	if (i >= 0)
   131 	if (i >= 0)
   132 		AppendPart(&buf, i, english_1);
   132 		AppendPart(&buf, i, english_1);
   133 	
   133 
   134 	start = buf;
   134 	start = buf;
   135 
   135 
   136 	AppendPart(&buf, GETNUM(4, NUM_ENGLISH_2), english_2);
   136 	AppendPart(&buf, GETNUM(4, NUM_ENGLISH_2), english_2);
   137 	AppendPart(&buf, GETNUM(7, NUM_ENGLISH_3), english_3);
   137 	AppendPart(&buf, GETNUM(7, NUM_ENGLISH_3), english_3);
   138 	AppendPart(&buf, GETNUM(10, NUM_ENGLISH_4), english_4);
   138 	AppendPart(&buf, GETNUM(10, NUM_ENGLISH_4), english_4);
   139 	AppendPart(&buf, GETNUM(13, NUM_ENGLISH_5), english_5);
   139 	AppendPart(&buf, GETNUM(13, NUM_ENGLISH_5), english_5);
   140 
   140 
   141 	i = GETNUM(15, NUM_ENGLISH_6 + 60) - 60;
   141 	i = GETNUM(15, NUM_ENGLISH_6 + 60) - 60;
   142 
   142 
   143 	result = 0;
   143 	result = 0;
   144 	
   144 
   145 	if (i >= 0) {
   145 	if (i >= 0) {
   146 		if (i <= 1) result = NG_EDGE;
   146 		if (i <= 1) result = NG_EDGE;
   147 		AppendPart(&buf, i, english_6);
   147 		AppendPart(&buf, i, english_6);
   148 	}
   148 	}
   149 
   149 
   150 	if (start[0]=='C' && (start[1] == 'e' || start[1] == 'i'))
   150 	if (start[0]=='C' && (start[1] == 'e' || start[1] == 'i'))
   151 		start[0] = 'K'; 
   151 		start[0] = 'K';
   152 
   152 
   153 	/* Replace certain words (routine identical to TTD now) */
   153 	/* Replace certain words (routine identical to TTD now) */
   154 
   154 
   155 	REPLACE_WORDS('C','u','n','t',  'E','a','s','t');
   155 	REPLACE_WORDS('C','u','n','t',  'E','a','s','t');
   156 	REPLACE_WORDS('S','l','a','g',  'P','i','t','s');
   156 	REPLACE_WORDS('S','l','a','g',  'P','i','t','s');
   165 
   165 
   166 	return result;
   166 	return result;
   167 }
   167 }
   168 
   168 
   169 #define NUM_AUSTRIAN_A1 6
   169 #define NUM_AUSTRIAN_A1 6
   170 static const char austrian_a1[] = 
   170 static const char austrian_a1[] =
   171 	MK("Bad ")
   171 	MK("Bad ")
   172 	MK("Deutsch ")
   172 	MK("Deutsch ")
   173 	MK("Gross ")
   173 	MK("Gross ")
   174 	MK("Klein ")
   174 	MK("Klein ")
   175 	MK("Markt ")
   175 	MK("Markt ")
   176 	MK("Maria ")
   176 	MK("Maria ")
   177 ;
   177 ;
   178 
   178 
   179 #define NUM_AUSTRIAN_A2 42
   179 #define NUM_AUSTRIAN_A2 42
   180 static const char austrian_a2[] = 
   180 static const char austrian_a2[] =
   181 	MK("Aus")
   181 	MK("Aus")
   182 	MK("Alten")
   182 	MK("Alten")
   183 	MK("Braun")
   183 	MK("Braun")
   184 	MK("Vösl")
   184 	MK("Vösl")
   185 	MK("Mittern")
   185 	MK("Mittern")
   221 	MK("Vill")
   221 	MK("Vill")
   222 	MK("Weissen")
   222 	MK("Weissen")
   223 ;
   223 ;
   224 
   224 
   225 #define NUM_AUSTRIAN_A3 16
   225 #define NUM_AUSTRIAN_A3 16
   226 static const char austrian_a3[] = 
   226 static const char austrian_a3[] =
   227 	MK("see")
   227 	MK("see")
   228 	MK("bach")
   228 	MK("bach")
   229 	MK("dorf")
   229 	MK("dorf")
   230 	MK("ach")
   230 	MK("ach")
   231 	MK("stein")
   231 	MK("stein")
   369 
   369 
   370 	return 0;
   370 	return 0;
   371 }
   371 }
   372 
   372 
   373 #define NUM_GERMAN_1 114
   373 #define NUM_GERMAN_1 114
   374 #define NUM_GERMAN_1_HARDCODED 21 
   374 #define NUM_GERMAN_1_HARDCODED 21
   375 static const char german_1[] = 
   375 static const char german_1[] =
   376 	/* hardcoded names */
   376 	/* hardcoded names */
   377 	MK("Berlin")
   377 	MK("Berlin")
   378 	MK("Bonn")
   378 	MK("Bonn")
   379 	MK("Bremen")
   379 	MK("Bremen")
   380 	MK("Cottbus")
   380 	MK("Cottbus")
   529 	MK("Donau")
   529 	MK("Donau")
   530 	MK("Saale")
   530 	MK("Saale")
   531 	MK("Elbe")
   531 	MK("Elbe")
   532 	/* use "am" */
   532 	/* use "am" */
   533 	MK("Main")
   533 	MK("Main")
   534 	
   534 
   535 ;
   535 ;
   536 
   536 
   537 static byte MakeGermanTownName(byte *buf, uint32 seed)
   537 static byte MakeGermanTownName(byte *buf, uint32 seed)
   538 {
   538 {
   539 	int i;
   539 	int i;
   540 	int ext;
   540 	int ext;
   541 	
   541 
   542 	ext=GETNUM(7, 28); /* Extension - Prefix / Suffix */
   542 	ext=GETNUM(7, 28); /* Extension - Prefix / Suffix */
   543 
   543 
   544 	if ((ext==12) || (ext==19)) {
   544 	if ((ext==12) || (ext==19)) {
   545 		i=GETNUM(2,NUM_GERMAN_3-2);
   545 		i=GETNUM(2,NUM_GERMAN_3-2);
   546 		AppendPart(&buf, 2+i, german_3);
   546 		AppendPart(&buf, 2+i, german_3);
   569 
   569 
   570 	return 0;
   570 	return 0;
   571 }
   571 }
   572 
   572 
   573 #define NUM_SPANISH_1 86
   573 #define NUM_SPANISH_1 86
   574 static const char spanish_1[] = 
   574 static const char spanish_1[] =
   575 	MK("Caracas")
   575 	MK("Caracas")
   576 	MK("Maracay")
   576 	MK("Maracay")
   577 	MK("Maracaibo")
   577 	MK("Maracaibo")
   578 	MK("Velencia")
   578 	MK("Velencia")
   579 	MK("El Dorado")
   579 	MK("El Dorado")
   660 	MK("Santa Rosa");
   660 	MK("Santa Rosa");
   661 
   661 
   662 static byte MakeSpanishTownName(byte *buf, uint32 seed)
   662 static byte MakeSpanishTownName(byte *buf, uint32 seed)
   663 {
   663 {
   664 	AppendPart(&buf, GETNUM(0, NUM_SPANISH_1), spanish_1);
   664 	AppendPart(&buf, GETNUM(0, NUM_SPANISH_1), spanish_1);
   665 	return 0;	
   665 	return 0;
   666 }
   666 }
   667 
   667 
   668 #define NUM_FRENCH_1 70
   668 #define NUM_FRENCH_1 70
   669 static const char french_1[] = 
   669 static const char french_1[] =
   670 	MK("Agincourt")
   670 	MK("Agincourt")
   671 	MK("Lille")
   671 	MK("Lille")
   672 	MK("Dinan")
   672 	MK("Dinan")
   673 	MK("Aubusson")
   673 	MK("Aubusson")
   674 	MK("Rodez")
   674 	MK("Rodez")
   682 	MK("Nice")
   682 	MK("Nice")
   683 	MK("Cannes")
   683 	MK("Cannes")
   684 	MK("St. Tropez")
   684 	MK("St. Tropez")
   685 	MK("Marseilles")
   685 	MK("Marseilles")
   686 	MK("Narbonne")
   686 	MK("Narbonne")
   687 	MK("Sčte") 
   687 	MK("Sčte")
   688 	MK("Aurillac")
   688 	MK("Aurillac")
   689 	MK("Gueret")
   689 	MK("Gueret")
   690 	MK("Le Creusot")
   690 	MK("Le Creusot")
   691 	MK("Nevers")
   691 	MK("Nevers")
   692 	MK("Auxerre")
   692 	MK("Auxerre")
   749 	// make american town names equal to english for now.
   749 	// make american town names equal to english for now.
   750 	return MakeEnglishTownName(buf, seed);
   750 	return MakeEnglishTownName(buf, seed);
   751 }
   751 }
   752 
   752 
   753 #define NUM_SILLY_1 88
   753 #define NUM_SILLY_1 88
   754 static const char silly_1[] = 
   754 static const char silly_1[] =
   755 	MK("Binky")
   755 	MK("Binky")
   756 	MK("Blubber")
   756 	MK("Blubber")
   757 	MK("Bumble")
   757 	MK("Bumble")
   758 	MK("Crinkle")
   758 	MK("Crinkle")
   759 	MK("Crusty")
   759 	MK("Crusty")
   849 	MK("Frosty")
   849 	MK("Frosty")
   850 	MK("Griddle")
   850 	MK("Griddle")
   851 ;
   851 ;
   852 
   852 
   853 #define NUM_SILLY_2 15
   853 #define NUM_SILLY_2 15
   854 static const char silly_2[] = 
   854 static const char silly_2[] =
   855 	MK("ton")
   855 	MK("ton")
   856 	MK("bury")
   856 	MK("bury")
   857 	MK("bottom")
   857 	MK("bottom")
   858 	MK("ville")
   858 	MK("ville")
   859 	MK("well")
   859 	MK("well")
   860 	MK("weed")
   860 	MK("weed")
   861 	MK("worth")
   861 	MK("worth")
   862 	MK("wig")
   862 	MK("wig")
   863 	MK("wick")
   863 	MK("wick")
   864 	MK("wood")
   864 	MK("wood")
   865 	
   865 
   866 	MK("pool")
   866 	MK("pool")
   867 	MK("head")
   867 	MK("head")
   868 	MK("burg")
   868 	MK("burg")
   869 	MK("gate")
   869 	MK("gate")
   870 	MK("bridge")
   870 	MK("bridge")
   871 ;
   871 ;
   872 
   872 
   873 
   873 
   874 static byte MakeSillyTownName(byte *buf, uint32 seed)
   874 static byte MakeSillyTownName(byte *buf, uint32 seed)
   875 {		
   875 {
   876 	AppendPart(&buf, GETNUM(0, NUM_SILLY_1), silly_1);
   876 	AppendPart(&buf, GETNUM(0, NUM_SILLY_1), silly_1);
   877 	AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2);
   877 	AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2);
   878 	return 0;
   878 	return 0;
   879 }
   879 }
   880 
   880 
  1079 	MK("Oost ")
  1079 	MK("Oost ")
  1080 	MK("West ")
  1080 	MK("West ")
  1081 	MK("Klein ");
  1081 	MK("Klein ");
  1082 
  1082 
  1083 #define NUM_DUTCH_2 57
  1083 #define NUM_DUTCH_2 57
  1084 static const char dutch_2[] = 
  1084 static const char dutch_2[] =
  1085 	MK("Hoog")
  1085 	MK("Hoog")
  1086 	MK("Laag")
  1086 	MK("Laag")
  1087 	MK("Klein")
  1087 	MK("Klein")
  1088 	MK("Groot")
  1088 	MK("Groot")
  1089 	MK("Noorder")
  1089 	MK("Noorder")
  1139 	MK("Til")
  1139 	MK("Til")
  1140 	MK("Loos")
  1140 	MK("Loos")
  1141 	MK("Hil");
  1141 	MK("Hil");
  1142 
  1142 
  1143 #define NUM_DUTCH_3 20
  1143 #define NUM_DUTCH_3 20
  1144 static const char dutch_3[] = 
  1144 static const char dutch_3[] =
  1145 	MK("Drog")
  1145 	MK("Drog")
  1146 	MK("Nat")
  1146 	MK("Nat")
  1147 	MK("Valk")
  1147 	MK("Valk")
  1148 	MK("Bob")
  1148 	MK("Bob")
  1149 	MK("Dedem")
  1149 	MK("Dedem")
  1160 	MK("Spijk")
  1160 	MK("Spijk")
  1161 	MK("Vink")
  1161 	MK("Vink")
  1162 	MK("Wams")
  1162 	MK("Wams")
  1163 	MK("Heerhug")
  1163 	MK("Heerhug")
  1164 	MK("Koning");
  1164 	MK("Koning");
  1165 	
  1165 
  1166 
  1166 
  1167 #define NUM_DUTCH_4 6
  1167 #define NUM_DUTCH_4 6
  1168 static const char dutch_4[] = 
  1168 static const char dutch_4[] =
  1169 	MK("e")
  1169 	MK("e")
  1170 	MK("er")
  1170 	MK("er")
  1171 	MK("el")
  1171 	MK("el")
  1172 	MK("en")
  1172 	MK("en")
  1173 	MK("o")
  1173 	MK("o")
  1174 	MK("s");
  1174 	MK("s");
  1175 
  1175 
  1176 #define NUM_DUTCH_5 56
  1176 #define NUM_DUTCH_5 56
  1177 static const char dutch_5[] = 
  1177 static const char dutch_5[] =
  1178 	MK("stad")
  1178 	MK("stad")
  1179 	MK("vorst")
  1179 	MK("vorst")
  1180 	MK("dorp")
  1180 	MK("dorp")
  1181 	MK("dam")
  1181 	MK("dam")
  1182 	MK("beek")
  1182 	MK("beek")
  1229 	MK("huizen")
  1229 	MK("huizen")
  1230 	MK("bergen")
  1230 	MK("bergen")
  1231 	MK("schede")
  1231 	MK("schede")
  1232 	MK("mere")
  1232 	MK("mere")
  1233 	MK("end");
  1233 	MK("end");
  1234 	
  1234 
  1235 static byte MakeDutchTownName(byte *buf, uint32 seed)
  1235 static byte MakeDutchTownName(byte *buf, uint32 seed)
  1236 {
  1236 {
  1237 	int i;
  1237 	int i;
  1238 
  1238 
  1239 	i = GETNUM(0, 50 + NUM_DUTCH_1) - 50;
  1239 	i = GETNUM(0, 50 + NUM_DUTCH_1) - 50;
  1240 	if (i >= 0) 
  1240 	if (i >= 0)
  1241 		AppendPart(&buf, i, dutch_1);
  1241 		AppendPart(&buf, i, dutch_1);
  1242 
  1242 
  1243 	i = GETNUM(6, 9);
  1243 	i = GETNUM(6, 9);
  1244 	if(i > 4){
  1244 	if(i > 4){
  1245 		AppendPart(&buf, GETNUM(9, NUM_DUTCH_2), dutch_2);
  1245 		AppendPart(&buf, GETNUM(9, NUM_DUTCH_2), dutch_2);
  1251 
  1251 
  1252 	return 0;
  1252 	return 0;
  1253 }
  1253 }
  1254 
  1254 
  1255 #define NUM_FINNISH_1 25
  1255 #define NUM_FINNISH_1 25
  1256 static const char finnish_1[] = 
  1256 static const char finnish_1[] =
  1257 	MK("Aijala")
  1257 	MK("Aijala")
  1258 	MK("Kisko")
  1258 	MK("Kisko")
  1259 	MK("Espoo")
  1259 	MK("Espoo")
  1260 	MK("Helsinki")
  1260 	MK("Helsinki")
  1261 	MK("Tapiola")
  1261 	MK("Tapiola")
  1277 	MK("Taavetti")
  1277 	MK("Taavetti")
  1278 	MK("Joensuu")
  1278 	MK("Joensuu")
  1279 	MK("Imatra")
  1279 	MK("Imatra")
  1280 	MK("Tapanila")
  1280 	MK("Tapanila")
  1281 	MK("Pasila");
  1281 	MK("Pasila");
  1282  
  1282 
  1283 #define NUM_FINNISH_2a 26
  1283 #define NUM_FINNISH_2a 26
  1284 static const char finnish_2a[] = 
  1284 static const char finnish_2a[] =
  1285 	MK("Hiekka")
  1285 	MK("Hiekka")
  1286 	MK("Haapa")
  1286 	MK("Haapa")
  1287 	MK("Mylly")
  1287 	MK("Mylly")
  1288 	MK("Kivi")
  1288 	MK("Kivi")
  1289 	MK("Lappeen")
  1289 	MK("Lappeen")
  1308 	MK("Rova")
  1308 	MK("Rova")
  1309 	MK("Martin")
  1309 	MK("Martin")
  1310 	MK("Koivu");
  1310 	MK("Koivu");
  1311 
  1311 
  1312 #define NUM_FINNISH_2b 18
  1312 #define NUM_FINNISH_2b 18
  1313 static const char finnish_2b[] = 
  1313 static const char finnish_2b[] =
  1314 	MK("harju")
  1314 	MK("harju")
  1315 	MK("linna")
  1315 	MK("linna")
  1316 	MK("järvi")
  1316 	MK("järvi")
  1317 	MK("kallio")
  1317 	MK("kallio")
  1318 	MK("mäki")
  1318 	MK("mäki")
  1574 MK(" Kujawski")
  1574 MK(" Kujawski")
  1575 MK(" Malopolski")
  1575 MK(" Malopolski")
  1576 MK(" Podlaski")
  1576 MK(" Podlaski")
  1577 MK(" Lesny")
  1577 MK(" Lesny")
  1578 ;
  1578 ;
  1579 static const char polish_3_f[] = 
  1579 static const char polish_3_f[] =
  1580 MK(" Wybudowanie")
  1580 MK(" Wybudowanie")
  1581 MK(" Swietokrzyska")
  1581 MK(" Swietokrzyska")
  1582 MK(" Gorska")
  1582 MK(" Gorska")
  1583 MK(" Morska")
  1583 MK(" Morska")
  1584 MK(" Zdroj")
  1584 MK(" Zdroj")
  1690 
  1690 
  1691 	return 0;
  1691 	return 0;
  1692 }
  1692 }
  1693 
  1693 
  1694 #define NUM_CZECH_1 82
  1694 #define NUM_CZECH_1 82
  1695 static const char czech_1[] = 
  1695 static const char czech_1[] =
  1696 MK("As")
  1696 MK("As")
  1697 MK("Benesov")
  1697 MK("Benesov")
  1698 MK("Beroun")
  1698 MK("Beroun")
  1699 MK("Bezdruzice")
  1699 MK("Bezdruzice")
  1700 MK("Blansko")
  1700 MK("Blansko")
  1778 ;
  1778 ;
  1779 
  1779 
  1780 static byte MakeCzechTownName(byte *buf, uint32 seed)
  1780 static byte MakeCzechTownName(byte *buf, uint32 seed)
  1781 {
  1781 {
  1782 	AppendPart(&buf, GETNUM(0, NUM_CZECH_1), czech_1);
  1782 	AppendPart(&buf, GETNUM(0, NUM_CZECH_1), czech_1);
  1783 	return 0;	
  1783 	return 0;
  1784 }
  1784 }
  1785 
  1785 
  1786 
  1786 
  1787 
  1787 
  1788 #define NUM_SLOVAKISH_1 87
  1788 #define NUM_SLOVAKISH_1 87
  1877 ;
  1877 ;
  1878 
  1878 
  1879 static byte MakeSlovakishTownName(byte *buf, uint32 seed)
  1879 static byte MakeSlovakishTownName(byte *buf, uint32 seed)
  1880 {
  1880 {
  1881 	AppendPart(&buf, GETNUM(0, NUM_SLOVAKISH_1), slovakish_1);
  1881 	AppendPart(&buf, GETNUM(0, NUM_SLOVAKISH_1), slovakish_1);
  1882 	return 0;	
  1882 	return 0;
  1883 }
  1883 }
  1884 
  1884 
  1885 // Modifiers
  1885 // Modifiers
  1886 #define NUM_HUNGARIAN_1 5
  1886 #define NUM_HUNGARIAN_1 5
  1887 static const char hungarian_1[] = 
  1887 static const char hungarian_1[] =
  1888 	MK("Nagy-")
  1888 	MK("Nagy-")
  1889 	MK("Kis-")
  1889 	MK("Kis-")
  1890 	MK("Felső-")
  1890 	MK("Felső-")
  1891 	MK("Alsó-")
  1891 	MK("Alsó-")
  1892 	MK("Új-")
  1892 	MK("Új-")
  1893 ;
  1893 ;
  1894 
  1894 
  1895 #define NUM_HUNGARIAN_2 54
  1895 #define NUM_HUNGARIAN_2 54
  1896 static const char hungarian_2[] = 
  1896 static const char hungarian_2[] =
  1897 // River modifiers
  1897 // River modifiers
  1898 // 1 - 10
  1898 // 1 - 10
  1899 	MK("Bodrog")
  1899 	MK("Bodrog")
  1900 	MK("Dráva")
  1900 	MK("Dráva")
  1901 	MK("Duna")
  1901 	MK("Duna")
  1969 	MK("Vámos")
  1969 	MK("Vámos")
  1970 	MK("Vásáros")
  1970 	MK("Vásáros")
  1971 ;
  1971 ;
  1972 
  1972 
  1973 #define NUM_HUNGARIAN_3 16
  1973 #define NUM_HUNGARIAN_3 16
  1974 static const char hungarian_3[] = 
  1974 static const char hungarian_3[] =
  1975 	MK("apáti")
  1975 	MK("apáti")
  1976 	MK("bába")
  1976 	MK("bába")
  1977 	MK("bikk")
  1977 	MK("bikk")
  1978 	MK("dob")
  1978 	MK("dob")
  1979 	MK("fa")
  1979 	MK("fa")
  1989 	MK("vas")
  1989 	MK("vas")
  1990 	MK("völgy")
  1990 	MK("völgy")
  1991 ;
  1991 ;
  1992 
  1992 
  1993 #define NUM_HUNGARIAN_4 5
  1993 #define NUM_HUNGARIAN_4 5
  1994 static const char hungarian_4[] = 
  1994 static const char hungarian_4[] =
  1995 	MK("alja")
  1995 	MK("alja")
  1996 	MK("egyháza")
  1996 	MK("egyháza")
  1997 	MK("háza")
  1997 	MK("háza")
  1998 	MK("úr")
  1998 	MK("úr")
  1999 	MK("vár")
  1999 	MK("vár")
  2052 		i = GETNUM(3, NUM_HUNGARIAN_1 * 3);
  2052 		i = GETNUM(3, NUM_HUNGARIAN_1 * 3);
  2053 		if (i < NUM_HUNGARIAN_1) AppendPart(&buf, i, hungarian_1);
  2053 		if (i < NUM_HUNGARIAN_1) AppendPart(&buf, i, hungarian_1);
  2054 
  2054 
  2055 		AppendPart(&buf, GETNUM(3, NUM_HUNGARIAN_2), hungarian_2);
  2055 		AppendPart(&buf, GETNUM(3, NUM_HUNGARIAN_2), hungarian_2);
  2056 		AppendPart(&buf, GETNUM(6, NUM_HUNGARIAN_3), hungarian_3);
  2056 		AppendPart(&buf, GETNUM(6, NUM_HUNGARIAN_3), hungarian_3);
  2057 		
  2057 
  2058 		i = GETNUM(10, NUM_HUNGARIAN_4 * 3);
  2058 		i = GETNUM(10, NUM_HUNGARIAN_4 * 3);
  2059 		if (i < NUM_HUNGARIAN_4) AppendPart(&buf, i, hungarian_4);
  2059 		if (i < NUM_HUNGARIAN_4) AppendPart(&buf, i, hungarian_4);
  2060 	}
  2060 	}
  2061 	return 0;
  2061 	return 0;
  2062 }
  2062 }