More random nation names 😄 (#3486)

## Description:

Extend NationCreation for a bit more variety :D

## Please complete the following:

- [X] I have added screenshots for all UI updates
- [X] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [X] I have added relevant tests to the test directory
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

FloPinguin
This commit is contained in:
FloPinguin
2026-03-21 22:36:56 +01:00
committed by GitHub
parent 837458c369
commit 95cdd3b4b9
+302 -33
View File
@@ -199,6 +199,60 @@ const NAME_TEMPLATES: NameTemplate[] = [
["House of", PLURAL_NOUN],
["Certified Organic", NOUN],
["Unregulated", NOUN],
["Slightly Damp", NOUN],
["Suspiciously Quiet", PLURAL_NOUN],
["Weaponized", NOUN],
["Accidentally Evil", NOUN],
["Extremely Loud", PLURAL_NOUN],
["Bootleg", NOUN],
["Questionable", NOUN],
["Off-Brand", NOUN],
["Counterfeit", PLURAL_NOUN],
["Sentient", PLURAL_NOUN],
["Feral", PLURAL_NOUN],
["Aggressively Friendly", PLURAL_NOUN],
["Mildly Threatening", NOUN],
["Dangerously Cute", PLURAL_NOUN],
["Legally Distinct", NOUN],
["Deeply Confused", PLURAL_NOUN],
["Order of the", NOUN],
["Knights of the", NOUN],
["Cult of the", NOUN],
["League of", PLURAL_NOUN],
["Band of", PLURAL_NOUN],
["Council of", PLURAL_NOUN],
["Assembly of", PLURAL_NOUN],
["Haunted", NOUN],
["Cursed", NOUN],
["Blessed", NOUN],
["Radioactive", PLURAL_NOUN],
["Deep Fried", NOUN],
["Gluten Free", PLURAL_NOUN],
["Turbocharged", NOUN],
["Nomadic", PLURAL_NOUN],
["Vengeful", PLURAL_NOUN],
["Legendary", PLURAL_NOUN],
["Outlaw", PLURAL_NOUN],
["AFK", NOUN],
["Noob", NOUN],
["Pro", NOUN],
["Tryhard", PLURAL_NOUN],
["Sweaty", PLURAL_NOUN],
["Griefing", PLURAL_NOUN],
["Speedrunning", PLURAL_NOUN],
["Nerfed", PLURAL_NOUN],
["Buffed", PLURAL_NOUN],
["OP", NOUN],
["Overpowered", NOUN],
["Underpowered", PLURAL_NOUN],
["Modded", PLURAL_NOUN],
["Prestige", NOUN],
["Hardcore", PLURAL_NOUN],
["Clutch", NOUN],
["Cracked", NOUN],
["Unranked", PLURAL_NOUN],
["Max Level", NOUN],
["Ironman", NOUN],
[NOUN, "For Hire"],
[PLURAL_NOUN, "That Bite"],
@@ -224,6 +278,43 @@ const NAME_TEMPLATES: NameTemplate[] = [
[NOUN, "State"],
[NOUN, "Duchy"],
[NOUN, "Ocean"],
[NOUN, "Syndicate"],
[NOUN, "Republic"],
[NOUN, "Province"],
[NOUN, "Dominion"],
[NOUN, "Commune"],
[NOUN, "Federation"],
[NOUN, "Parliament"],
[NOUN, "Tribunal"],
[NOUN, "Armada"],
[NOUN, "Rebellion"],
[NOUN, "Resistance"],
[NOUN, "Expedition"],
[NOUN, "Preservation Society"],
[NOUN, "Defense League"],
[NOUN, "Thunderdome"],
[NOUN, "Uprising"],
[NOUN, "Enthusiasts"],
[NOUN, "Appreciation Society"],
[NOUN, "Fan Club"],
[NOUN, "Simulation"],
[PLURAL_NOUN, "Anonymous"],
[PLURAL_NOUN, "With Attitude"],
[PLURAL_NOUN, "Gone Wrong"],
[PLURAL_NOUN, "on Vacation"],
[PLURAL_NOUN, "in Disguise"],
[PLURAL_NOUN, "With Hats"],
[PLURAL_NOUN, "on Ice"],
[PLURAL_NOUN, "United"],
[PLURAL_NOUN, "Unhinged"],
[PLURAL_NOUN, "Unleashed"],
[PLURAL_NOUN, "Reloaded"],
[PLURAL_NOUN, "After Dark"],
[PLURAL_NOUN, "From Space"],
[PLURAL_NOUN, "of Doom"],
[PLURAL_NOUN, "Without Borders"],
[NOUN, "Meta"],
[PLURAL_NOUN, "OP Please Nerf"],
["Alternate", NOUN, "Universe"],
["Famous", NOUN, "Collection"],
@@ -237,50 +328,39 @@ const NAME_TEMPLATES: NameTemplate[] = [
["Quantum", NOUN, "Computer"],
["Hadron", NOUN, "Collider"],
["Large", NOUN, "Obliterator"],
["Interstellar", NOUN, "Cabal"],
["Interstellar", NOUN, "Army"],
["Interstellar", NOUN, "Pirates"],
["Interstellar", NOUN, "Dynasty"],
["Interstellar", NOUN, "Clan"],
["Galactic", NOUN, "Smugglers"],
["Galactic", NOUN, "Cabal"],
["Galactic", NOUN, "Alliance"],
["Galactic", NOUN, "Empire"],
["Galactic", NOUN, "Army"],
["Galactic", NOUN, "Crown"],
["Galactic", NOUN, "Pirates"],
["Galactic", NOUN, "Dynasty"],
["Galactic", NOUN, "Clan"],
["Alien", NOUN, "Army"],
["Alien", NOUN, "Cabal"],
["Alien", NOUN, "Alliance"],
["Alien", NOUN, "Empire"],
["Alien", NOUN, "Pirates"],
["Alien", NOUN, "Clan"],
["Grand", NOUN, "Empire"],
["Grand", NOUN, "Dynasty"],
["Grand", NOUN, "Army"],
["Grand", NOUN, "Cabal"],
["Grand", NOUN, "Alliance"],
["Royal", NOUN, "Army"],
["Royal", NOUN, "Cabal"],
["Royal", NOUN, "Empire"],
["Royal", NOUN, "Dynasty"],
["Holy", NOUN, "Dynasty"],
["Holy", NOUN, "Empire"],
["Holy", NOUN, "Alliance"],
["Eternal", NOUN, "Empire"],
["Eternal", NOUN, "Cabal"],
["Eternal", NOUN, "Alliance"],
["Eternal", NOUN, "Dynasty"],
["Invading", NOUN, "Cabal"],
["Invading", NOUN, "Empire"],
["Invading", NOUN, "Alliance"],
["Immortal", NOUN, "Pirates"],
["Shadow", NOUN, "Cabal"],
["Secret", NOUN, "Dynasty"],
["The Great", NOUN, "Army"],
["The", NOUN, "Matrix"],
["Tax-Free", NOUN, "Paradise"],
["Self-Proclaimed", NOUN, "Experts"],
["Forbidden", NOUN, "Zone"],
["Reluctant", NOUN, "Monarchy"],
["Chaotic", NOUN, "Collective"],
["Unsanctioned", NOUN, "Olympics"],
["The", NOUN, "Conspiracy"],
["The", NOUN, "Incident"],
["The", NOUN, "Situation"],
["Premium", NOUN, "Subscription"],
["Clearance", NOUN, "Warehouse"],
["Budget", NOUN, "Emporium"],
["Overnight", NOUN, "Delivery"],
["National", NOUN, "Reserve"],
["The", NOUN, "Dimension"],
["The", NOUN, "Prophecy"],
["The", NOUN, "Awakening"],
["The", NOUN, "Inquisition"],
["Legendary", NOUN, "Drop"],
["Elite", NOUN, "Squad"],
["The", NOUN, "Saga"],
];
const NOUNS = [
@@ -350,12 +430,201 @@ const NOUNS = [
"Burger",
"Tomato",
"Penguin",
"Waffle",
"Toaster",
"Hamster",
"Pretzel",
"Walrus",
"Raccoon",
"Llama",
"Noodle",
"Goblin",
"Muffin",
"Coconut",
"Biscuit",
"Cactus",
"Moose",
"Platypus",
"Yeti",
"Sponge",
"Spatula",
"Trampoline",
"Dolphin",
"Taco",
"Chainsaw",
"Spoon",
"Doorknob",
"Bathrobe",
"Lampshade",
"Crowbar",
"Shoelace",
"Wheelbarrow",
"Barnacle",
"Armadillo",
"Cabbage",
"Wig",
"Plunger",
"Kazoo",
"Napkin",
"Pelican",
"Turnip",
"Canoe",
"Igloo",
"Stapler",
"Ferret",
"Anchovy",
"Dumpling",
"Mattress",
"Parsnip",
"Gargoyle",
"Crayon",
"Corgi",
"Macaroni",
"Blender",
"Ukulele",
"Flamingo",
"Nugget",
"Porcupine",
"Tadpole",
"Papaya",
"Chinchilla",
"Teapot",
"Baguette",
"Squid",
"Otter",
"Badger",
"Hedgehog",
"Mantis",
"Scorpion",
"Vulture",
"Falcon",
"Jackal",
"Hyena",
"Panther",
"Stingray",
"Octopus",
"Basilisk",
"Dragon",
"Sphinx",
"Phoenix",
"Kraken",
"Leviathan",
"Mammoth",
"Chimera",
"Griffin",
"Minotaur",
"Cyclops",
"Brick",
"Anvil",
"Torpedo",
"Lantern",
"Compass",
"Telescope",
"Pendulum",
"Furnace",
"Cauldron",
"Beacon",
"Anchor",
"Dagger",
"Gauntlet",
"Helmet",
"Shield",
"Banner",
"Trumpet",
"Bagpipe",
"Tambourine",
"Accordion",
"Xylophone",
"Avocado",
"Broccoli",
"Radish",
"Artichoke",
"Kumquat",
"Pomegranate",
"Mango",
"Truffle",
"Croissant",
"Lasagna",
"Soufflé",
"Spaghetti",
"Tsunami",
"Tornado",
"Avalanche",
"Volcano",
"Glacier",
"Comet",
"Meteor",
"Nebula",
"Supernova",
"Quasar",
"Abyss",
"Labyrinth",
"Caterpillar",
"Chameleon",
"Narwhal",
"Capybara",
"Pangolin",
"Axolotl",
"Sloth",
"Lemur",
"Alpaca",
"Tapir",
"Wombat",
"Ocelot",
"Manatee",
"Ibis",
"Kiwi",
"Creeper",
"Enderman",
"Skeleton",
"Necromancer",
"Paladin",
"Warlock",
"Ranger",
"Boss",
"NPC",
"Assassin",
"Viking",
"Samurai",
"Pirate",
"Champion",
"Gladiator",
"Demon",
"Angel",
"Fullsender",
"Fullsender",
"Fullsender",
"Mito",
"Mito",
"Mito",
"Mitochondria",
"Mitochondria",
"Mitochondria",
];
// Words from NOUNS that need irregular "-oes" plural
const O_TO_OES = new Set(["Potato", "Tomato"]);
const O_TO_OES = new Set(["Potato", "Tomato", "Volcano", "Torpedo"]);
// Words from NOUNS that need special plural forms
const SPECIAL_PLURALS = new Map([
["Cactus", "Cacti"],
["Platypus", "Platypuses"],
["Moose", "Moose"],
["Octopus", "Octopi"],
["Cyclops", "Cyclopes"],
["Samurai", "Samurai"],
["Fish", "Fish"],
["Salmon", "Salmon"],
["Cod", "Cod"],
["Enderman", "Endermen"],
["Mitochondria", "Mitochondria"],
]);
function pluralize(noun: string): string {
if (SPECIAL_PLURALS.has(noun)) {
return SPECIAL_PLURALS.get(noun)!;
}
if (
noun.endsWith("s") ||
noun.endsWith("ch") ||