diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index ee6c20045c4c94e80a7418dd2de162234f6b12cb..9361bed80b40dd201221eb59a880a31fceff53f6 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -1394,6 +1394,390 @@ globalThis.moreNational = function(nation) { return country; }; +/** + * Translate nationalities into the common name of the nation + * @param {string} nation + * @returns {string} + */ +globalThis.nationOf = function(nation) { + let country; + switch (nation) { + case "Albanian": + case "Algerian": + case "American": // could call this one the United States/the USA instead + case "Andorran": + case "Angolan": + case "Antiguan": + case "Armenian": + case "Aruban": + case "Australian": + case "Austrian": + case "Azerbaijani": + case "Bahraini": + case "Bangladeshi": + case "Bolivian": + case "Bosnian": // could call this one Bosnia and Herzegovina instead + case "Bulgarian": + case "Cambodian": + case "Colombian": + case "Costa Rican": + case "Croatian": + case "Cuban": + case "Eritrean": + case "Estonian": + case "Ethiopian": + case "French Guianan": + case "French Polynesian": + case "Gambian": + case "Georgian": + case "Ghanan": + case "Guatemalan": + case "Guinean": + case "Indian": + case "Indonesian": + case "Iraqi": + case "Israeli": + case "Jamaican": + case "Kenyan": + case "Korean": // I guess the Koreas unified in FC's timeline? + case "Kuwaiti": + case "Latvian": + case "Liberian": + case "Libyan": + case "Lithuanian": + case "Malaysian": + case "Mauritanian": + case "Micronesian": + case "Moldovan": + case "Mongolian": + case "Namibian": + case "New Caledonian": + case "Nicaraguan": + case "Nigerian": + case "Omani": + case "Pakistani": + case "Papua New Guinean": + case "Qatari": + case "Romanian": + case "Russian": + case "Rwandan": + case "Saint Lucian": + case "Samoan": + case "Serbian": + case "South African": + case "Sri Lankan": + case "Syrian": + case "Tanzanian": + case "Tongan": + case "Tunisian": + case "Ugandan": + case "Venezuelan": + case "Yemeni": + case "Zambian": + country = nation.slice(0, nation.length - 1); // remove last letter - e.g. Albanian to Albania + break; + case "Belizean": + case "Bruneian": + case "Burundian": + case "Cape Verdean": // or Cabo Verde? + case "Chilean": + case "Curaçaoan": + case "Djiboutian": + case "Fijian": + case "Greenlandic": + case "Haitian": + case "Icelandic": + case "Malawian": + case "Malian": + case "Nauruan": + case "Niuean": + case "Palauan": + case "Paraguayan": + case "São Toméan": + case "Sierra Leonean": + case "Singaporean": + case "Surinamese": + case "Tibetan": + case "Tuvaluan": + case "Uruguayan": + case "Zimbabwean": + country = nation.slice(0, nation.length - 2); // remove last two letters - e.g. Belizean to Belize + break; + case "Belarusian": + case "Beninese": + case "Bhutanese": + case "Brazilian": + case "Cameroonian": + case "Chadian": + case "Ecuadorian": + case "Egyptian": + case "Gabonese": + case "Iranian": + case "Japanese": + case "Jordanian": + case "Luxembourgian": + case "Nepalese": + case "Nigerien": + case "Senegalese": + case "South Sudanese": + case "Sudanese": + case "Taiwanese": + case "Vietnamese": + country = nation.slice(0, nation.length - 3); // remove last three letters - e.g. Belarusian to Belarus + break; + case "Panamanian": + case "Peruvian": + case "Togolese": + country = nation.slice(0, nation.length - 4); // remove last four letters - e.g. Panamanian to Panama + break; + case "Guamanian": + country = nation.slice(0, nation.length - 5); // remove last five letters - e.g. Guamanian to Guam - which is the only one, apparently + break; + case "Argentinian": + case "Bermudian": + case "Canadian": + case "Grenadian": + case "Chinese": + case "Guyanese": + case "Maltese": + country = nation.slice(0, nation.length - 3) + 'a'; // replace last three letters with 'a' - e.g. Argentinian to Argentina + break; + case "Barbadian": + case "Comorian": + country = nation.slice(0, nation.length - 3) + "os"; // replace last three letters with "os" - e.g. Barbadian to Barbados + break; + case "Hungarian": + case "Italian": + country = nation.slice(0, nation.length - 3) + 'y'; // replace last three letters with 'y' - e.g. Hungarian to Hungary + break; + case "Palestinian": + case "Ukrainian": + country = nation.slice(0, nation.length - 3) + 'e'; // replace last three letters with 'e' - e.g. Palestinian to Palestine + break; + case "Kosovan": + case "Mexican": + case "Montenegrin": + case "Moroccan": + case "Puerto Rican": + country = nation.slice(0, nation.length - 2) + 'o'; // replace last two letters with 'o' - e.g. Kosovan to Kosovo + break; + case "Afghan": + case "Tajik": + case "Turkmen": + case "Uzbek": + country = nation + "istan"; // add "istan" - e.g. Afghan to Afghanistan + break; + case "Kazakh": + case "Kyrgyz": + country = nation + "stan"; // add "stan" - e.g. Kazakh to Kazakhstan + break; + case "Finnish": + case "Polish": + case "Scottish": + country = nation.slice(0, nation.length - 4) + "land"; // replace last four letters with "land" - e.g. Finnish to Finland + break; + case "Bahamian": + country = "the Bahamas"; + break; + case "Belgian": + country = "Belgium"; + break; + case "Bissau-Guinean": + country = "Guinea-Bissau"; + break; + case "British": + country = "Britain"; // the game considers Scots a separate nationality, so we can't use "the UK", but it does still contain Wales, Cornwall, Mann, the Channel islands, etc., so we can't just use "England" either + break; + case "Burkinabé": + country = "Burkina Faso"; + break; + case "Burmese": + country = "Myanmar"; // or Burma? + break; + case "Catalan": + country = "Catalonia"; + break; + case "Central African": + country = "the Central African Republic"; + break; + case "Congolese": + country = jsEither(["the Republic of the Congo", "Congo-Brazzaville"]); + break; + case "a Cook Islander": + country = "the Cook Islands"; + break; + case "Cypriot": + country = "Cyprus"; + break; + case "Czech": + country = jsEither(["Czechia", "the Czech Republic"]); + break; + case "Danish": + country = "Denmark"; + break; + case "Dominican": + country = "The Dominican Republic"; + break; + case "Dominiquais": + country = "Dominica"; + break; + case "Dutch": + country = "the Netherlands"; + break; + case "East Timorese": + country = "Timor-Leste"; + break; + case "Emirati": + country = jsEither(["the UAE", "the United Arab Emirates"]); + break; + case "Equatoguinean": + country = "Equatorial Guinea"; + break; + case "Filipina": + country = "the Philippines"; + break; + case "French": + country = "France"; + break; + case "German": + country = "Germany"; + break; + case "Greek": + country = "Greece"; + break; + case "Honduran": + country = "Honduras"; + break; + case "I-Kiribati": + country = "Kiribati"; + break; + case "Irish": + country = "Ireland"; + break; + case "Ivorian": + country = jsEither(["the Ivory Coast", "Côte d'Ivoire"]); + break; + case "Kittitian": + country = "Saint Kitts and Nevis"; + break; + case "Kurdish": + country = "Kurdistan"; // should we say "the Kurdish people" or something instead? Kurdistan is either a vaguely-defined transnational region, or a very tenuously self-governing part of Iraq + break; + case "Laotian": + country = "Laos"; + break; + case "Lebanese": + country = "Lebanon"; + break; + case "a Liechtensteiner": + country = "Liechtenstein"; + break; + case "Macedonian": + country = "North Macedonia"; // south Macedonians are presumably Greek + break; + case "Malagasy": + country = "Madagascar"; + break; + case "Maldivian": + country = "the Maldives"; + break; + case "Marshallese": + country = "the Marshall Islands"; + break; + case "Mauritian": + country = "Mauritius"; + break; + case "Monégasque": + country = "Monaco"; + break; + case "Mosotho": + country = "Lesotho"; + break; + case "Motswana": + country = "Botswana"; + break; + case "Mozambican": + country = "Mozambique"; + break; + case "a New Zealander": + country = "New Zealand"; + break; + case "Ni-Vanuatu": + country = "Vanuatu"; + break; + case "Norwegian": + country = "Norway"; + break; + case "Portuguese": + country = "Portugal"; + break; + case "Sahrawi": + country = "Western Sahara"; // alternately, the Sahrawi (Arab Democratic) Republic + break; + case "Salvadoran": + country = "El Salvador"; + break; + case "Sammarinese": + country = "San Marino"; + break; + case "Saudi": + country = "Saudi Arabia"; + break; + case "Seychellois": + country = "Seychelles"; + break; + case "Slovak": + country = "Slovakia"; + break; + case "Slovene": + country = "Slovenia"; + break; + case "a Solomon Islander": + country = "the Solomon Islands"; + break; + case "Somali": + country = "Somalia"; + break; + case "Spanish": + country = "Spain"; + break; + case "Swazi": + country = "Eswatini"; + break; + case "Swedish": + country = "Sweden"; + break; + case "Swiss": + country = "Switzerland"; + break; + case "Thai": + country = "Thailand"; + break; + case "Trinidadian": + country = "Trinidad and Tobago"; + break; + case "Turkish": + country = "Turkey"; // or do we want Türkiye? + break; + case "Vatican": + country = "Vatican City"; + break; + case "Vincentian": + country = "Saint Vincent and the Grenadines"; + break; + case "Zairian": + country = jsEither(["the Democratic Republic of the Congo", "Congo-Kinshasa"]); // or Zaire? + break; + case "Stateless": + country = "no country"; // best we can do, shouldn't ever come up + break; + default: + country = "an unknown country"; // if any new nationalities are ever added, catch them so they can be added + break; + } + return country; +}; + /** Deflate a slave (reset inflation to none) * @param {FC.HumanState} slave */