diff --git a/lang/english.txt b/lang/english.txt --- a/lang/english.txt +++ b/lang/english.txt @@ -852,21 +852,21 @@ STR_0335_6 :{BLACK}6 STR_0336_7 :{BLACK}7 ############ start of townname region -STR_TOWNNAME_ENGLISH :English -STR_TOWNNAME_FRENCH :French -STR_TOWNNAME_GERMAN :German -STR_TOWNNAME_AMERICAN :American -STR_TOWNNAME_LATIN_AMERICAN :Latin-American -STR_TOWNNAME_SILLY :Silly -STR_TOWNNAME_SWEDISH :Swedish -STR_TOWNNAME_DUTCH :Dutch -STR_TOWNNAME_FINNISH :Finnish -STR_TOWNNAME_POLISH :Polish +STR_TOWNNAME_ORIGINAL_ENGLISH :English (Original) +STR_TOWNNAME_FRENCH :French +STR_TOWNNAME_GERMAN :German +STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Additional) +STR_TOWNNAME_LATIN_AMERICAN :Latin-American +STR_TOWNNAME_SILLY :Silly +STR_TOWNNAME_SWEDISH :Swedish +STR_TOWNNAME_DUTCH :Dutch +STR_TOWNNAME_FINNISH :Finnish +STR_TOWNNAME_POLISH :Polish STR_TOWNNAME_SLOVAKISH :Slovakish STR_TOWNNAME_HUNGARIAN :Hungarian -STR_TOWNNAME_AUSTRIAN :Austrian -STR_TOWNNAME_ROMANIAN :Romanian -STR_TOWNNAME_CZECH :Czech +STR_TOWNNAME_AUSTRIAN :Austrian +STR_TOWNNAME_ROMANIAN :Romanian +STR_TOWNNAME_CZECH :Czech ############ end of townname region STR_CURR_GBP :Pounds ({POUNDSIGN}) diff --git a/namegen.c b/namegen.c --- a/namegen.c +++ b/namegen.c @@ -1,2173 +1,420 @@ #include "stdafx.h" #include "ttd.h" - -#define GETNUM(x, y) (((uint16)(seed >> x) * (y))>>16) +#include "table/namegen.h" -static void AppendPart(byte **buf, int num, const char *names) +inline static uint32 GetNumberBasedOnSeed(int x, int y, uint32 seed) { - byte *s; + return (((uint16)(seed >> x) * (y))>>16); +} - while (--num>=0) { - do names++; while (names[-1]); +static void ReplaceWords(byte a, byte b, byte c, byte d, byte e, byte f, byte g, byte h, byte *buf) +{ + if (buf[0] == a && buf[1] == b && buf[2] == c && buf[3] == d) + { + buf[0] = e; + buf[1] = f; + buf[2] = g; + buf[3] = h; } - - for(s=*buf; (*s++ = *names++) != 0;) {} - *buf = s - 1; } -#define MK(x) x "\x0" - -#define NUM_ENGLISH_1 4 -static const char english_1[] = - MK("Great ") - MK("Little ") - MK("New ") - MK("Fort ") -; - -#define NUM_ENGLISH_2 26 -static const char english_2[] = - MK("Wr") - MK("B") - MK("C") - MK("Ch") - MK("Br") - MK("D") - MK("Dr") - MK("F") - MK("Fr") - MK("Fl") - MK("G") - MK("Gr") - MK("H") - MK("L") - MK("M") - MK("N") - MK("P") - MK("Pr") - MK("Pl") - MK("R") - MK("S") - MK("S") - MK("Sl") - MK("T") - MK("Tr") - MK("W") -; - -#define NUM_ENGLISH_3 8 -static const char english_3[] = - MK("ar") - MK("a") - MK("e") - MK("in") - MK("on") - MK("u") - MK("un") - MK("en") -; - -#define NUM_ENGLISH_4 7 -static const char english_4[] = - MK("n") - MK("ning") - MK("ding") - MK("d") - MK("") - MK("t") - MK("fing") -; - -#define NUM_ENGLISH_5 23 -static const char english_5[] = - MK("ville") - MK("ham") - MK("field") - MK("ton") - MK("town") - MK("bridge") - MK("bury") - MK("wood") - MK("ford") - MK("hall") - MK("ston") - MK("way") - MK("stone") - MK("borough") - MK("ley") - MK("head") - MK("bourne") - MK("pool") - MK("worth") - MK("hill") - MK("well") - MK("hattan") - MK("burg") -; - -#define NUM_ENGLISH_6 9 -static const char english_6[] = - MK("-on-sea") - MK(" Bay") - MK(" Market") - MK(" Cross") - MK(" Bridge") - MK(" Falls") - MK(" City") - MK(" Ridge") - MK(" Springs") -; - -#define REPLACE_WORDS(a,b,c,d,e,f,g,h) { if (start[0] == a && start[1] == b && start[2] == c && start[3] == d) { start[0] = e; start[1] = f; start[2] = g; start[3] = h; } } - -static byte MakeEnglishTownName(byte *buf, uint32 seed) +static byte MakeEnglishOriginalTownName(byte *buf, uint32 seed) { int i; - byte result; - byte *start; + + //null terminates the string for strcat + strcpy(buf, ""); - i = GETNUM(0, 54) - 50; - if (i >= 0) - AppendPart(&buf, i, english_1); - - start = buf; + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_original_english_1) + 50, seed) - 50) >= 0) + { + strcat(buf,name_original_english_1[i]); + } - AppendPart(&buf, GETNUM(4, NUM_ENGLISH_2), english_2); - AppendPart(&buf, GETNUM(7, NUM_ENGLISH_3), english_3); - AppendPart(&buf, GETNUM(10, NUM_ENGLISH_4), english_4); - AppendPart(&buf, GETNUM(13, NUM_ENGLISH_5), english_5); + //mandatory middle segments + strcat(buf, name_original_english_2[GetNumberBasedOnSeed(4, lengthof(name_original_english_2), seed)]); + strcat(buf, name_original_english_3[GetNumberBasedOnSeed(7, lengthof(name_original_english_3), seed)]); + strcat(buf, name_original_english_4[GetNumberBasedOnSeed(10, lengthof(name_original_english_4), seed)]); + strcat(buf, name_original_english_5[GetNumberBasedOnSeed(13, lengthof(name_original_english_5), seed)]); - i = GETNUM(15, NUM_ENGLISH_6 + 60) - 60; - - result = 0; - - if (i >= 0) { - if (i <= 1) result = NG_EDGE; - AppendPart(&buf, i, english_6); + //optional last segment + if ((i = GetNumberBasedOnSeed(15, lengthof(name_original_english_6) + 60, seed) - 60) >= 0) + { + strcat(buf, name_original_english_6[i]); } - if (start[0]=='C' && (start[1] == 'e' || start[1] == 'i')) - start[0] = 'K'; - - /* Replace certain words (routine identical to TTD now) */ + if (buf[0] == 'C' && (buf[1] == 'e' || buf[1] == 'i')) + buf[0] = 'K'; - REPLACE_WORDS('C','u','n','t', 'E','a','s','t'); - REPLACE_WORDS('S','l','a','g', 'P','i','t','s'); - REPLACE_WORDS('S','l','u','t', 'E','d','i','n'); -// REPLACE_WORDS('F','a','r','t', 'B','o','o','t'); - REPLACE_WORDS('D','r','a','r', 'Q','u','a','r'); - REPLACE_WORDS('D','r','e','h', 'B','a','s','h'); - REPLACE_WORDS('F','r','a','r', 'S','h','o','r'); - REPLACE_WORDS('G','r','a','r', 'A','b','e','r'); - REPLACE_WORDS('B','r','a','r', 'O','v','e','r'); - REPLACE_WORDS('W','r','a','r', 'I','n','v','e'); + ReplaceWords('C','u','n','t', 'E','a','s','t', buf); + ReplaceWords('S','l','a','g', 'P','i','t','s', buf); + ReplaceWords('S','l','u','t', 'E','d','i','n', buf); +// ReplaceWords('F','a','r','t', 'B','o','o','t', buf); + ReplaceWords('D','r','a','r', 'Q','u','a','r', buf); + ReplaceWords('D','r','e','h', 'B','a','s','h', buf); + ReplaceWords('F','r','a','r', 'S','h','o','r', buf); + ReplaceWords('G','r','a','r', 'A','b','e','r', buf); + ReplaceWords('B','r','a','r', 'O','v','e','r', buf); + ReplaceWords('W','r','a','r', 'I','n','v','e', buf); - return result; + return 0; } -#define NUM_AUSTRIAN_A1 6 -static const char austrian_a1[] = - MK("Bad ") - MK("Deutsch ") - MK("Gross ") - MK("Klein ") - MK("Markt ") - MK("Maria ") -; + +static byte MakeEnglishAdditionalTownName(byte *buf, uint32 seed) +{ + int i; -#define NUM_AUSTRIAN_A2 42 -static const char austrian_a2[] = - MK("Aus") - MK("Alten") - MK("Braun") - MK("Vösl") - MK("Mittern") - MK("Nuss") - MK("Neu") - MK("Walters") - MK("Breiten") - MK("Eisen") - MK("Feld") - MK("Mittern") - MK("Gall") - MK("Obern") - MK("Grat") - MK("Heiligen") - MK("Hof") - MK("Holla") - MK("Stein") - MK("Eber") - MK("Eggen") - MK("Enzers") - MK("Frauen") - MK("Herren") - MK("Hof") - MK("Hütt") - MK("Kaisers") - MK("Königs") - MK("Knittel") - MK("Lang") - MK("Ober") - MK("Ollers") - MK("Pfaffen") - MK("Potten") - MK("Salz") - MK("Schwarz") - MK("Stocker") - MK("Unter") - MK("Utten") - MK("Vösen") - MK("Vill") - MK("Weissen") -; + //null terminates the string for strcat + strcpy(buf, ""); -#define NUM_AUSTRIAN_A3 16 -static const char austrian_a3[] = - MK("see") - MK("bach") - MK("dorf") - MK("ach") - MK("stein") - MK("hofen") - MK("au") - MK("ach") - MK("kirch") - MK("kirchen") - MK("kreuz") - MK("brunn") - MK("siedl") - MK("markt") - MK("wang") - MK("haag") -; + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_additional_english_prefix) + 50, seed) - 50) >= 0) + { + strcat(buf,name_additional_english_prefix[i]); + } -#define NUM_AUSTRIAN_A4 12 -static const char austrian_a4[] = - MK("Bruck") - MK("Brunn") - MK("Gams") - MK("Grein") - MK("Ried") - MK("Faak") - MK("Zell") - MK("Spital") - MK("Kirchberg") - MK("Saal") - MK("Taferl") - MK("Wald") -; + if (GetNumberBasedOnSeed(3, 20, seed) >= 14) + { + strcat(buf, name_additional_english_1a[GetNumberBasedOnSeed(6, lengthof(name_additional_english_1a), seed)]); + } + else + { + strcat(buf, name_additional_english_1b1[GetNumberBasedOnSeed(6, lengthof(name_additional_english_1b1), seed)]); + strcat(buf, name_additional_english_1b2[GetNumberBasedOnSeed(9, lengthof(name_additional_english_1b2), seed)]); + if (GetNumberBasedOnSeed(11, 20, seed) >= 4) + { + strcat(buf, name_additional_english_1b3a[GetNumberBasedOnSeed(12, lengthof(name_additional_english_1b3a), seed)]); + } + else + { + strcat(buf, name_additional_english_1b3b[GetNumberBasedOnSeed(12, lengthof(name_additional_english_1b3a), seed)]); + } + } -#define NUM_AUSTRIAN_A5 2 -static const char austrian_a5[] = - MK("St. ") - MK("Sankt ") -; + strcat(buf, name_additional_english_2[GetNumberBasedOnSeed(14, lengthof(name_additional_english_2), seed)]); -#define NUM_AUSTRIAN_A6 20 -static const char austrian_a6[] = - MK("Aegyd") - MK("Andrä") - MK("Georgen") - MK("Jakob") - MK("Johann") - MK("Leonhard") - MK("Marein") - MK("Lorenzen") - MK("Margarethen") - MK("Martin") - MK("Michael") - MK("Nikolai") - MK("Oswald") - MK("Peter") - MK("Pölten") - MK("Stefan") - MK("Stephan") - MK("Thomas") - MK("Veit") - MK("Wolfgang") -; - -#define NUM_AUSTRIAN_F1 2 -static const char austrian_f1[] = - MK(" an der ") - MK(" ob der ") -; + //optional last segment + if ((i = GetNumberBasedOnSeed(15, lengthof(name_additional_english_3) + 60, seed) - 60) >= 0) + { + strcat(buf, name_additional_english_3[i]); + } -#define NUM_AUSTRIAN_F2 13 -static const char austrian_f2[] = - MK("Donau") - MK("Steyr") - MK("Lafnitz") - MK("Leitha") - MK("Thaya") - MK("Gail") - MK("Drau") - MK("Salzach") - MK("Ybbs") - MK("Traisen") - MK("Enns") - MK("Mur") - MK("Ill") -; + ReplaceWords('C','u','n','t', 'E','a','s','t', buf); + ReplaceWords('S','l','a','g', 'P','i','t','s', buf); + ReplaceWords('S','l','u','t', 'E','d','i','n', buf); + ReplaceWords('F','a','r','t', 'B','o','o','t', buf); + ReplaceWords('D','r','a','r', 'Q','u','a','r', buf); + ReplaceWords('D','r','e','h', 'B','a','s','h', buf); + ReplaceWords('F','r','a','r', 'S','h','o','r', buf); + ReplaceWords('G','r','a','r', 'A','b','e','r', buf); + ReplaceWords('B','r','a','r', 'O','v','e','r', buf); + ReplaceWords('W','r','a','r', 'S','t','a','n', buf); -#define NUM_AUSTRIAN_B1 1 -static const char austrian_b1[] = - MK(" am ") -; + return 0; -#define NUM_AUSTRIAN_B2 10 -static const char austrian_b2[] = - MK("Brenner") - MK("Dachstein") - MK("Gebirge") - MK("Grossglockner") - MK("Hausruck") - MK("Semmering") - MK("Wagram") - MK("Wechsel") - MK("Wilden Kaiser") - MK("Ziller") -; + +} static byte MakeAustrianTownName(byte *buf, uint32 seed) { - int i, j=0; + int i, j = 0; + strcpy(buf, ""); // Bad, Maria, Gross, ... - i = GETNUM(0, NUM_AUSTRIAN_A1 + 15) - 15; - if (i >= 0) AppendPart(&buf, i, austrian_a1); + i = GetNumberBasedOnSeed(0, lengthof(name_austrian_a1) + 15,seed) - 15; + + if (i >= 0) strcat(buf, name_austrian_a1[i]); - i = GETNUM(4, 6); - if(i >= 4) { - // Kaisers-kirchen - AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A2), austrian_a2); - AppendPart(&buf, GETNUM(13, NUM_AUSTRIAN_A3), austrian_a3); + i = GetNumberBasedOnSeed(4, 6, seed); + if (i >= 4) + { + // Kaisers-kirchen + strcat(buf, name_austrian_a2[GetNumberBasedOnSeed( 7, lengthof(name_austrian_a2), seed)]); + strcat(buf, name_austrian_a3[GetNumberBasedOnSeed(13, lengthof(name_austrian_a3), seed)]); } - else if(i >= 2) { - // St. Johann - AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A5), austrian_a5); - AppendPart(&buf, GETNUM( 9, NUM_AUSTRIAN_A6), austrian_a6); - j=1; // More likely to have a " an der " or " am " + else if (i >= 2) + { + // St. Johann + strcat(buf, name_austrian_a5[GetNumberBasedOnSeed( 7, lengthof(name_austrian_a5), seed)]); + strcat(buf, name_austrian_a6[GetNumberBasedOnSeed( 9, lengthof(name_austrian_a6), seed)]); + j = 1; // More likely to have a " an der " or " am " } - else { - // Zell - AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A4), austrian_a4); + else + { + // Zell + strcat(buf, name_austrian_a4[GetNumberBasedOnSeed( 7, lengthof(name_austrian_a4), seed)]); } - i = GETNUM(1, 6); - if(i >= 4-j) { - // an der Donau (rivers) - AppendPart(&buf, GETNUM(4, NUM_AUSTRIAN_F1), austrian_f1); - AppendPart(&buf, GETNUM(5, NUM_AUSTRIAN_F2), austrian_f2); + i = GetNumberBasedOnSeed(1, 6, seed); + if (i >= 4 - j) + { + // an der Donau (rivers) + strcat(buf, name_austrian_f1[GetNumberBasedOnSeed(4, lengthof(name_austrian_f1), seed)]); + strcat(buf, name_austrian_f2[GetNumberBasedOnSeed(5, lengthof(name_austrian_f2), seed)]); } - else if(i >= 2-j) { - // am Dachstein (mountains) - AppendPart(&buf, GETNUM(4, NUM_AUSTRIAN_B1), austrian_b1); - AppendPart(&buf, GETNUM(5, NUM_AUSTRIAN_B2), austrian_b2); + else if (i >= 2 - j) + { + // am Dachstein (mountains) + strcat(buf, name_austrian_b1[GetNumberBasedOnSeed(4, lengthof(name_austrian_b1), seed)]); + strcat(buf, name_austrian_b2[GetNumberBasedOnSeed(5, lengthof(name_austrian_b2), seed)]); } return 0; } -#define NUM_GERMAN_1 114 -#define NUM_GERMAN_1_HARDCODED 21 -static const char german_1[] = - /* hardcoded names */ - MK("Berlin") - MK("Bonn") - MK("Bremen") - MK("Cottbus") - MK("Chemnitz") - MK("Dortmund") - MK("Dresden") - MK("Erfurt") - MK("Erlangen") - MK("Essen") - MK("Fulda") - MK("Gera") - MK("Kassel") - MK("Kiel") - MK("Köln") - MK("Lübeck") - MK("Magdeburg") - MK("München") - MK("Potsdam") - MK("Stuttgart") - MK("Wiesbaden") - /* randomizer names */ - MK("Alb") - MK("Als") - MK("Ander") - MK("Arns") - MK("Bruns") - MK("Bam") - MK("Biele") - MK("Cloppen") - MK("Co") - MK("Duis") - MK("Düssel") - MK("Dannen") - MK("Elb") - MK("Els") - MK("Elster") - MK("Eichen") - MK("Ems") - MK("Fahr") - MK("Falken") - MK("Flens") - MK("Frank") - MK("Frei") - MK("Freuden") - MK("Fried") - MK("Fürsten") - MK("Hahn") - MK("Ham") - MK("Harz") - MK("Heidel") - MK("Hers") - MK("Herz") - MK("Holz") - MK("Hildes") - MK("Inns") - MK("Ilsen") - MK("Ingols") - MK("Kel") - MK("Kies") - MK("Korn") - MK("Kor") - MK("Kreuz") - MK("Kulm") - MK("Langen") - MK("Lim") - MK("Lohr") - MK("Lüne") - MK("Mel") - MK("Michels") - MK("Mühl") - MK("Naum") - MK("Nest") - MK("Nord") - MK("Nort") - MK("Nien") - MK("Nidda") - MK("Nieder") - MK("Nürn") - MK("Ober") - MK("Offen") - MK("Osna") - MK("Olden") - MK("Ols") - MK("Oranien") - MK("Pader") - MK("Quedlin") - MK("Quer") - MK("Ravens") - MK("Regens") - MK("Rott") - MK("Ros") - MK("Rüssels") - MK("Saal") - MK("Saar") - MK("Salz") - MK("Schöne") - MK("Schwein") - MK("Sonder") - MK("Sonnen") - MK("Stein") - MK("Strals") - MK("Straus") - MK("Süd") - MK("Ton") - MK("Unter") - MK("Ur") - MK("Vor") - MK("Wald") - MK("War") - MK("Wert") - MK("Wester") - MK("Witten") - MK("Wolfs") - MK("Würz") -; - -#define NUM_GERMAN_2 16 -static const char german_2[] = - MK("bach") - MK("berg") - MK("brück") - MK("brücken") - MK("burg") - MK("dorf") - MK("feld") - MK("furt") - MK("hausen") - MK("haven") - MK("heim") - MK("horst") - MK("mund") - MK("münster") - MK("stadt") - MK("wald") -; - -#define NUM_GERMAN_3 5 -static const char german_3[] = - MK(" an der ") - MK(" am ") - MK("Bad ") - MK("Klein ") - MK("Neu ") -; - -#define NUM_GERMAN_4 6 -#define NUM_GERMAN_4_PRECHANGE 5 -static const char german_4[] = - /* use "an der" */ - MK("Oder") - MK("Spree") - MK("Donau") - MK("Saale") - MK("Elbe") - /* use "am" */ - MK("Main") - -; - static byte MakeGermanTownName(byte *buf, uint32 seed) { int i; - int ext; + + //null terminates the string for strcat + strcpy(buf, ""); - ext=GETNUM(7, 28); /* Extension - Prefix / Suffix */ + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_german_pre) + 50, seed) - 50) >= 0) + { + strcat(buf,name_german_pre[i]); + } - if ((ext==12) || (ext==19)) { - i=GETNUM(2,NUM_GERMAN_3-2); - AppendPart(&buf, 2+i, german_3); + // mandatory middle segments including option of hardcoded name + if ((i = GetNumberBasedOnSeed(4, lengthof(name_german_hardcoded) + 50, seed) - 50) >= 0) + { + strcat(buf,name_german_hardcoded[i]); + } + else + { + strcat(buf, name_german_1[GetNumberBasedOnSeed( 7, lengthof(name_german_1), seed)]); + strcat(buf, name_german_2[GetNumberBasedOnSeed(10, lengthof(name_german_2), seed)]); } + //optional last segment + if ((i = GetNumberBasedOnSeed(12, 50 + 10, seed) - 50) >= 0) + { + if (i > 2) + { + strcat(buf, name_german_3_an_der[GetNumberBasedOnSeed(14, lengthof(name_german_3_an_der), seed)]); + strcat(buf, name_german_4_an_der[GetNumberBasedOnSeed(15, lengthof(name_german_4_an_der), seed)]); + } else { + strcat(buf, name_german_3_am[GetNumberBasedOnSeed(14, lengthof(name_german_3_am), seed)]); + strcat(buf, name_german_4_am[GetNumberBasedOnSeed(15, lengthof(name_german_4_am), seed)]); + } + - i=GETNUM(3,NUM_GERMAN_1); + } + return 0; +} + +static byte MakeSpanishTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_spanish_1[GetNumberBasedOnSeed(0, lengthof(name_spanish_1), seed)]); + return 0; +} + +static byte MakeFrenchTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_french_1[GetNumberBasedOnSeed(0, lengthof(name_french_1), seed)]); + return 0; +} + +static byte MakeSillyTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_silly_1[GetNumberBasedOnSeed( 0, lengthof(name_silly_1), seed)]); + strcat(buf, name_silly_2[GetNumberBasedOnSeed(16, lengthof(name_silly_2), seed)]); + return 0; +} + +static byte MakeSwedishTownName(byte *buf, uint32 seed) +{ + int i; + + //null terminates the string for strcat + strcpy(buf, ""); + + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_swedish_1) + 50, seed) - 50) >= 0) + { + strcat(buf, name_swedish_1[i]); + } - AppendPart(&buf, i, german_1); + // mandatory middle segments including option of hardcoded name + if (GetNumberBasedOnSeed(4, 5, seed) >= 3) + { + strcat(buf, name_swedish_2[GetNumberBasedOnSeed( 7, lengthof(name_swedish_2), seed)]); + } + else + { + strcat(buf, name_swedish_2a[GetNumberBasedOnSeed( 7, lengthof(name_swedish_2a), seed)]); + strcat(buf, name_swedish_2b[GetNumberBasedOnSeed(10, lengthof(name_swedish_2b), seed)]); + strcat(buf, name_swedish_2c[GetNumberBasedOnSeed(13, lengthof(name_swedish_2c), seed)]); + } + + strcat(buf, name_swedish_3[GetNumberBasedOnSeed(16, lengthof(name_swedish_3), seed)]); + + return 0; +} + +static byte MakeDutchTownName(byte *buf, uint32 seed) +{ + int i; + + //null terminates the string for strcat + strcpy(buf, ""); + + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_dutch_1) + 50, seed) - 50) >= 0) + { + strcat(buf, name_dutch_1[i]); + } - if (i>NUM_GERMAN_1_HARDCODED-1) { - AppendPart(&buf, GETNUM(5, NUM_GERMAN_2), german_2); + // mandatory middle segments including option of hardcoded name + if (GetNumberBasedOnSeed(6, 9, seed) > 4) + { + strcat(buf, name_dutch_2[GetNumberBasedOnSeed( 9, lengthof(name_dutch_2), seed)]); + } + else + { + strcat(buf, name_dutch_3[GetNumberBasedOnSeed( 9, lengthof(name_dutch_3), seed)]); + strcat(buf, name_dutch_4[GetNumberBasedOnSeed(12, lengthof(name_dutch_4), seed)]); + } + strcat(buf, name_dutch_5[GetNumberBasedOnSeed(15, lengthof(name_dutch_5), seed)]); + + return 0; +} + +static byte MakeFinnishTownName(byte *buf, uint32 seed) +{ + //null terminates the string for strcat + strcpy(buf, ""); + + // Select randomly if town name should consists of one or two parts. + if (GetNumberBasedOnSeed(0, 15, seed) >= 10) + { + strcat(buf, name_finnish_1[GetNumberBasedOnSeed( 2, lengthof(name_finnish_1), seed)]); + } + else + { + strcat(buf, name_finnish_2a[GetNumberBasedOnSeed( 2, lengthof(name_finnish_2a), seed)]); + strcat(buf, name_finnish_2b[GetNumberBasedOnSeed(10, lengthof(name_finnish_2b), seed)]); } - if (ext==24) { - i=GETNUM(9,NUM_GERMAN_4); + return 0; +} + +static byte MakePolishTownName(byte *buf, uint32 seed) +{ + int i, j; + + //null terminates the string for strcat + strcpy(buf, ""); + + // optional first segment + i = GetNumberBasedOnSeed(0, + lengthof(name_polish_2_o) + + lengthof(name_polish_2_m) + + lengthof(name_polish_2_f) + + lengthof(name_polish_2_n), seed); + j = GetNumberBasedOnSeed(2, 20, seed); + + + if (i < lengthof(name_polish_2_o)) + { + strcat(buf, name_polish_2_o[GetNumberBasedOnSeed(3, lengthof(name_polish_2_o), seed)]); + } + else if (i < lengthof(name_polish_2_m) + lengthof(name_polish_2_o)) + { + if (j < 4) + strcat(buf, name_polish_1_m[GetNumberBasedOnSeed(5, lengthof(name_polish_1_m), seed)]); + + strcat(buf, name_polish_2_m[GetNumberBasedOnSeed(7, lengthof(name_polish_2_m), seed)]); + + if (j >= 4 && j < 16) + strcat(buf, name_polish_3_m[GetNumberBasedOnSeed(10, lengthof(name_polish_3_m), seed)]); + } + else if (i < lengthof(name_polish_2_f) + lengthof(name_polish_2_m) + lengthof(name_polish_2_o)) + { + if (j < 4) + strcat(buf, name_polish_1_f[GetNumberBasedOnSeed(5, lengthof(name_polish_1_f), seed)]); + + strcat(buf, name_polish_2_f[GetNumberBasedOnSeed(7, lengthof(name_polish_2_f), seed)]); + + if (j >= 4 && j < 16) + strcat(buf, name_polish_3_f[GetNumberBasedOnSeed(10, lengthof(name_polish_3_f), seed)]); + } + else + { + if (j < 4) + strcat(buf, name_polish_1_n[GetNumberBasedOnSeed(5, lengthof(name_polish_1_n), seed)]); + + strcat(buf, name_polish_2_n[GetNumberBasedOnSeed(7, lengthof(name_polish_2_n), seed)]); - if (i<=NUM_GERMAN_4_PRECHANGE-1) { - AppendPart(&buf, 0, german_3); - AppendPart(&buf, i, german_4); - } else { - AppendPart(&buf, 1, german_3); - AppendPart(&buf, i, german_4); + if (j >= 4 && j < 16) + strcat(buf, name_polish_3_n[GetNumberBasedOnSeed(10, lengthof(name_polish_3_n), seed)]); + } + return 0; +} + +static byte MakeCzechTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_czech_1[GetNumberBasedOnSeed(0, lengthof(name_czech_1), seed)]); + return 0; +} + +static byte MakeRomanianTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_romanian_1[GetNumberBasedOnSeed(0, lengthof(name_romanian_1), seed)]); + return 0; +} + +static byte MakeSlovakTownName(byte *buf, uint32 seed) +{ + strcpy(buf, ""); + strcat(buf, name_slovakish_1[GetNumberBasedOnSeed(0, lengthof(name_slovakish_1), seed)]); + return 0; +} + +static byte MakeHungarianTownName(byte *buf, uint32 seed) +{ + int i; + + //null terminates the string for strcat + strcpy(buf, ""); + + if (GetNumberBasedOnSeed(12, 15, seed) < 3) + { + strcat(buf, name_hungarian_real[GetNumberBasedOnSeed(0, lengthof(name_hungarian_real), seed)]); + } + else + { + // optional first segment + if ((i = GetNumberBasedOnSeed(0, lengthof(name_hungarian_1) * 3, seed)) < lengthof(name_hungarian_1)) + { + strcat(buf, name_hungarian_1[i]); + } + + // mandatory middle segments + strcat(buf, name_hungarian_2[GetNumberBasedOnSeed(3, lengthof(name_hungarian_2), seed)]); + strcat(buf, name_hungarian_3[GetNumberBasedOnSeed(6, lengthof(name_hungarian_3), seed)]); + + // optional last segment + if ((i = GetNumberBasedOnSeed(10, lengthof(name_hungarian_4) * 3, seed)) < lengthof(name_hungarian_4)) { + strcat(buf, name_hungarian_4[i]); } } return 0; } -#define NUM_SPANISH_1 86 -static const char spanish_1[] = - MK("Caracas") - MK("Maracay") - MK("Maracaibo") - MK("Velencia") - MK("El Dorado") - MK("Morrocoy") - MK("Cata") - MK("Cataito") - MK("Ciudad Bolivar") - MK("Barquisimeto") - MK("Merida") - MK("Puerto Ordaz") - MK("Santa Elena") - MK("San Juan") - MK("San Luis") - MK("San Rafael") - MK("Santiago") - MK("Barcelona") - MK("Barinas") - MK("San Cristobal") - MK("San Fransisco") - MK("San Martin") - MK("Guayana") - MK("San Carlos") - MK("El Limon") - MK("Coro") - MK("Corocoro") - MK("Puerto Ayacucho") - MK("Elorza") - MK("Arismendi") - MK("Trujillo") - MK("Carupano") - MK("Anaco") - MK("Lima") - MK("Cuzco") - MK("Iquitos") - MK("Callao") - MK("Huacho") - MK("Camana") - MK("Puerto Chala") - MK("Santa Cruz") - MK("Quito") - MK("Cuenca") - MK("Huacho") - MK("Tulcan") - MK("Esmereldas") - MK("Ibarra") - MK("San Lorenzo") - MK("Macas") - MK("Morana") - MK("Machala") - MK("Zamora") - MK("Latacunga") - MK("Tena") - MK("Cochabamba") - MK("Ascencion") - MK("Magdalena") - MK("Santa Ana") - MK("Manoa") - MK("Sucre") - MK("Oruro") - MK("Uyuni") - MK("Potosi") - MK("Tupiza") - MK("La Quiaca") - MK("Yacuiba") - MK("San Borja") - MK("Fuerte Olimpio") - MK("Fortin Esteros") - MK("Campo Grande") - MK("Bogota") - MK("El Banco") - MK("Zaragosa") - MK("Neiva") - MK("Mariano") - MK("Cali") - MK("La Palma") - MK("Andoas") - MK("Barranca") - MK("Montevideo") - MK("Valdivia") - MK("Arica") - MK("Temuco") - MK("Tocopilla") - MK("Mendoza") - MK("Santa Rosa"); - -static byte MakeSpanishTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_SPANISH_1), spanish_1); - return 0; -} - -#define NUM_FRENCH_1 70 -static const char french_1[] = - MK("Agincourt") - MK("Lille") - MK("Dinan") - MK("Aubusson") - MK("Rodez") - MK("Bergerac") - MK("Bordeaux") - MK("Bayonne") - MK("Montpellier") - MK("Montelimar") - MK("Valence") - MK("Digne") - MK("Nice") - MK("Cannes") - MK("St. Tropez") - MK("Marseilles") - MK("Narbonne") - MK("Sčte") - MK("Aurillac") - MK("Gueret") - MK("Le Creusot") - MK("Nevers") - MK("Auxerre") - MK("Versailles") - MK("Meaux") - MK("Châlons") - MK("Compičgne") - MK("Metz") - MK("Chaumont") - MK("Langres") - MK("Bourg") - MK("Lyons") - MK("Vienne") - MK("Grenoble") - MK("Toulon") - MK("Rennes") - MK("Le Mans") - MK("Angers") - MK("Nantes") - MK("Châteauroux") - MK("Orléans") - MK("Lisieux") - MK("Cherbourg") - MK("Morlaix") - MK("Cognac") - MK("Agen") - MK("Tulle") - MK("Blois") - MK("Troyes") - MK("Charolles") - MK("Grenoble") - MK("Chambéry") - MK("Tours") - MK("St. Brieuc") - MK("St. Malo") - MK("La Rochelle") - MK("St. Flour") - MK("Le Puy") - MK("Vichy") - MK("St. Valery") - MK("Beaujolais") - MK("Narbonne") - MK("Albi") - MK("St. Valery") - MK("Biarritz") - MK("Béziers") - MK("Nîmes") - MK("Chamonix") - MK("Angoulčme") - MK("Alençon"); - -static byte MakeFrenchTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_FRENCH_1), french_1); - return 0; -} - -static byte MakeAmericanTownName(byte *buf, uint32 seed) -{ - // make american town names equal to english for now. - return MakeEnglishTownName(buf, seed); -} - -#define NUM_SILLY_1 88 -static const char silly_1[] = - MK("Binky") - MK("Blubber") - MK("Bumble") - MK("Crinkle") - MK("Crusty") - MK("Dangle") - MK("Dribble") - MK("Flippety") - MK("Google") - MK("Muffin") - - MK("Nosey") - MK("Pinker") - MK("Quack") - MK("Rumble") - MK("Sleepy") - MK("Sliggles") - MK("Snooze") - MK("Teddy") - MK("Tinkle") - MK("Twister") - - MK("Pinker") - MK("Hippo") - MK("Itchy") - MK("Jelly") - MK("Jingle") - MK("Jolly") - MK("Kipper") - MK("Lazy") - MK("Frogs") - MK("Mouse") - - MK("Quack") - MK("Cheeky") - MK("Lumpy") - MK("Grumpy") - MK("Mangle") - MK("Fiddle") - MK("Slugs") - MK("Noodles") - MK("Poodles") - MK("Shiver") - - MK("Rumble") - MK("Pixie") - MK("Puddle") - MK("Riddle") - MK("Rattle") - MK("Rickety") - MK("Waffle") - MK("Sagging") - MK("Sausage") - MK("Egg") - - MK("Sleepy") - MK("Scatter") - MK("Scramble") - MK("Silly") - MK("Simple") - MK("Trickle") - MK("Slippery") - MK("Slimey") - MK("Slumber") - MK("Soggy") - - MK("Sliggles") - MK("Splutter") - MK("Sulky") - MK("Swindle") - MK("Swivel") - MK("Tasty") - MK("Tangle") - MK("Toggle") - MK("Trotting") - MK("Tumble") - - MK("Snooze") - MK("Water") - MK("Windy") - MK("Amble") - MK("Bubble") - MK("Cheery") - MK("Cheese") - MK("Cockle") - MK("Cracker") - MK("Crumple") - - MK("Teddy") - MK("Evil") - MK("Fairy") - MK("Falling") - MK("Fishy") - MK("Fizzle") - MK("Frosty") - MK("Griddle") -; - -#define NUM_SILLY_2 15 -static const char silly_2[] = - MK("ton") - MK("bury") - MK("bottom") - MK("ville") - MK("well") - MK("weed") - MK("worth") - MK("wig") - MK("wick") - MK("wood") - - MK("pool") - MK("head") - MK("burg") - MK("gate") - MK("bridge") -; - - -static byte MakeSillyTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_SILLY_1), silly_1); - AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2); - return 0; -} - - -#define NUM_SWEDISH_1 4 -static const char swedish_1[] = - MK("Gamla ") - MK("Lilla ") - MK("Nya ") - MK("Stora "); - -#define NUM_SWEDISH_2 38 -static const char swedish_2[] = - MK("Boll") - MK("Bor") - MK("Ed") - MK("En") - MK("Erik") - MK("Es") - MK("Fin") - MK("Fisk") - MK("Grön") - MK("Hag") - MK("Halm") - MK("Karl") - MK("Kram") - MK("Kung") - MK("Land") - MK("Lid") - MK("Lin") - MK("Mal") - MK("Malm") - MK("Marie") - MK("Ner") - MK("Norr") - MK("Oskar") - MK("Sand") - MK("Skog") - MK("Stock") - MK("Stor") - MK("Ström") - MK("Sund") - MK("Söder") - MK("Tall") - MK("Tratt") - MK("Troll") - MK("Upp") - MK("Var") - MK("Väster") - MK("Ängel") - MK("Öster"); - -#define NUM_SWEDISH_2A 42 -static const char swedish_2a[] = - MK("B") - MK("Br") - MK("D") - MK("Dr") - MK("Dv") - MK("F") - MK("Fj") - MK("Fl") - MK("Fr") - MK("G") - MK("Gl") - MK("Gn") - MK("Gr") - MK("H") - MK("J") - MK("K") - MK("Kl") - MK("Kn") - MK("Kr") - MK("Kv") - MK("L") - MK("M") - MK("N") - MK("P") - MK("Pl") - MK("Pr") - MK("R") - MK("S") - MK("Sk") - MK("Skr") - MK("Sl") - MK("Sn") - MK("Sp") - MK("Spr") - MK("St") - MK("Str") - MK("Sv") - MK("T") - MK("Tr") - MK("Tv") - MK("V") - MK("Vr"); - -#define NUM_SWEDISH_2B 9 -static const char swedish_2b[] = - MK("a") - MK("e") - MK("i") - MK("o") - MK("u") - MK("y") - MK("ĺ") - MK("ä") - MK("ö"); - -#define NUM_SWEDISH_2C 26 -static const char swedish_2c[] = - MK("ck") - MK("d") - MK("dd") - MK("g") - MK("gg") - MK("l") - MK("ld") - MK("m") - MK("n") - MK("nd") - MK("ng") - MK("nn") - MK("p") - MK("pp") - MK("r") - MK("rd") - MK("rk") - MK("rp") - MK("rr") - MK("rt") - MK("s") - MK("sk") - MK("st") - MK("t") - MK("tt") - MK("v"); - -#define NUM_SWEDISH_3 32 -static const char swedish_3[] = - MK("arp") - MK("berg") - MK("boda") - MK("borg") - MK("bro") - MK("bukten") - MK("by") - MK("byn") - MK("fors") - MK("hammar") - MK("hamn") - MK("holm") - MK("hus") - MK("hättan") - MK("kulle") - MK("köping") - MK("lund") - MK("löv") - MK("sala") - MK("skrona") - MK("slätt") - MK("spĺng") - MK("stad") - MK("sund") - MK("svall") - MK("svik") - MK("sĺker") - MK("udde") - MK("valla") - MK("viken") - MK("älv") - MK("ĺs"); - -static byte MakeSwedishTownName(byte *buf, uint32 seed) -{ - int i; - - i = GETNUM(0, 50 + NUM_SWEDISH_1) - 50; - if (i >= 0) AppendPart(&buf, i, swedish_1); - - if (GETNUM(4, 5) >= 3) - AppendPart(&buf, GETNUM(7, NUM_SWEDISH_2), swedish_2); - else { - AppendPart(&buf, GETNUM(7, NUM_SWEDISH_2A), swedish_2a); - AppendPart(&buf, GETNUM(10, NUM_SWEDISH_2B), swedish_2b); - AppendPart(&buf, GETNUM(13, NUM_SWEDISH_2C), swedish_2c); - } - - AppendPart(&buf, GETNUM(16, NUM_SWEDISH_3), swedish_3); - - return 0; -} - - -#define NUM_DUTCH_1 8 -static const char dutch_1[] = - MK("Nieuw ") - MK("Oud ") - MK("Groot ") - MK("Zuid ") - MK("Noord ") - MK("Oost ") - MK("West ") - MK("Klein "); - -#define NUM_DUTCH_2 57 -static const char dutch_2[] = - MK("Hoog") - MK("Laag") - MK("Klein") - MK("Groot") - MK("Noorder") - MK("Noord") - MK("Zuider") - MK("Zuid") - MK("Ooster") - MK("Oost") - MK("Wester") - MK("West") - MK("Hoofd") - MK("Midden") - MK("Eind") - MK("Amster") - MK("Amstel") - MK("Dord") - MK("Rotter") - MK("Haar") - MK("Til") - MK("Enk") - MK("Dok") - MK("Veen") - MK("Leidsch") - MK("Lely") - MK("En") - MK("Kaats") - MK("U") - MK("Maas") - MK("Mar") - MK("Bla") - MK("Al") - MK("Alk") - MK("Eer") - MK("Drie") - MK("Ter") - MK("Groes") - MK("Goes") - MK("Soest") - MK("Coe") - MK("Uit") - MK("Zwaag") - MK("Hellen") - MK("Slie") - MK("IJ") - MK("Grubben") - MK("Groen") - MK("Lek") - MK("Ridder") - MK("Schie") - MK("Olde") - MK("Roose") - MK("Haar") - MK("Til") - MK("Loos") - MK("Hil"); - -#define NUM_DUTCH_3 20 -static const char dutch_3[] = - MK("Drog") - MK("Nat") - MK("Valk") - MK("Bob") - MK("Dedem") - MK("Kollum") - MK("Best") - MK("Hoend") - MK("Leeuw") - MK("Graaf") - MK("Uithuis") - MK("Purm") - MK("Hard") - MK("Hell") - MK("Werk") - MK("Spijk") - MK("Vink") - MK("Wams") - MK("Heerhug") - MK("Koning"); - - -#define NUM_DUTCH_4 6 -static const char dutch_4[] = - MK("e") - MK("er") - MK("el") - MK("en") - MK("o") - MK("s"); - -#define NUM_DUTCH_5 56 -static const char dutch_5[] = - MK("stad") - MK("vorst") - MK("dorp") - MK("dam") - MK("beek") - MK("doorn") - MK("zijl") - MK("zijlen") - MK("lo") - MK("muiden") - MK("meden") - MK("vliet") - MK("nisse") - MK("daal") - MK("vorden") - MK("vaart") - MK("mond") - MK("zaal") - MK("water") - MK("duinen") - MK("heuvel") - MK("geest") - MK("kerk") - MK("meer") - MK("maar") - MK("hoorn") - MK("rade") - MK("wijk") - MK("berg") - MK("heim") - MK("sum") - MK("richt") - MK("burg") - MK("recht") - MK("drecht") - MK("trecht") - MK("tricht") - MK("dricht") - MK("lum") - MK("rum") - MK("halen") - MK("oever") - MK("wolde") - MK("veen") - MK("hoven") - MK("gast") - MK("kum") - MK("hage") - MK("dijk") - MK("zwaag") - MK("pomp") - MK("huizen") - MK("bergen") - MK("schede") - MK("mere") - MK("end"); - -static byte MakeDutchTownName(byte *buf, uint32 seed) -{ - int i; - - i = GETNUM(0, 50 + NUM_DUTCH_1) - 50; - if (i >= 0) - AppendPart(&buf, i, dutch_1); - - i = GETNUM(6, 9); - if(i > 4){ - AppendPart(&buf, GETNUM(9, NUM_DUTCH_2), dutch_2); - } else { - AppendPart(&buf, GETNUM(9, NUM_DUTCH_3), dutch_3); - AppendPart(&buf, GETNUM(12, NUM_DUTCH_4), dutch_4); - } - AppendPart(&buf, GETNUM(15, NUM_DUTCH_5), dutch_5); - - return 0; -} - -#define NUM_FINNISH_1 25 -static const char finnish_1[] = - MK("Aijala") - MK("Kisko") - MK("Espoo") - MK("Helsinki") - MK("Tapiola") - MK("Järvelä") - MK("Lahti") - MK("Kotka") - MK("Hamina") - MK("Loviisa") - MK("Kouvola") - MK("Tampere") - MK("Kokkola") - MK("Oulu") - MK("Salo") - MK("Malmi") - MK("Pelto") - MK("Koski") - MK("Iisalmi") - MK("Raisio") - MK("Taavetti") - MK("Joensuu") - MK("Imatra") - MK("Tapanila") - MK("Pasila"); - -#define NUM_FINNISH_2a 26 -static const char finnish_2a[] = - MK("Hiekka") - MK("Haapa") - MK("Mylly") - MK("Kivi") - MK("Lappeen") - MK("Lohjan") - MK("Savon") - MK("Sauna") - MK("Keri") - MK("Uusi") - MK("Vanha") - MK("Lapin") - MK("Kesä") - MK("Kuusi") - MK("Pelto") - MK("Tuomi") - MK("Pitäjän") - MK("Terva") - MK("Olki") - MK("Heinä") - MK("Kuusan") - MK("Seinä") - MK("Kemi") - MK("Rova") - MK("Martin") - MK("Koivu"); - -#define NUM_FINNISH_2b 18 -static const char finnish_2b[] = - MK("harju") - MK("linna") - MK("järvi") - MK("kallio") - MK("mäki") - MK("nummi") - MK("joki") - MK("kylä") - MK("lampi") - MK("lahti") - MK("metsä") - MK("suo") - MK("laakso") - MK("niitty") - MK("luoto") - MK("hovi") - MK("ranta") - MK("koski"); - -static byte MakeFinnishTownName(byte *buf, uint32 seed) -{ -// Select randomly if town name should consists of one or two parts. - if (GETNUM(0, 15) >= 10) - AppendPart(&buf, GETNUM(2, NUM_FINNISH_1), finnish_1); // One part - else { - AppendPart(&buf, GETNUM(2, NUM_FINNISH_2a), finnish_2a); // Two parts - AppendPart(&buf, GETNUM(10, NUM_FINNISH_2b), finnish_2b); - } - return 0; -} - -#define NUM_POLISH_1 11 - -static const char polish_1_m[] = - MK("Wielki ") - MK("Maly ") - MK("Zly ") - MK("Dobry ") - MK("Nowy ") - MK("Stary ") - MK("Zloty ") - MK("Zielony ") - MK("Bialy ") - MK("Modry ") - MK("Debowy ") - ; - -static const char polish_1_f[] = - MK("Wielka ") - MK("Mala ") - MK("Zla ") - MK("Dobra ") - MK("Nowa ") - MK("Stara ") - MK("Zlota ") - MK("Zielona ") - MK("Biala ") - MK("Modra ") - MK("Debowa ") - ; - -static const char polish_1_n[] = - MK("Wielkie ") - MK("Male ") - MK("Zle ") - MK("Dobre ") - MK("Nowe ") - MK("Stare ") - MK("Zlote ") - MK("Zielone ") - MK("Biale ") - MK("Modre ") - MK("Debowe ") - ; - -#define NUM_POLISH_2_O 34// single names -#define NUM_POLISH_2_M 48// masculine + pref/suf -#define NUM_POLISH_2_F 27// feminine + pref/suf -#define NUM_POLISH_2_N 29// 'it' + pref/suf - -static const char polish_2[] = -//static const char polish_2_o[] = - MK("Frombork") - MK("Gniezno") - MK("Olsztyn") - MK("Torun") - MK("Bydgoszcz") - MK("Terespol") - MK("Krakow") - MK("Poznan") - MK("Wroclaw") - MK("Katowice") - MK("Cieszyn") - MK("Bytom") - MK("Frombork") - MK("Hel") - MK("Konin") - MK("Lublin") - MK("Malbork") - MK("Sopot") - MK("Sosnowiec") - MK("Gdansk") - MK("Gdynia") - MK("Sieradz") - MK("Sandomierz") - MK("Szczyrk") - MK("Szczytno") - MK("Szczecin") - MK("Zakopane") - MK("Szklarska Poreba") - MK("Bochnia") - MK("Golub-Dobrzyn") - MK("Chojnice") - MK("Ostrowiec") - MK("Otwock") - MK("Wolsztyn") -//; - -//static const char polish_2_m[] = - MK("Jarocin") - MK("Gogolin") - MK("Tomaszow") - MK("Piotrkow") - MK("Lidzbark") - MK("Rypin") - MK("Radzymin") - MK("Wolomin") - MK("Pruszkow") - MK("Olsztynek") - MK("Rypin") - MK("Cisek") - MK("Krotoszyn") - MK("Stoczek") - MK("Lubin") - MK("Lubicz") - MK("Milicz") - MK("Targ") - MK("Ostrow") - MK("Ozimek") - MK("Puck") - MK("Rzepin") - MK("Siewierz") - MK("Stargard") - MK("Starogard") - MK("Turek") - MK("Tymbark") - MK("Wolsztyn") - MK("Strzepcz") - MK("Strzebielin") - MK("Sochaczew") - MK("Grebocin") - MK("Gniew") - MK("Lubliniec") - MK("Lubasz") - MK("Lutomiersk") - MK("Niemodlin") - MK("Przeworsk") - MK("Ursus") - MK("Tyczyn") - MK("Sztum") - MK("Szczebrzeszyn") - MK("Wolin") - MK("Wrzeszcz") - MK("Zgierz") - MK("Zieleniec") - MK("Drobin") - MK("Garwolin") -//; - -//static const char polish_2_f[] = - MK("Szprotawa") - MK("Pogorzelica") - MK("Motlawa") - MK("Lubawa") - MK("Nidzica") - MK("Kruszwica") - MK("Bierawa") - MK("Brodnica") - MK("Chojna") - MK("Krzepica") - MK("Ruda") - MK("Rumia") - MK("Tuchola") - MK("Trzebinia") - MK("Ustka") - MK("Warszawa") - MK("Bobowa") - MK("Dukla") - MK("Krynica") - MK("Murowana") - MK("Niemcza") - MK("Zaspa") - MK("Zawoja") - MK("Wola") - MK("Limanowa") - MK("Rabka") - MK("Skawina") - MK("Pilawa") -//; - -//static const char polish_2_n[] = - MK("Lipsko") - MK("Pilzno") - MK("Przodkowo") - MK("Strzelno") - MK("Susz") - MK("Jaworzno") - MK("Choszczno") - MK("Mogilno") - MK("Luzino") - MK("Miasto") - MK("Dziadowo") - MK("Kowalewo") - MK("Legionowo") - MK("Miastko") - MK("Zabrze") - MK("Zawiercie") - MK("Kochanowo") - MK("Miechucino") - MK("Mirachowo") - MK("Robakowo") - MK("Kosakowo") - MK("Borne") - MK("Braniewo") - MK("Sulinowo") - MK("Chmielno") - MK("Jastrzebie") - MK("Gryfino") - MK("Koronowo") - MK("Lubichowo") - MK("Opoczno") -; - -#define NUM_POLISH_3 29 -static const char polish_3_m[] = - MK(" Wybudowanie") - MK(" Swietokrzyski") - MK(" Gorski") - MK(" Morski") - MK(" Zdroj") - MK(" Wody") - MK(" Bajoro") - MK(" Krajenski") - MK(" Slaski") - MK(" Mazowiecki") - MK(" Pomorski") - MK(" Wielki") - MK(" Maly") - MK(" Warminski") - MK(" Mazurski") - MK(" Mniejszy") - MK(" Wiekszy") - MK(" Gorny") - MK(" Dolny") - MK(" Wielki") - MK(" Stary") - MK(" Nowy") - MK(" Wielkopolski") - MK(" Wzgorze") - MK(" Mosty") - MK(" Kujawski") - MK(" Malopolski") - MK(" Podlaski") - MK(" Lesny") -; -static const char polish_3_f[] = - MK(" Wybudowanie") - MK(" Swietokrzyska") - MK(" Gorska") - MK(" Morska") - MK(" Zdroj") - MK(" Woda") - MK(" Bajoro") - MK(" Krajenska") - MK(" Slaska") - MK(" Mazowiecka") - MK(" Pomorska") - MK(" Wielka") - MK(" Mala") - MK(" Warminska") - MK(" Mazurska") - MK(" Mniejsza") - MK(" Wieksza") - MK(" Gorna") - MK(" Dolna") - MK(" Wielka") - MK(" Stara") - MK(" Nowa") - MK(" Wielkopolska") - MK(" Wzgorza") - MK(" Mosty") - MK(" Kujawska") - MK(" Malopolska") - MK(" Podlaska") - MK(" Lesna") -; -static const char polish_3_n[] = - MK(" Wybudowanie") - MK(" Swietokrzyskie") - MK(" Gorskie") - MK(" Morskie") - MK(" Zdroj") - MK(" Wody") - MK(" Bajoro") - MK(" Krajenskie") - MK(" Slaskie") - MK(" Mazowieckie") - MK(" Pomorskie") - MK(" Wielkie") - MK(" Male") - MK(" Warminskie ") - MK(" Mazurskie ") - MK(" Mniejsze") - MK(" Wieksze") - MK(" Gorne") - MK(" Dolne") - MK(" Wielkie") - MK(" Stare") - MK(" Nowe") - MK(" Wielkopolskie") - MK(" Wzgorze") - MK(" Mosty") - MK(" Kujawskie") - MK(" Malopolskie") - MK(" Podlaskie") - MK(" Lesne") -; - -#define NUM_POLISH_2 NUM_POLISH_2_O + NUM_POLISH_2_M + NUM_POLISH_2_F + NUM_POLISH_2_N - -static const char * const _polish_types[3][2] = { - {polish_1_m, polish_3_m}, // masculine - {polish_1_f, polish_3_f}, // feminine - {polish_1_n, polish_3_n}, // neutral -}; - -static byte MakePolishTownName(byte *buf, uint32 seed) -{ - uint i, x; - const char *const (*t)[2]; - - // get a number ranging from 0 to all_towns - i = GETNUM(0, NUM_POLISH_2); - - // single name - if(i < NUM_POLISH_2_O) { - AppendPart(&buf, i, polish_2); - return 0; - } - - // a suffix (12/20), a prefix (4/20), or nothing (4/20) - x = GETNUM(5, 20); - - // no suffix of prefix - if(x < 4) { - AppendPart(&buf, i-NUM_POLISH_2_O, polish_2); - return 0; - } - - t = _polish_types; - if(IS_INT_INSIDE(i, NUM_POLISH_2_O, NUM_POLISH_2_O + NUM_POLISH_2_M)) { - // nothing - } else if (IS_INT_INSIDE(i, NUM_POLISH_2_O + NUM_POLISH_2_M, NUM_POLISH_2_O + NUM_POLISH_2_M + NUM_POLISH_2_F)) { - t += 1; - } else { - t += 2; - } - - // suffix or prefix - if(x < 8) { - AppendPart(&buf, GETNUM(10, NUM_POLISH_1), (*t)[0]); - AppendPart(&buf, i, polish_2); - } else { - AppendPart(&buf, i, polish_2); - AppendPart(&buf, GETNUM(10, NUM_POLISH_3), (*t)[1]); - } - - return 0; -} - -#define NUM_CZECH_1 82 -static const char czech_1[] = - MK("As") - MK("Benesov") - MK("Beroun") - MK("Bezdruzice") - MK("Blansko") - MK("Breclav") - MK("Brno") - MK("Bruntál") - MK("Ceská Lípa") - MK("Ceské Budejovice") - MK("Ceský Krumlov") - MK("Decín") - MK("Domazlice") - MK("Dubí") - MK("Frýdek-Místek") - MK("Havlíckuv Brod") - MK("Hodonín") - MK("Hradec Králové") - MK("Humpolec") - MK("Cheb") - MK("Chomutov") - MK("Chrudim") - MK("Jablonec nad Nisou") - MK("Jeseník") - MK("Jicín") - MK("Jihlava") - MK("Jindrichuv Hradec") - MK("Karlovy Vary") - MK("Karviná") - MK("Kladno") - MK("Klatovy") - MK("Kolín") - MK("Kosmonosy") - MK("Kromeríz") - MK("Kutná Hora") - MK("Liberec") - MK("Litomerice") - MK("Louny") - MK("Manetín") - MK("Melník") - MK("Mladá Boleslav") - MK("Most") - MK("Náchod") - MK("Nový Jicín") - MK("Nymburk") - MK("Olomouc") - MK("Opava") - MK("Orácov") - MK("Ostrava") - MK("Pardubice") - MK("Pelhrimov") - MK("Polzice") - MK("Písek") - MK("Plzen") - MK("Praha") - MK("Prachatice") - MK("Prerov") - MK("Príbram") - MK("Prostejov") - MK("Rakovník") - MK("Rokycany") - MK("Rudná") - MK("Rychnov nad Kneznou") - MK("Semily") - MK("Sokolov") - MK("Strakonice") - MK("Stredokluky") - MK("Sumperk") - MK("Svitavy") - MK("Tábor") - MK("Tachov") - MK("Teplice") - MK("Trebíc") - MK("Trutnov") - MK("Uherské Hradiste") - MK("Ústí nad Labem") - MK("Ústí nad Orlicí") - MK("Vsetín") - MK("Vyskov") - MK("Zdár nad Sázavou") - MK("Zlín") - MK("Znojmo") -; - -static byte MakeCzechTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_CZECH_1), czech_1); - return 0; -} - -#define NUM_ROMANIAN_1 94 -static const char romanian_1[]= - MK("Adjud") - MK("Alba Iulia") - MK("Alexandria") - MK("Babadag") - MK("Bacău") - MK("Baia Mare") - MK("Băile Herculane") - MK("Băilesti") - MK("Bârlad") - MK("Bicaz") - MK("Bistrita") - MK("Blaj") - MK("Borsec") - MK("Botosani") - MK("Brăila") - MK("Brasov") - MK("Bucuresti") - MK("Buftea") - MK("Buzău") - MK("Călărasi") - MK("Caransebes") - MK("Cernavodă") - MK("Cluj-Napoca") - MK("Constanta") - MK("Covasna") - MK("Craiova") - MK("Dej") - MK("Deva") - MK("Dorohoi") - MK("Dr.-Tr. Severin") - MK("Drăgăsani") - MK("Făgăras") - MK("Fălticeni") - MK("Fetesti") - MK("Focsani") - MK("Galati") - MK("Gheorgheni") - MK("Giurgiu") - MK("Hârsova") - MK("Hunedoara") - MK("Husi") - MK("Iasi") - MK("Isaccea") - MK("Lugoj") - MK("Măcin") - MK("Mangalia") - MK("Medgidia") - MK("Medias") - MK("Miercurea Ciuc") - MK("Mizil") - MK("Motru") - MK("Năsăud") - MK("Năvodari") - MK("Odobesti") - MK("Oltenita") - MK("Onesti") - MK("Oradea") - MK("Orsova") - MK("Petrosani") - MK("Piatra Neamt") - MK("Pitesti") - MK("Ploiesti") - MK("Predeal") - MK("Râmnicu Vâlcea") - MK("Reghin") - MK("Resita") - MK("Roman") - MK("Rosiorii de Vede") - MK("Satu Mare") - MK("Sebes") - MK("Sfântu Gheorghe") - MK("Sibiu") - MK("Sighisoara") - MK("Sinaia") - MK("Slatina") - MK("Slobozia") - MK("Sovata") - MK("Suceava") - MK("Sulina") - MK("Tăndărei") - MK("Târgoviste") - MK("Târgu Jiu") - MK("Târgu Mures") - MK("Tecuci") - MK("Timisoara") - MK("Tulcea") - MK("Turda") - MK("Turnu Măgurele") - MK("Urziceni") - MK("Vaslui") - MK("Vatra Dornei") - MK("Victoria") - MK("Videle") - MK("Zalău") -; - -static byte MakeRomanianTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_ROMANIAN_1), romanian_1); - return 0; -} - -#define NUM_SLOVAKISH_1 87 -static const char slovakish_1[] = - MK("Bratislava") - MK("Banovce nad Bebravou") - MK("Banska Bystrica") - MK("Banska Stiavnica") - MK("Bardejov") - MK("Brezno") - MK("Brezova pod Bradlom") - MK("Bytca") - MK("Cadca") - MK("Cierna nad Tisou") - MK("Detva") - MK("Detva") - MK("Dolny Kubin") - MK("Dolny Kubin") - MK("Dunajska Streda") - MK("Gabcikovo") - MK("Galanta") - MK("Gbely") - MK("Gelnica") - MK("Handlova") - MK("Hlohovec") - MK("Holic") - MK("Humenne") - MK("Hurbanovo") - MK("Kezmarok") - MK("Komarno") - MK("Kosice") - MK("Kremnica") - MK("Krompachy") - MK("Kuty") - MK("Leopoldov") - MK("Levoca") - MK("Liptovsky Mikulas") - MK("Lucenec") - MK("Malacky") - MK("Martin") - MK("Medzilaborce") - MK("Michalovce") - MK("Modra") - MK("Myjava") - MK("Namestovo") - MK("Nitra") - MK("Nova Bana") - MK("Nove Mesto nad Vahom") - MK("Nove Zamky") - MK("Partizanske") - MK("Pezinok") - MK("Piestany") - MK("Poltar") - MK("Poprad") - MK("Povazska Bystrica") - MK("Prievidza") - MK("Puchov") - MK("Revuca") - MK("Rimavska Sobota") - MK("Roznava") - MK("Ruzomberok") - MK("Sabinov") - MK("Sala") - MK("Senec") - MK("Senica") - MK("Sered") - MK("Skalica") - MK("Sladkovicovo") - MK("Smolenice") - MK("Snina") - MK("Stara Lubovna") - MK("Stara Tura") - MK("Strazske") - MK("Stropkov") - MK("Stupava") - MK("Sturovo") - MK("Sulekovo") - MK("Topolcany") - MK("Trebisov") - MK("Trencin") - MK("Trnava") - MK("Turcianske Teplice") - MK("Tvrdosin") - MK("Vrable") - MK("Vranov nad Toplov") - MK("Zahorska Bystrica") - MK("Zdiar") - MK("Ziar nad Hronom") - MK("Zilina") - MK("Zlate Moravce") - MK("Zvolen") -; - -static byte MakeSlovakTownName(byte *buf, uint32 seed) -{ - AppendPart(&buf, GETNUM(0, NUM_SLOVAKISH_1), slovakish_1); - return 0; -} - -// Modifiers -#define NUM_HUNGARIAN_1 5 -static const char hungarian_1[] = - MK("Nagy-") - MK("Kis-") - MK("Felső-") - MK("Alsó-") - MK("Új-") -; - -#define NUM_HUNGARIAN_2 54 -static const char hungarian_2[] = -// River modifiers -// 1 - 10 - MK("Bodrog") - MK("Dráva") - MK("Duna") - MK("Hejő") - MK("Hernád") - MK("Rába") - MK("Sajó") - MK("Szamos") - MK("Tisza") - MK("Zala") - // Lake modifiers - // 11 - 12 - MK("Balaton") - MK("Fertő") - // Mountain modifiers - // 13 - 14 - MK("Bakony") - MK("Cserhát") - // Country modifiers - // 15 - 23 - MK("Bihar") - MK("Hajdú") - MK("Jász") - MK("Kun") - MK("Magyar") - MK("Nógrád") - MK("Nyír") - MK("Somogy") - MK("Székely") - // Town modifiers - // 24 - 26 - MK("Buda") - MK("Győr") - MK("Pest") - // Color modifiers - // 27 - MK("Fehér") - // General terrain modifiers - // 28 - 34 - MK("Cserép") - MK("Erdő") - MK("Hegy") - MK("Homok") - MK("Mező") - MK("Puszta") - MK("Sár") - // Rank modifiers - // 35 - 40 - MK("Császár") - MK("Herceg") - MK("Király") - MK("Nemes") - MK("Püspök") - MK("Szent") - // Plant modifiers - // 41 - 42 - MK("Almás") - MK("Szilvás") - // Standard stuff - // 43 - 54 - MK("Agg") - MK("Aranyos") - MK("Békés") - MK("Egyházas") - MK("Gagy") - MK("Heves") - MK("Kapos") - MK("Tápió") - MK("Torna") - MK("Vas") - MK("Vámos") - MK("Vásáros") -; - -#define NUM_HUNGARIAN_3 16 -static const char hungarian_3[] = - MK("apáti") - MK("bába") - MK("bikk") - MK("dob") - MK("fa") - MK("föld") - MK("hegyes") - MK("kak") - MK("kereszt") - MK("kürt") - MK("ladány") - MK("mérges") - MK("szalonta") - MK("telek") - MK("vas") - MK("völgy") -; - -#define NUM_HUNGARIAN_4 5 -static const char hungarian_4[] = - MK("alja") - MK("egyháza") - MK("háza") - MK("úr") - MK("vár") -; - -#define NUM_HUNGARIAN_REAL 35 -static const char hungarian_real[] = - MK("Ajka") - MK("Aszód") - MK("Badacsony") - MK("Baja") - MK("Budapest") - MK("Debrecen") - MK("Eger") - MK("Fonyód") - MK("Gödöllő") - MK("Győr") - MK("Gyula") - MK("Karcag") - MK("Kecskemét") - MK("Keszthely") - MK("Kisköre") - MK("Kocsord") - MK("Komárom") - MK("Kőszeg") - MK("Makó") - MK("Mohács") - MK("Miskolc") - MK("Ózd") - MK("Paks") - MK("Pápa") - MK("Pécs") - MK("Polgár") - MK("Sarkad") - MK("Siófok") - MK("Szeged") - MK("Szentes") - MK("Szolnok") - MK("Tihany") - MK("Tokaj") - MK("Vác") - MK("Záhony") - MK("Zirc") -; - -static byte MakeHungarianTownName(byte *buf, uint32 seed) -{ - int i; - - if (GETNUM(12, 15) < 3) { - /* These are real names.. */ - AppendPart(&buf, GETNUM(0, NUM_HUNGARIAN_REAL), hungarian_real); - } else { - /* These are the generated names.. Some of them exist, LOL */ - /* Append the prefix if needed */ - i = GETNUM(3, NUM_HUNGARIAN_1 * 3); - if (i < NUM_HUNGARIAN_1) AppendPart(&buf, i, hungarian_1); - - AppendPart(&buf, GETNUM(3, NUM_HUNGARIAN_2), hungarian_2); - AppendPart(&buf, GETNUM(6, NUM_HUNGARIAN_3), hungarian_3); - - i = GETNUM(10, NUM_HUNGARIAN_4 * 3); - if (i < NUM_HUNGARIAN_4) AppendPart(&buf, i, hungarian_4); - } - return 0; -} - TownNameGenerator * const _town_name_generators[] = { - MakeEnglishTownName, + MakeEnglishOriginalTownName, MakeFrenchTownName, MakeGermanTownName, - MakeAmericanTownName, + MakeEnglishAdditionalTownName, MakeSpanishTownName, MakeSillyTownName, MakeSwedishTownName, @@ -2181,6 +428,7 @@ TownNameGenerator * const _town_name_gen MakeCzechTownName, }; +// DO WE NEED THIS ANY MORE? #define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z) uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type) @@ -2191,19 +439,19 @@ uint32 GetOldTownName(uint32 townnamepar return townnameparts; case 1: /* French */ /* For some reason 86 needs to be subtracted from townnameparts - * 0000 0000 0000 0000 0000 0000 1111 1111 */ - return FIXNUM(townnameparts - 86, NUM_FRENCH_1, 0); + * 0000 0000 0000 0000 0000 0000 1111 1111 */ + return FIXNUM(townnameparts - 86, lengthof(name_french_1), 0); case 2: /* German */ DEBUG(misc, 0) ("German Townnames are buggy... (%d)", townnameparts); return townnameparts; case 4: /* Latin-American */ /* 0000 0000 0000 0000 0000 0000 1111 1111 */ - return FIXNUM(townnameparts, NUM_SPANISH_1, 0); + return FIXNUM(townnameparts, lengthof(name_spanish_1), 0); case 5: /* Silly */ /* NUM_SILLY_1 - lower 16 bits - * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes) - * 1000 0000 2222 2222 0000 0000 1111 1111 */ - return FIXNUM(townnameparts, NUM_SILLY_1, 0) | FIXNUM(((townnameparts >> 16)&0xFF), NUM_SILLY_2, 16); + * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes) + * 1000 0000 2222 2222 0000 0000 1111 1111 */ + return FIXNUM(townnameparts, lengthof(name_silly_1), 0) | FIXNUM(((townnameparts >> 16)&0xFF), lengthof(name_silly_2), 16); } return 0; } diff --git a/settings_gui.c b/settings_gui.c --- a/settings_gui.c +++ b/settings_gui.c @@ -76,7 +76,7 @@ static void GameOptionsWndProc(Window *w SetDParam(1, _currency_string_list[_opt_mod_ptr->currency]); SetDParam(2, _opt_mod_ptr->kilometers + STR_0139_IMPERIAL_MILES); SetDParam(3, STR_02E9_DRIVE_ON_LEFT + _opt_mod_ptr->road_side); - SetDParam(4, STR_TOWNNAME_ENGLISH + _opt_mod_ptr->town_name); + SetDParam(4, STR_TOWNNAME_ORIGINAL_ENGLISH + _opt_mod_ptr->town_name); SetDParam(5, _autosave_dropdown[_opt_mod_ptr->autosave]); SetDParam(6, SPECSTR_LANGUAGE_START + _dynlang.curr); i = GetCurRes(); @@ -103,7 +103,7 @@ static void GameOptionsWndProc(Window *w } case 14: { int i = _opt_mod_ptr->town_name; - ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, e->click.widget, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i)); + ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ORIGINAL_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, e->click.widget, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i)); return; } case 17: diff --git a/table/namegen.h b/table/namegen.h new file mode 100644 --- /dev/null +++ b/table/namegen.h @@ -0,0 +1,1978 @@ +#include "../stdafx.h" +#include "../ttd.h" + +static const char *name_original_english_1[] = { + "Great ", + "Little ", + "New ", + "Fort ", +}; + +static const char *name_original_english_2[] = { + "Wr", + "B", + "C", + "Ch", + "Br", + "D", + "Dr", + "F", + "Fr", + "Fl", + "G", + "Gr", + "H", + "L", + "M", + "N", + "P", + "Pr", + "Pl", + "R", + "S", + "S", + "Sl", + "T", + "Tr", + "W" +}; + +static const char *name_original_english_3[] = { + "ar", + "a", + "e", + "in", + "on", + "u", + "un", + "en" +}; + +static const char *name_original_english_4[] = { + "n", + "ning", + "ding", + "d", + "", + "t" + "fing" +}; + +static const char *name_original_english_5[] = { + "ville", + "ham", + "field", + "ton", + "town", + "bridge", + "bury", + "wood", + "ford", + "hall", + "ston", + "way", + "stone", + "borough", + "ley", + "head", + "bourne", + "pool", + "worth", + "hill", + "well", + "hattan", + "burg", +}; + +static const char *name_original_english_6[] = { + "-on-sea", + " Bay", + " Market", + " Cross", + " Bridge", + " Falls", + " City", + " Ridge", + " Springs" +}; + +static const char *name_additional_english_prefix[] = { + "Great ", + "Little ", + "New ", + "Fort ", + "St. ", + "Old " +}; + +static const char *name_additional_english_1a[] = { + "Pen", + "Lough", + "Stam", + "Aber", + "Acc", + "Ex", + "Ax", + "Bre", + "Cum", + "Dun", + "Fin", + "Inver", + "Kin", + "Mon", + "Nan", + "Nant", + "Pit", + "Pol", + "Pont", + "Strath", + "Tre", + "Tilly", + "Beck", + "Canter", + "Bath", + "Liver", + "Mal", + "Ox", + "Bletch", + "Maccles", + "Grim", + "Wind", + "Sher", + "Gates", + "Orp", + "Brom", + "Lewis", + "Whit", + "White", + "Worm", + "Tyne", + "Avon", + "Stan" +}; + +static const char *name_additional_english_1b1[] = { + "Wr", + "B", + "C", + "Ch", + "Br", + "D", + "Dr", + "F", + "Fr", + "Fl", + "G", + "Gr", + "H", + "L", + "M", + "N", + "P", + "Pr", + "Pl", + "R", + "S", + "S", + "Sl", + "T", + "Tr", + "W" +}; + +static const char *name_additional_english_1b2[] = { + "ar", + "a", + "e", + "in", + "on", + "u", + "o", + "ee", + "es", + "ea", + "un", + "en" +}; + +static const char *name_additional_english_1b3a[] = { + "n", + "d", + "", + "t", + "", + "" +}; + +static const char *name_additional_english_1b3b[] = { + "ning", + "ding", + "fing" +}; + +static const char *name_additional_english_2[] = { + "ville", + "ham", + "field", + "ton", + "town", + "borough", + "bridge", + "bury", + "wood", + "ditch", + "ford", + "hall", + "dean", + "leigh", + "dore", + "ston", + "stow", + "church", + "wich", + "low", + "way", + "stone", + "minster", + "ley", + "head", + "bourne", + "pool", + "worth", + "hill", + "well", + "hattan", + "burg", + "berg", + "burgh", + "port", + "stoke", + "haven", + "stable", + "stock", + "side", + "brook", + "don", + "den", + "down", + "nor", + "grove", + "combe", + "by", + "say", + "ney", + "chester", + "dale", + "ness", + "shaw", + "thwaite" +}; + +static const char *name_additional_english_3[] = { + "-on-sea", + " Bay", + " Market", + " Beeches", + " Common", + " Park", + " Heath", + " Marsh", + " Green", + " Castle", + " End", + " Rivers", + " Cross", + " Bridge", + " Falls", + " City", + " Ridge", + " Springs" +}; + +static const char *name_austrian_a1[] = { + "Bad ", + "Deutsch ", + "Gross ", + "Klein ", + "Markt ", + "Maria " +}; + +static const char *name_austrian_a2[] = { + "Aus", + "Alten", + "Braun", + "Vösl", + "Mittern", + "Nuss", + "Neu", + "Walters", + "Breiten", + "Eisen", + "Feld", + "Mittern", + "Gall", + "Obern", + "Grat", + "Heiligen", + "Hof", + "Holla", + "Stein", + "Eber", + "Eggen", + "Enzers", + "Frauen", + "Herren", + "Hof", + "Hütt", + "Kaisers", + "Königs", + "Knittel", + "Lang", + "Ober", + "Ollers", + "Pfaffen", + "Potten", + "Salz", + "Schwarz", + "Stocker", + "Unter", + "Utten", + "Vösen", + "Vill", + "Weissen" +}; + +static const char *name_austrian_a3[] = { + "see", + "bach", + "dorf", + "ach", + "stein", + "hofen", + "au", + "ach", + "kirch", + "kirchen", + "kreuz", + "brunn", + "siedl", + "markt", + "wang", + "haag" +}; + +static const char *name_austrian_a4[] = { + "Bruck", + "Brunn", + "Gams", + "Grein", + "Ried", + "Faak", + "Zell", + "Spital", + "Kirchberg", + "Saal", + "Taferl", + "Wald" +}; + +static const char *name_austrian_a5[] = { + "St. ", + "Sankt " +}; + +static const char *name_austrian_a6[] = { + "Aegyd", + "Andrä", + "Georgen", + "Jakob", + "Johann", + "Leonhard", + "Marein", + "Lorenzen", + "Margarethen", + "Martin", + "Michael", + "Nikolai", + "Oswald", + "Peter", + "Pölten", + "Stefan", + "Stephan", + "Thomas", + "Veit", + "Wolfgang" +}; + +static const char *name_austrian_f1[] = { + " an der ", + " ob der " +}; + +static const char *name_austrian_f2[] = { + "Donau", + "Steyr", + "Lafnitz", + "Leitha", + "Thaya", + "Gail", + "Drau", + "Salzach", + "Ybbs", + "Traisen", + "Enns", + "Mur", + "Ill" +}; + +static const char *name_austrian_b1[] = { + " am " +}; + +static const char *name_austrian_b2[] = { + "Brenner", + "Dachstein", + "Gebirge", + "Grossglockner", + "Hausruck", + "Semmering", + "Wagram", + "Wechsel", + "Wilden Kaiser", + "Ziller" +}; + +static const char *name_german_hardcoded[] = { + "Berlin", + "Bonn", + "Bremen", + "Cottbus", + "Chemnitz", + "Dortmund", + "Dresden", + "Erfurt", + "Erlangen", + "Essen", + "Fulda", + "Gera", + "Kassel", + "Kiel", + "Köln", + "Lübeck", + "Magdeburg", + "München", + "Potsdam", + "Stuttgart", + "Wiesbaden" +}; + +static const char *name_german_pre[] = { + "Bad ", + "Klein ", + "Neu " +}; + +static const char *name_german_1[] = { + "Alb", + "Als", + "Ander", + "Arns", + "Bruns", + "Bam", + "Biele", + "Cloppen", + "Co", + "Duis", + "Düssel", + "Dannen", + "Elb", + "Els", + "Elster", + "Eichen", + "Ems", + "Fahr", + "Falken", + "Flens", + "Frank", + "Frei", + "Freuden", + "Fried", + "Fürsten", + "Hahn", + "Ham", + "Harz", + "Heidel", + "Hers", + "Herz", + "Holz", + "Hildes", + "Inns", + "Ilsen", + "Ingols", + "Kel", + "Kies", + "Korn", + "Kor", + "Kreuz", + "Kulm", + "Langen", + "Lim", + "Lohr", + "Lüne", + "Mel", + "Michels", + "Mühl", + "Naum", + "Nest", + "Nord", + "Nort", + "Nien", + "Nidda", + "Nieder", + "Nürn", + "Ober", + "Offen", + "Osna", + "Olden", + "Ols", + "Oranien", + "Pader", + "Quedlin", + "Quer", + "Ravens", + "Regens", + "Rott", + "Ros", + "Rüssels", + "Saal", + "Saar", + "Salz", + "Schöne", + "Schwein", + "Sonder", + "Sonnen", + "Stein", + "Strals", + "Straus", + "Süd", + "Ton", + "Unter", + "Ur", + "Vor", + "Wald", + "War", + "Wert", + "Wester", + "Witten", + "Wolfs", + "Würz" +}; + +static const char *name_german_2[] = { + "bach", + "berg", + "brück", + "brücken", + "burg", + "dorf", + "feld", + "furt", + "hausen", + "haven", + "heim", + "horst", + "mund", + "münster", + "stadt", + "wald" +}; + +static const char *name_german_3_an_der[] = { + " an der " +}; + +static const char *name_german_3_am[] = { + " am " +}; + +static const char *name_german_4_an_der[] = { + "Oder", + "Spree", + "Donau", + "Saale", + "Elbe" +}; + +static const char *name_german_4_am[] = { + "Main" +}; + +static const char *name_spanish_1[] = { + "Caracas", + "Maracay", + "Maracaibo", + "Velencia", + "El Dorado", + "Morrocoy", + "Cata", + "Cataito", + "Ciudad Bolivar", + "Barquisimeto", + "Merida", + "Puerto Ordaz", + "Santa Elena", + "San Juan", + "San Luis", + "San Rafael", + "Santiago", + "Barcelona", + "Barinas", + "San Cristobal", + "San Fransisco", + "San Martin", + "Guayana", + "San Carlos", + "El Limon", + "Coro", + "Corocoro", + "Puerto Ayacucho", + "Elorza", + "Arismendi", + "Trujillo", + "Carupano", + "Anaco", + "Lima", + "Cuzco", + "Iquitos", + "Callao", + "Huacho", + "Camana", + "Puerto Chala", + "Santa Cruz", + "Quito", + "Cuenca", + "Huacho", + "Tulcan", + "Esmereldas", + "Ibarra", + "San Lorenzo", + "Macas", + "Morana", + "Machala", + "Zamora", + "Latacunga", + "Tena", + "Cochabamba", + "Ascencion", + "Magdalena", + "Santa Ana", + "Manoa", + "Sucre", + "Oruro", + "Uyuni", + "Potosi", + "Tupiza", + "La Quiaca", + "Yacuiba", + "San Borja", + "Fuerte Olimpio", + "Fortin Esteros", + "Campo Grande", + "Bogota", + "El Banco", + "Zaragosa", + "Neiva", + "Mariano", + "Cali", + "La Palma", + "Andoas", + "Barranca", + "Montevideo", + "Valdivia", + "Arica", + "Temuco", + "Tocopilla", + "Mendoza", + "Santa Rosa" +}; + +static const char *name_french_1[] = { + "Agincourt", + "Lille", + "Dinan", + "Aubusson", + "Rodez", + "Bergerac", + "Bordeaux", + "Bayonne", + "Montpellier", + "Montelimar", + "Valence", + "Digne", + "Nice", + "Cannes", + "St. Tropez", + "Marseilles", + "Narbonne", + "Sčte", + "Aurillac", + "Gueret", + "Le Creusot", + "Nevers", + "Auxerre", + "Versailles", + "Meaux", + "Châlons", + "Compičgne", + "Metz", + "Chaumont", + "Langres", + "Bourg", + "Lyons", + "Vienne", + "Grenoble", + "Toulon", + "Rennes", + "Le Mans", + "Angers", + "Nantes", + "Châteauroux", + "Orléans", + "Lisieux", + "Cherbourg", + "Morlaix", + "Cognac", + "Agen", + "Tulle", + "Blois", + "Troyes", + "Charolles", + "Grenoble", + "Chambéry", + "Tours", + "St. Brieuc", + "St. Malo", + "La Rochelle", + "St. Flour", + "Le Puy", + "Vichy", + "St. Valery", + "Beaujolais", + "Narbonne", + "Albi", + "St. Valery", + "Biarritz", + "Béziers", + "Nîmes", + "Chamonix", + "Angoulčme", + "Alençon" +}; + +static const char *name_silly_1[] = { + "Binky", + "Blubber", + "Bumble", + "Crinkle", + "Crusty", + "Dangle", + "Dribble", + "Flippety", + "Google", + "Muffin", + "Nosey", + "Pinker", + "Quack", + "Rumble", + "Sleepy", + "Sliggles", + "Snooze", + "Teddy", + "Tinkle", + "Twister", + "Pinker", + "Hippo", + "Itchy", + "Jelly", + "Jingle", + "Jolly", + "Kipper", + "Lazy", + "Frogs", + "Mouse", + "Quack", + "Cheeky", + "Lumpy", + "Grumpy", + "Mangle", + "Fiddle", + "Slugs", + "Noodles", + "Poodles", + "Shiver", + "Rumble", + "Pixie", + "Puddle", + "Riddle", + "Rattle", + "Rickety", + "Waffle", + "Sagging", + "Sausage", + "Egg", + "Sleepy", + "Scatter", + "Scramble", + "Silly", + "Simple", + "Trickle", + "Slippery", + "Slimey", + "Slumber", + "Soggy", + "Sliggles", + "Splutter", + "Sulky", + "Swindle", + "Swivel", + "Tasty", + "Tangle", + "Toggle", + "Trotting", + "Tumble", + "Snooze", + "Water", + "Windy", + "Amble", + "Bubble", + "Cheery", + "Cheese", + "Cockle", + "Cracker", + "Crumple", + "Teddy", + "Evil", + "Fairy", + "Falling", + "Fishy", + "Fizzle", + "Frosty", + "Griddle" +}; + +static const char *name_silly_2[] = { + "ton", + "bury", + "bottom", + "ville", + "well", + "weed", + "worth", + "wig", + "wick", + "wood", + "pool", + "head", + "burg", + "gate", + "bridge" +}; + +static const char *name_swedish_1[] = { + "Gamla ", + "Lilla ", + "Nya ", + "Stora " +}; + +static const char *name_swedish_2[] = { + "Boll", + "Bor", + "Ed", + "En", + "Erik", + "Es", + "Fin", + "Fisk", + "Grön", + "Hag", + "Halm", + "Karl", + "Kram", + "Kung", + "Land", + "Lid", + "Lin", + "Mal", + "Malm", + "Marie", + "Ner", + "Norr", + "Oskar", + "Sand", + "Skog", + "Stock", + "Stor", + "Ström", + "Sund", + "Söder", + "Tall", + "Tratt", + "Troll", + "Upp", + "Var", + "Väster", + "Ängel", + "Öster" +}; + +static const char *name_swedish_2a[] = { + "B", + "Br", + "D", + "Dr", + "Dv", + "F", + "Fj", + "Fl", + "Fr", + "G", + "Gl", + "Gn", + "Gr", + "H", + "J", + "K", + "Kl", + "Kn", + "Kr", + "Kv", + "L", + "M", + "N", + "P", + "Pl", + "Pr", + "R", + "S", + "Sk", + "Skr", + "Sl", + "Sn", + "Sp", + "Spr", + "St", + "Str", + "Sv", + "T", + "Tr", + "Tv", + "V", + "Vr" +}; + +static const char *name_swedish_2b[] = { + "a", + "e", + "i", + "o", + "u", + "y", + "ĺ", + "ä", + "ö" +}; + +static const char *name_swedish_2c[] = { + "ck", + "d", + "dd", + "g", + "gg", + "l", + "ld", + "m", + "n", + "nd", + "ng", + "nn", + "p", + "pp", + "r", + "rd", + "rk", + "rp", + "rr", + "rt", + "s", + "sk", + "st", + "t", + "tt", + "v" +}; + +static const char *name_swedish_3[] = { + "arp", + "berg", + "boda", + "borg", + "bro", + "bukten", + "by", + "byn", + "fors", + "hammar", + "hamn", + "holm", + "hus", + "hättan", + "kulle", + "köping", + "lund", + "löv", + "sala", + "skrona", + "slätt", + "spĺng", + "stad", + "sund", + "svall", + "svik", + "sĺker", + "udde", + "valla", + "viken", + "älv", + "ĺs" +}; + +static const char *name_dutch_1[] = { + "Nieuw ", + "Oud ", + "Groot ", + "Zuid ", + "Noord ", + "Oost ", + "West ", + "Klein " +}; + +static const char *name_dutch_2[] = { + "Hoog", + "Laag", + "Zuider", + "Zuid", + "Ooster", + "Oost", + "Wester", + "West", + "Hoofd", + "Midden", + "Eind", + "Amster", + "Amstel", + "Dord", + "Rotter", + "Haar", + "Til", + "Enk", + "Dok", + "Veen", + "Leidsch", + "Lely", + "En", + "Kaats", + "U", + "Maas", + "Mar", + "Bla", + "Al", + "Alk", + "Eer", + "Drie", + "Ter", + "Groes", + "Goes", + "Soest", + "Coe", + "Uit", + "Zwaag", + "Hellen", + "Slie", + "IJ", + "Grubben", + "Groen", + "Lek", + "Ridder", + "Schie", + "Olde", + "Roose", + "Haar", + "Til", + "Loos", + "Hil" +}; + +static const char *name_dutch_3[] = { + "Drog", + "Nat", + "Valk", + "Bob", + "Dedem", + "Kollum", + "Best", + "Hoend", + "Leeuw", + "Graaf", + "Uithuis", + "Purm", + "Hard", + "Hell", + "Werk", + "Spijk", + "Vink", + "Wams", + "Heerhug", + "Koning" +}; + +static const char *name_dutch_4[] = { + "e", + "er", + "el", + "en", + "o", + "s" +}; + +static const char *name_dutch_5[] = { + "stad", + "vorst", + "dorp", + "dam", + "beek", + "doorn", + "zijl", + "zijlen", + "lo", + "muiden", + "meden", + "vliet", + "nisse", + "daal", + "vorden", + "vaart", + "mond", + "zaal", + "water", + "duinen", + "heuvel", + "geest", + "kerk", + "meer", + "maar", + "hoorn", + "rade", + "wijk", + "berg", + "heim", + "sum", + "richt", + "burg", + "recht", + "drecht", + "trecht", + "tricht", + "dricht", + "lum", + "rum", + "halen", + "oever", + "wolde", + "veen", + "hoven", + "gast", + "kum", + "hage", + "dijk", + "zwaag", + "pomp", + "huizen", + "bergen", + "schede", + "mere", + "end" +}; + +static const char *name_finnish_1[] = { + "Aijala", + "Kisko", + "Espoo", + "Helsinki", + "Tapiola", + "Järvelä", + "Lahti", + "Kotka", + "Hamina", + "Loviisa", + "Kouvola", + "Tampere", + "Kokkola", + "Oulu", + "Salo", + "Malmi", + "Pelto", + "Koski", + "Iisalmi", + "Raisio", + "Taavetti", + "Joensuu", + "Imatra", + "Tapanila", + "Pasila" +}; + +static const char *name_finnish_2a[] = { + "Hiekka", + "Haapa", + "Mylly", + "Kivi", + "Lappeen", + "Lohjan", + "Savon", + "Sauna", + "Keri", + "Uusi", + "Vanha", + "Lapin", + "Kesä", + "Kuusi", + "Pelto", + "Tuomi", + "Pitäjän", + "Terva", + "Olki", + "Heinä", + "Kuusan", + "Seinä", + "Kemi", + "Rova", + "Martin", + "Koivu" +}; + +static const char *name_finnish_2b[] = { + "harju", + "linna", + "järvi", + "kallio", + "mäki", + "nummi", + "joki", + "kylä", + "lampi", + "lahti", + "metsä", + "suo", + "laakso", + "niitty", + "luoto", + "hovi", + "ranta", + "koski" +}; + +static const char *name_polish_1_m[] = { + "Wielki ", + "Maly ", + "Zly ", + "Dobry ", + "Nowy ", + "Stary ", + "Zloty ", + "Zielony ", + "Bialy ", + "Modry ", + "Debowy " +}; + +static const char *name_polish_1_f[] = { + "Wielka ", + "Mala ", + "Zla ", + "Dobra ", + "Nowa ", + "Stara ", + "Zlota ", + "Zielona ", + "Biala ", + "Modra ", + "Debowa " +}; + +static const char *name_polish_1_n[] = { + "Wielkie ", + "Male ", + "Zle ", + "Dobre ", + "Nowe ", + "Stare ", + "Zlote ", + "Zielone ", + "Biale ", + "Modre ", + "Debowe " +}; + +static const char *name_polish_2_o[] = { + "Frombork", + "Gniezno", + "Olsztyn", + "Torun", + "Bydgoszcz", + "Terespol", + "Krakow", + "Poznan", + "Wroclaw", + "Katowice", + "Cieszyn", + "Bytom", + "Frombork", + "Hel", + "Konin", + "Lublin", + "Malbork", + "Sopot", + "Sosnowiec", + "Gdansk", + "Gdynia", + "Sieradz", + "Sandomierz", + "Szczyrk", + "Szczytno", + "Szczecin", + "Zakopane", + "Szklarska Poreba", + "Bochnia", + "Golub-Dobrzyn", + "Chojnice", + "Ostrowiec", + "Otwock", + "Wolsztyn" +}; + +static const char *name_polish_2_m[] = { + "Jarocin", + "Gogolin", + "Tomaszow", + "Piotrkow", + "Lidzbark", + "Rypin", + "Radzymin", + "Wolomin", + "Pruszkow", + "Olsztynek", + "Rypin", + "Cisek", + "Krotoszyn", + "Stoczek", + "Lubin", + "Lubicz", + "Milicz", + "Targ", + "Ostrow", + "Ozimek", + "Puck", + "Rzepin", + "Siewierz", + "Stargard", + "Starogard", + "Turek", + "Tymbark", + "Wolsztyn", + "Strzepcz", + "Strzebielin", + "Sochaczew", + "Grebocin", + "Gniew", + "Lubliniec", + "Lubasz", + "Lutomiersk", + "Niemodlin", + "Przeworsk", + "Ursus", + "Tyczyn", + "Sztum", + "Szczebrzeszyn", + "Wolin", + "Wrzeszcz", + "Zgierz", + "Zieleniec", + "Drobin", + "Garwolin" +}; + +static const char *name_polish_2_f[] = { + "Szprotawa", + "Pogorzelica", + "Motlawa", + "Lubawa", + "Nidzica", + "Kruszwica", + "Bierawa", + "Brodnica", + "Chojna", + "Krzepica", + "Ruda", + "Rumia", + "Tuchola", + "Trzebinia", + "Ustka", + "Warszawa", + "Bobowa", + "Dukla", + "Krynica", + "Murowana", + "Niemcza", + "Zaspa", + "Zawoja", + "Wola", + "Limanowa", + "Rabka", + "Skawina", + "Pilawa" +}; + +static const char *name_polish_2_n[] = { + "Lipsko", + "Pilzno", + "Przodkowo", + "Strzelno", + "Susz", + "Jaworzno", + "Choszczno", + "Mogilno", + "Luzino", + "Miasto", + "Dziadowo", + "Kowalewo", + "Legionowo", + "Miastko", + "Zabrze", + "Zawiercie", + "Kochanowo", + "Miechucino", + "Mirachowo", + "Robakowo", + "Kosakowo", + "Borne", + "Braniewo", + "Sulinowo", + "Chmielno", + "Jastrzebie", + "Gryfino", + "Koronowo", + "Lubichowo", + "Opoczno" +}; + +static const char *name_polish_3_m[] = { + " Wybudowanie", + " Swietokrzyski", + " Gorski", + " Morski", + " Zdroj", + " Wody", + " Bajoro", + " Krajenski", + " Slaski", + " Mazowiecki", + " Pomorski", + " Wielki", + " Maly", + " Warminski", + " Mazurski", + " Mniejszy", + " Wiekszy", + " Gorny", + " Dolny", + " Wielki", + " Stary", + " Nowy", + " Wielkopolski", + " Wzgorze", + " Mosty", + " Kujawski", + " Malopolski", + " Podlaski", + " Lesny" +}; + +static const char *name_polish_3_f[] = { + " Wybudowanie", + " Swietokrzyska", + " Gorska", + " Morska", + " Zdroj", + " Woda", + " Bajoro", + " Krajenska", + " Slaska", + " Mazowiecka", + " Pomorska", + " Wielka", + " Mala", + " Warminska", + " Mazurska", + " Mniejsza", + " Wieksza", + " Gorna", + " Dolna", + " Wielka", + " Stara", + " Nowa", + " Wielkopolska", + " Wzgorza", + " Mosty", + " Kujawska", + " Malopolska", + " Podlaska", + " Lesna" +}; + +static const char *name_polish_3_n[] = { + " Wybudowanie", + " Swietokrzyskie", + " Gorskie", + " Morskie", + " Zdroj", + " Wody", + " Bajoro", + " Krajenskie", + " Slaskie", + " Mazowieckie", + " Pomorskie", + " Wielkie", + " Male", + " Warminskie ", + " Mazurskie ", + " Mniejsze", + " Wieksze", + " Gorne", + " Dolne", + " Wielkie", + " Stare", + " Nowe", + " Wielkopolskie", + " Wzgorze", + " Mosty", + " Kujawskie", + " Malopolskie", + " Podlaskie", + " Lesne" +}; + +static const char *name_czech_1[] = { + "As", + "Benesov", + "Beroun", + "Bezdruzice", + "Blansko", + "Breclav", + "Brno", + "Bruntál", + "Ceská Lípa", + "Ceské Budejovice", + "Ceský Krumlov", + "Decín", + "Domazlice", + "Dubí", + "Frýdek-Místek", + "Havlíckuv Brod", + "Hodonín", + "Hradec Králové", + "Humpolec", + "Cheb", + "Chomutov", + "Chrudim", + "Jablonec nad Nisou", + "Jeseník", + "Jicín", + "Jihlava", + "Jindrichuv Hradec", + "Karlovy Vary", + "Karviná", + "Kladno", + "Klatovy", + "Kolín", + "Kosmonosy", + "Kromeríz", + "Kutná Hora", + "Liberec", + "Litomerice", + "Louny", + "Manetín", + "Melník", + "Mladá Boleslav", + "Most", + "Náchod", + "Nový Jicín", + "Nymburk", + "Olomouc", + "Opava", + "Orácov", + "Ostrava", + "Pardubice", + "Pelhrimov", + "Polzice", + "Písek", + "Plzen", + "Praha", + "Prachatice", + "Prerov", + "Príbram", + "Prostejov", + "Rakovník", + "Rokycany", + "Rudná", + "Rychnov nad Kneznou", + "Semily", + "Sokolov", + "Strakonice", + "Stredokluky", + "Sumperk", + "Svitavy", + "Tábor", + "Tachov", + "Teplice", + "Trebíc", + "Trutnov", + "Uherské Hradiste", + "Ústí nad Labem", + "Ústí nad Orlicí", + "Vsetín", + "Vyskov", + "Zdár nad Sázavou", + "Zlín", + "Znojmo" +}; + +static const char *name_romanian_1[]= { + "Adjud", + "Alba Iulia", + "Alexandria", + "Babadag", + "Bacău", + "Baia Mare", + "Băile Herculane", + "Băilesti", + "Bârlad", + "Bicaz", + "Bistrita", + "Blaj", + "Borsec", + "Botosani", + "Brăila", + "Brasov", + "Bucuresti", + "Buftea", + "Buzău", + "Călărasi", + "Caransebes", + "Cernavodă", + "Cluj-Napoca", + "Constanta", + "Covasna", + "Craiova", + "Dej", + "Deva", + "Dorohoi", + "Dr.-Tr. Severin", + "Drăgăsani", + "Făgăras", + "Fălticeni", + "Fetesti", + "Focsani", + "Galati", + "Gheorgheni", + "Giurgiu", + "Hârsova", + "Hunedoara", + "Husi", + "Iasi", + "Isaccea", + "Lugoj", + "Măcin", + "Mangalia", + "Medgidia", + "Medias", + "Miercurea Ciuc", + "Mizil", + "Motru", + "Năsăud", + "Năvodari", + "Odobesti", + "Oltenita", + "Onesti", + "Oradea", + "Orsova", + "Petrosani", + "Piatra Neamt", + "Pitesti", + "Ploiesti", + "Predeal", + "Râmnicu Vâlcea", + "Reghin", + "Resita", + "Roman", + "Rosiorii de Vede", + "Satu Mare", + "Sebes", + "Sfântu Gheorghe", + "Sibiu", + "Sighisoara", + "Sinaia", + "Slatina", + "Slobozia", + "Sovata", + "Suceava", + "Sulina", + "Tăndărei", + "Târgoviste", + "Târgu Jiu", + "Târgu Mures", + "Tecuci", + "Timisoara", + "Tulcea", + "Turda", + "Turnu Măgurele", + "Urziceni", + "Vaslui", + "Vatra Dornei", + "Victoria", + "Videle", + "Zalău" +}; + +static const char *name_slovakish_1[] = { + "Bratislava", + "Banovce nad Bebravou", + "Banska Bystrica", + "Banska Stiavnica", + "Bardejov", + "Brezno", + "Brezova pod Bradlom", + "Bytca", + "Cadca", + "Cierna nad Tisou", + "Detva", + "Detva", + "Dolny Kubin", + "Dolny Kubin", + "Dunajska Streda", + "Gabcikovo", + "Galanta", + "Gbely", + "Gelnica", + "Handlova", + "Hlohovec", + "Holic", + "Humenne", + "Hurbanovo", + "Kezmarok", + "Komarno", + "Kosice", + "Kremnica", + "Krompachy", + "Kuty", + "Leopoldov", + "Levoca", + "Liptovsky Mikulas", + "Lucenec", + "Malacky", + "Martin", + "Medzilaborce", + "Michalovce", + "Modra", + "Myjava", + "Namestovo", + "Nitra", + "Nova Bana", + "Nove Mesto nad Vahom", + "Nove Zamky", + "Partizanske", + "Pezinok", + "Piestany", + "Poltar", + "Poprad", + "Povazska Bystrica", + "Prievidza", + "Puchov", + "Revuca", + "Rimavska Sobota", + "Roznava", + "Ruzomberok", + "Sabinov", + "Sala", + "Senec", + "Senica", + "Sered", + "Skalica", + "Sladkovicovo", + "Smolenice", + "Snina", + "Stara Lubovna", + "Stara Tura", + "Strazske", + "Stropkov", + "Stupava", + "Sturovo", + "Sulekovo", + "Topolcany", + "Trebisov", + "Trencin", + "Trnava", + "Turcianske Teplice", + "Tvrdosin", + "Vrable", + "Vranov nad Toplov", + "Zahorska Bystrica", + "Zdiar", + "Ziar nad Hronom", + "Zilina", + "Zlate Moravce", + "Zvolen" +}; + +static const char *name_hungarian_1[] = { + "Nagy-", + "Kis-", + "Felső-", + "Alsó-", + "Új-" +}; + +static const char *name_hungarian_2[] = { + "Bodrog", + "Dráva", + "Duna", + "Hejő", + "Hernád", + "Rába", + "Sajó", + "Szamos", + "Tisza", + "Zala", + "Balaton", + "Fertő", + "Bakony", + "Cserhát", + "Bihar", + "Hajdú", + "Jász", + "Kun", + "Magyar", + "Nógrád", + "Nyír", + "Somogy", + "Székely", + "Buda", + "Győr", + "Pest", + "Fehér", + "Cserép", + "Erdő", + "Hegy", + "Homok", + "Mező", + "Puszta", + "Sár", + "Császár", + "Herceg", + "Király", + "Nemes", + "Püspök", + "Szent", + "Almás", + "Szilvás", + "Agg", + "Aranyos", + "Békés", + "Egyházas", + "Gagy", + "Heves", + "Kapos", + "Tápió", + "Torna", + "Vas", + "Vámos", + "Vásáros" +}; + +static const char *name_hungarian_3[] = { + "apáti", + "bába", + "bikk", + "dob", + "fa", + "föld", + "hegyes", + "kak", + "kereszt", + "kürt", + "ladány", + "mérges", + "szalonta", + "telek", + "vas", + "völgy" +}; + +static const char *name_hungarian_4[] = { + "alja", + "egyháza", + "háza", + "úr", + "vár" +}; + +static const char *name_hungarian_real[] = { + "Ajka", + "Aszód", + "Badacsony", + "Baja", + "Budapest", + "Debrecen", + "Eger", + "Fonyód", + "Gödöllő", + "Győr", + "Gyula", + "Karcag", + "Kecskemét", + "Keszthely", + "Kisköre", + "Kocsord", + "Komárom", + "Kőszeg", + "Makó", + "Mohács", + "Miskolc", + "Ózd", + "Paks", + "Pápa", + "Pécs", + "Polgár", + "Sarkad", + "Siófok", + "Szeged", + "Szentes", + "Szolnok", + "Tihany", + "Tokaj", + "Vác", + "Záhony", + "Zirc" +};