Merge branch 'main' into player-text-opacity
|
After Width: | Height: | Size: 116 KiB |
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "Tourney1",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [177, 510],
|
||||||
|
"name": "Left"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [847, 511],
|
||||||
|
"name": "Right"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 147 KiB |
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "Tourney2",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [339, 987],
|
||||||
|
"name": "South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1162, 990],
|
||||||
|
"name": "South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [750, 278],
|
||||||
|
"name": "North"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 129 KiB |
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "Tourney3",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [437, 410],
|
||||||
|
"name": "North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1066, 408],
|
||||||
|
"name": "North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [433, 1088],
|
||||||
|
"name": "South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1068, 1075],
|
||||||
|
"name": "South East"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 148 KiB |
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"name": "Tourney4",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [568, 309],
|
||||||
|
"name": "North North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [308, 562],
|
||||||
|
"name": "West North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [945, 303],
|
||||||
|
"name": "North North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1188, 556],
|
||||||
|
"name": "East North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1196, 931],
|
||||||
|
"name": "East South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [941, 1178],
|
||||||
|
"name": "South South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [564, 1185],
|
||||||
|
"name": "South South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [315, 927],
|
||||||
|
"name": "West South West"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -68,6 +68,10 @@ var maps = []struct {
|
|||||||
{Name: "world"},
|
{Name: "world"},
|
||||||
{Name: "lemnos"},
|
{Name: "lemnos"},
|
||||||
{Name: "twolakes"},
|
{Name: "twolakes"},
|
||||||
|
{Name: "tourney1"},
|
||||||
|
{Name: "tourney2"},
|
||||||
|
{Name: "tourney3"},
|
||||||
|
{Name: "tourney4"},
|
||||||
{Name: "thebox"},
|
{Name: "thebox"},
|
||||||
{Name: "didier"},
|
{Name: "didier"},
|
||||||
{Name: "didierfrance"},
|
{Name: "didierfrance"},
|
||||||
|
|||||||
@@ -329,6 +329,10 @@
|
|||||||
"svalmel": "Svalmel",
|
"svalmel": "Svalmel",
|
||||||
"manicouagan": "Manicouagan",
|
"manicouagan": "Manicouagan",
|
||||||
"lemnos": "Lemnos",
|
"lemnos": "Lemnos",
|
||||||
|
"tourney1": "Tourney 2 Teams",
|
||||||
|
"tourney2": "Tourney 3 Teams",
|
||||||
|
"tourney3": "Tourney 4 Teams",
|
||||||
|
"tourney4": "Tourney 8 Teams",
|
||||||
"passage": "Passage",
|
"passage": "Passage",
|
||||||
"sierpinski": "Sierpinski",
|
"sierpinski": "Sierpinski",
|
||||||
"thebox": "The Box",
|
"thebox": "The Box",
|
||||||
@@ -352,6 +356,7 @@
|
|||||||
"featured": "Featured",
|
"featured": "Featured",
|
||||||
"continental": "Continental",
|
"continental": "Continental",
|
||||||
"regional": "Regional",
|
"regional": "Regional",
|
||||||
|
"tournament": "Tournament",
|
||||||
"fantasy": "Other",
|
"fantasy": "Other",
|
||||||
"special": "Special",
|
"special": "Special",
|
||||||
"arcade": "Arcade"
|
"arcade": "Arcade"
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"map": {
|
||||||
|
"height": 1500,
|
||||||
|
"num_land_tiles": 984577,
|
||||||
|
"width": 1500
|
||||||
|
},
|
||||||
|
"map16x": {
|
||||||
|
"height": 375,
|
||||||
|
"num_land_tiles": 60237,
|
||||||
|
"width": 375
|
||||||
|
},
|
||||||
|
"map4x": {
|
||||||
|
"height": 750,
|
||||||
|
"num_land_tiles": 244567,
|
||||||
|
"width": 750
|
||||||
|
},
|
||||||
|
"name": "Tourney1",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [177, 510],
|
||||||
|
"name": "Left"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [847, 511],
|
||||||
|
"name": "Right"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"map": {
|
||||||
|
"height": 1500,
|
||||||
|
"num_land_tiles": 1024327,
|
||||||
|
"width": 1500
|
||||||
|
},
|
||||||
|
"map16x": {
|
||||||
|
"height": 375,
|
||||||
|
"num_land_tiles": 62691,
|
||||||
|
"width": 375
|
||||||
|
},
|
||||||
|
"map4x": {
|
||||||
|
"height": 750,
|
||||||
|
"num_land_tiles": 254300,
|
||||||
|
"width": 750
|
||||||
|
},
|
||||||
|
"name": "Tourney2",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [339, 987],
|
||||||
|
"name": "South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1162, 990],
|
||||||
|
"name": "South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [750, 278],
|
||||||
|
"name": "North"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 6.9 KiB |
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"map": {
|
||||||
|
"height": 1500,
|
||||||
|
"num_land_tiles": 1008007,
|
||||||
|
"width": 1500
|
||||||
|
},
|
||||||
|
"map16x": {
|
||||||
|
"height": 375,
|
||||||
|
"num_land_tiles": 61644,
|
||||||
|
"width": 375
|
||||||
|
},
|
||||||
|
"map4x": {
|
||||||
|
"height": 750,
|
||||||
|
"num_land_tiles": 250191,
|
||||||
|
"width": 750
|
||||||
|
},
|
||||||
|
"name": "Tourney3",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [437, 410],
|
||||||
|
"name": "North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1066, 408],
|
||||||
|
"name": "North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [433, 1088],
|
||||||
|
"name": "South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1068, 1075],
|
||||||
|
"name": "South East"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"map": {
|
||||||
|
"height": 1500,
|
||||||
|
"num_land_tiles": 905705,
|
||||||
|
"width": 1500
|
||||||
|
},
|
||||||
|
"map16x": {
|
||||||
|
"height": 375,
|
||||||
|
"num_land_tiles": 54860,
|
||||||
|
"width": 375
|
||||||
|
},
|
||||||
|
"map4x": {
|
||||||
|
"height": 750,
|
||||||
|
"num_land_tiles": 224342,
|
||||||
|
"width": 750
|
||||||
|
},
|
||||||
|
"name": "Tourney4",
|
||||||
|
"nations": [
|
||||||
|
{
|
||||||
|
"coordinates": [568, 309],
|
||||||
|
"name": "North North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [308, 562],
|
||||||
|
"name": "West North West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [945, 303],
|
||||||
|
"name": "North North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1188, 556],
|
||||||
|
"name": "East North East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [1196, 931],
|
||||||
|
"name": "East South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [941, 1178],
|
||||||
|
"name": "South South East"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [564, 1185],
|
||||||
|
"name": "South South West"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coordinates": [315, 927],
|
||||||
|
"name": "West South West"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 8.9 KiB |
@@ -120,6 +120,10 @@ export enum GameMapType {
|
|||||||
Lisbon = "Lisbon",
|
Lisbon = "Lisbon",
|
||||||
Manicouagan = "Manicouagan",
|
Manicouagan = "Manicouagan",
|
||||||
Lemnos = "Lemnos",
|
Lemnos = "Lemnos",
|
||||||
|
Tourney1 = "Tourney 2 Teams",
|
||||||
|
Tourney2 = "Tourney 3 Teams",
|
||||||
|
Tourney3 = "Tourney 4 Teams",
|
||||||
|
Tourney4 = "Tourney 8 Teams",
|
||||||
Passage = "Passage",
|
Passage = "Passage",
|
||||||
Sierpinski = "Sierpinski",
|
Sierpinski = "Sierpinski",
|
||||||
TheBox = "The Box",
|
TheBox = "The Box",
|
||||||
@@ -210,6 +214,12 @@ export const mapCategories: Record<string, GameMapType[]> = {
|
|||||||
GameMapType.DidierFrance,
|
GameMapType.DidierFrance,
|
||||||
GameMapType.Sierpinski,
|
GameMapType.Sierpinski,
|
||||||
],
|
],
|
||||||
|
tournament: [
|
||||||
|
GameMapType.Tourney1,
|
||||||
|
GameMapType.Tourney2,
|
||||||
|
GameMapType.Tourney3,
|
||||||
|
GameMapType.Tourney4,
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export enum GameType {
|
export enum GameType {
|
||||||
|
|||||||
@@ -199,6 +199,60 @@ const NAME_TEMPLATES: NameTemplate[] = [
|
|||||||
["House of", PLURAL_NOUN],
|
["House of", PLURAL_NOUN],
|
||||||
["Certified Organic", NOUN],
|
["Certified Organic", NOUN],
|
||||||
["Unregulated", 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"],
|
[NOUN, "For Hire"],
|
||||||
[PLURAL_NOUN, "That Bite"],
|
[PLURAL_NOUN, "That Bite"],
|
||||||
@@ -224,6 +278,43 @@ const NAME_TEMPLATES: NameTemplate[] = [
|
|||||||
[NOUN, "State"],
|
[NOUN, "State"],
|
||||||
[NOUN, "Duchy"],
|
[NOUN, "Duchy"],
|
||||||
[NOUN, "Ocean"],
|
[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"],
|
["Alternate", NOUN, "Universe"],
|
||||||
["Famous", NOUN, "Collection"],
|
["Famous", NOUN, "Collection"],
|
||||||
@@ -237,50 +328,39 @@ const NAME_TEMPLATES: NameTemplate[] = [
|
|||||||
["Quantum", NOUN, "Computer"],
|
["Quantum", NOUN, "Computer"],
|
||||||
["Hadron", NOUN, "Collider"],
|
["Hadron", NOUN, "Collider"],
|
||||||
["Large", NOUN, "Obliterator"],
|
["Large", NOUN, "Obliterator"],
|
||||||
["Interstellar", NOUN, "Cabal"],
|
|
||||||
["Interstellar", NOUN, "Army"],
|
|
||||||
["Interstellar", NOUN, "Pirates"],
|
["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"],
|
["Alien", NOUN, "Clan"],
|
||||||
["Grand", NOUN, "Empire"],
|
|
||||||
["Grand", NOUN, "Dynasty"],
|
|
||||||
["Grand", NOUN, "Army"],
|
|
||||||
["Grand", NOUN, "Cabal"],
|
|
||||||
["Grand", NOUN, "Alliance"],
|
["Grand", NOUN, "Alliance"],
|
||||||
["Royal", NOUN, "Army"],
|
["Royal", NOUN, "Army"],
|
||||||
["Royal", NOUN, "Cabal"],
|
|
||||||
["Royal", NOUN, "Empire"],
|
|
||||||
["Royal", NOUN, "Dynasty"],
|
|
||||||
["Holy", NOUN, "Dynasty"],
|
|
||||||
["Holy", NOUN, "Empire"],
|
["Holy", NOUN, "Empire"],
|
||||||
["Holy", NOUN, "Alliance"],
|
|
||||||
["Eternal", NOUN, "Empire"],
|
|
||||||
["Eternal", NOUN, "Cabal"],
|
["Eternal", NOUN, "Cabal"],
|
||||||
["Eternal", NOUN, "Alliance"],
|
|
||||||
["Eternal", NOUN, "Dynasty"],
|
|
||||||
["Invading", NOUN, "Cabal"],
|
|
||||||
["Invading", NOUN, "Empire"],
|
["Invading", NOUN, "Empire"],
|
||||||
["Invading", NOUN, "Alliance"],
|
|
||||||
["Immortal", NOUN, "Pirates"],
|
["Immortal", NOUN, "Pirates"],
|
||||||
["Shadow", NOUN, "Cabal"],
|
["Shadow", NOUN, "Cabal"],
|
||||||
["Secret", NOUN, "Dynasty"],
|
["Secret", NOUN, "Dynasty"],
|
||||||
["The Great", NOUN, "Army"],
|
["The Great", NOUN, "Army"],
|
||||||
["The", NOUN, "Matrix"],
|
["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 = [
|
const NOUNS = [
|
||||||
@@ -350,12 +430,201 @@ const NOUNS = [
|
|||||||
"Burger",
|
"Burger",
|
||||||
"Tomato",
|
"Tomato",
|
||||||
"Penguin",
|
"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
|
// 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 {
|
function pluralize(noun: string): string {
|
||||||
|
if (SPECIAL_PLURALS.has(noun)) {
|
||||||
|
return SPECIAL_PLURALS.get(noun)!;
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
noun.endsWith("s") ||
|
noun.endsWith("s") ||
|
||||||
noun.endsWith("ch") ||
|
noun.endsWith("ch") ||
|
||||||
|
|||||||