truelight@0: #include "stdafx.h" truelight@0: #include "ttd.h" truelight@0: truelight@0: truelight@0: #define GETNUM(x, y) (((uint16)(seed >> x) * (y))>>16) truelight@0: truelight@0: static void AppendPart(byte **buf, int num, const char *names) truelight@0: { truelight@0: byte *s; truelight@0: truelight@0: while (--num>=0) { truelight@0: do names++; while (names[-1]); truelight@0: } truelight@0: truelight@0: for(s=*buf; (*s++ = *names++) != 0;) {} truelight@0: *buf = s - 1; truelight@0: } truelight@0: truelight@0: #define MK(x) x "\x0" truelight@0: truelight@0: #define NUM_ENGLISH_1 4 truelight@0: static const char english_1[] = truelight@0: MK("Great ") truelight@0: MK("Little ") truelight@0: MK("New ") truelight@0: MK("Fort ") truelight@0: ; truelight@0: truelight@0: #define NUM_ENGLISH_2 26 truelight@0: static const char english_2[] = truelight@0: MK("Wr") truelight@0: MK("B") truelight@0: MK("C") truelight@0: MK("Ch") truelight@0: MK("Br") truelight@0: MK("D") truelight@0: MK("Dr") truelight@0: MK("F") truelight@0: MK("Fr") truelight@0: MK("Fl") truelight@0: MK("G") truelight@0: MK("Gr") truelight@0: MK("H") truelight@0: MK("L") truelight@0: MK("M") truelight@0: MK("N") truelight@0: MK("P") truelight@0: MK("Pr") truelight@0: MK("Pl") truelight@0: MK("R") truelight@0: MK("S") truelight@0: MK("S") truelight@0: MK("Sl") truelight@0: MK("T") truelight@0: MK("Tr") truelight@0: MK("W") truelight@0: ; truelight@0: truelight@0: #define NUM_ENGLISH_3 8 truelight@0: static const char english_3[] = truelight@0: MK("ar") truelight@0: MK("a") truelight@0: MK("e") truelight@0: MK("in") truelight@0: MK("on") truelight@0: MK("u") truelight@0: MK("un") truelight@0: MK("en") truelight@0: ; truelight@0: truelight@0: #define NUM_ENGLISH_4 7 truelight@0: static const char english_4[] = truelight@0: MK("n") truelight@0: MK("ning") truelight@0: MK("ding") truelight@0: MK("d") truelight@0: MK("") truelight@0: MK("t") truelight@0: MK("fing") truelight@0: ; truelight@0: truelight@0: #define NUM_ENGLISH_5 23 truelight@0: static const char english_5[] = truelight@0: MK("ville") truelight@0: MK("ham") truelight@0: MK("field") truelight@0: MK("ton") truelight@0: MK("town") truelight@0: MK("bridge") truelight@0: MK("bury") truelight@0: MK("wood") truelight@0: MK("ford") truelight@0: MK("hall") truelight@0: MK("ston") truelight@0: MK("way") truelight@0: MK("stone") truelight@0: MK("borough") truelight@0: MK("ley") truelight@0: MK("head") truelight@0: MK("bourne") truelight@0: MK("pool") truelight@0: MK("worth") truelight@0: MK("hill") truelight@0: MK("well") truelight@0: MK("hattan") truelight@0: MK("burg") truelight@0: ; truelight@0: truelight@0: #define NUM_ENGLISH_6 9 truelight@0: static const char english_6[] = truelight@0: MK("-on-sea") truelight@0: MK(" Bay") truelight@0: MK(" Market") truelight@0: MK(" Cross") truelight@0: MK(" Bridge") truelight@0: MK(" Falls") truelight@0: MK(" City") truelight@0: MK(" Ridge") truelight@0: MK(" Springs") truelight@0: ; truelight@0: truelight@0: static byte MakeEnglishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i; truelight@0: byte result; truelight@0: byte *start; truelight@0: truelight@0: i = GETNUM(0, 54) - 50; truelight@0: if (i >= 0) truelight@0: AppendPart(&buf, i, english_1); truelight@0: truelight@0: start = buf; truelight@0: truelight@0: AppendPart(&buf, GETNUM(4, NUM_ENGLISH_2), english_2); truelight@0: AppendPart(&buf, GETNUM(7, NUM_ENGLISH_3), english_3); truelight@0: AppendPart(&buf, GETNUM(10, NUM_ENGLISH_4), english_4); truelight@0: AppendPart(&buf, GETNUM(13, NUM_ENGLISH_5), english_5); truelight@0: truelight@0: i = GETNUM(15, NUM_ENGLISH_6 + 60) - 60; truelight@0: truelight@0: result = 0; truelight@0: truelight@0: if (i >= 0) { truelight@0: if (i <= 1) result = NG_EDGE; truelight@0: AppendPart(&buf, i, english_6); truelight@0: } truelight@0: truelight@0: if (start[0]=='C' && (start[1] == 'e' || start[1] == 'i')) truelight@0: start[0] = 'K'; truelight@0: truelight@0: /* FIXME: skip the banned words thing for now truelight@0: only replacing "Cunt" with "Cult" */ truelight@0: if (start[0]=='C' && start[1] == 'u' && start[2] == 'n' && start[3] == 't') truelight@0: start[2] = 'l'; truelight@0: truelight@0: return result; truelight@0: } truelight@0: truelight@0: #define NUM_AUSTRIAN_A1 6 truelight@0: static const char austrian_a1[] = truelight@0: MK("Bad ") truelight@0: MK("Deutsch ") truelight@0: MK("Gross ") truelight@0: MK("Klein ") truelight@0: MK("Markt ") truelight@0: MK("Maria ") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_A2 42 truelight@0: static const char austrian_a2[] = truelight@0: MK("Aus") truelight@0: MK("Alten") truelight@0: MK("Braun") truelight@0: MK("Vösl") truelight@0: MK("Mittern") truelight@0: MK("Nuss") truelight@0: MK("Neu") truelight@0: MK("Walters") truelight@0: MK("Breiten") truelight@0: MK("Eisen") truelight@0: MK("Feld") truelight@0: MK("Mittern") truelight@0: MK("Gall") truelight@0: MK("Obern") truelight@0: MK("Grat") truelight@0: MK("Heiligen") truelight@0: MK("Hof") truelight@0: MK("Holla") truelight@0: MK("Stein") truelight@0: MK("Eber") truelight@0: MK("Eggen") truelight@0: MK("Enzers") truelight@0: MK("Frauen") truelight@0: MK("Herren") truelight@0: MK("Hof") truelight@0: MK("Hütt") truelight@0: MK("Kaisers") truelight@0: MK("Königs") truelight@0: MK("Knittel") truelight@0: MK("Lang") truelight@0: MK("Ober") truelight@0: MK("Ollers") truelight@0: MK("Pfaffen") truelight@0: MK("Potten") truelight@0: MK("Salz") truelight@0: MK("Schwarz") truelight@0: MK("Stocker") truelight@0: MK("Unter") truelight@0: MK("Utten") truelight@0: MK("Vösen") truelight@0: MK("Vill") truelight@0: MK("Weissen") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_A3 16 truelight@0: static const char austrian_a3[] = truelight@0: MK("see") truelight@0: MK("bach") truelight@0: MK("dorf") truelight@0: MK("ach") truelight@0: MK("stein") truelight@0: MK("hofen") truelight@0: MK("au") truelight@0: MK("ach") truelight@0: MK("kirch") truelight@0: MK("kirchen") truelight@0: MK("kreuz") truelight@0: MK("brunn") truelight@0: MK("siedl") truelight@0: MK("markt") truelight@0: MK("wang") truelight@0: MK("haag") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_A4 12 truelight@0: static const char austrian_a4[] = truelight@0: MK("Bruck") truelight@0: MK("Brunn") truelight@0: MK("Gams") truelight@0: MK("Grein") truelight@0: MK("Ried") truelight@0: MK("Faak") truelight@0: MK("Zell") truelight@0: MK("Spital") truelight@0: MK("Kirchberg") truelight@0: MK("Saal") truelight@0: MK("Taferl") truelight@0: MK("Wald") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_A5 2 truelight@0: static const char austrian_a5[] = truelight@0: MK("St. ") truelight@0: MK("Sankt ") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_A6 20 truelight@0: static const char austrian_a6[] = truelight@0: MK("Aegyd") truelight@0: MK("Andrä") truelight@0: MK("Georgen") truelight@0: MK("Jakob") truelight@0: MK("Johann") truelight@0: MK("Leonhard") truelight@0: MK("Marein") truelight@0: MK("Lorenzen") truelight@0: MK("Margarethen") truelight@0: MK("Martin") truelight@0: MK("Michael") truelight@0: MK("Nikolai") truelight@0: MK("Oswald") truelight@0: MK("Peter") truelight@0: MK("Pölten") truelight@0: MK("Stefan") truelight@0: MK("Stephan") truelight@0: MK("Thomas") truelight@0: MK("Veit") truelight@0: MK("Wolfgang") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_F1 2 truelight@0: static const char austrian_f1[] = truelight@0: MK(" an der ") truelight@0: MK(" ob der ") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_F2 13 truelight@0: static const char austrian_f2[] = truelight@0: MK("Donau") truelight@0: MK("Steyr") truelight@0: MK("Lafnitz") truelight@0: MK("Leitha") truelight@0: MK("Thaya") truelight@0: MK("Gail") truelight@0: MK("Drau") truelight@0: MK("Salzach") truelight@0: MK("Ybbs") truelight@0: MK("Traisen") truelight@0: MK("Enns") truelight@0: MK("Mur") truelight@0: MK("Ill") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_B1 1 truelight@0: static const char austrian_b1[] = truelight@0: MK(" am ") truelight@0: ; truelight@0: truelight@0: #define NUM_AUSTRIAN_B2 10 truelight@0: static const char austrian_b2[] = truelight@0: MK("Brenner") truelight@0: MK("Dachstein") truelight@0: MK("Gebirge") truelight@0: MK("Grossglockner") truelight@0: MK("Hausruck") truelight@0: MK("Semmering") truelight@0: MK("Wagram") truelight@0: MK("Wechsel") truelight@0: MK("Wilden Kaiser") truelight@0: MK("Ziller") truelight@0: ; truelight@0: truelight@0: static byte MakeAustrianTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i, j=0; truelight@0: truelight@0: // Bad, Maria, Gross, ... truelight@0: i = GETNUM(0, NUM_AUSTRIAN_A1 + 15) - 15; truelight@0: if (i >= 0) AppendPart(&buf, i, austrian_a1); truelight@0: truelight@0: i = GETNUM(4, 6); truelight@0: if(i >= 4) { truelight@0: // Kaisers-kirchen truelight@0: AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A2), austrian_a2); truelight@0: AppendPart(&buf, GETNUM(13, NUM_AUSTRIAN_A3), austrian_a3); truelight@0: } truelight@0: else if(i >= 2) { truelight@0: // St. Johann truelight@0: AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A5), austrian_a5); truelight@0: AppendPart(&buf, GETNUM( 9, NUM_AUSTRIAN_A6), austrian_a6); truelight@0: j=1; // More likely to have a " an der " or " am " truelight@0: } truelight@0: else { truelight@0: // Zell truelight@0: AppendPart(&buf, GETNUM( 7, NUM_AUSTRIAN_A4), austrian_a4); truelight@0: } truelight@0: truelight@0: i = GETNUM(1, 6); truelight@0: if(i >= 4-j) { truelight@0: // an der Donau (rivers) truelight@0: AppendPart(&buf, GETNUM(4, NUM_AUSTRIAN_F1), austrian_f1); truelight@0: AppendPart(&buf, GETNUM(5, NUM_AUSTRIAN_F2), austrian_f2); truelight@0: } truelight@0: else if(i >= 2-j) { truelight@0: // am Dachstein (mountains) truelight@0: AppendPart(&buf, GETNUM(4, NUM_AUSTRIAN_B1), austrian_b1); truelight@0: AppendPart(&buf, GETNUM(5, NUM_AUSTRIAN_B2), austrian_b2); truelight@0: } truelight@0: truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_GERMAN_1 114 truelight@0: #define NUM_GERMAN_1_HARDCODED 21 truelight@0: static const char german_1[] = truelight@0: /* hardcoded names */ truelight@0: MK("Berlin") truelight@0: MK("Bonn") truelight@0: MK("Bremen") truelight@0: MK("Cottbus") truelight@0: MK("Chemnitz") truelight@0: MK("Dortmund") truelight@0: MK("Dresden") truelight@0: MK("Erfurt") truelight@0: MK("Erlangen") truelight@0: MK("Essen") truelight@0: MK("Fulda") truelight@0: MK("Gera") truelight@0: MK("Kassel") truelight@0: MK("Kiel") truelight@0: MK("Köln") truelight@0: MK("Lübeck") truelight@0: MK("Magdeburg") truelight@0: MK("München") truelight@0: MK("Potsdam") truelight@0: MK("Stuttgart") truelight@0: MK("Wiesbaden") truelight@0: /* randomizer names */ truelight@0: MK("Alb") truelight@0: MK("Als") truelight@0: MK("Ander") truelight@0: MK("Arns") truelight@0: MK("Bruns") truelight@0: MK("Bam") truelight@0: MK("Biele") truelight@0: MK("Cloppen") truelight@0: MK("Co") truelight@0: MK("Duis") truelight@0: MK("Düssel") truelight@0: MK("Dannen") truelight@0: MK("Elb") truelight@0: MK("Els") truelight@0: MK("Elster") truelight@0: MK("Eichen") truelight@0: MK("Ems") truelight@0: MK("Fahr") truelight@0: MK("Falken") truelight@0: MK("Flens") truelight@0: MK("Frank") truelight@0: MK("Frei") truelight@0: MK("Freuden") truelight@0: MK("Fried") truelight@0: MK("Fürsten") truelight@0: MK("Hahn") truelight@0: MK("Ham") truelight@0: MK("Harz") truelight@0: MK("Heidel") truelight@0: MK("Hers") truelight@0: MK("Herz") truelight@0: MK("Holz") truelight@0: MK("Hildes") truelight@0: MK("Inns") truelight@0: MK("Ilsen") truelight@0: MK("Ingols") truelight@0: MK("Kel") truelight@0: MK("Kies") truelight@0: MK("Korn") truelight@0: MK("Kor") truelight@0: MK("Kreuz") truelight@0: MK("Kulm") truelight@0: MK("Langen") truelight@0: MK("Lim") truelight@0: MK("Lohr") truelight@0: MK("Lüne") truelight@0: MK("Mel") truelight@0: MK("Michels") truelight@0: MK("Mühl") truelight@0: MK("Naum") truelight@0: MK("Nest") truelight@0: MK("Nord") truelight@0: MK("Nort") truelight@0: MK("Nien") truelight@0: MK("Nidda") truelight@0: MK("Nieder") truelight@0: MK("Nürn") truelight@0: MK("Ober") truelight@0: MK("Offen") truelight@0: MK("Osna") truelight@0: MK("Olden") truelight@0: MK("Ols") truelight@0: MK("Oranien") truelight@0: MK("Pader") truelight@0: MK("Quedlin") truelight@0: MK("Quer") truelight@0: MK("Ravens") truelight@0: MK("Regens") truelight@0: MK("Rott") truelight@0: MK("Ros") truelight@0: MK("Rüssels") truelight@0: MK("Saal") truelight@0: MK("Saar") truelight@0: MK("Salz") truelight@0: MK("Schöne") truelight@0: MK("Schwein") truelight@0: MK("Sonder") truelight@0: MK("Sonnen") truelight@0: MK("Stein") truelight@0: MK("Strals") truelight@0: MK("Straus") truelight@0: MK("Süd") truelight@0: MK("Ton") truelight@0: MK("Unter") truelight@0: MK("Ur") truelight@0: MK("Vor") truelight@0: MK("Wald") truelight@0: MK("War") truelight@0: MK("Wert") truelight@0: MK("Wester") truelight@0: MK("Witten") truelight@0: MK("Wolfs") truelight@0: MK("Würz") truelight@0: ; truelight@0: truelight@0: #define NUM_GERMAN_2 16 truelight@0: static const char german_2[] = truelight@0: MK("bach") truelight@0: MK("berg") truelight@0: MK("brück") truelight@0: MK("brücken") truelight@0: MK("burg") truelight@0: MK("dorf") truelight@0: MK("feld") truelight@0: MK("furt") truelight@0: MK("hausen") truelight@0: MK("haven") truelight@0: MK("heim") truelight@0: MK("horst") truelight@0: MK("mund") truelight@0: MK("münster") truelight@0: MK("stadt") truelight@0: MK("wald") truelight@0: ; truelight@0: truelight@0: #define NUM_GERMAN_3 5 truelight@0: static const char german_3[] = truelight@0: MK(" an der ") truelight@0: MK(" am ") truelight@0: MK("Bad ") truelight@0: MK("Klein ") truelight@0: MK("Neu ") truelight@0: ; truelight@0: truelight@0: #define NUM_GERMAN_4 6 truelight@0: #define NUM_GERMAN_4_PRECHANGE 5 truelight@0: static const char german_4[] = truelight@0: /* use "an der" */ truelight@0: MK("Oder") truelight@0: MK("Spree") truelight@0: MK("Donau") truelight@0: MK("Saale") truelight@0: MK("Elbe") truelight@0: /* use "am" */ truelight@0: MK("Main") truelight@0: truelight@0: ; truelight@0: truelight@0: static byte MakeGermanTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i; truelight@0: int ext; truelight@0: truelight@0: ext=GETNUM(7, 28); /* Extension - Prefix / Suffix */ truelight@0: truelight@0: if ((ext==12) || (ext==19)) { truelight@0: i=GETNUM(2,NUM_GERMAN_3-2); truelight@0: AppendPart(&buf, 2+i, german_3); darkvater@4: } truelight@0: truelight@0: truelight@0: i=GETNUM(3,NUM_GERMAN_1); truelight@0: truelight@0: AppendPart(&buf, i, german_1); truelight@0: truelight@0: if (i>NUM_GERMAN_1_HARDCODED-1) { truelight@0: AppendPart(&buf, GETNUM(5, NUM_GERMAN_2), german_2); darkvater@4: } truelight@0: truelight@0: if (ext==24) { truelight@0: i=GETNUM(9,NUM_GERMAN_4); truelight@0: truelight@0: if (i<=NUM_GERMAN_4_PRECHANGE-1) { truelight@0: AppendPart(&buf, 0, german_3); truelight@0: AppendPart(&buf, i, german_4); darkvater@4: } else { truelight@0: AppendPart(&buf, 1, german_3); truelight@0: AppendPart(&buf, i, german_4); truelight@0: } darkvater@4: } truelight@0: truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_SPANISH_1 86 truelight@0: static const char spanish_1[] = truelight@0: MK("Caracas") truelight@0: MK("Maracay") truelight@0: MK("Maracaibo") truelight@0: MK("Velencia") truelight@0: MK("El Dorado") truelight@0: MK("Morrocoy") truelight@0: MK("Cata") truelight@0: MK("Cataito") truelight@0: MK("Ciudad Bolivar") truelight@0: MK("Barquisimeto") truelight@0: MK("Merida") truelight@0: MK("Puerto Ordaz") truelight@0: MK("Santa Elena") truelight@0: MK("San Juan") truelight@0: MK("San Luis") truelight@0: MK("San Rafael") truelight@0: MK("Santiago") truelight@0: MK("Barcelona") truelight@0: MK("Barinas") truelight@0: MK("San Cristobal") truelight@0: MK("San Fransisco") truelight@0: MK("San Martin") truelight@0: MK("Guayana") truelight@0: MK("San Carlos") truelight@0: MK("El Limon") truelight@0: MK("Coro") truelight@0: MK("Corocoro") truelight@0: MK("Puerto Ayacucho") truelight@0: MK("Elorza") truelight@0: MK("Arismendi") truelight@0: MK("Trujillo") truelight@0: MK("Carupano") truelight@0: MK("Anaco") truelight@0: MK("Lima") truelight@0: MK("Cuzco") truelight@0: MK("Iquitos") truelight@0: MK("Callao") truelight@0: MK("Huacho") truelight@0: MK("Camana") truelight@0: MK("Puerto Chala") truelight@0: MK("Santa Cruz") truelight@0: MK("Quito") truelight@0: MK("Cuenca") truelight@0: MK("Huacho") truelight@0: MK("Tulcan") truelight@0: MK("Esmereldas") truelight@0: MK("Ibarra") truelight@0: MK("San Lorenzo") truelight@0: MK("Macas") truelight@0: MK("Morana") truelight@0: MK("Machala") truelight@0: MK("Zamora") truelight@0: MK("Latacunga") truelight@0: MK("Tena") truelight@0: MK("Cochabamba") truelight@0: MK("Ascencion") truelight@0: MK("Magdalena") truelight@0: MK("Santa Ana") truelight@0: MK("Manoa") truelight@0: MK("Sucre") truelight@0: MK("Oruro") truelight@0: MK("Uyuni") truelight@0: MK("Potosi") truelight@0: MK("Tupiza") truelight@0: MK("La Quiaca") truelight@0: MK("Yacuiba") truelight@0: MK("San Borja") truelight@0: MK("Fuerte Olimpio") truelight@0: MK("Fortin Esteros") truelight@0: MK("Campo Grande") truelight@0: MK("Bogota") truelight@0: MK("El Banco") truelight@0: MK("Zaragosa") truelight@0: MK("Neiva") truelight@0: MK("Mariano") truelight@0: MK("Cali") truelight@0: MK("La Palma") truelight@0: MK("Andoas") truelight@0: MK("Barranca") truelight@0: MK("Montevideo") truelight@0: MK("Valdivia") truelight@0: MK("Arica") truelight@0: MK("Temuco") truelight@0: MK("Tocopilla") truelight@0: MK("Mendoza") truelight@0: MK("Santa Rosa"); truelight@0: truelight@0: static byte MakeSpanishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: AppendPart(&buf, GETNUM(0, NUM_SPANISH_1), spanish_1); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_FRENCH_1 70 truelight@0: static const char french_1[] = truelight@0: MK("Agincourt") truelight@0: MK("Lille") truelight@0: MK("Dinan") truelight@0: MK("Aubusson") truelight@0: MK("Rodez") truelight@0: MK("Bergerac") truelight@0: MK("Bordeaux") truelight@0: MK("Bayonne") truelight@0: MK("Montpellier") truelight@0: MK("Montelimar") truelight@0: MK("Valence") truelight@0: MK("Digne") truelight@0: MK("Nice") truelight@0: MK("Cannes") truelight@0: MK("St. Tropez") truelight@0: MK("Marseilles") truelight@0: MK("Narbonne") truelight@0: MK("Sčte") truelight@0: MK("Aurillac") truelight@0: MK("Gueret") truelight@0: MK("Le Creusot") truelight@0: MK("Nevers") truelight@0: MK("Auxerre") truelight@0: MK("Versailles") truelight@0: MK("Meaux") truelight@0: MK("Châlons") truelight@0: MK("Compičgne") truelight@0: MK("Metz") truelight@0: MK("Chaumont") truelight@0: MK("Langres") truelight@0: MK("Bourg") truelight@0: MK("Lyons") truelight@0: MK("Vienne") truelight@0: MK("Grenoble") truelight@0: MK("Toulon") truelight@0: MK("Rennes") truelight@0: MK("Le Mans") truelight@0: MK("Angers") truelight@0: MK("Nantes") truelight@0: MK("Châteauroux") truelight@0: MK("Orléans") truelight@0: MK("Lisieux") truelight@0: MK("Cherbourg") truelight@0: MK("Morlaix") truelight@0: MK("Cognac") truelight@0: MK("Agen") truelight@0: MK("Tulle") truelight@0: MK("Blois") truelight@0: MK("Troyes") truelight@0: MK("Charolles") truelight@0: MK("Grenoble") truelight@0: MK("Chambéry") truelight@0: MK("Tours") truelight@0: MK("St. Brieuc") truelight@0: MK("St. Malo") truelight@0: MK("La Rochelle") truelight@0: MK("St. Flour") truelight@0: MK("Le Puy") truelight@0: MK("Vichy") truelight@0: MK("St. Valery") truelight@0: MK("Beaujolais") truelight@0: MK("Narbonne") truelight@0: MK("Albi") truelight@0: MK("St. Valery") truelight@0: MK("Biarritz") truelight@0: MK("Béziers") truelight@0: MK("Nîmes") truelight@0: MK("Chamonix") truelight@0: MK("Angoulčme") truelight@0: MK("Alençon"); truelight@0: truelight@0: static byte MakeFrenchTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: AppendPart(&buf, GETNUM(0, NUM_FRENCH_1), french_1); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: static byte MakeAmericanTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: // make american town names equal to english for now. truelight@0: return MakeEnglishTownName(buf, seed); truelight@0: } truelight@0: truelight@0: #define NUM_SILLY_1 88 truelight@0: static const char silly_1[] = truelight@0: MK("Binky") truelight@0: MK("Blubber") truelight@0: MK("Bumble") truelight@0: MK("Crinkle") truelight@0: MK("Crusty") truelight@0: MK("Dangle") truelight@0: MK("Dribble") truelight@0: MK("Flippety") truelight@0: MK("Google") truelight@0: MK("Muffin") truelight@0: truelight@0: MK("Nosey") truelight@0: MK("Pinker") truelight@0: MK("Quack") truelight@0: MK("Rumble") truelight@0: MK("Sleepy") truelight@0: MK("Sliggles") truelight@0: MK("Snooze") truelight@0: MK("Teddy") truelight@0: MK("Tinkle") truelight@0: MK("Twister") truelight@0: truelight@0: MK("Pinker") truelight@0: MK("Hippo") truelight@0: MK("Itchy") truelight@0: MK("Jelly") truelight@0: MK("Jingle") truelight@0: MK("Jolly") truelight@0: MK("Kipper") truelight@0: MK("Lazy") truelight@0: MK("Frogs") truelight@0: MK("Mouse") truelight@0: truelight@0: MK("Quack") truelight@0: MK("Cheeky") truelight@0: MK("Lumpy") truelight@0: MK("Grumpy") truelight@0: MK("Mangle") truelight@0: MK("Fiddle") truelight@0: MK("Slugs") truelight@0: MK("Noodles") truelight@0: MK("Poodles") truelight@0: MK("Shiver") truelight@0: truelight@0: MK("Rumble") truelight@0: MK("Pixie") truelight@0: MK("Puddle") truelight@0: MK("Riddle") truelight@0: MK("Rattle") truelight@0: MK("Rickety") truelight@0: MK("Waffle") truelight@0: MK("Sagging") truelight@0: MK("Sausage") truelight@0: MK("Egg") truelight@0: truelight@0: MK("Sleepy") truelight@0: MK("Scatter") truelight@0: MK("Scramble") truelight@0: MK("Silly") truelight@0: MK("Simple") darkvater@4: MK("Trickle") truelight@0: MK("Slippery") truelight@0: MK("Slimey") truelight@0: MK("Slumber") truelight@0: MK("Soggy") truelight@0: truelight@0: MK("Sliggles") truelight@0: MK("Splutter") truelight@0: MK("Sulky") truelight@0: MK("Swindle") truelight@0: MK("Swivel") truelight@0: MK("Tasty") truelight@0: MK("Tangle") truelight@0: MK("Toggle") truelight@0: MK("Trotting") truelight@0: MK("Tumble") truelight@0: truelight@0: MK("Snooze") truelight@0: MK("Water") truelight@0: MK("Windy") truelight@0: MK("Amble") truelight@0: MK("Bubble") truelight@0: MK("Cheery") truelight@0: MK("Cheese") truelight@0: MK("Cockle") truelight@0: MK("Cracker") truelight@0: MK("Crumple") truelight@0: truelight@0: MK("Teddy") truelight@0: MK("Evil") truelight@0: MK("Fairy") truelight@0: MK("Falling") truelight@0: MK("Fishy") truelight@0: MK("Fizzle") truelight@0: MK("Frosty") truelight@0: MK("Griddle") truelight@0: ; truelight@0: truelight@0: #define NUM_SILLY_2 15 truelight@0: static const char silly_2[] = truelight@0: MK("ton") truelight@0: MK("bury") truelight@0: MK("bottom") truelight@0: MK("ville") truelight@0: MK("well") truelight@0: MK("weed") truelight@0: MK("worth") truelight@0: MK("wig") truelight@0: MK("wick") truelight@0: MK("wood") truelight@0: truelight@0: MK("pool") truelight@0: MK("head") truelight@0: MK("burg") truelight@0: MK("gate") truelight@0: MK("bridge") truelight@0: ; truelight@0: truelight@0: truelight@0: static byte MakeSillyTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: AppendPart(&buf, GETNUM(0, NUM_SILLY_1), silly_1); truelight@0: AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: truelight@0: #define NUM_SWEDISH_1 4 truelight@0: static const char swedish_1[] = truelight@0: MK("Gamla ") truelight@0: MK("Lilla ") truelight@0: MK("Nya ") truelight@0: MK("Stora "); truelight@0: truelight@0: #define NUM_SWEDISH_2 38 truelight@0: static const char swedish_2[] = truelight@0: MK("Boll") truelight@0: MK("Bor") truelight@0: MK("Ed") truelight@0: MK("En") truelight@0: MK("Erik") truelight@0: MK("Es") truelight@0: MK("Fin") truelight@0: MK("Fisk") truelight@0: MK("Grön") truelight@0: MK("Hag") truelight@0: MK("Halm") truelight@0: MK("Karl") truelight@0: MK("Kram") truelight@0: MK("Kung") truelight@0: MK("Land") truelight@0: MK("Lid") truelight@0: MK("Lin") truelight@0: MK("Mal") truelight@0: MK("Malm") truelight@0: MK("Marie") truelight@0: MK("Ner") truelight@0: MK("Norr") truelight@0: MK("Oskar") truelight@0: MK("Sand") truelight@0: MK("Skog") truelight@0: MK("Stock") truelight@0: MK("Stor") truelight@0: MK("Ström") truelight@0: MK("Sund") truelight@0: MK("Söder") truelight@0: MK("Tall") truelight@0: MK("Tratt") truelight@0: MK("Troll") truelight@0: MK("Upp") truelight@0: MK("Var") truelight@0: MK("Väster") truelight@0: MK("Ängel") truelight@0: MK("Öster"); truelight@0: truelight@0: #define NUM_SWEDISH_2A 42 truelight@0: static const char swedish_2a[] = truelight@0: MK("B") truelight@0: MK("Br") truelight@0: MK("D") truelight@0: MK("Dr") truelight@0: MK("Dv") truelight@0: MK("F") truelight@0: MK("Fj") truelight@0: MK("Fl") truelight@0: MK("Fr") truelight@0: MK("G") truelight@0: MK("Gl") truelight@0: MK("Gn") truelight@0: MK("Gr") truelight@0: MK("H") truelight@0: MK("J") truelight@0: MK("K") truelight@0: MK("Kl") truelight@0: MK("Kn") truelight@0: MK("Kr") truelight@0: MK("Kv") truelight@0: MK("L") truelight@0: MK("M") truelight@0: MK("N") truelight@0: MK("P") truelight@0: MK("Pl") truelight@0: MK("Pr") truelight@0: MK("R") truelight@0: MK("S") truelight@0: MK("Sk") truelight@0: MK("Skr") truelight@0: MK("Sl") truelight@0: MK("Sn") truelight@0: MK("Sp") truelight@0: MK("Spr") truelight@0: MK("St") truelight@0: MK("Str") truelight@0: MK("Sv") truelight@0: MK("T") truelight@0: MK("Tr") truelight@0: MK("Tv") truelight@0: MK("V") truelight@0: MK("Vr"); truelight@0: truelight@0: #define NUM_SWEDISH_2B 9 truelight@0: static const char swedish_2b[] = truelight@0: MK("a") truelight@0: MK("e") truelight@0: MK("i") truelight@0: MK("o") truelight@0: MK("u") truelight@0: MK("y") truelight@0: MK("ĺ") truelight@0: MK("ä") truelight@0: MK("ö"); truelight@0: truelight@0: #define NUM_SWEDISH_2C 26 truelight@0: static const char swedish_2c[] = truelight@0: MK("ck") truelight@0: MK("d") truelight@0: MK("dd") truelight@0: MK("g") truelight@0: MK("gg") truelight@0: MK("l") truelight@0: MK("ld") truelight@0: MK("m") truelight@0: MK("n") truelight@0: MK("nd") truelight@0: MK("ng") truelight@0: MK("nn") truelight@0: MK("p") truelight@0: MK("pp") truelight@0: MK("r") truelight@0: MK("rd") truelight@0: MK("rk") truelight@0: MK("rp") truelight@0: MK("rr") truelight@0: MK("rt") truelight@0: MK("s") truelight@0: MK("sk") truelight@0: MK("st") truelight@0: MK("t") truelight@0: MK("tt") truelight@0: MK("v"); truelight@0: truelight@0: #define NUM_SWEDISH_3 32 truelight@0: static const char swedish_3[] = truelight@0: MK("arp") truelight@0: MK("berg") truelight@0: MK("boda") truelight@0: MK("borg") truelight@0: MK("bro") truelight@0: MK("bukten") truelight@0: MK("by") truelight@0: MK("byn") truelight@0: MK("fors") truelight@0: MK("hammar") truelight@0: MK("hamn") truelight@0: MK("holm") truelight@0: MK("hus") truelight@0: MK("hättan") truelight@0: MK("kulle") truelight@0: MK("köping") truelight@0: MK("lund") truelight@0: MK("löv") truelight@0: MK("sala") truelight@0: MK("skrona") truelight@0: MK("slätt") truelight@0: MK("spĺng") truelight@0: MK("stad") truelight@0: MK("sund") truelight@0: MK("svall") truelight@0: MK("svik") truelight@0: MK("sĺker") truelight@0: MK("udde") truelight@0: MK("valla") truelight@0: MK("viken") truelight@0: MK("älv") truelight@0: MK("ĺs"); truelight@0: truelight@0: static byte MakeSwedishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i; truelight@0: truelight@0: i = GETNUM(0, 50 + NUM_SWEDISH_1) - 50; truelight@0: if (i >= 0) AppendPart(&buf, i, swedish_1); truelight@0: truelight@0: if (GETNUM(4, 5) >= 3) truelight@0: AppendPart(&buf, GETNUM(7, NUM_SWEDISH_2), swedish_2); truelight@0: else { truelight@0: AppendPart(&buf, GETNUM(7, NUM_SWEDISH_2A), swedish_2a); truelight@0: AppendPart(&buf, GETNUM(10, NUM_SWEDISH_2B), swedish_2b); truelight@0: AppendPart(&buf, GETNUM(13, NUM_SWEDISH_2C), swedish_2c); truelight@0: } truelight@0: truelight@0: AppendPart(&buf, GETNUM(16, NUM_SWEDISH_3), swedish_3); truelight@0: truelight@0: return 0; truelight@0: } truelight@0: truelight@0: truelight@0: #define NUM_DUTCH_1 8 truelight@0: static const char dutch_1[] = truelight@0: MK("Nieuw ") truelight@0: MK("Oud ") truelight@0: MK("Groot ") truelight@0: MK("Zuid ") truelight@0: MK("Noord ") truelight@0: MK("Oost ") truelight@0: MK("West ") truelight@0: MK("Klein "); truelight@0: truelight@0: #define NUM_DUTCH_2 57 truelight@0: static const char dutch_2[] = truelight@0: MK("Hoog") truelight@0: MK("Laag") truelight@0: MK("Klein") truelight@0: MK("Groot") truelight@0: MK("Noorder") truelight@0: MK("Noord") truelight@0: MK("Zuider") truelight@0: MK("Zuid") truelight@0: MK("Ooster") truelight@0: MK("Oost") truelight@0: MK("Wester") truelight@0: MK("West") truelight@0: MK("Hoofd") truelight@0: MK("Midden") truelight@0: MK("Eind") truelight@0: MK("Amster") truelight@0: MK("Amstel") truelight@0: MK("Dord") truelight@0: MK("Rotter") truelight@0: MK("Haar") truelight@0: MK("Til") truelight@0: MK("Enk") truelight@0: MK("Dok") truelight@0: MK("Veen") truelight@0: MK("Leidsch") truelight@0: MK("Lely") truelight@0: MK("En") truelight@0: MK("Kaats") truelight@0: MK("U") truelight@0: MK("Maas") truelight@0: MK("Mar") truelight@0: MK("Bla") truelight@0: MK("Al") truelight@0: MK("Alk") truelight@0: MK("Eer") truelight@0: MK("Drie") truelight@0: MK("Ter") truelight@0: MK("Groes") truelight@0: MK("Goes") truelight@0: MK("Soest") truelight@0: MK("Coe") truelight@0: MK("Uit") truelight@0: MK("Zwaag") truelight@0: MK("Hellen") truelight@0: MK("Slie") truelight@0: MK("IJ") truelight@0: MK("Grubben") truelight@0: MK("Groen") truelight@0: MK("Lek") truelight@0: MK("Ridder") truelight@0: MK("Schie") truelight@0: MK("Olde") truelight@0: MK("Roose") truelight@0: MK("Haar") truelight@0: MK("Til") truelight@0: MK("Loos") truelight@0: MK("Hil"); truelight@0: truelight@0: #define NUM_DUTCH_3 20 truelight@0: static const char dutch_3[] = truelight@0: MK("Drog") truelight@0: MK("Nat") truelight@0: MK("Valk") truelight@0: MK("Bob") truelight@0: MK("Dedem") truelight@0: MK("Kollum") truelight@0: MK("Best") truelight@0: MK("Hoend") truelight@0: MK("Leeuw") truelight@0: MK("Graaf") truelight@0: MK("Uithuis") truelight@0: MK("Purm") truelight@0: MK("Hard") truelight@0: MK("Hell") truelight@0: MK("Werk") truelight@0: MK("Spijk") truelight@0: MK("Vink") truelight@0: MK("Wams") truelight@0: MK("Heerhug") truelight@0: MK("Koning"); truelight@0: truelight@0: truelight@0: #define NUM_DUTCH_4 6 truelight@0: static const char dutch_4[] = truelight@0: MK("e") truelight@0: MK("er") truelight@0: MK("el") truelight@0: MK("en") truelight@0: MK("o") truelight@0: MK("s"); truelight@0: truelight@0: #define NUM_DUTCH_5 56 truelight@0: static const char dutch_5[] = truelight@0: MK("stad") truelight@0: MK("vorst") truelight@0: MK("dorp") truelight@0: MK("dam") truelight@0: MK("beek") truelight@0: MK("doorn") truelight@0: MK("zijl") truelight@0: MK("zijlen") truelight@0: MK("lo") truelight@0: MK("muiden") truelight@0: MK("meden") truelight@0: MK("vliet") truelight@0: MK("nisse") truelight@0: MK("daal") truelight@0: MK("vorden") truelight@0: MK("vaart") truelight@0: MK("mond") truelight@0: MK("zaal") truelight@0: MK("water") truelight@0: MK("duinen") truelight@0: MK("heuvel") truelight@0: MK("geest") truelight@0: MK("kerk") truelight@0: MK("meer") truelight@0: MK("maar") truelight@0: MK("hoorn") truelight@0: MK("rade") truelight@0: MK("wijk") truelight@0: MK("berg") truelight@0: MK("heim") truelight@0: MK("sum") truelight@0: MK("richt") truelight@0: MK("burg") truelight@0: MK("recht") truelight@0: MK("drecht") truelight@0: MK("trecht") truelight@0: MK("tricht") truelight@0: MK("dricht") truelight@0: MK("lum") truelight@0: MK("rum") truelight@0: MK("halen") truelight@0: MK("oever") truelight@0: MK("wolde") truelight@0: MK("veen") truelight@0: MK("hoven") truelight@0: MK("gast") truelight@0: MK("kum") truelight@0: MK("hage") truelight@0: MK("dijk") truelight@0: MK("zwaag") truelight@0: MK("pomp") truelight@0: MK("huizen") truelight@0: MK("bergen") truelight@0: MK("schede") truelight@0: MK("mere") truelight@0: MK("end"); truelight@0: truelight@0: static byte MakeDutchTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i; truelight@0: truelight@0: i = GETNUM(0, 50 + NUM_DUTCH_1) - 50; truelight@0: if (i >= 0) truelight@0: AppendPart(&buf, i, dutch_1); truelight@0: truelight@0: i = GETNUM(6, 9); truelight@0: if(i > 4){ truelight@0: AppendPart(&buf, GETNUM(9, NUM_DUTCH_2), dutch_2); truelight@0: } else { truelight@0: AppendPart(&buf, GETNUM(9, NUM_DUTCH_3), dutch_3); truelight@0: AppendPart(&buf, GETNUM(12, NUM_DUTCH_4), dutch_4); truelight@0: } truelight@0: AppendPart(&buf, GETNUM(15, NUM_DUTCH_5), dutch_5); truelight@0: truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_FINNISH_1 25 truelight@0: static const char finnish_1[] = truelight@0: MK("Aijala") truelight@0: MK("Kisko") truelight@0: MK("Espoo") truelight@0: MK("Helsinki") truelight@0: MK("Tapiola") truelight@0: MK("Järvelä") truelight@0: MK("Lahti") truelight@0: MK("Kotka") truelight@0: MK("Hamina") truelight@0: MK("Loviisa") truelight@0: MK("Kouvola") truelight@0: MK("Tampere") truelight@0: MK("Kokkola") truelight@0: MK("Oulu") truelight@0: MK("Salo") truelight@0: MK("Malmi") truelight@0: MK("Pelto") truelight@0: MK("Koski") truelight@0: MK("Iisalmi") truelight@0: MK("Raisio") truelight@0: MK("Taavetti") truelight@0: MK("Joensuu") truelight@0: MK("Imatra") truelight@0: MK("Tapanila") truelight@0: MK("Pasila"); truelight@0: truelight@0: #define NUM_FINNISH_2a 26 truelight@0: static const char finnish_2a[] = truelight@0: MK("Hiekka") truelight@0: MK("Haapa") truelight@0: MK("Mylly") truelight@0: MK("Kivi") truelight@0: MK("Lappeen") truelight@0: MK("Lohjan") truelight@0: MK("Savon") truelight@0: MK("Sauna") truelight@0: MK("Keri") truelight@0: MK("Uusi") truelight@0: MK("Vanha") truelight@0: MK("Lapin") truelight@0: MK("Kesä") truelight@0: MK("Kuusi") truelight@0: MK("Pelto") truelight@0: MK("Tuomi") truelight@0: MK("Pitäjän") truelight@0: MK("Terva") truelight@0: MK("Olki") truelight@0: MK("Heinä") truelight@0: MK("Kuusan") truelight@0: MK("Seinä") truelight@0: MK("Kemi") truelight@0: MK("Rova") truelight@0: MK("Martin") truelight@0: MK("Koivu"); truelight@0: truelight@0: #define NUM_FINNISH_2b 18 truelight@0: static const char finnish_2b[] = truelight@0: MK("harju") truelight@0: MK("linna") truelight@0: MK("järvi") truelight@0: MK("kallio") truelight@0: MK("mäki") truelight@0: MK("nummi") truelight@0: MK("joki") truelight@0: MK("kylä") truelight@0: MK("lampi") truelight@0: MK("lahti") truelight@0: MK("metsä") truelight@0: MK("suo") truelight@0: MK("laakso") truelight@0: MK("niitty") truelight@0: MK("luoto") truelight@0: MK("hovi") truelight@0: MK("ranta") truelight@0: MK("koski"); truelight@0: truelight@0: static byte MakeFinnishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: // Select randomly if town name should consists of one or two parts. truelight@0: if (GETNUM(0, 15) >= 10) truelight@0: AppendPart(&buf, GETNUM(2, NUM_FINNISH_1), finnish_1); // One part truelight@0: else { truelight@0: AppendPart(&buf, GETNUM(2, NUM_FINNISH_2a), finnish_2a); // Two parts truelight@0: AppendPart(&buf, GETNUM(10, NUM_FINNISH_2b), finnish_2b); truelight@0: } truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_POLISH_1 11 truelight@0: truelight@0: static const char polish_1_m[] = truelight@0: MK("Wielki ") truelight@0: MK("Maly ") truelight@0: MK("Zly ") truelight@0: MK("Dobry ") truelight@0: MK("Nowy ") truelight@0: MK("Stary ") truelight@0: MK("Zloty ") truelight@0: MK("Zielony ") truelight@0: MK("Bialy ") truelight@0: MK("Modry ") truelight@0: MK("Debowy ") truelight@0: ; truelight@0: truelight@0: static const char polish_1_f[] = truelight@0: MK("Wielka ") truelight@0: MK("Mala ") truelight@0: MK("Zla ") truelight@0: MK("Dobra ") truelight@0: MK("Nowa ") truelight@0: MK("Stara ") truelight@0: MK("Zlota ") truelight@0: MK("Zielona ") truelight@0: MK("Biala ") truelight@0: MK("Modra ") truelight@0: MK("Debowa ") truelight@0: ; truelight@0: truelight@0: static const char polish_1_n[] = truelight@0: MK("Wielkie ") truelight@0: MK("Male ") truelight@0: MK("Zle ") truelight@0: MK("Dobre ") truelight@0: MK("Nowe ") truelight@0: MK("Stare ") truelight@0: MK("Zlote ") truelight@0: MK("Zielone ") truelight@0: MK("Biale ") truelight@0: MK("Modre ") truelight@0: MK("Debowe ") truelight@0: ; truelight@0: truelight@0: #define NUM_POLISH_2_O 34// single names truelight@0: #define NUM_POLISH_2_M 48// masculine + pref/suf truelight@0: #define NUM_POLISH_2_F 27// feminine + pref/suf truelight@0: #define NUM_POLISH_2_N 29// 'it' + pref/suf truelight@0: truelight@0: static const char polish_2[] = truelight@0: //static const char polish_2_o[] = truelight@0: MK("Frombork") truelight@0: MK("Gniezno") truelight@0: MK("Olsztyn") truelight@0: MK("Torun") truelight@0: MK("Bydgoszcz") truelight@0: MK("Terespol") truelight@0: MK("Krakow") truelight@0: MK("Poznan") truelight@0: MK("Wroclaw") truelight@0: MK("Katowice") truelight@0: MK("Cieszyn") truelight@0: MK("Bytom") truelight@0: MK("Frombork") truelight@0: MK("Hel") truelight@0: MK("Konin") truelight@0: MK("Lublin") truelight@0: MK("Malbork") truelight@0: MK("Sopot") truelight@0: MK("Sosnowiec") truelight@0: MK("Gdansk") truelight@0: MK("Gdynia") truelight@0: MK("Sieradz") truelight@0: MK("Sandomierz") truelight@0: MK("Szczyrk") truelight@0: MK("Szczytno") truelight@0: MK("Szczecin") truelight@0: MK("Zakopane") truelight@0: MK("Szklarska Poreba") truelight@0: MK("Bochnia") truelight@0: MK("Golub-Dobrzyn") truelight@0: MK("Chojnice") truelight@0: MK("Ostrowiec") truelight@0: MK("Otwock") truelight@0: MK("Wolsztyn") truelight@0: //; truelight@0: truelight@0: //static const char polish_2_m[] = truelight@0: MK("Jarocin") truelight@0: MK("Gogolin") truelight@0: MK("Tomaszow") truelight@0: MK("Piotrkow") truelight@0: MK("Lidzbark") truelight@0: MK("Rypin") truelight@0: MK("Radzymin") truelight@0: MK("Wolomin") truelight@0: MK("Pruszkow") truelight@0: MK("Olsztynek") truelight@0: MK("Rypin") truelight@0: MK("Cisek") truelight@0: MK("Krotoszyn") truelight@0: MK("Stoczek") truelight@0: MK("Lubin") truelight@0: MK("Lubicz") truelight@0: MK("Milicz") truelight@0: MK("Targ") truelight@0: MK("Ostrow") truelight@0: MK("Ozimek") truelight@0: MK("Puck") truelight@0: MK("Rzepin") truelight@0: MK("Siewierz") truelight@0: MK("Stargard") truelight@0: MK("Starogard") truelight@0: MK("Turek") truelight@0: MK("Tymbark") truelight@0: MK("Wolsztyn") truelight@0: MK("Strzepcz") truelight@0: MK("Strzebielin") truelight@0: MK("Sochaczew") truelight@0: MK("Grebocin") truelight@0: MK("Gniew") truelight@0: MK("Lubliniec") truelight@0: MK("Lubasz") truelight@0: MK("Lutomiersk") truelight@0: MK("Niemodlin") truelight@0: MK("Przeworsk") truelight@0: MK("Ursus") truelight@0: MK("Tyczyn") truelight@0: MK("Sztum") truelight@0: MK("Szczebrzeszyn") truelight@0: MK("Wolin") truelight@0: MK("Wrzeszcz") truelight@0: MK("Zgierz") truelight@0: MK("Zieleniec") truelight@0: MK("Drobin") truelight@0: MK("Garwolin") truelight@0: //; truelight@0: truelight@0: //static const char polish_2_f[] = truelight@0: MK("Szprotawa") truelight@0: MK("Pogorzelica") truelight@0: MK("Motlawa") truelight@0: MK("Lubawa") truelight@0: MK("Nidzica") truelight@0: MK("Kruszwica") truelight@0: MK("Bierawa") truelight@0: MK("Brodnica") truelight@0: MK("Chojna") truelight@0: MK("Krzepica") truelight@0: MK("Ruda") truelight@0: MK("Rumia") truelight@0: MK("Tuchola") truelight@0: MK("Trzebinia") truelight@0: MK("Ustka") truelight@0: MK("Warszawa") truelight@0: MK("Bobowa") truelight@0: MK("Dukla") truelight@0: MK("Krynica") truelight@0: MK("Murowana") truelight@0: MK("Niemcza") truelight@0: MK("Zaspa") truelight@0: MK("Zawoja") truelight@0: MK("Wola") truelight@0: MK("Limanowa") truelight@0: MK("Rabka") truelight@0: MK("Skawina") truelight@0: MK("Pilawa") truelight@0: //; truelight@0: truelight@0: //static const char polish_2_n[] = truelight@0: MK("Lipsko") truelight@0: MK("Pilzno") truelight@0: MK("Przodkowo") truelight@0: MK("Strzelno") truelight@0: MK("Susz") truelight@0: MK("Jaworzno") truelight@0: MK("Choszczno") truelight@0: MK("Mogilno") truelight@0: MK("Luzino") truelight@0: MK("Miasto") truelight@0: MK("Dziadowo") truelight@0: MK("Kowalewo") truelight@0: MK("Legionowo") truelight@0: MK("Miastko") truelight@0: MK("Zabrze") truelight@0: MK("Zawiercie") truelight@0: MK("Kochanowo") truelight@0: MK("Miechucino") truelight@0: MK("Mirachowo") truelight@0: MK("Robakowo") truelight@0: MK("Kosakowo") truelight@0: MK("Borne") truelight@0: MK("Braniewo") truelight@0: MK("Sulinowo") truelight@0: MK("Chmielno") truelight@0: MK("Jastrzebie") truelight@0: MK("Gryfino") truelight@0: MK("Koronowo") truelight@0: MK("Lubichowo") truelight@0: MK("Opoczno") truelight@0: ; truelight@0: truelight@0: #define NUM_POLISH_3 29 truelight@0: static const char polish_3_m[] = truelight@0: MK(" Wybudowanie") truelight@0: MK(" Swietokrzyski") truelight@0: MK(" Gorski") truelight@0: MK(" Morski") truelight@0: MK(" Zdroj") truelight@0: MK(" Wody") truelight@0: MK(" Bajoro") truelight@0: MK(" Krajenski") truelight@0: MK(" Slaski") truelight@0: MK(" Mazowiecki") truelight@0: MK(" Pomorski") truelight@0: MK(" Wielki") truelight@0: MK(" Maly") truelight@0: MK(" Warminski") truelight@0: MK(" Mazurski") truelight@0: MK(" Mniejszy") truelight@0: MK(" Wiekszy") truelight@0: MK(" Gorny") truelight@0: MK(" Dolny") truelight@0: MK(" Wielki") truelight@0: MK(" Stary") truelight@0: MK(" Nowy") truelight@0: MK(" Wielkopolski") truelight@0: MK(" Wzgorze") truelight@0: MK(" Mosty") truelight@0: MK(" Kujawski") truelight@0: MK(" Malopolski") truelight@0: MK(" Podlaski") truelight@0: MK(" Lesny") truelight@0: ; truelight@0: static const char polish_3_f[] = truelight@0: MK(" Wybudowanie") truelight@0: MK(" Swietokrzyska") truelight@0: MK(" Gorska") truelight@0: MK(" Morska") truelight@0: MK(" Zdroj") truelight@0: MK(" Woda") truelight@0: MK(" Bajoro") truelight@0: MK(" Krajenska") truelight@0: MK(" Slaska") truelight@0: MK(" Mazowiecka") truelight@0: MK(" Pomorska") truelight@0: MK(" Wielka") truelight@0: MK(" Mala") truelight@0: MK(" Warminska") truelight@0: MK(" Mazurska") truelight@0: MK(" Mniejsza") truelight@0: MK(" Wieksza") truelight@0: MK(" Gorna") truelight@0: MK(" Dolna") truelight@0: MK(" Wielka") truelight@0: MK(" Stara") truelight@0: MK(" Nowa") truelight@0: MK(" Wielkopolska") truelight@0: MK(" Wzgorza") truelight@0: MK(" Mosty") truelight@0: MK(" Kujawska") truelight@0: MK(" Malopolska") truelight@0: MK(" Podlaska") truelight@0: MK(" Lesna") truelight@0: ; truelight@0: static const char polish_3_n[] = truelight@0: MK(" Wybudowanie") truelight@0: MK(" Swietokrzyskie") truelight@0: MK(" Gorskie") truelight@0: MK(" Morskie") truelight@0: MK(" Zdroj") truelight@0: MK(" Wody") truelight@0: MK(" Bajoro") truelight@0: MK(" Krajenskie") truelight@0: MK(" Slaskie") truelight@0: MK(" Mazowieckie") truelight@0: MK(" Pomorskie") truelight@0: MK(" Wielkie") truelight@0: MK(" Male") truelight@0: MK(" Warminskie ") truelight@0: MK(" Mazurskie ") truelight@0: MK(" Mniejsze") truelight@0: MK(" Wieksze") truelight@0: MK(" Gorne") truelight@0: MK(" Dolne") truelight@0: MK(" Wielkie") truelight@0: MK(" Stare") truelight@0: MK(" Nowe") truelight@0: MK(" Wielkopolskie") truelight@0: MK(" Wzgorze") truelight@0: MK(" Mosty") truelight@0: MK(" Kujawskie") truelight@0: MK(" Malopolskie") truelight@0: MK(" Podlaskie") truelight@0: MK(" Lesne") truelight@0: ; truelight@0: truelight@0: #define NUM_POLISH_2 NUM_POLISH_2_O + NUM_POLISH_2_M + NUM_POLISH_2_F + NUM_POLISH_2_N truelight@0: truelight@0: static const char * const _polish_types[3][2] = { truelight@0: {polish_1_m, polish_3_m}, // masculine truelight@0: {polish_1_f, polish_3_f}, // feminine truelight@0: {polish_1_n, polish_3_n}, // neutral truelight@0: }; truelight@0: truelight@0: static byte MakePolishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: uint i, x; truelight@0: const char *const (*t)[2]; truelight@0: truelight@0: // get a number ranging from 0 to all_towns truelight@0: i = GETNUM(0, NUM_POLISH_2); truelight@0: truelight@0: // single name truelight@0: if(i < NUM_POLISH_2_O) { truelight@0: AppendPart(&buf, i, polish_2); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: // a suffix (12/20), a prefix (4/20), or nothing (4/20) truelight@0: x = GETNUM(5, 20); truelight@0: truelight@0: // no suffix of prefix truelight@0: if(x < 4) { truelight@0: AppendPart(&buf, i-NUM_POLISH_2_O, polish_2); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: t = _polish_types; truelight@0: if(IS_INT_INSIDE(i, NUM_POLISH_2_O, NUM_POLISH_2_O + NUM_POLISH_2_M)) { truelight@0: // nothing truelight@0: } 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)) { truelight@0: t += 1; truelight@0: } else { truelight@0: t += 2; truelight@0: } truelight@0: truelight@0: // suffix or prefix truelight@0: if(x < 8) { truelight@0: AppendPart(&buf, GETNUM(10, NUM_POLISH_1), (*t)[0]); truelight@0: AppendPart(&buf, i, polish_2); truelight@0: } else { truelight@0: AppendPart(&buf, i, polish_2); truelight@0: AppendPart(&buf, GETNUM(10, NUM_POLISH_3), (*t)[1]); truelight@0: } truelight@0: truelight@0: return 0; truelight@0: } truelight@0: truelight@0: #define NUM_SLOVAKISH_1 87 truelight@0: static const char slovakish_1[] = truelight@0: MK("Bratislava") truelight@0: MK("Banovce nad Bebravou") truelight@0: MK("Banska Bystrica") truelight@0: MK("Banska Stiavnica") truelight@0: MK("Bardejov") truelight@0: MK("Brezno") truelight@0: MK("Brezova pod Bradlom") truelight@0: MK("Bytca") truelight@0: MK("Cadca") truelight@0: MK("Cierna nad Tisou") truelight@0: MK("Detva") truelight@0: MK("Detva") truelight@0: MK("Dolny Kubin") truelight@0: MK("Dolny Kubin") truelight@0: MK("Dunajska Streda") truelight@0: MK("Gabcikovo") truelight@0: MK("Galanta") truelight@0: MK("Gbely") truelight@0: MK("Gelnica") truelight@0: MK("Handlova") truelight@0: MK("Hlohovec") truelight@0: MK("Holic") truelight@0: MK("Humenne") truelight@0: MK("Hurbanovo") truelight@0: MK("Kezmarok") truelight@0: MK("Komarno") truelight@0: MK("Kosice") truelight@0: MK("Kremnica") truelight@0: MK("Krompachy") truelight@0: MK("Kuty") truelight@0: MK("Leopoldov") truelight@0: MK("Levoca") truelight@0: MK("Liptovsky Mikulas") truelight@0: MK("Lucenec") truelight@0: MK("Malacky") truelight@0: MK("Martin") truelight@0: MK("Medzilaborce") truelight@0: MK("Michalovce") truelight@0: MK("Modra") truelight@0: MK("Myjava") truelight@0: MK("Namestovo") truelight@0: MK("Nitra") truelight@0: MK("Nova Bana") truelight@0: MK("Nove Mesto nad Vahom") truelight@0: MK("Nove Zamky") truelight@0: MK("Partizanske") truelight@0: MK("Pezinok") truelight@0: MK("Piestany") truelight@0: MK("Poltar") truelight@0: MK("Poprad") truelight@0: MK("Povazska Bystrica") truelight@0: MK("Prievidza") truelight@0: MK("Puchov") truelight@0: MK("Revuca") truelight@0: MK("Rimavska Sobota") truelight@0: MK("Roznava") truelight@0: MK("Ruzomberok") truelight@0: MK("Sabinov") truelight@0: MK("Sala") truelight@0: MK("Senec") truelight@0: MK("Senica") truelight@0: MK("Sered") truelight@0: MK("Skalica") truelight@0: MK("Sladkovicovo") truelight@0: MK("Smolenice") truelight@0: MK("Snina") truelight@0: MK("Stara Lubovna") truelight@0: MK("Stara Tura") truelight@0: MK("Strazske") truelight@0: MK("Stropkov") truelight@0: MK("Stupava") truelight@0: MK("Sturovo") truelight@0: MK("Sulekovo") truelight@0: MK("Topolcany") truelight@0: MK("Trebisov") truelight@0: MK("Trencin") truelight@0: MK("Trnava") truelight@0: MK("Turcianske Teplice") truelight@0: MK("Tvrdosin") truelight@0: MK("Vrable") truelight@0: MK("Vranov nad Toplov") truelight@0: MK("Zahorska Bystrica") truelight@0: MK("Zdiar") truelight@0: MK("Ziar nad Hronom") truelight@0: MK("Zilina") truelight@0: MK("Zlate Moravce") truelight@0: MK("Zvolen") truelight@0: ; truelight@0: truelight@0: static byte MakeSlovakishTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: AppendPart(&buf, GETNUM(0, NUM_SLOVAKISH_1), slovakish_1); truelight@0: return 0; truelight@0: } truelight@0: truelight@0: // Modifiers truelight@0: #define NUM_HUNGARIAN_1 5 truelight@0: static const char hungarian_1[] = truelight@0: MK("Nagy-") truelight@0: MK("Kis-") truelight@0: MK("Felső-") truelight@0: MK("Alsó-") truelight@0: MK("Új-") truelight@0: ; truelight@0: truelight@0: #define NUM_HUNGARIAN_2 54 truelight@0: static const char hungarian_2[] = truelight@0: // River modifiers truelight@0: // 1 - 10 truelight@0: MK("Bodrog") truelight@0: MK("Dráva") truelight@0: MK("Duna") truelight@0: MK("Hejő") truelight@0: MK("Hernád") truelight@0: MK("Rába") truelight@0: MK("Sajó") truelight@0: MK("Szamos") truelight@0: MK("Tisza") truelight@0: MK("Zala") truelight@0: // Lake modifiers truelight@0: // 11 - 12 truelight@0: MK("Balaton") truelight@0: MK("Fertő") truelight@0: // Mountain modifiers truelight@0: // 13 - 14 truelight@0: MK("Bakony") truelight@0: MK("Cserhát") truelight@0: // Country modifiers truelight@0: // 15 - 23 truelight@0: MK("Bihar") truelight@0: MK("Hajdú") truelight@0: MK("Jász") truelight@0: MK("Kun") truelight@0: MK("Magyar") truelight@0: MK("Nógrád") truelight@0: MK("Nyír") truelight@0: MK("Somogy") truelight@0: MK("Székely") truelight@0: // Town modifiers truelight@0: // 24 - 26 truelight@0: MK("Buda") truelight@0: MK("Győr") truelight@0: MK("Pest") truelight@0: // Color modifiers truelight@0: // 27 truelight@0: MK("Fehér") truelight@0: // General terrain modifiers truelight@0: // 28 - 34 truelight@0: MK("Cserép") truelight@0: MK("Erdő") truelight@0: MK("Hegy") truelight@0: MK("Homok") truelight@0: MK("Mező") truelight@0: MK("Puszta") truelight@0: MK("Sár") truelight@0: // Rank modifiers truelight@0: // 35 - 40 truelight@0: MK("Császár") truelight@0: MK("Herceg") truelight@0: MK("Király") truelight@0: MK("Nemes") truelight@0: MK("Püspök") truelight@0: MK("Szent") truelight@0: // Plant modifiers truelight@0: // 41 - 42 truelight@0: MK("Almás") truelight@0: MK("Szilvás") truelight@0: // Standard stuff truelight@0: // 43 - 54 truelight@0: MK("Agg") truelight@0: MK("Aranyos") truelight@0: MK("Békés") truelight@0: MK("Egyházas") truelight@0: MK("Gagy") truelight@0: MK("Heves") truelight@0: MK("Kapos") truelight@0: MK("Tápió") truelight@0: MK("Torna") truelight@0: MK("Vas") truelight@0: MK("Vámos") truelight@0: MK("Vásáros") truelight@0: ; truelight@0: truelight@0: #define NUM_HUNGARIAN_3 16 truelight@0: static const char hungarian_3[] = truelight@0: MK("apáti") truelight@0: MK("bába") truelight@0: MK("bikk") truelight@0: MK("dob") truelight@0: MK("fa") truelight@0: MK("föld") truelight@0: MK("hegyes") truelight@0: MK("kak") truelight@0: MK("kereszt") truelight@0: MK("kürt") truelight@0: MK("ladány") truelight@0: MK("mérges") truelight@0: MK("szalonta") truelight@0: MK("telek") truelight@0: MK("vas") truelight@0: MK("völgy") truelight@0: ; truelight@0: truelight@0: #define NUM_HUNGARIAN_4 5 truelight@0: static const char hungarian_4[] = truelight@0: MK("alja") truelight@0: MK("egyháza") truelight@0: MK("háza") truelight@0: MK("úr") truelight@0: MK("vár") truelight@0: ; truelight@0: truelight@0: #define NUM_HUNGARIAN_REAL 35 truelight@0: static const char hungarian_real[] = truelight@0: MK("Ajka") truelight@0: MK("Aszód") truelight@0: MK("Badacsony") truelight@0: MK("Baja") truelight@0: MK("Budapest") truelight@0: MK("Debrecen") truelight@0: MK("Eger") truelight@0: MK("Fonyód") truelight@0: MK("Gödöllő") truelight@0: MK("Győr") truelight@0: MK("Gyula") truelight@0: MK("Karcag") truelight@0: MK("Kecskemét") truelight@0: MK("Keszthely") truelight@0: MK("Kisköre") truelight@0: MK("Kocsord") truelight@0: MK("Komárom") truelight@0: MK("Kőszeg") truelight@0: MK("Makó") truelight@0: MK("Mohács") truelight@0: MK("Miskolc") truelight@0: MK("Ózd") truelight@0: MK("Paks") truelight@0: MK("Pápa") truelight@0: MK("Pécs") truelight@0: MK("Polgár") truelight@0: MK("Sarkad") truelight@0: MK("Siófok") truelight@0: MK("Szeged") truelight@0: MK("Szentes") truelight@0: MK("Szolnok") truelight@0: MK("Tihany") truelight@0: MK("Tokaj") truelight@0: MK("Vác") truelight@0: MK("Záhony") truelight@0: MK("Zirc") truelight@0: ; truelight@0: truelight@0: static byte MakeHungarianTownName(byte *buf, uint32 seed) truelight@0: { truelight@0: int i; truelight@0: truelight@0: if (GETNUM(12, 15) < 3) { truelight@0: /* These are real names.. */ truelight@0: AppendPart(&buf, GETNUM(0, NUM_HUNGARIAN_REAL), hungarian_real); truelight@0: } else { truelight@0: /* These are the generated names.. Some of them exist, LOL */ truelight@0: /* Append the prefix if needed */ truelight@0: i = GETNUM(3, NUM_HUNGARIAN_1 * 3); truelight@0: if (i < NUM_HUNGARIAN_1) AppendPart(&buf, i, hungarian_1); truelight@0: truelight@0: AppendPart(&buf, GETNUM(3, NUM_HUNGARIAN_2), hungarian_2); truelight@0: AppendPart(&buf, GETNUM(6, NUM_HUNGARIAN_3), hungarian_3); truelight@0: truelight@0: i = GETNUM(10, NUM_HUNGARIAN_4 * 3); truelight@0: if (i < NUM_HUNGARIAN_4) AppendPart(&buf, i, hungarian_4); truelight@0: } truelight@0: return 0; truelight@0: } truelight@0: truelight@0: TownNameGenerator * const _town_name_generators[] = { truelight@0: MakeEnglishTownName, truelight@0: MakeFrenchTownName, truelight@0: MakeGermanTownName, truelight@0: MakeAmericanTownName, truelight@0: MakeSpanishTownName, truelight@0: MakeSillyTownName, truelight@0: MakeSwedishTownName, truelight@0: MakeDutchTownName, truelight@0: MakeFinnishTownName, truelight@0: MakePolishTownName, truelight@0: MakeSlovakishTownName, truelight@0: MakeHungarianTownName, truelight@0: MakeAustrianTownName truelight@0: }; darkvater@4: darkvater@4: #define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z) darkvater@4: darkvater@4: uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type) darkvater@4: { darkvater@4: uint32 a = 0; darkvater@4: switch (old_town_name_type) { darkvater@4: case 0: case 3: /* English, American */ darkvater@4: /* Already OK */ darkvater@4: return townnameparts; darkvater@4: case 1: /* French */ darkvater@4: /* For some reason 86 needs to be subtracted from townnameparts darkvater@4: * 0000 0000 0000 0000 0000 0000 1111 1111 */ darkvater@4: return FIXNUM(townnameparts - 86, NUM_FRENCH_1, 0); darkvater@4: case 2: /* German */ darkvater@4: #ifdef _DEBUG darkvater@4: printf("German Townnames are buggy... (%d)\n", townnameparts); darkvater@4: #endif darkvater@4: return townnameparts; darkvater@4: case 4: /* Latin-American */ darkvater@4: /* 0000 0000 0000 0000 0000 0000 1111 1111 */ darkvater@4: return FIXNUM(townnameparts, NUM_SPANISH_1, 0); darkvater@4: case 5: /* Silly */ darkvater@4: //AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2); darkvater@4: /* NUM_SILLY_1 - lower 16 bits darkvater@4: * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes) darkvater@4: * 1000 0000 2222 2222 0000 0000 1111 1111 */ darkvater@4: return FIXNUM(townnameparts, NUM_SILLY_1, 0) | FIXNUM(((townnameparts >> 16)&0xFF), NUM_SILLY_2, 16); darkvater@4: } darkvater@4: return 0; darkvater@4: }