diff options
-rw-r--r-- | namegen.c | 33 | ||||
-rw-r--r-- | table/namegen.h | 50 |
2 files changed, 66 insertions, 17 deletions
@@ -279,9 +279,36 @@ static byte MakeFinnishTownName(char *buf, uint32 seed) // Select randomly if town name should consists of one or two parts. if (SeedChance(0, 15, seed) >= 10) { strcat(buf, name_finnish_real[SeedChance( 2, lengthof(name_finnish_real), seed)]); - } else { - strcat(buf, name_finnish_1[SeedChance( 2, lengthof(name_finnish_1), seed)]); - strcat(buf, name_finnish_2[SeedChance(10, lengthof(name_finnish_2), seed)]); + } + // A two-part name by combining one of name_finnish_1 + "la"/"lä" + // The reason for not having the contents of name_finnish_{1,2} in the same table is + // that the ones in name_finnish_2 are not good for this purpose. + else if (SeedChance(0, 15, seed) >= 5) { + uint sel = SeedChance( 0, lengthof(name_finnish_1), seed); + char *last; + strcat(buf, name_finnish_1[sel]); + last = &buf[strlen(buf)-1]; + if (*last == 'i') + *last = 'e'; + if (strstr(buf, "a") || strstr(buf, "o") || strstr(buf, "u") || + strstr(buf, "A") || strstr(buf, "O") || strstr(buf, "U")) + { + strcat(buf, "la"); + } else { + strcat(buf, "lä"); + } + } + // A two-part name by combining one of name_finnish_{1,2} + name_finnish_3. + // Why aren't name_finnish_{1,2} just one table? See above. + else { + uint sel = SeedChance(2, + lengthof(name_finnish_1) + lengthof(name_finnish_2), seed); + if (sel >= lengthof(name_finnish_1)) { + strcat(buf, name_finnish_2[sel-lengthof(name_finnish_1)]); + } else { + strcat(buf, name_finnish_1[sel]); + } + strcat(buf, name_finnish_3[SeedChance(10, lengthof(name_finnish_3), seed)]); } return 0; diff --git a/table/namegen.h b/table/namegen.h index ff1aa9c2b..8e0cd8533 100644 --- a/table/namegen.h +++ b/table/namegen.h @@ -1221,7 +1221,6 @@ static const char *name_finnish_real[] = { "Loviisa", "Kouvola", "Tampere", - "Kokkola", "Oulu", "Salo", "Malmi", @@ -1233,39 +1232,61 @@ static const char *name_finnish_real[] = { "Joensuu", "Imatra", "Tapanila", - "Pasila" + "Pasila", + "Turku", + "Kupittaa", + "Vaasa", + "Pori", + "Rauma", + "Kolari", + "Lieksa" }; static const char *name_finnish_1[] = { "Hiekka", "Haapa", "Mylly", - "Kivi", - "Lappeen", - "Lohjan", - "Savon", "Sauna", - "Keri", "Uusi", "Vanha", - "Lapin", "Kesä", "Kuusi", "Pelto", "Tuomi", - "Pitäjän", "Terva", "Olki", "Heinä", - "Kuusan", "Seinä", - "Kemi", "Rova", - "Martin", - "Koivu" + "Koivu", + "Kokko", + "Mänty", + "Pihlaja", + "Petäjä", + "Kielo", + "Kauha", + "Viita", + "Kivi", + "Riihi", + "Ääne", + "Niini" }; static const char *name_finnish_2[] = { + "Lappeen", + "Lohjan", + "Savon", + "Lapin", + "Pitäjän", + "Martin", + "Kuusan", + "Kemi", + "Keri", + "Hämeen", + "Kangas" +}; + +static const char *name_finnish_3[] = { "harju", "linna", "järvi", @@ -1283,7 +1304,8 @@ static const char *name_finnish_2[] = { "luoto", "hovi", "ranta", - "koski" + "koski", + "salo" }; static const char *name_polish_1_m[] = { |