diff --git a/lang/american.txt b/lang/american.txt index 232dbe6484..1ffa25862f 100644 --- a/lang/american.txt +++ b/lang/american.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Czech STR_TOWNNAME_SWISS :Swiss STR_TOWNNAME_DANISH :Danish STR_TOWNNAME_TURKISH :Turkish +STR_TOWNNAME_ITALIAN :Italian ############ end of townname region STR_CURR_GBP :Pounds (£) diff --git a/lang/czech.txt b/lang/czech.txt index 13b155d2e6..f07b0ea263 100644 --- a/lang/czech.txt +++ b/lang/czech.txt @@ -896,6 +896,7 @@ STR_TOWNNAME_CZECH :Ceska STR_TOWNNAME_SWISS :¦vıcarská STR_TOWNNAME_DANISH :Dánská STR_TOWNNAME_TURKISH :Turecká +STR_TOWNNAME_ITALIAN :Italská ############ end of townname region STR_CURR_GBP :Libry (£) diff --git a/lang/dutch.txt b/lang/dutch.txt index 0b966a75f8..75451a0ff2 100644 --- a/lang/dutch.txt +++ b/lang/dutch.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Tsjechisch STR_TOWNNAME_SWISS :Zwitsers STR_TOWNNAME_DANISH :Deens STR_TOWNNAME_TURKISH :Turks +STR_TOWNNAME_ITALIAN :Italiaans ############ end of townname region STR_CURR_GBP :Pond (£) diff --git a/lang/english.txt b/lang/english.txt index 73255a9885..0ab2b5df5a 100644 --- a/lang/english.txt +++ b/lang/english.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Czech STR_TOWNNAME_SWISS :Swiss STR_TOWNNAME_DANISH :Danish STR_TOWNNAME_TURKISH :Turkish +STR_TOWNNAME_ITALIAN :Italian ############ end of townname region STR_CURR_GBP :Pounds (£) diff --git a/lang/estonian.txt b/lang/estonian.txt index 65da3f5eb1..6a714d5d02 100644 --- a/lang/estonian.txt +++ b/lang/estonian.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :T STR_TOWNNAME_SWISS :¦veitsi STR_TOWNNAME_DANISH :Taani STR_TOWNNAME_TURKISH :Türgi +STR_TOWNNAME_ITALIAN :Itaalia ############ end of townname region STR_CURR_GBP :Naelad (£) diff --git a/lang/french.txt b/lang/french.txt index d682676395..7ade9e83d7 100644 --- a/lang/french.txt +++ b/lang/french.txt @@ -840,6 +840,7 @@ STR_TOWNNAME_CZECH :Tch STR_TOWNNAME_SWISS :Suisse STR_TOWNNAME_DANISH :Danois STR_TOWNNAME_TURKISH :Turques +STR_TOWNNAME_ITALIAN :Italien ############ end of townname region STR_CURR_GBP :Livre (£) diff --git a/lang/german.txt b/lang/german.txt index d44dc6cde4..69101be5e7 100644 --- a/lang/german.txt +++ b/lang/german.txt @@ -840,6 +840,7 @@ STR_TOWNNAME_CZECH :Tschechisch STR_TOWNNAME_SWISS :Schweizerisch STR_TOWNNAME_DANISH :Dänisch STR_TOWNNAME_TURKISH :Türkisch +STR_TOWNNAME_ITALIAN :Italienisch ############ end of townname region STR_CURR_GBP :Pfund (£) diff --git a/lang/hungarian.txt b/lang/hungarian.txt index e055657304..6e7963fbaf 100644 --- a/lang/hungarian.txt +++ b/lang/hungarian.txt @@ -904,6 +904,7 @@ STR_TOWNNAME_CZECH :Cseh STR_TOWNNAME_SWISS :Svájci STR_TOWNNAME_DANISH :Dán STR_TOWNNAME_TURKISH :Török +STR_TOWNNAME_ITALIAN :Olasz ############ end of townname region STR_CURR_GBP :Font (£) diff --git a/lang/icelandic.txt b/lang/icelandic.txt index aaaeb9916a..3dedfb16e8 100644 --- a/lang/icelandic.txt +++ b/lang/icelandic.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :T STR_TOWNNAME_SWISS :Svissnesk STR_TOWNNAME_DANISH :Dönsk STR_TOWNNAME_TURKISH :Tyrknesk +STR_TOWNNAME_ITALIAN :Ítölsk ############ end of townname region STR_CURR_GBP :Pund (£) diff --git a/lang/italian.txt b/lang/italian.txt index b2a116ae09..b1b8130dfe 100644 --- a/lang/italian.txt +++ b/lang/italian.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Cechi STR_TOWNNAME_SWISS :Svizzero STR_TOWNNAME_DANISH :Danese STR_TOWNNAME_TURKISH :Turco +STR_TOWNNAME_ITALIAN :Italiano ############ end of townname region STR_CURR_GBP :Sterlina (£) diff --git a/lang/norwegian.txt b/lang/norwegian.txt index bbe642dca0..3a733c103c 100644 --- a/lang/norwegian.txt +++ b/lang/norwegian.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Tsjekkisk STR_TOWNNAME_SWISS :Sveitsisk STR_TOWNNAME_DANISH :Dansk STR_TOWNNAME_TURKISH :Tyrkisk +STR_TOWNNAME_ITALIAN :Italiensk ############ end of townname region STR_CURR_GBP :Pund (£) diff --git a/lang/polish.txt b/lang/polish.txt index ec20e9b1a4..2956a7a653 100644 --- a/lang/polish.txt +++ b/lang/polish.txt @@ -926,6 +926,7 @@ STR_TOWNNAME_CZECH :Czeskie STR_TOWNNAME_SWISS :Szwajcarskie STR_TOWNNAME_DANISH :Dunskie STR_TOWNNAME_TURKISH :Tureckie +STR_TOWNNAME_ITALIAN :Wloskie ############ end of townname region STR_CURR_GBP :Funty (£) diff --git a/lang/portuguese.txt b/lang/portuguese.txt index 4f5a198ec3..be9854bdcf 100644 --- a/lang/portuguese.txt +++ b/lang/portuguese.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Checo STR_TOWNNAME_SWISS :Suiça STR_TOWNNAME_DANISH :Dinamarquês STR_TOWNNAME_TURKISH :Turco +STR_TOWNNAME_ITALIAN :Italiano ############ end of townname region STR_CURR_GBP :Libras (£) diff --git a/lang/slovak.txt b/lang/slovak.txt index 97b3e0b2f2..98bb3a1ac3 100644 --- a/lang/slovak.txt +++ b/lang/slovak.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Ceske STR_TOWNNAME_SWISS :Svajciarske STR_TOWNNAME_DANISH :Danske STR_TOWNNAME_TURKISH :Turecké +STR_TOWNNAME_ITALIAN :Talianske ############ end of townname region STR_CURR_GBP :Libry (£) diff --git a/lang/spanish.txt b/lang/spanish.txt index d90a1c51f9..858dc3c75a 100644 --- a/lang/spanish.txt +++ b/lang/spanish.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Checo STR_TOWNNAME_SWISS :Suizo STR_TOWNNAME_DANISH :Danes STR_TOWNNAME_TURKISH :Turco +STR_TOWNNAME_ITALIAN :Italiano ############ end of townname region STR_CURR_GBP :Libras (£) diff --git a/lang/swedish.txt b/lang/swedish.txt index 0dd6a431d8..7211f7ad34 100644 --- a/lang/swedish.txt +++ b/lang/swedish.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH :Tjeckiska STR_TOWNNAME_SWISS :Schweiziska STR_TOWNNAME_DANISH :Danska STR_TOWNNAME_TURKISH :Turkiska +STR_TOWNNAME_ITALIAN :Italienska ############ end of townname region STR_CURR_GBP :Pund (£) diff --git a/lang/turkish.txt b/lang/turkish.txt index e076c3133b..011a96f9ed 100644 --- a/lang/turkish.txt +++ b/lang/turkish.txt @@ -839,6 +839,7 @@ STR_TOWNNAME_CZECH : STR_TOWNNAME_SWISS :isviçrece STR_TOWNNAME_DANISH :Danimarkaca STR_TOWNNAME_TURKISH :Türkçe +STR_TOWNNAME_ITALIAN :Italyanca ############ end of townname region STR_CURR_GBP :Sterlin (£) diff --git a/namegen.c b/namegen.c index 04bf022ebc..178ffc8134 100644 --- a/namegen.c +++ b/namegen.c @@ -621,6 +621,51 @@ static byte MakeTurkishTownName(char *buf, uint32 seed) return 0; } +static const char *mascul_femin_italian[] = { + "o", + "a", +}; + +static byte MakeItalianTownName(char *buf, uint32 seed) { + + strcpy(buf, ""); + + if (SeedModChance(0, 6, seed) == 0) { // real city names + strcat(buf, name_italian_real[SeedModChance(4, lengthof(name_italian_real), seed)]); + } else { + uint i; + + if (SeedModChance(0, 8, seed) == 0) { // prefix + strcat(buf, name_italian_pref[SeedModChance(11, lengthof(name_italian_pref), seed)]); + } + + i = SeedChance(0, 2, seed); + if (i == 0) { // masculine form + strcat(buf, name_italian_1m[SeedModChance(4, lengthof(name_italian_1m), seed)]); + } else { // feminine form + strcat(buf, name_italian_1f[SeedModChance(4, lengthof(name_italian_1f), seed)]); + } + + if (SeedModChance(3, 3, seed) == 0) { + strcat(buf, name_italian_2[SeedModChance(11, lengthof(name_italian_2), seed)]); + strcat(buf,mascul_femin_italian[i]); + } else { + strcat(buf, name_italian_2i[SeedModChance(16, lengthof(name_italian_2i), seed)]); + } + + if (SeedModChance(15, 4, seed) == 0) { + if (SeedModChance(5, 2, seed) == 0) { // generic suffix + strcat(buf, name_italian_3[SeedModChance(4, lengthof(name_italian_3), seed)]); + } else { // river name suffix + strcat(buf, name_italian_river1[SeedModChance(4, lengthof(name_italian_river1), seed)]); + strcat(buf, name_italian_river2[SeedModChance(16, lengthof(name_italian_river2), seed)]); + } + } + } + + return 0; +} + TownNameGenerator * const _town_name_generators[] = { MakeEnglishOriginalTownName, @@ -642,6 +687,7 @@ TownNameGenerator * const _town_name_generators[] = MakeSwissTownName, MakeDanishTownName, MakeTurkishTownName, + MakeItalianTownName, }; // DO WE NEED THIS ANY MORE? diff --git a/openttd.h b/openttd.h index 1224494d4b..af60479d20 100644 --- a/openttd.h +++ b/openttd.h @@ -493,7 +493,8 @@ enum SpecialStrings { SPECSTR_TOWNNAME_SWISS, SPECSTR_TOWNNAME_DANISH, SPECSTR_TOWNNAME_TURKISH, - SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_TURKISH, + SPECSTR_TOWNNAME_ITALIAN, + SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_ITALIAN, // special strings for player names on the form "TownName transport". SPECSTR_PLAYERNAME_START = 0x70EA, diff --git a/settings.c b/settings.c index e0aeae551f..79a685982f 100644 --- a/settings.c +++ b/settings.c @@ -811,7 +811,7 @@ static const SettingDesc gameopt_settings[] = { {"diff_custom", SDT_INTLIST | SDT_UINT32 | (sizeof(GameDifficulty)/4) << 16, NULL, &_opt_newgame.diff, NULL}, {"currency", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.currency, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SEK|custom" }, {"distances", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.kilometers, "imperial|metric" }, - {"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish" }, + {"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian" }, {"landscape", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.landscape, "normal|hilly|desert|candy" }, {"autosave", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.autosave, "off|monthly|quarterly|half year|yearly" }, {"road_side", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.road_side, "left|right" }, diff --git a/table/namegen.h b/table/namegen.h index fb57546bcc..a741b4c169 100644 --- a/table/namegen.h +++ b/table/namegen.h @@ -2843,3 +2843,269 @@ static const char *name_turkish_real[] = { "Osmaniye", "Düzce" }; + +static const char *name_italian_real[] = { + "Roma", + "Milano", + "Napoli", + "Torino", + "Venezia", + "Firenze", + "Palermo", + "Genova", + "Parma", + "Bologna", + "Bari", + "Cagliari", + "Sassari", + "Pisa", + "Aosta", + "Brescia", + "Verona", + "Bolzano", + "Padova", + "Udine", + "Trieste", + "Livorno", + "Ancona", + "Perugia", + "Pescara", + "L'Aquila", + "Campobasso", + "Potenza", + "Cosenza", + "Reggio Calabria", + "Catania", + "Caltanisetta", + "Agrigento", + "La Spezia", + "Modena", + "Vicenza", + "Mantova", + "Cremona", + "Piacenza", + "Reggio Emilia", + "Foggia", + "Benevento", + "Salerno", + "Catanzaro", + "Lecce", + "Como", + "Lecco", + "Sondrio", + "Trento", + "Desenzano", + "Cuneo", + "Asti", + "Lodi", + "Novara", + "Biella", + "Vercelli", + "Rieti", + "Nuoro", + "Oristano", + "Matera", + "Taranto", + "Varese", + "Bergamo", + "Pavia", + "Caserta", + "Frosinone", + "Latina", + "Enna", + "Ragusa", + "Siracusa", + "Pordenone", + "Imperia", + "Verbania", + "Alessandria", + "Messina", + "Siena", + "Arezzo", + "Grosseto", +}; + +static const char *name_italian_pref[] = { + "Alpe ", + "Borgo ", + "Cascina ", + "Castel ", + "Fonte ", + "Forte ", + "Malga ", + "Pieve ", + "Poggio ", + "Rocca ", + "Villa ", + "Villar ", +}; + +static const char *name_italian_1m[] = { + "Bel", + "Borgo", + "Bosco", + "Campo", + "Capo", + "Casal", + "Castel", + "Colle", + "Fiume", + "Fonte", + "Lago", + "Mezzo", + "Monte", + "Mon", + "Orto", + "Passo", + "Prato", + "Poggio", + "Ponte", + "Pozzo", + "Sasso", + "Tra", + "Tre", + "Ver", + "Vico", +}; + +static const char *name_italian_1f[] = { + "Acqua", + "Bra", + "Cala", + "Casa", + "Chiesa", + "Citta", + "Civita", + "Corte", + "Costa", + "Croce", + "Fontana", + "Grotta", + "Guardia", + "Mezza", + "Palma", + "Pietra", + "Ripa", + "Rocca", + "Serra", + "Torre", + "Val", + "Valle", + "Villa", +}; + +static const char *name_italian_2[] = { + "bell", + "bianc", + "cald", + "chiar", + "cort", + "ferrat", + "fier", + "fredd", + "gioios", + "grec", + "guzz", + "lung", + "long", + "migli", + "negr", + "ner", + "nov", + "nuov", + "ross", + "rotond", + "scur", + "secc", + "sett", + "vecchi", + "ventos", + "vers", + "viv", +}; + +static const char *name_italian_2i[] = { + "", + "breve", + "brevi", + "chiari", + "ferro", + "fieschi", + "fiore", + "fonte", + "forte", + "gate", + "leone", + "maggiore", + "minore", + "mole", + "monte", + "poli", + "scuri", + "terra", + "te", + "torrione", + "vento", + "verde", + "versiere", +}; + + +static const char *name_italian_3[] = { + " Marittimo", + " Marittima", + " del Capo", + " del Monte", + " di Sopra", + " di Sotto", + " sui Monti", + " dei Marmi", + " dei Sassi", + " delle Fonti", + " sui Prati", + " a Mare", + " Superiore", + " Inferiore", + " Terme", + " Alta", + " Bassa", + " Brianza", + " Vesuviano", + " Scrivia", + " Ticino", +}; + +static const char *name_italian_river1[] = { + " del", + " sul", + " al", + " nel", +}; + +static const char *name_italian_river2[] = { + "l'Adda", + "l'Adige", + "le Alpi", + "l'Arno", + " Bormida", + " Brenta", + "la Dora Baltea", + " Lambro", + " Mincio", + " Naviglio", + "l'Oglio", + "l'Olona", + "l'Ombrone", + " Panaro", + " Piave", + " Po", + " Reno", + " Scrivia", + " Secchia", + " Serio", + " Tagliamento", + " Tanaro", + " Taro", + " Ticino", + " Tevere", +};