summaryrefslogtreecommitdiff
path: root/namegen.c
diff options
context:
space:
mode:
Diffstat (limited to 'namegen.c')
-rw-r--r--namegen.c2324
1 files changed, 286 insertions, 2038 deletions
diff --git a/namegen.c b/namegen.c
index 6d245f4e6..2b61c77cc 100644
--- a/namegen.c
+++ b/namegen.c
@@ -1,2173 +1,420 @@
#include "stdafx.h"
#include "ttd.h"
+#include "table/namegen.h"
-#define GETNUM(x, y) (((uint16)(seed >> x) * (y))>>16)
+inline static uint32 GetNumberBasedOnSeed(int x, int y, uint32 seed)
+{
+ return (((uint16)(seed >> x) * (y))>>16);
+}
-static void AppendPart(byte **buf, int num, const char *names)
+static void ReplaceWords(byte a, byte b, byte c, byte d, byte e, byte f, byte g, byte h, byte *buf)
{
- byte *s;
+ 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;
+ }
+}
+
+static byte MakeEnglishOriginalTownName(byte *buf, uint32 seed)
+{
+ int i;
+
+ //null terminates the string for strcat
+ strcpy(buf, "");
+
+ // optional first segment
+ if ((i = GetNumberBasedOnSeed(0, lengthof(name_original_english_1) + 50, seed) - 50) >= 0)
+ {
+ strcat(buf,name_original_english_1[i]);
+ }
+
+ //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)]);
- while (--num>=0) {
- do names++; while (names[-1]);
+ //optional last segment
+ if ((i = GetNumberBasedOnSeed(15, lengthof(name_original_english_6) + 60, seed) - 60) >= 0)
+ {
+ strcat(buf, name_original_english_6[i]);
}
- for(s=*buf; (*s++ = *names++) != 0;) {}
- *buf = s - 1;
+ if (buf[0] == 'C' && (buf[1] == 'e' || buf[1] == 'i'))
+ buf[0] = 'K';
+
+ 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 0;
}
-#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 MakeEnglishAdditionalTownName(byte *buf, uint32 seed)
{
int i;
- byte result;
- byte *start;
-
- i = GETNUM(0, 54) - 50;
- if (i >= 0)
- AppendPart(&buf, i, english_1);
- start = buf;
+ //null terminates the string for strcat
+ strcpy(buf, "");
- 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);
+ // optional first segment
+ if ((i = GetNumberBasedOnSeed(0, lengthof(name_additional_english_prefix) + 50, seed) - 50) >= 0)
+ {
+ strcat(buf,name_additional_english_prefix[i]);
+ }
- i = GETNUM(15, NUM_ENGLISH_6 + 60) - 60;
+ 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)]);
+ }
+ }
- result = 0;
+ strcat(buf, name_additional_english_2[GetNumberBasedOnSeed(14, lengthof(name_additional_english_2), seed)]);
- if (i >= 0) {
- if (i <= 1) result = NG_EDGE;
- AppendPart(&buf, i, english_6);
+ //optional last segment
+ if ((i = GetNumberBasedOnSeed(15, lengthof(name_additional_english_3) + 60, seed) - 60) >= 0)
+ {
+ strcat(buf, name_additional_english_3[i]);
}
- if (start[0]=='C' && (start[1] == 'e' || start[1] == 'i'))
- start[0] = 'K';
+ 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);
- /* Replace certain words (routine identical to TTD now) */
+ return 0;
- 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');
- return result;
}
-#define NUM_AUSTRIAN_A1 6
-static const char austrian_a1[] =
- MK("Bad ")
- MK("Deutsch ")
- MK("Gross ")
- MK("Klein ")
- MK("Markt ")
- MK("Maria ")
-;
-
-#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")
-;
-
-#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")
-;
-
-#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")
-;
-
-#define NUM_AUSTRIAN_A5 2
-static const char austrian_a5[] =
- MK("St. ")
- MK("Sankt ")
-;
-
-#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 ")
-;
-
-#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")
-;
-
-#define NUM_AUSTRIAN_B1 1
-static const char austrian_b1[] =
- MK(" am ")
-;
-
-#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 = 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(0, lengthof(name_austrian_a1) + 15,seed) - 15;
+
+ if (i >= 0) strcat(buf, name_austrian_a1[i]);
+
+ 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;
- ext=GETNUM(7, 28); /* Extension - Prefix / Suffix */
+ //null terminates the string for strcat
+ strcpy(buf, "");
- if ((ext==12) || (ext==19)) {
- i=GETNUM(2,NUM_GERMAN_3-2);
- AppendPart(&buf, 2+i, german_3);
+ // optional first segment
+ if ((i = GetNumberBasedOnSeed(0, lengthof(name_german_pre) + 50, seed) - 50) >= 0)
+ {
+ strcat(buf,name_german_pre[i]);
}
-
- i=GETNUM(3,NUM_GERMAN_1);
-
- AppendPart(&buf, i, german_1);
-
- 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 ((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)]);
}
- if (ext==24) {
- i=GETNUM(9,NUM_GERMAN_4);
-
- if (i<=NUM_GERMAN_4_PRECHANGE-1) {
- AppendPart(&buf, 0, german_3);
- AppendPart(&buf, i, german_4);
+ //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 {
- AppendPart(&buf, 1, german_3);
- AppendPart(&buf, i, german_4);
+ 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)]);
}
- }
+
+ }
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);
+ strcpy(buf, "");
+ strcat(buf, name_spanish_1[GetNumberBasedOnSeed(0, lengthof(name_spanish_1), seed)]);
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);
+ strcpy(buf, "");
+ strcat(buf, name_french_1[GetNumberBasedOnSeed(0, lengthof(name_french_1), seed)]);
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);
+ 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;
}
-
-#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);
+ //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]);
+ }
- 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);
+ // 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)]);
}
- AppendPart(&buf, GETNUM(16, NUM_SWEDISH_3), swedish_3);
+ strcat(buf, name_swedish_3[GetNumberBasedOnSeed(16, lengthof(name_swedish_3), seed)]);
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);
+ //null terminates the string for strcat
+ strcpy(buf, "");
- 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);
+ // optional first segment
+ if ((i = GetNumberBasedOnSeed(0, lengthof(name_dutch_1) + 50, seed) - 50) >= 0)
+ {
+ strcat(buf, name_dutch_1[i]);
}
- AppendPart(&buf, GETNUM(15, NUM_DUTCH_5), dutch_5);
+
+ // 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;
}
-#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);
+ //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)]);
}
+
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];
+ int i, j;
- // get a number ranging from 0 to all_towns
- i = GETNUM(0, NUM_POLISH_2);
+ //null terminates the string for strcat
+ strcpy(buf, "");
- // single name
- if(i < NUM_POLISH_2_O) {
- AppendPart(&buf, i, polish_2);
- return 0;
- }
+ // 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);
- // 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;
+ 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)]);
- 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;
+ 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)]);
- // 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]);
+ 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 (j >= 4 && j < 16)
+ strcat(buf, name_polish_3_n[GetNumberBasedOnSeed(10, lengthof(name_polish_3_n), seed)]);
+ }
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);
+ strcpy(buf, "");
+ strcat(buf, name_czech_1[GetNumberBasedOnSeed(0, lengthof(name_czech_1), seed)]);
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;
+ strcpy(buf, "");
+ strcat(buf, name_romanian_1[GetNumberBasedOnSeed(0, lengthof(name_romanian_1), seed)]);
+ 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);
+ strcpy(buf, "");
+ strcat(buf, name_slovakish_1[GetNumberBasedOnSeed(0, lengthof(name_slovakish_1), seed)]);
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);
+ //null terminates the string for strcat
+ strcpy(buf, "");
- AppendPart(&buf, GETNUM(3, NUM_HUNGARIAN_2), hungarian_2);
- AppendPart(&buf, GETNUM(6, NUM_HUNGARIAN_3), hungarian_3);
+ 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)]);
- i = GETNUM(10, NUM_HUNGARIAN_4 * 3);
- if (i < NUM_HUNGARIAN_4) AppendPart(&buf, i, hungarian_4);
+ // 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;
}
TownNameGenerator * const _town_name_generators[] = {
- MakeEnglishTownName,
+ MakeEnglishOriginalTownName,
MakeFrenchTownName,
MakeGermanTownName,
- MakeAmericanTownName,
+ MakeEnglishAdditionalTownName,
MakeSpanishTownName,
MakeSillyTownName,
MakeSwedishTownName,
@@ -2181,6 +428,7 @@ TownNameGenerator * const _town_name_generators[] = {
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 townnameparts, byte old_town_name_type)
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;
}