From 76ae3f37e61b9fcec420545345521b0aa48cd68c Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Tue, 20 Feb 2024 13:27:06 +0100
Subject: [PATCH] cSpell: large number of errors in src/

---
 cspell.json                                   |  40 ++-
 devTools/scripts/dictionary_names.txt         |   6 +
 js/003-data/gameVariableData.js               |   2 +
 src/art/genAI/stableDiffusion.js              |   2 +
 src/futureSocieties/futureSociety.js          |   4 +-
 src/gui/Encyclopedia/encyclopediaFacilites.js |   2 +
 src/gui/Encyclopedia/encyclopediaFetish.js    |   2 +
 .../encyclopediaFutureSocities.js             |  80 +++---
 src/gui/Encyclopedia/encyclopediaLore.js      |   3 +
 src/gui/Encyclopedia/encyclopediaMods.js      |   2 +
 .../Encyclopedia/encyclopediaParaphilias.js   |   2 +
 src/gui/Encyclopedia/encyclopediaSlaves.js    |   2 +
 .../encyclopediaX-SeriesArcology.js           |   2 +
 src/gui/options/options.js                    |   2 +
 .../stableDiffusionInstallationGuide.js       |   2 +
 src/gui/quicklinks.js                         |   8 +-
 src/interaction/main/fcnn.js                  |   2 +
 src/interaction/main/toychest.js              |   2 +
 src/interaction/main/useGuard.js              |   2 +
 src/interaction/main/walkPast.js              |   6 +-
 src/interaction/prostheticLabPassage.js       |   2 +-
 src/interaction/sellSlave.js                  |   4 +-
 src/interaction/siWardrobe.js                 |  24 +-
 src/interaction/useSlave/useSlaveText.js      |   3 +
 src/js/DefaultRules.js                        |   4 +-
 src/js/assignJS.js                            |   2 +
 src/js/birth/birth.js                         |   2 +
 src/js/economyJS.js                           |   2 +
 src/js/familyTreeJS.js                        |   1 +
 src/js/porn.js                                |   2 +
 src/js/rulesAssistantOptions.js               |   2 +
 src/js/slaveCostJS.js                         | 252 +++++++++---------
 src/js/slaveListing.js                        |   9 +-
 src/js/slaveSummaryHelpers.js                 |   1 +
 src/js/slaveSummaryWidgets.js                 |   2 +
 src/js/speech.js                              |   4 +-
 src/js/storyJS.js                             |  29 +-
 src/js/utilsArcology.js                       |  18 +-
 src/js/utilsMisc.js                           |   2 +
 src/js/utilsPC.js                             |   2 +
 src/js/utilsSC.js                             |   4 +-
 src/js/utilsSlave.js                          |   8 +-
 src/js/utilsSlaves.js                         |  14 +-
 src/js/vignettes.js                           |   2 +
 src/npc/bodyguard/bgDescription.js            |   4 +-
 src/npc/descriptions/style/footwear.js        |   2 +-
 src/npc/generate/generateGenetics.js          |   2 +-
 src/npc/generate/generateMarketSlave.js       |   2 +
 src/npc/surgery/surrogacyWorkaround.js        |   2 -
 49 files changed, 348 insertions(+), 232 deletions(-)

diff --git a/cspell.json b/cspell.json
index ab229aeab27..48891003222 100644
--- a/cspell.json
+++ b/cspell.json
@@ -22,6 +22,7 @@
         "src/001-lib/webgl/**",
         "src/art/webgl.js",
         "src/art/webgl/engine.js",
+        "src/gui/Encyclopedia/encyclopediaCredits.js",
         "src/events/RE/reNickname.js",
         "src/js/displayVariables.js",
         "src/npc/databases/dSlavesDatabase.js",
@@ -101,6 +102,7 @@
         "eqnum",
         "eqstr",
         "franklygeorge",
+        "freecitiesdev",
         "inscrip",
         "isamputee",
         "isfertile",
@@ -114,9 +116,11 @@
         "precommit",
         "preg",
         "pregmodder",
+        "pregmodfan",
         "shokushu's",
         "sonarjs",
         "stylelintrc",
+        "syouthening",
         "ternarynum",
         "ts-nocheck",
         "unittests",
@@ -128,9 +132,11 @@
     ],
     "words": [
         "abaya",
+        "accelerants",
         "acceptingly",
         "ahhhh",
         "anaphrodisiacs",
+        "anarcho",
         "aphro",
         "arcologies",
         "arcology",
@@ -138,11 +144,14 @@
         "autosurgery",
         "awwww",
         "ballsack",
+        "bdsm",
+        "beared",
         "beribboned",
         "bimbofication",
         "biyelgee",
         "breastgasm",
         "broodmother",
+        "bukkake",
         "burkini",
         "buttcheeks",
         "buttfuck",
@@ -153,18 +162,23 @@
         "cartoonishly",
         "catgirl",
         "coeff",
+        "coeffs",
         "creampied",
+        "csec",
         "cummunist",
         "cumslut",
         "cunny",
         "cybersuit",
         "degradationist",
         "dilf",
+        "dumbassening",
         "décor",
         "eary",
         "electrolarynx",
         "elven",
         "enculées",
+        "ethnicities",
+        "evocati",
         "facefuck",
         "fanbase",
         "fcnn",
@@ -174,6 +188,7 @@
         "fetishize",
         "fetishizes",
         "fetishizing",
+        "financials",
         "fleur-de-lis",
         "fssmr",
         "fuckdoll",
@@ -186,24 +201,31 @@
         "futas",
         "gestators",
         "gigantomastia",
+        "gilf",
         "girthy",
         "gitgud",
         "gladiatrix",
         "gulpfile",
         "hanbok",
         "handsy",
+        "hassaku",
         "headgirl",
         "headgirlsuite",
+        "heritance",
         "heterochromia",
         "hime",
         "hippolyta",
         "hooved",
+        "horm",
+        "hucow",
         "huipil",
         "huipils",
         "hyperleptinemia",
         "hypoleptinemia",
         "iife",
         "impregnatrix",
+        "incentivizes",
+        "incubatee",
         "indo-aryan",
         "jetpack",
         "jizya",
@@ -214,6 +236,7 @@
         "loli",
         "lolis",
         "macromastia",
+        "majicmix",
         "mammaries",
         "mastersuite",
         "meatshield",
@@ -230,7 +253,9 @@
         "mounty",
         "mult",
         "naïvely",
+        "naïveté",
         "nethers",
+        "nieskowitz",
         "niqab",
         "nonuplets",
         "nueva",
@@ -239,11 +264,14 @@
         "old-worlder",
         "omnisexual",
         "onahole",
+        "one-upmanship",
+        "oppai",
         "orcish",
         "orgasmed",
         "outie",
         "outro",
         "painal",
+        "paizuri",
         "pako",
         "pantsu",
         "pedo",
@@ -254,6 +282,7 @@
         "preferentialist",
         "preggo",
         "preggololi",
+        "preggos",
         "pregmod",
         "prereqs",
         "progeria",
@@ -273,6 +302,8 @@
         "slaveowner",
         "slaveowners",
         "slaveownership",
+        "sluttery",
+        "sodomizer",
         "sooo",
         "soooo",
         "spread-eagled",
@@ -280,14 +311,16 @@
         "stims",
         "stimulators",
         "storyformat",
+        "strapon",
         "stylelint",
         "subjugationist",
         "sugarcube",
         "supremacism",
-        "swin",
         "swole",
         "sybian",
         "tabi",
+        "tlatcani",
+        "tranny",
         "trib",
         "tribbing",
         "triggerable",
@@ -298,7 +331,9 @@
         "undeafen",
         "unexpandable",
         "unholstered",
+        "unimplanted",
         "universidad",
+        "unmilked",
         "unmocked",
         "unmodded",
         "unpunctuated",
@@ -312,6 +347,7 @@
         "webm",
         "webp",
         "wesekh",
+        "xochiquetzal",
         "école"
     ]
-}
\ No newline at end of file
+}
diff --git a/devTools/scripts/dictionary_names.txt b/devTools/scripts/dictionary_names.txt
index 53928e6f00c..2e4acf3c3e1 100644
--- a/devTools/scripts/dictionary_names.txt
+++ b/devTools/scripts/dictionary_names.txt
@@ -1,3 +1,9 @@
+Adamsdóttir
+Banaszewski
+Bettysdóttir
+Bettysson
+Danni
+Suzie
 Gabe
 Kennerly
 Mikey
diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 8cab672a16b..f3e74e5d826 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -1,3 +1,5 @@
+// cSpell:ignore swinir
+
 // A whitelist for ingame variables. Used to init the game or fill in gaps. Also used as a whitelist. Anything not on this list will be removed on BC.
 App.Data.defaultGameStateVariables = {
 	// Page
diff --git a/src/art/genAI/stableDiffusion.js b/src/art/genAI/stableDiffusion.js
index 57afb53fe2d..3fc9363c8c1 100644
--- a/src/art/genAI/stableDiffusion.js
+++ b/src/art/genAI/stableDiffusion.js
@@ -1,4 +1,6 @@
 /* eslint-disable camelcase */
+// cSpell:ignore swinir
+
 App.Art.GenAI.StableDiffusionSettings = class {
 	/**
 	 * @typedef {object} ConstructorOptions
diff --git a/src/futureSocieties/futureSociety.js b/src/futureSocieties/futureSociety.js
index 023c45e2504..a37fd894f2d 100644
--- a/src/futureSocieties/futureSociety.js
+++ b/src/futureSocieties/futureSociety.js
@@ -224,10 +224,10 @@ globalThis.FutureSocieties = (function() {
 	 */
 	function decayFSes(arcologyID) {
 		const arc = V.arcologies[arcologyID];
-		const fses = activeFSes(arc);
+		const FSes = activeFSes(arc);
 		/** @type {FC.FutureSociety[]} */
 		let purged = [];
-		for (const fs of fses) {
+		for (const fs of FSes) {
 			if (fs !== "FSNull") { // exempt for some reason?
 				if (arc[fs] < jsRandom(10, 150)) {
 					purged.push(fs);
diff --git a/src/gui/Encyclopedia/encyclopediaFacilites.js b/src/gui/Encyclopedia/encyclopediaFacilites.js
index 88d750202a7..54d11b7ee35 100644
--- a/src/gui/Encyclopedia/encyclopediaFacilites.js
+++ b/src/gui/Encyclopedia/encyclopediaFacilites.js
@@ -1,3 +1,5 @@
+// cSpell:ignore devs, FCHW
+
 App.Encyclopedia.addArticle("Facilities Overview", function() {
 	const basic = [App.Encyclopedia.link("Arcade"), App.Encyclopedia.link("Brothel"), App.Encyclopedia.link("Club"), App.Encyclopedia.link("Dairy"), App.Encyclopedia.link("Servants' Quarters")];
 	const unique = [App.Encyclopedia.link("Head Girl Suite"), App.Encyclopedia.link("Master Suite"), App.Encyclopedia.link("Farmyard"), App.Encyclopedia.link("Incubation Facility", "The Incubation Facility"), App.Encyclopedia.link("Pit")];
diff --git a/src/gui/Encyclopedia/encyclopediaFetish.js b/src/gui/Encyclopedia/encyclopediaFetish.js
index 89ed83729da..1892b862124 100644
--- a/src/gui/Encyclopedia/encyclopediaFetish.js
+++ b/src/gui/Encyclopedia/encyclopediaFetish.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Cumsluttery, Buttsluttery
+
 App.Encyclopedia.addArticle("Fetishes", function() {
 	const r = new SpacedTextAccumulator();
 	// Future room for lore text
diff --git a/src/gui/Encyclopedia/encyclopediaFutureSocities.js b/src/gui/Encyclopedia/encyclopediaFutureSocities.js
index 02aedca9901..9136fd85c48 100644
--- a/src/gui/Encyclopedia/encyclopediaFutureSocities.js
+++ b/src/gui/Encyclopedia/encyclopediaFutureSocities.js
@@ -35,7 +35,7 @@ App.Encyclopedia.addArticle("Future Societies", function() {
 		"However, it can provide a guarantee against loss of progress should the player do something the society strongly disapproves of.",
 		"Also, the spending is applied equally to all active future society models, meaning that there is no loss of efficiency in spending if the player has two maximized models and one still under development."], "p");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Ethnic Supremacy", function() {
 	const t = new DocumentFragment();
@@ -48,7 +48,7 @@ App.Encyclopedia.addArticle("Ethnic Supremacy", function() {
 	App.Events.addNode(t, ["Provides demand for slaves of inferior races from",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Ethnic Subjugationism", function() {
 	const t = new DocumentFragment();
@@ -59,7 +59,7 @@ App.Encyclopedia.addArticle("Ethnic Subjugationism", function() {
 	App.Events.addNode(t, ["Provides demand for slaves of the disfavored race from",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Gender Radicalism", function() {
 	const t = new DocumentFragment();
@@ -73,7 +73,7 @@ App.Encyclopedia.addArticle("Gender Radicalism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Gender Fundamentalism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Gender Fundamentalism", function() {
 	const t = new DocumentFragment();
@@ -87,7 +87,7 @@ App.Encyclopedia.addArticle("Gender Fundamentalism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Gender Radicalism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Paternalism", function() {
 	const t = new DocumentFragment();
@@ -111,7 +111,7 @@ App.Encyclopedia.addArticle("Paternalism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Degradationism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Degradationism", function() {
 	const t = new DocumentFragment();
@@ -131,7 +131,7 @@ App.Encyclopedia.addArticle("Degradationism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Paternalism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Body Purism", function() {
 	const t = new DocumentFragment();
@@ -145,7 +145,7 @@ App.Encyclopedia.addArticle("Body Purism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Transformation Fetishism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Transformation Fetishism", function() {
 	const t = new DocumentFragment();
@@ -159,7 +159,7 @@ App.Encyclopedia.addArticle("Transformation Fetishism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Body Purism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Maturity Preferentialism", function() {
 	const t = new DocumentFragment();
@@ -175,7 +175,7 @@ App.Encyclopedia.addArticle("Maturity Preferentialism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Youth Preferentialism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Youth Preferentialism", function() {
 	const t = new DocumentFragment();
@@ -190,7 +190,7 @@ App.Encyclopedia.addArticle("Youth Preferentialism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Maturity Preferentialism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Slimness Enthusiasm", function() {
 	const t = new DocumentFragment();
@@ -204,7 +204,7 @@ App.Encyclopedia.addArticle("Slimness Enthusiasm", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Asset Expansionism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Asset Expansionism", function() {
 	const t = new DocumentFragment();
@@ -217,7 +217,7 @@ App.Encyclopedia.addArticle("Asset Expansionism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Slimness Enthusiasm"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Pastoralism", function() {
 	const t = new DocumentFragment();
@@ -229,7 +229,7 @@ App.Encyclopedia.addArticle("Pastoralism", function() {
 	App.Events.addNode(t, ["Provides demand for production focused asset expansion from",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Physical Idealism", function() {
 	const t = new DocumentFragment();
@@ -243,7 +243,7 @@ App.Encyclopedia.addArticle("Physical Idealism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Hedonistic Decadence"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Chattel Religionism", function() {
 	const t = new DocumentFragment();
@@ -266,7 +266,7 @@ App.Encyclopedia.addArticle("Chattel Religionism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Multiculturalism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Multiculturalism", function() {
 	const t = new DocumentFragment();
@@ -280,7 +280,7 @@ App.Encyclopedia.addArticle("Multiculturalism", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Chattel Religionism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Roman Revivalism", function() {
 	const t = new DocumentFragment();
@@ -295,7 +295,7 @@ App.Encyclopedia.addArticle("Roman Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Egyptian Revivalism", function() {
 	const t = new DocumentFragment();
@@ -311,7 +311,7 @@ App.Encyclopedia.addArticle("Egyptian Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Edo Revivalism", function() {
 	const t = new DocumentFragment();
@@ -327,7 +327,7 @@ App.Encyclopedia.addArticle("Edo Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Arabian Revivalism", function() {
 	const t = new DocumentFragment();
@@ -343,7 +343,7 @@ App.Encyclopedia.addArticle("Arabian Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Chinese Revivalism", function() {
 	const t = new DocumentFragment();
@@ -357,7 +357,7 @@ App.Encyclopedia.addArticle("Chinese Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Repopulationism", function() {
 	const t = new DocumentFragment();
@@ -375,7 +375,7 @@ App.Encyclopedia.addArticle("Repopulationism", function() {
 		"Try to keep as many slaves as possible visibly pregnant; if they're pregnant but not showing yet, Pregnancy Biometrics Collars can help."], "p", ["note",
 		"yellow"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Eugenics Focus", function() {
 	const t = new DocumentFragment();
@@ -393,7 +393,7 @@ App.Encyclopedia.addArticle("Eugenics Focus", function() {
 		"For a more complete guide to playing with a Eugenics arcology, see the",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Guide to Eugenics"), ".")], "p", ["note", "yellow"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Slave Professionalism", function() {
 	const t = new DocumentFragment();
@@ -408,7 +408,7 @@ App.Encyclopedia.addArticle("Slave Professionalism", function() {
 	App.Events.addNode(t, ["Is mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Intellectual Dependency"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Intellectual Dependency", function() {
 	const t = new DocumentFragment();
@@ -424,7 +424,7 @@ App.Encyclopedia.addArticle("Intellectual Dependency", function() {
 	App.Events.addNode(t, ["Is mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Slave Professionalism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Petite Admiration", function() {
 	const t = new DocumentFragment();
@@ -438,7 +438,7 @@ App.Encyclopedia.addArticle("Petite Admiration", function() {
 	App.Events.addNode(t, ["Is mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Statuesque Glorification"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Statuesque Glorification", function() {
 	const t = new DocumentFragment();
@@ -452,7 +452,7 @@ App.Encyclopedia.addArticle("Statuesque Glorification", function() {
 	App.Events.addNode(t, ["Is mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Petite Admiration"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Hedonistic Decadence", function() {
 	const t = new DocumentFragment();
@@ -466,7 +466,7 @@ App.Encyclopedia.addArticle("Hedonistic Decadence", function() {
 	App.Events.addNode(t, ["Mutually exclusive with",
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("Physical Idealism"), ".")]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Aztec Revivalism", function() {
 	const t = new DocumentFragment();
@@ -482,7 +482,7 @@ App.Encyclopedia.addArticle("Aztec Revivalism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with the other Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Neo-Imperialism", function() {
 	const t = new DocumentFragment();
@@ -496,7 +496,7 @@ App.Encyclopedia.addArticle("Neo-Imperialism", function() {
 		App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with all Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Antebellum Revivalism", function() {
 	const t = new DocumentFragment();
@@ -510,25 +510,25 @@ App.Encyclopedia.addArticle("Antebellum Revivalism", function() {
 	App.Events.addNode(t, ["Provides demand for entertaining slaves from", App.UI.DOM.combineNodes(App.Encyclopedia.link("The Corporation"), ".")]);
 	App.Events.addNode(t, ["Mutually exclusive with all Revivalist models."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Gender Radicalism Research", function() {
 	const t = new DocumentFragment();
 	App.Events.addNode(t, ["Advanced Gender Radicalist societies can fund research to produce modified uteri and ovaries designed to be implanted into male slaves to grant them the ability to become pregnant, thus leaving no gender specific traits remaining."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Slave Professionalism Research", function() {
 	const t = new DocumentFragment();
 	App.Events.addNode(t, ["Advanced Slave Professionalism societies can fund efforts to synthesize a compound capable of improving mental capacities."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Transformation Fetishism Research", function() {
 	const t = new DocumentFragment();
 	App.Events.addNode(t, ["Advanced Transformation Fetishist societies can fund research to produce implants capable of reaching previously undocumented sizes."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Asset Expansionist Research", function() {
 	const t = new DocumentFragment();
@@ -536,7 +536,7 @@ App.Encyclopedia.addArticle("Asset Expansionist Research", function() {
 		"Drugs are also standardized in slave diets to prevent loss of asset size.",
 		"Due to the rapid growth in said assets, and the strength of the drug cocktails, slaves are more likely to develop side effects of excessive drug use."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Slimness Enthusiast Research", function() {
 	const t = new DocumentFragment();
@@ -546,14 +546,14 @@ App.Encyclopedia.addArticle("Slimness Enthusiast Research", function() {
 	App.Events.addNode(t, ["Redistributors to draw fat from oversized assets and settle them around the slave's core for easy removal."], "div", ["indent"]);
 	App.Events.addNode(t, ["Atrophiers to shrink non-fat based assets."], "div", ["indent"]);
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Youth Preferentialism Research", function() {
 	const t = new DocumentFragment();
 	App.Events.addNode(t, ["Specialized creams built off of stem cells and several ingredients known for reducing the ravages of age.",
 		"Steady use leaves a slave looking younger, though the effects are literally skin deep; several gossip pieces have run about celebrities bedding youthful slaves just to accidentally find their efforts resulting in a broken hip."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
 App.Encyclopedia.addArticle("Hedonistic Decadence Research", function() {
 	const t = new DocumentFragment();
@@ -566,9 +566,9 @@ App.Encyclopedia.addArticle("Hedonistic Decadence Research", function() {
 		"Alterations to the recipe exist to prevent", App.Encyclopedia.link("weight gain", "Weight"),
 		"for Slimness Enthusiast societies and to cause gastric distress in Degradationist societies."], "div");
 	return t;
-}, "FutureSocities");
+}, "FutureSocieties");
 
-App.Encyclopedia.addCategory("FutureSocities", function(currentArticle) {
+App.Encyclopedia.addCategory("FutureSocieties", function(currentArticle) {
 	const t = new DocumentFragment();
 	const vanilla = [];
 	const modded = [];
diff --git a/src/gui/Encyclopedia/encyclopediaLore.js b/src/gui/Encyclopedia/encyclopediaLore.js
index af97a2b4e6f..f2bd4033567 100644
--- a/src/gui/Encyclopedia/encyclopediaLore.js
+++ b/src/gui/Encyclopedia/encyclopediaLore.js
@@ -1,3 +1,6 @@
+// cSpell:ignore Bhalwi, al-sham, asmik, qalbik, abna, Sakhmat, damkun
+// cSpell:ignore Feight, Quati, SCFC, Jens, entlemen
+
 App.Encyclopedia.addArticle("Lore", function() {
 	const f = new DocumentFragment();
 	App.Events.addNode(f, [App.UI.DOM.makeElement("span", "Future room for lore text", ["note"])], "p");
diff --git a/src/gui/Encyclopedia/encyclopediaMods.js b/src/gui/Encyclopedia/encyclopediaMods.js
index 35d6465e65b..413d12e81ce 100644
--- a/src/gui/Encyclopedia/encyclopediaMods.js
+++ b/src/gui/Encyclopedia/encyclopediaMods.js
@@ -1,3 +1,5 @@
+// cSpell:ignore uncurated
+
 App.Encyclopedia.addArticle("Mods/Pregmod", function() {
 	return App.UI.DOM.makeElement("div", "This version of the game includes several optional mods and Pregmod exclusive features. For more information, please select a particular entry below:");
 }, "Mods");
diff --git a/src/gui/Encyclopedia/encyclopediaParaphilias.js b/src/gui/Encyclopedia/encyclopediaParaphilias.js
index 5a4a1f2ed08..bf81544b8c0 100644
--- a/src/gui/Encyclopedia/encyclopediaParaphilias.js
+++ b/src/gui/Encyclopedia/encyclopediaParaphilias.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Pectomania
+
 App.Encyclopedia.addArticle("Paraphilias Overview", function() {
 	const f = new DocumentFragment();
 	const r = new SpacedTextAccumulator(f);
diff --git a/src/gui/Encyclopedia/encyclopediaSlaves.js b/src/gui/Encyclopedia/encyclopediaSlaves.js
index a22bc6b147f..082c1e43dbd 100644
--- a/src/gui/Encyclopedia/encyclopediaSlaves.js
+++ b/src/gui/Encyclopedia/encyclopediaSlaves.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Kombinezon-B, unvoidable
+
 App.Encyclopedia.addArticle("Slaves", function() {
 	const f = new DocumentFragment();
 	App.UI.DOM.appendNewElement("p", f, "Future room for lore text", ["note"]);
diff --git a/src/gui/Encyclopedia/encyclopediaX-SeriesArcology.js b/src/gui/Encyclopedia/encyclopediaX-SeriesArcology.js
index 7cac5abab42..23c49f79d46 100644
--- a/src/gui/Encyclopedia/encyclopediaX-SeriesArcology.js
+++ b/src/gui/Encyclopedia/encyclopediaX-SeriesArcology.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Franz-Crekcht
+
 App.Encyclopedia.addArticle("The X-Series Arcology", function() {
 	const t = new DocumentFragment();
 	const r = new SpacedTextAccumulator(t);
diff --git a/src/gui/options/options.js b/src/gui/options/options.js
index e61b31e6cc0..5550df07b23 100644
--- a/src/gui/options/options.js
+++ b/src/gui/options/options.js
@@ -1,3 +1,5 @@
+// cSpell:ignore SSAA
+
 App.UI.optionsPassage = function() {
 	const el = new DocumentFragment();
 	App.UI.DOM.appendNewElement("h1", el, `Game Options`);
diff --git a/src/gui/options/stableDiffusionInstallationGuide.js b/src/gui/options/stableDiffusionInstallationGuide.js
index 98262ac40fb..a7748aa9886 100644
--- a/src/gui/options/stableDiffusionInstallationGuide.js
+++ b/src/gui/options/stableDiffusionInstallationGuide.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Optimise, webui, medvram
+
 const html = `
 <h1>What is Stable Diffusion and Automatic1111's Stable Diffusion WebUI?</h1>
 Stable Diffusion is an AI model for generating images given a text prompt. Automatic1111's Stable Diffusion WebUI is a web interface for running Stable Diffusion. It is the easiest way to run Stable Diffusion on your computer, and provides an API that we can use to integrate Stable Diffusion into other applications.
diff --git a/src/gui/quicklinks.js b/src/gui/quicklinks.js
index 5592c288793..ed027f5d1bf 100644
--- a/src/gui/quicklinks.js
+++ b/src/gui/quicklinks.js
@@ -184,8 +184,8 @@ App.UI.quickMenu = (function() {
 	});
 
 	/**
-	 * The DOM element of name of the currently played passage or any of it's parents. Used during generation to
-	 * uncollapse the category with the current passage.
+	 * The DOM element of name of the currently played passage or any of its parents. Used during generation to
+	 * expand the category with the current passage.
 	 * @type {HTMLElement}
 	 */
 	let currentPassage;
@@ -224,7 +224,7 @@ App.UI.quickMenu = (function() {
 			"secBarracks": "shift+a",
 			"securityHQ": "shift+s",
 			"Universal Rules": "v",
- 			"Find Slave": "l",
+			"Find Slave": "l",
 			// Facilities
 			"Brothel": "1",
 			"Club": "2",
@@ -357,7 +357,7 @@ App.UI.quickMenu = (function() {
 			addBackLink(links);
 			div.append(...links);
 
-			// traverse from current passage up to uncollapse.
+			// traverse from current passage up to expand.
 			if (currentPassage !== null) {
 				while (!currentPassage.classList.contains("quick-links")) {
 					currentPassage.classList.remove("collapsed");
diff --git a/src/interaction/main/fcnn.js b/src/interaction/main/fcnn.js
index 01a0a5b952e..9539fd942af 100644
--- a/src/interaction/main/fcnn.js
+++ b/src/interaction/main/fcnn.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Creem, Taggart, Malnockestivi, Desha
+
 App.FCNN = (function() {
 	const starting = [
 		"...coming up at the top of the hour: Catgirl slaves, science fact or science fiction...",
diff --git a/src/interaction/main/toychest.js b/src/interaction/main/toychest.js
index 99d4823fa62..9ab7db254bb 100644
--- a/src/interaction/main/toychest.js
+++ b/src/interaction/main/toychest.js
@@ -1,3 +1,5 @@
+// cSpell:ignore klux, nadeshiko
+
 /* OPEN TOYCHEST */
 App.Interact.ToyChest = function(slave) {
 	"use strict";
diff --git a/src/interaction/main/useGuard.js b/src/interaction/main/useGuard.js
index 8dd163b3457..d0118d63c28 100644
--- a/src/interaction/main/useGuard.js
+++ b/src/interaction/main/useGuard.js
@@ -1,3 +1,5 @@
+// cSpell:ignore contractrix
+
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {string}
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 19d1c40d247..a987d63d0c6 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -1,3 +1,5 @@
+// cSpell:ignore pantsed
+
 globalThis.walkPast = (function() {
 	// core string variables
 	let t;
@@ -4508,7 +4510,7 @@ globalThis.walkPast = (function() {
 						t += `Slight jiggling can be seen in ${his} chubby belly as ${he} moves.`;
 					}
 				}
-			} else { /* implant descs */
+			} else { /* implant descriptions */
 				if (slave.bellyImplant >= 32000) {
 					switch (slave.clothes) {
 						// case "an extreme corset": //FIXME: Corsets are not clothes
@@ -6265,7 +6267,7 @@ globalThis.walkPast = (function() {
 					}
 				}
 			}
-		} else { /* inflation descs */
+		} else { /* inflation descriptions */
 			if (slave.weight > 190) {
 				switch (slave.clothes) {
 					case "a Fuckdoll suit":
diff --git a/src/interaction/prostheticLabPassage.js b/src/interaction/prostheticLabPassage.js
index 3c1a67b18d2..051df070e7f 100644
--- a/src/interaction/prostheticLabPassage.js
+++ b/src/interaction/prostheticLabPassage.js
@@ -41,7 +41,7 @@ App.UI.prostheticLab = function() {
 				["note", "indent"]);
 		}
 		if ((staff) === 0) {
-			App.UI.DOM.appendNewElement("div", node, "Facility is currently unstaffed.");
+			App.UI.DOM.appendNewElement("div", node, "Facility is currently not staffed.");
 		} else {
 			r.push(`You have`);
 			if (V.researchLab.hired === 1) {
diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js
index 694efd89719..1e56fd8f0e8 100644
--- a/src/interaction/sellSlave.js
+++ b/src/interaction/sellSlave.js
@@ -1,3 +1,5 @@
+// cSpell:ignore debaucherous, waifu
+
 /** @param {App.Entity.SlaveState} slave */
 App.Interact.sellSlave = function(slave) {
 	const scene = document.createElement("span");
@@ -953,7 +955,7 @@ App.Interact.sellSlave = function(slave) {
 					if (V.PC.father === V.AS) {
 						V.boomerangStats.PCfather = V.AS;
 					}
-					for (const s of V.slaves) { // TODO: review for hyperfet compatibility
+					for (const s of V.slaves) { // TODO: review for hyper fertility compatibility
 						if (s.ID !== V.AS) {
 							if (s.mother === V.AS) {
 								V.boomerangStats.boomerangMother.push(s.ID);
diff --git a/src/interaction/siWardrobe.js b/src/interaction/siWardrobe.js
index c255801653a..5e7fc6f1c32 100644
--- a/src/interaction/siWardrobe.js
+++ b/src/interaction/siWardrobe.js
@@ -643,30 +643,30 @@ App.UI.SlaveInteract.wardrobe = function(slave, contentRefresh) {
 		label.append(`Chastity devices: `);
 
 		/** @type {string} */
-		let chasCho;
+		let chastityDevice;
 		if (slave.choosesOwnChastity === 1) {
-			chasCho = `choosing ${his} own chastity`;
+			chastityDevice = `choosing ${his} own chastity`;
 		} else if (slave.chastityAnus === 1 && slave.chastityPenis === 1 && slave.chastityVagina === 1) {
-			chasCho = `full chastity`;
+			chastityDevice = `full chastity`;
 		} else if (slave.chastityPenis === 1 && slave.chastityVagina === 1) {
-			chasCho = `genital chastity`;
+			chastityDevice = `genital chastity`;
 		} else if (slave.chastityAnus === 1 && slave.chastityPenis === 1) {
-			chasCho = `combined chastity cage`;
+			chastityDevice = `combined chastity cage`;
 		} else if (slave.chastityAnus === 1 && slave.chastityVagina === 1) {
-			chasCho = `combined chastity belt`;
+			chastityDevice = `combined chastity belt`;
 		} else if (slave.chastityVagina === 1) {
-			chasCho = `chastity belt`;
+			chastityDevice = `chastity belt`;
 		} else if (slave.chastityPenis === 1) {
-			chasCho = `chastity cage`;
+			chastityDevice = `chastity cage`;
 		} else if (slave.chastityAnus === 1) {
-			chasCho = `anal chastity`;
+			chastityDevice = `anal chastity`;
 		} else if (slave.chastityAnus === 0 && slave.chastityPenis === 0 && slave.chastityVagina === 0) {
-			chasCho = `none`;
+			chastityDevice = `none`;
 		} else {
-			chasCho = `THERE HAS BEEN AN ERROR `;
+			chastityDevice = `THERE HAS BEEN AN ERROR `;
 		}
 
-		label.append(App.UI.DOM.spanWithTooltip(chasCho, itemTooltip(chasCho, "chastity"), ["bold"]));
+		label.append(App.UI.DOM.spanWithTooltip(chastityDevice, itemTooltip(chastityDevice, "chastity"), ["bold"]));
 
 		if (slave.chastityAnus !== 0 || slave.chastityPenis !== 0 || slave.chastityVagina !== 0) {
 			label.append(" ",
diff --git a/src/interaction/useSlave/useSlaveText.js b/src/interaction/useSlave/useSlaveText.js
index 044d8e6d239..8ff833cd6ea 100644
--- a/src/interaction/useSlave/useSlaveText.js
+++ b/src/interaction/useSlave/useSlaveText.js
@@ -1,3 +1,6 @@
+// cSpell:ignore Ahhh, Ahhhmmm, Aiii, Aiiii, gooood, grffh, Haah, Hehe, Hmmmm, Hmph, kffph, mmmh, Mmmmwah, MMPHH, Mnhh
+// cSpell:ignore Ohhh, Ohhhh, Oohhh, Oohhhh, Oooh, Tmph
+
 App.UI.SlaveInteract.useSlave.contextualText = {
 	/** @param {FC.SlaveState} slave */
 	keepKissing(slave) {
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index c348111e4ae..f5f24bda09b 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -3154,11 +3154,11 @@ globalThis.DefaultRules = function(slave) {
 			return;
 		}
 		slave.porn.feed = rule.pornFeed;
-		let yesno = slave.porn.feed ? "are now" : "are no longer";
+		let yesNo = slave.porn.feed ? "are now" : "are no longer";
 		if (slave.porn.feed === 0) {
 			slave.porn.spending = 0;
 		}
-		message(`Highlights of ${slave.slaveName}'s sex life ${yesno} being released.`, sourceRecord.pornFeed);
+		message(`Highlights of ${slave.slaveName}'s sex life ${yesNo} being released.`, sourceRecord.pornFeed);
 	}
 
 	/** @param {App.Entity.SlaveState} slave
diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index eaef86dcdd9..c5077994ad0 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -1,3 +1,5 @@
+// cSpell:ignore hgsuite
+
 /**
  * @param {App.Entity.SlaveState} slave
  * @param {FC.Assignment} job
diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js
index f8a8279de34..259d56e27f4 100644
--- a/src/js/birth/birth.js
+++ b/src/js/birth/birth.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Relocking
+
 App.Events.SEBirth = class SEBirth extends App.Events.BaseEvent {
 	constructor(actors, params) {
 		super(actors, params);
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 5cbf132f86a..0d9ded2fd16 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1,3 +1,5 @@
+// cSpell:ignore uncurved
+
 globalThis.DJRepBonus = function() {
 	if (!S.DJ) {
 		return 0;
diff --git a/src/js/familyTreeJS.js b/src/js/familyTreeJS.js
index 6ad834b0aa7..fbacccc5e9d 100644
--- a/src/js/familyTreeJS.js
+++ b/src/js/familyTreeJS.js
@@ -1,4 +1,5 @@
 /* eslint-disable camelcase */
+// cSpell:ignore ltype, dkeys, mkeys, ssym, ftree
 
 /**
  * @param {FC.HumanState[]} slaves
diff --git a/src/js/porn.js b/src/js/porn.js
index e7fccc6d1ba..90ac8a73453 100644
--- a/src/js/porn.js
+++ b/src/js/porn.js
@@ -1,3 +1,5 @@
+// cSpell:ignore maiesiophiliacs
+
 App.Porn.GenreType = {
 	paraphilia: {
 		focusedViewershipFactor: 1.5,
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 0aa138934c3..6cf33686f49 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1,5 +1,7 @@
 /* eslint-disable camelcase */
 /* eslint-disable no-unused-vars */
+// cSpell:ignore onoffswitch, rajs, hidey
+
 // rewrite of the rules assistant options page in javascript
 // uses an object-oriented widget pattern
 // wrapped in a closure so as not to pollute the global namespace
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 9caf19bb8e6..1c42cc53a0e 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1,3 +1,5 @@
+// cSpell:ignore herms
+
 /** Calculate the minimum slave cost for a given market
  * @param {boolean} [includeLaws=false]
  * @returns {number}
@@ -85,7 +87,7 @@ globalThis.BeautyArray = function(slave) {
 	let beauty = 0;
 	let retval = [];
 
-	const FSVals = clampFSVals();
+	const FSValues = clampFSValues();
 
 	calcInitBeauty(slave);
 	if (slave.fuckdoll === 0) {
@@ -144,16 +146,16 @@ globalThis.BeautyArray = function(slave) {
 
 	return retval;
 
-	/** FS values are deliberately unclamped during endweek because we need to accumulate before clamping
+	/** FS values are deliberately unclamped during endweek because we need to accumulate before clamping,
 	 *  but we can't let out-of-bounds FS values affect beauty, so we clamp them all locally
 	 * @returns {Record<FC.FutureSociety, number>}
 	 */
-	function clampFSVals() {
-		let vals = {};
+	function clampFSValues() {
+		let values = {};
 		for (const fs of App.Data.FutureSociety.fsNames) {
-			vals[fs] = Math.clamp(arcology[fs] || 0, 0, 100);
+			values[fs] = Math.clamp(arcology[fs] || 0, 0, 100);
 		}
-		return /** @type {Record<FC.FutureSociety, number>} */(vals);
+		return /** @type {Record<FC.FutureSociety, number>} */(values);
 	}
 
 	function adjustBeauty(text, beautyChange) {
@@ -184,11 +186,11 @@ globalThis.BeautyArray = function(slave) {
 	 */
 	function calcIntelligenceBeauty(slave) {
 		if (arcologyInfo.fsActive('FSSlaveProfessionalism')) {
-			adjustBeauty("Intelligence: Professional", ((FSVals.FSSlaveProfessionalism / 10) * (slave.intelligence / 10))); /* 100 */
+			adjustBeauty("Intelligence: Professional", ((FSValues.FSSlaveProfessionalism / 10) * (slave.intelligence / 10))); /* 100 */
 		} else if (arcologyInfo.fsActive('FSIntellectualDependency')) {
-			adjustBeauty("Intelligence: Intellectual Dependency", -((FSVals.FSIntellectualDependency / 10) * ((slave.intelligence + slave.intelligenceImplant) / 20))); /* 65 */
+			adjustBeauty("Intelligence: Intellectual Dependency", -((FSValues.FSIntellectualDependency / 10) * ((slave.intelligence + slave.intelligenceImplant) / 20))); /* 65 */
 		} else if (arcologyInfo.fsActive('FSDegradationist')) {
-			adjustBeauty("Intelligence: Degradationist", -((FSVals.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 50))); /* 20 */
+			adjustBeauty("Intelligence: Degradationist", -((FSValues.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 50))); /* 20 */
 		} else {
 			adjustBeauty("Intelligence: General", ((slave.intelligence + slave.intelligenceImplant) / 10)); /* -10 to 13 */
 		}
@@ -201,31 +203,31 @@ globalThis.BeautyArray = function(slave) {
 		if (arcologyInfo.fsActive('FSPetiteAdmiration')) {
 			if (arcology.FSPetiteAdmirationLaw2 === 1) {
 				if (heightPass(slave)) {
-					adjustBeauty("Height: Petite Admiration: Relative Height", ((Height.mean(slave) - slave.height) * (FSVals.FSPetiteAdmiration / 50)));
+					adjustBeauty("Height: Petite Admiration: Relative Height", ((Height.mean(slave) - slave.height) * (FSValues.FSPetiteAdmiration / 50)));
 				} else {
-					adjustBeauty("Height: Petite Admiration: Relative Height", -((slave.height - Height.mean(slave)) * (FSVals.FSPetiteAdmiration / 50)));
+					adjustBeauty("Height: Petite Admiration: Relative Height", -((slave.height - Height.mean(slave)) * (FSValues.FSPetiteAdmiration / 50)));
 				}
 			} else {
 				if (heightPass(slave)) {
 					const ageDiv = (slave.physicalAge >= 16) ? 1 : (16 - slave.physicalAge); // this could probably be better, but bad at math. Intent is for younger, and thus naturally shorter than the threshold, slaves receive a weaker bonus.
-					adjustBeauty("Height: Petite Admiration", ((161 - slave.height) * ((FSVals.FSPetiteAdmiration / 50) + 0.5) / ageDiv));
+					adjustBeauty("Height: Petite Admiration", ((161 - slave.height) * ((FSValues.FSPetiteAdmiration / 50) + 0.5) / ageDiv));
 				} else if (slave.height >= 170) {
-					adjustBeauty("Height: Petite Admiration", -((slave.height - 169) * (FSVals.FSPetiteAdmiration / 50)));
+					adjustBeauty("Height: Petite Admiration", -((slave.height - 169) * (FSValues.FSPetiteAdmiration / 50)));
 				}
 			}
 		} else if (arcologyInfo.fsActive('FSStatuesqueGlorification')) {
 			if (arcology.FSStatuesqueGlorificationLaw2 === 1) {
 				if (heightPass(slave)) {
-					adjustBeauty("Height: Statuesque Glorification: Relative Height", ((slave.height - Height.mean(slave)) * (FSVals.FSStatuesqueGlorification / 50)));
+					adjustBeauty("Height: Statuesque Glorification: Relative Height", ((slave.height - Height.mean(slave)) * (FSValues.FSStatuesqueGlorification / 50)));
 				} else {
-					adjustBeauty("Height: Statuesque Glorification: Relative Height", -((Height.mean(slave) - slave.height) * (FSVals.FSStatuesqueGlorification / 50)));
+					adjustBeauty("Height: Statuesque Glorification: Relative Height", -((Height.mean(slave) - slave.height) * (FSValues.FSStatuesqueGlorification / 50)));
 				}
 			} else {
 				const effectiveHeight = slave.height + shoeHeight(slave);
 				if (heightPass(slave)) {
-					adjustBeauty("Height: Statuesque Glorification", ((effectiveHeight - 169) * ((FSVals.FSStatuesqueGlorification / 50) + 0.5)));
+					adjustBeauty("Height: Statuesque Glorification", ((effectiveHeight - 169) * ((FSValues.FSStatuesqueGlorification / 50) + 0.5)));
 				} else {
-					adjustBeauty("Height: Statuesque Glorification", -(((FSVals.FSStatuesqueGlorification / 10) + (170 - effectiveHeight)) * 2));
+					adjustBeauty("Height: Statuesque Glorification", -(((FSValues.FSStatuesqueGlorification / 10) + (170 - effectiveHeight)) * 2));
 				}
 			}
 		} else {
@@ -241,18 +243,18 @@ globalThis.BeautyArray = function(slave) {
 		switch (slave.faceShape) {
 			case "masculine":
 				if (arcologyInfo.fsActive('FSGenderRadicalist')) {
-					adjustBeauty("Masculine face: Gender Radicalist", -((2 - (FSVals.FSGenderRadicalist / 25)) * (slave.face / 30)));
+					adjustBeauty("Masculine face: Gender Radicalist", -((2 - (FSValues.FSGenderRadicalist / 25)) * (slave.face / 30)));
 				} else if (arcologyInfo.fsActive('FSGenderFundamentalist')) {
-					adjustBeauty("Masculine face: Gender Fundamentalist", -((2 + (FSVals.FSGenderFundamentalist / 25)) * (slave.face / 30)));
+					adjustBeauty("Masculine face: Gender Fundamentalist", -((2 + (FSValues.FSGenderFundamentalist / 25)) * (slave.face / 30)));
 				} else {
 					adjustBeauty("Masculine face: General", -(2 * (slave.face / 30)));
 				}
 				break;
 			case "androgynous":
 				if (arcologyInfo.fsActive('FSGenderRadicalist')) {
-					adjustBeauty("Androgynous face: Gender Radicalist", (2 - ((1 - (FSVals.FSGenderRadicalist / 25)) * (slave.face / 30))));
+					adjustBeauty("Androgynous face: Gender Radicalist", (2 - ((1 - (FSValues.FSGenderRadicalist / 25)) * (slave.face / 30))));
 				} else if (arcologyInfo.fsActive('FSGenderFundamentalist')) {
-					adjustBeauty("Androgynous face: Gender Fundamentalist", (2 - ((1 + (FSVals.FSGenderFundamentalist / 25)) * (slave.face / 30))));
+					adjustBeauty("Androgynous face: Gender Fundamentalist", (2 - ((1 + (FSValues.FSGenderFundamentalist / 25)) * (slave.face / 30))));
 				} else {
 					adjustBeauty("Androgynous face: General", (2 - (slave.face / 30)));
 				}
@@ -423,12 +425,12 @@ globalThis.BeautyArray = function(slave) {
 	function calcFSNotFuckdollBeauty(slave) {
 		if (arcologyInfo.fsActive('FSSupremacist')) {
 			if (slave.race === arcology.FSSupremacistRace) {
-				adjustBeauty("Supremacist Race", ((FSVals.FSSupremacist / 3) + (arcology.FSSupremacistLawME * 10)));
+				adjustBeauty("Supremacist Race", ((FSValues.FSSupremacist / 3) + (arcology.FSSupremacistLawME * 10)));
 			}
 		}
 		if (arcologyInfo.fsActive('FSSubjugationist')) {
 			if (slave.race === arcology.FSSubjugationistRace) {
-				adjustBeauty("Inferior Race", -((FSVals.FSSubjugationist / 2) - (arcology.FSSubjugationistLawME * 10)));
+				adjustBeauty("Inferior Race", -((FSValues.FSSubjugationist / 2) - (arcology.FSSubjugationistLawME * 10)));
 			}
 		}
 		if (arcology.FSGenderFundamentalistLawBimbo === 1) { // TODO: Needs review in light of miseducation
@@ -441,70 +443,70 @@ globalThis.BeautyArray = function(slave) {
 			}
 		} else if (arcologyInfo.fsActive('FSSlaveProfessionalism')) {
 			if (slave.intelligenceImplant >= 30) {
-				adjustBeauty("Highly Educated: Professionalism", (5 + (FSVals.FSSlaveProfessionalism / 10))); /* 15 */
+				adjustBeauty("Highly Educated: Professionalism", (5 + (FSValues.FSSlaveProfessionalism / 10))); /* 15 */
 			} else if (slave.intelligenceImplant >= 15) {
-				adjustBeauty("Educated: Professionalism", (FSVals.FSSlaveProfessionalism / 20)); /* 5 */
+				adjustBeauty("Educated: Professionalism", (FSValues.FSSlaveProfessionalism / 20)); /* 5 */
 			} else {
-				adjustBeauty("Low Education/Miseducated: Professionalism", -(((FSVals.FSSlaveProfessionalism / 10) * 3) - slave.intelligenceImplant)); /* -30 */
+				adjustBeauty("Low Education/Miseducated: Professionalism", -(((FSValues.FSSlaveProfessionalism / 10) * 3) - slave.intelligenceImplant)); /* -30 */
 			}
 		} else if (arcologyInfo.fsActive('FSIntellectualDependency')) {
 			if (slave.intelligenceImplant > 15) {
-				adjustBeauty("Educated: Intellectual Dependency", -((FSVals.FSIntellectualDependency / 10) * (slave.intelligenceImplant / 10))); /* -30 */
+				adjustBeauty("Educated: Intellectual Dependency", -((FSValues.FSIntellectualDependency / 10) * (slave.intelligenceImplant / 10))); /* -30 */
 			}
 		}
 		if (arcologyInfo.fsActive('FSSlaveProfessionalism')) {
-			adjustBeauty("Skilled: Slave Professionalism", ((FSVals.FSSlaveProfessionalism / 50) * ((slave.skill.entertainment + slave.skill.whoring + slave.skill.oral + slave.skill.anal + slave.skill.vaginal + adjustedPenSkill(slave)) / 100))); /* 10 */
+			adjustBeauty("Skilled: Slave Professionalism", ((FSValues.FSSlaveProfessionalism / 50) * ((slave.skill.entertainment + slave.skill.whoring + slave.skill.oral + slave.skill.anal + slave.skill.vaginal + adjustedPenSkill(slave)) / 100))); /* 10 */
 		}
 		if (arcologyInfo.fsActive('FSYouthPreferentialist')) {
 			if (slave.visualAge < 30) {
-				adjustBeauty("Age: Youth Preferentialist", Math.clamp(((FSVals.FSYouthPreferentialist / 2) + (arcology.FSYouthPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */
+				adjustBeauty("Age: Youth Preferentialist", Math.clamp(((FSValues.FSYouthPreferentialist / 2) + (arcology.FSYouthPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */
 			}
 		} else if (arcologyInfo.fsActive('FSMaturityPreferentialist')) {
 			if (slave.visualAge >= 30 && slave.visualAge < 60) {
-				adjustBeauty("Age: Maturity Preferentialist", Math.clamp(((FSVals.FSMaturityPreferentialist / 2) + (arcology.FSMaturityPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */
+				adjustBeauty("Age: Maturity Preferentialist", Math.clamp(((FSValues.FSMaturityPreferentialist / 2) + (arcology.FSMaturityPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */
 			}
 		}
 		if (arcology.FSBodyPurist > 20) {
 			/* bonus for virgin slaves */
 			if (slave.vagina === 0 && slave.counter.vaginal === 0) {
-				adjustBeauty("Vaginal: Body Purist", (30 * (FSVals.FSBodyPurist / 100)));
+				adjustBeauty("Vaginal: Body Purist", (30 * (FSValues.FSBodyPurist / 100)));
 			}
 			if (slave.anus === 0 && slave.counter.anal === 0) {
-				adjustBeauty("Anal: Body Purist", (30 * (FSVals.FSBodyPurist / 100)));
+				adjustBeauty("Anal: Body Purist", (30 * (FSValues.FSBodyPurist / 100)));
 			}
 		}
 		if (arcologyInfo.fsActive('FSEdoRevivalist')) {
 			if (slave.nationality === "Japanese" || slave.nationality === "Edo Revivalist") {
-				adjustBeauty("Nationality: Japanese: Edo Revivalist", (FSVals.FSEdoRevivalist / 2));
+				adjustBeauty("Nationality: Japanese: Edo Revivalist", (FSValues.FSEdoRevivalist / 2));
 			} else if (slave.race === "asian") {
-				adjustBeauty("Race: Asian: Edo Revivalist", (FSVals.FSEdoRevivalist / 5));
+				adjustBeauty("Race: Asian: Edo Revivalist", (FSValues.FSEdoRevivalist / 5));
 			} else {
-				adjustBeauty("Neither Asian nor Japanese: Edo Revivalist", -(FSVals.FSEdoRevivalist / 4));
+				adjustBeauty("Neither Asian nor Japanese: Edo Revivalist", -(FSValues.FSEdoRevivalist / 4));
 			}
 			if (V.language === "Japanese" && canTalk(slave)) {
 				if (slave.accent > 1) {
-					adjustBeauty("Heavy Foreign Accent: Edo Revivalist", -(FSVals.FSEdoRevivalist / 2));
+					adjustBeauty("Heavy Foreign Accent: Edo Revivalist", -(FSValues.FSEdoRevivalist / 2));
 				} else if (slave.accent > 0) {
-					adjustBeauty("Foreign Accent: Edo Revivalist", -(FSVals.FSEdoRevivalist / 5));
+					adjustBeauty("Foreign Accent: Edo Revivalist", -(FSValues.FSEdoRevivalist / 5));
 				} else {
-					adjustBeauty("No Accent: Edo Revivalist", (FSVals.FSEdoRevivalist / 10));
+					adjustBeauty("No Accent: Edo Revivalist", (FSValues.FSEdoRevivalist / 10));
 				}
 			}
 		} else if (arcologyInfo.fsActive('FSChineseRevivalist')) {
 			if (slave.nationality === "Chinese" || slave.nationality === "Ancient Chinese Revivalist") {
-				adjustBeauty("Nationality: Chinese: Chinese Revivalist", (FSVals.FSChineseRevivalist / 2));
+				adjustBeauty("Nationality: Chinese: Chinese Revivalist", (FSValues.FSChineseRevivalist / 2));
 			} else if (slave.race === "asian") {
-				adjustBeauty("Race: Asian: Chinese Revivalist", (FSVals.FSChineseRevivalist / 5));
+				adjustBeauty("Race: Asian: Chinese Revivalist", (FSValues.FSChineseRevivalist / 5));
 			} else {
-				adjustBeauty("Neither Asian nor Chinese: Chinese Revivalist", -(FSVals.FSChineseRevivalist / 4));
+				adjustBeauty("Neither Asian nor Chinese: Chinese Revivalist", -(FSValues.FSChineseRevivalist / 4));
 			}
 			if (V.language === "Chinese" && canTalk(slave)) {
 				if (slave.accent > 1) {
-					adjustBeauty("Heavy Foreign Accent: Chinese Revivalist", -(FSVals.FSChineseRevivalist / 2));
+					adjustBeauty("Heavy Foreign Accent: Chinese Revivalist", -(FSValues.FSChineseRevivalist / 2));
 				} else if (slave.accent > 0) {
-					adjustBeauty("Foreign Accent: Chinese Revivalist", -(FSVals.FSChineseRevivalist / 5));
+					adjustBeauty("Foreign Accent: Chinese Revivalist", -(FSValues.FSChineseRevivalist / 5));
 				} else {
-					adjustBeauty("No Accent: Chinese Revivalist", (FSVals.FSChineseRevivalist / 10));
+					adjustBeauty("No Accent: Chinese Revivalist", (FSValues.FSChineseRevivalist / 10));
 				}
 			}
 		}
@@ -547,11 +549,11 @@ globalThis.BeautyArray = function(slave) {
 	function calcDickBeauty(slave) {
 		if (arcology.FSAssetExpansionist > 20 && !arcologyInfo.fsActive('FSGenderFundamentalist')) {
 			if (slave.dick >= 20) {
-				adjustBeauty("Enormous Dick: Asset Expansionist", (17 + (slave.dick * (FSVals.FSAssetExpansionist / 500)))); /* 23 */
+				adjustBeauty("Enormous Dick: Asset Expansionist", (17 + (slave.dick * (FSValues.FSAssetExpansionist / 500)))); /* 23 */
 			} else if (slave.dick >= 10) {
-				adjustBeauty("Huge Dick: Asset Expansionist", (10 + (slave.dick * (FSVals.FSAssetExpansionist / 300)))); /* 16.3 */
+				adjustBeauty("Huge Dick: Asset Expansionist", (10 + (slave.dick * (FSValues.FSAssetExpansionist / 300)))); /* 16.3 */
 			} else if (slave.dick > 6) {
-				adjustBeauty("Large Dick: Asset Expansionist", (slave.dick * (1 + (FSVals.FSAssetExpansionist / 100)))); /* 10 */
+				adjustBeauty("Large Dick: Asset Expansionist", (slave.dick * (1 + (FSValues.FSAssetExpansionist / 100)))); /* 10 */
 			}
 		} else if (arcologyInfo.fsActive('FSGenderFundamentalist')) {
 			if (slave.dick > 0) {
@@ -563,11 +565,11 @@ globalThis.BeautyArray = function(slave) {
 			}
 		} else if (arcologyInfo.fsActive('FSGenderRadicalist')) {
 			if (slave.dick > 20) {
-				adjustBeauty("EnormousDick: Gender Radicalist", (20 + (slave.dick * (FSVals.FSGenderRadicalist / 400)))); /* 27.5 */
+				adjustBeauty("EnormousDick: Gender Radicalist", (20 + (slave.dick * (FSValues.FSGenderRadicalist / 400)))); /* 27.5 */
 			} else if (slave.dick >= 10) {
-				adjustBeauty("HugeDick: Gender Radicalist", (10 + (slave.dick * (FSVals.FSGenderRadicalist / 200)))); /* 20 */
+				adjustBeauty("HugeDick: Gender Radicalist", (10 + (slave.dick * (FSValues.FSGenderRadicalist / 200)))); /* 20 */
 			} else if (slave.dick > 0) {
-				adjustBeauty("Dick: Gender Radicalist", (slave.dick * (1 + (FSVals.FSGenderRadicalist / 100)))); /* 10 */
+				adjustBeauty("Dick: Gender Radicalist", (slave.dick * (1 + (FSValues.FSGenderRadicalist / 100)))); /* 10 */
 			}
 		} else {
 			// this will need to be split into male/female in the future
@@ -581,28 +583,28 @@ globalThis.BeautyArray = function(slave) {
 	function calcBallsBeauty(slave) {
 		if (arcology.FSAssetExpansionist > 20 && !arcologyInfo.fsActive('FSGenderFundamentalist')) {
 			if (slave.balls > 100) {
-				adjustBeauty("Inhuman Balls: Asset Expansionist", (41 + (slave.balls * (FSVals.FSAssetExpansionist / 500)))); /* 66 */
+				adjustBeauty("Inhuman Balls: Asset Expansionist", (41 + (slave.balls * (FSValues.FSAssetExpansionist / 500)))); /* 66 */
 			} else if (slave.balls > 80) {
-				adjustBeauty("Enormous Balls: Asset Expansionist", (16 + (slave.balls * (FSVals.FSAssetExpansionist / 400)))); /* 41 */
+				adjustBeauty("Enormous Balls: Asset Expansionist", (16 + (slave.balls * (FSValues.FSAssetExpansionist / 400)))); /* 41 */
 			} else if (slave.balls > 60) {
-				adjustBeauty("Huge Balls: Asset Expansionist", (6 + (slave.balls * (FSVals.FSAssetExpansionist / 800)))); /* 16 */
+				adjustBeauty("Huge Balls: Asset Expansionist", (6 + (slave.balls * (FSValues.FSAssetExpansionist / 800)))); /* 16 */
 			} else if (slave.balls > 10) {
-				adjustBeauty("Big Balls: Asset Expansionist", (slave.balls * (FSVals.FSAssetExpansionist / 1000))); /* 6 */
+				adjustBeauty("Big Balls: Asset Expansionist", (slave.balls * (FSValues.FSAssetExpansionist / 1000))); /* 6 */
 			}
 		} else if (arcologyInfo.fsActive('FSGenderFundamentalist')) {
 			if (slave.scrotum > 0) {
-				adjustBeauty("Scrotum: Gender Fundamentalist", -(slave.balls * (1 + (FSVals.FSGenderFundamentalist / 200))));
+				adjustBeauty("Scrotum: Gender Fundamentalist", -(slave.balls * (1 + (FSValues.FSGenderFundamentalist / 200))));
 			}
 		} else if (arcologyInfo.fsActive('FSGenderRadicalist')) {
 			if (slave.scrotum > 0) {
 				if (slave.balls > 100) {
-					adjustBeauty("Inhuman Scrotum: Gender Radicalist", (40 + (slave.balls * (FSVals.FSGenderRadicalist / 2000)))); /* 46.25 */
+					adjustBeauty("Inhuman Scrotum: Gender Radicalist", (40 + (slave.balls * (FSValues.FSGenderRadicalist / 2000)))); /* 46.25 */
 				} else if (slave.balls > 60) {
-					adjustBeauty("Enormous Scrotum: Gender Radicalist", (30 + (slave.balls * (FSVals.FSGenderRadicalist / 1000)))); /* 40 */
+					adjustBeauty("Enormous Scrotum: Gender Radicalist", (30 + (slave.balls * (FSValues.FSGenderRadicalist / 1000)))); /* 40 */
 				} else if (slave.balls > 10) {
-					adjustBeauty("Huge Scrotum: Gender Radicalist", (15 + (slave.balls * (FSVals.FSGenderRadicalist / 400)))); /* 30 */
+					adjustBeauty("Huge Scrotum: Gender Radicalist", (15 + (slave.balls * (FSValues.FSGenderRadicalist / 400)))); /* 30 */
 				} else {
-					adjustBeauty("Scrotum: Gender Radicalist", (slave.balls * (1 + (FSVals.FSGenderRadicalist / 200)))); /* 15 */
+					adjustBeauty("Scrotum: Gender Radicalist", (slave.balls * (1 + (FSValues.FSGenderRadicalist / 200)))); /* 15 */
 				}
 			}
 		} else {
@@ -613,7 +615,7 @@ globalThis.BeautyArray = function(slave) {
 		if (arcologyInfo.fsActive('FSRestart')) {
 			/* Eugenics does not like slaves having working balls */
 			if (slave.ballType === "human") {
-				adjustBeauty("Balls: Eugenics", -(slave.balls * (1 + (FSVals.FSRestart / 100))));
+				adjustBeauty("Balls: Eugenics", -(slave.balls * (1 + (FSValues.FSRestart / 100))));
 			}
 		}
 	}
@@ -842,9 +844,9 @@ globalThis.BeautyArray = function(slave) {
 				adjustBeauty("Boob Shape", -4);
 			} else if (slave.boobShape === "spherical") {
 				if (arcologyInfo.fsActive('FSTransformationFetishist')) {
-					adjustBeauty("Boob Shape: Transformation Fetishist", (FSVals.FSTransformationFetishist / 10));
+					adjustBeauty("Boob Shape: Transformation Fetishist", (FSValues.FSTransformationFetishist / 10));
 				} else if (arcologyInfo.fsActive('FSBodyPurist')) {
-					adjustBeauty("Boob Shape: Body Purist", -(FSVals.FSBodyPurist / 2));
+					adjustBeauty("Boob Shape: Body Purist", -(FSValues.FSBodyPurist / 2));
 				} else {
 					adjustBeauty("Boob Shape", -1);
 				}
@@ -860,11 +862,11 @@ globalThis.BeautyArray = function(slave) {
 			adjustBeauty("Nipples", -2);
 		} else if (slave.nipples === "fuckable") {
 			if (arcologyInfo.fsActive('FSTransformationFetishist')) {
-				adjustBeauty("Nipples: Transformation Fetishist", (FSVals.FSTransformationFetishist / 10));
+				adjustBeauty("Nipples: Transformation Fetishist", (FSValues.FSTransformationFetishist / 10));
 			}
 		} else if (slave.nipples === "flat") {
 			if (arcologyInfo.fsActive('FSTransformationFetishist')) {
-				adjustBeauty("Nipples: Transformation Fetishist", (FSVals.FSTransformationFetishist / 20));
+				adjustBeauty("Nipples: Transformation Fetishist", (FSValues.FSTransformationFetishist / 20));
 			} else {
 				adjustBeauty("Nipples", -2);
 			}
@@ -923,7 +925,7 @@ globalThis.BeautyArray = function(slave) {
 		if (arcologyInfo.fsActive('FSPhysicalIdealist')) {
 			if (arcology.FSPhysicalIdealistStrongFat === 1) {
 				if (slave.weight > 10 && slave.weight <= 130) {
-					adjustBeauty("Weight: Physical Idealist: Strongfat", (slave.weight * (FSVals.FSPhysicalIdealist / 200))); /* 65 */
+					adjustBeauty("Weight: Physical Idealist: Strongfat", (slave.weight * (FSValues.FSPhysicalIdealist / 200))); /* 65 */
 				} else {
 					adjustBeauty("Weight: Physical Idealist: Strongfat", -(Math.abs(slave.weight) / 2));
 				}
@@ -943,23 +945,23 @@ globalThis.BeautyArray = function(slave) {
 		if (arcologyInfo.fsActive('FSPhysicalIdealist')) {
 			if (arcology.FSPhysicalIdealistLaw === 1) {
 				if (Math.abs(slave.weight) <= 30 && slave.health.condition >= 20 && slave.muscles >= 20 && slave.muscles <= 50) {
-					adjustBeauty("Muscles: Physical Idealist: Fit Feminine Ideal", ((slave.muscles + (Math.min(slave.health.condition, 300) / 5)) * (FSVals.FSPhysicalIdealist / 100)));
+					adjustBeauty("Muscles: Physical Idealist: Fit Feminine Ideal", ((slave.muscles + (Math.min(slave.health.condition, 300) / 5)) * (FSValues.FSPhysicalIdealist / 100)));
 				} else {
 					adjustBeauty("Muscles: Physical Idealist: Fit Feminine Ideal", -(30));
 				}
 			} else {
 				if (slave.muscles > 30 || slave.muscles <= -5) {
-					adjustBeauty("Muscles: Physical Idealist", (slave.muscles * (FSVals.FSPhysicalIdealist / 120))); /* +-83 */
+					adjustBeauty("Muscles: Physical Idealist", (slave.muscles * (FSValues.FSPhysicalIdealist / 120))); /* +-83 */
 				}
 			}
 		} else if (arcologyInfo.fsActive('FSHedonisticDecadence')) {
 			if (slave.muscles < -10) {
-				adjustBeauty("Muscles: Hedonistic Decadence", (Math.abs(slave.muscles) * (FSVals.FSHedonisticDecadence / 160))); /* 62.5 */
+				adjustBeauty("Muscles: Hedonistic Decadence", (Math.abs(slave.muscles) * (FSValues.FSHedonisticDecadence / 160))); /* 62.5 */
 			} else if (slave.muscles > 5) {
 				if (arcology.FSHedonisticDecadenceStrongFat === 1) {
-					adjustBeauty("Muscles: Hedonistic Decadence: Strongfat", (slave.muscles * (FSVals.FSHedonisticDecadence / 200))); /* 50 */
+					adjustBeauty("Muscles: Hedonistic Decadence: Strongfat", (slave.muscles * (FSValues.FSHedonisticDecadence / 200))); /* 50 */
 				} else {
-					adjustBeauty("Muscles: Hedonistic Decadence", -(slave.muscles * (FSVals.FSHedonisticDecadence / 200))); /* -50 */
+					adjustBeauty("Muscles: Hedonistic Decadence", -(slave.muscles * (FSValues.FSHedonisticDecadence / 200))); /* -50 */
 				}
 			}
 		}
@@ -1024,23 +1026,23 @@ globalThis.BeautyArray = function(slave) {
 	function calcImplantBeauty(slave) {
 		if (arcologyInfo.fsActive('FSTransformationFetishist')) {
 			if (Math.abs(slave.shouldersImplant) > 1) {
-				adjustBeauty("Shoulders Implant: Transformation Fetishist", ((FSVals.FSTransformationFetishist / 20) + Math.abs(slave.shouldersImplant)));
+				adjustBeauty("Shoulders Implant: Transformation Fetishist", ((FSValues.FSTransformationFetishist / 20) + Math.abs(slave.shouldersImplant)));
 			}
 			if (Math.abs(slave.hipsImplant) > 1) {
-				adjustBeauty("Hips Implant: Transformation Fetishist", ((FSVals.FSTransformationFetishist / 20) + Math.abs(slave.hipsImplant)));
+				adjustBeauty("Hips Implant: Transformation Fetishist", ((FSValues.FSTransformationFetishist / 20) + Math.abs(slave.hipsImplant)));
 			}
 			if (slave.race !== slave.origRace) {
-				adjustBeauty("Race Implant: Transformation Fetishist", (FSVals.FSTransformationFetishist / 20));
+				adjustBeauty("Race Implant: Transformation Fetishist", (FSValues.FSTransformationFetishist / 20));
 			}
 			if (slave.faceImplant > 95 && slave.face > 40) {
-				adjustBeauty("Face Implant: Transformation Fetishist", (FSVals.FSTransformationFetishist / 4));
+				adjustBeauty("Face Implant: Transformation Fetishist", (FSValues.FSTransformationFetishist / 4));
 			}
 		} else if (arcologyInfo.fsActive('FSBodyPurist')) {
 			if (slave.faceImplant > 5) {
-				adjustBeauty("Face Implant: Body Purist", -((FSVals.FSBodyPurist / 100) * (slave.faceImplant / 10)));
+				adjustBeauty("Face Implant: Body Purist", -((FSValues.FSBodyPurist / 100) * (slave.faceImplant / 10)));
 			}
 			if (slave.race !== slave.origRace) {
-				adjustBeauty("Race Implant: Body Purist", -(FSVals.FSBodyPurist / 5));
+				adjustBeauty("Race Implant: Body Purist", -(FSValues.FSBodyPurist / 5));
 			}
 		} else {
 			if (slave.faceImplant > 30) {
@@ -1056,43 +1058,43 @@ globalThis.BeautyArray = function(slave) {
 		if (slave.preg > slave.pregData.normalBirth / 1.33) {
 			/* limited huge boost for full term */
 			if (slave.broodmother > 0) {
-				adjustBeauty("Preg Beauty: Broodmother", (0.4 * (slave.broodmother * FSVals.FSRepopulationFocus))); /* 40-80 limited due to constant presence. Also good breeders, but subpar mothers */
+				adjustBeauty("Preg Beauty: Broodmother", (0.4 * (slave.broodmother * FSValues.FSRepopulationFocus))); /* 40-80 limited due to constant presence. Also good breeders, but subpar mothers */
 			} else if (slave.bellyPreg >= 600000) {
-				adjustBeauty("Preg Beauty", (1.5 * FSVals.FSRepopulationFocus)); /* 150 */
+				adjustBeauty("Preg Beauty", (1.5 * FSValues.FSRepopulationFocus)); /* 150 */
 			} else if (slave.bellyPreg >= 300000) {
-				adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus)); /* 100 */
+				adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus)); /* 100 */
 			} else if (slave.bellyPreg >= 120000) {
-				adjustBeauty("Preg Beauty", (0.9 * FSVals.FSRepopulationFocus)); /* 90 */
+				adjustBeauty("Preg Beauty", (0.9 * FSValues.FSRepopulationFocus)); /* 90 */
 			} else {
-				adjustBeauty("Preg Beauty", (0.8 * FSVals.FSRepopulationFocus)); /* 80 */
+				adjustBeauty("Preg Beauty", (0.8 * FSValues.FSRepopulationFocus)); /* 80 */
 			}
 		} else if (slave.preg > slave.pregData.normalBirth / 2) {
 			if (slave.pregType >= 20) {
-				adjustBeauty("Preg Beauty", (10 * (FSVals.FSRepopulationFocus / 40))); /* 25 */
+				adjustBeauty("Preg Beauty", (10 * (FSValues.FSRepopulationFocus / 40))); /* 25 */
 			} else if (slave.pregType >= 10) {
-				adjustBeauty("Preg Beauty", (9 * (FSVals.FSRepopulationFocus / 40))); /* 22.5 */
+				adjustBeauty("Preg Beauty", (9 * (FSValues.FSRepopulationFocus / 40))); /* 22.5 */
 			} else {
-				adjustBeauty("Preg Beauty", (8 * (FSVals.FSRepopulationFocus / 40))); /* 20 */
+				adjustBeauty("Preg Beauty", (8 * (FSValues.FSRepopulationFocus / 40))); /* 20 */
 			}
 		} else if (slave.preg > slave.pregData.normalBirth / 4) {
 			if (slave.pregType >= 20) {
-				adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus / 5)); /* 20 */
+				adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus / 5)); /* 20 */
 			} else if (slave.pregType >= 10) {
-				adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus / 6.25)); /* 16 */
+				adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus / 6.25)); /* 16 */
 			} else {
-				adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus / 10)); /* 10 */
+				adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus / 10)); /* 10 */
 			}
 		} else if (slave.pregWeek < 0) {
-			adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus / 10)); /* 10 */
+			adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus / 10)); /* 10 */
 		} else if (slave.preg > 0 && slave.collar === "preg biometrics") {
-			adjustBeauty("Preg Beauty", (FSVals.FSRepopulationFocus / 12)); /* 8.33 */
+			adjustBeauty("Preg Beauty", (FSValues.FSRepopulationFocus / 12)); /* 8.33 */
 		} else {
-			adjustBeauty("Preg Beauty", -(FSVals.FSRepopulationFocus / 2.5)); /* -40 */
+			adjustBeauty("Preg Beauty", -(FSValues.FSRepopulationFocus / 2.5)); /* -40 */
 		}
 		if (slave.counter.births > 50) {
-			adjustBeauty("Preg Beauty: Births", (FSVals.FSRepopulationFocus / 1.5)); /* 66.6 */
+			adjustBeauty("Preg Beauty: Births", (FSValues.FSRepopulationFocus / 1.5)); /* 66.6 */
 		} else {
-			adjustBeauty("Preg Beauty: Births", (slave.counter.births * (FSVals.FSRepopulationFocus / 75)));
+			adjustBeauty("Preg Beauty: Births", (slave.counter.births * (FSValues.FSRepopulationFocus / 75)));
 		}
 	}
 
@@ -1114,44 +1116,44 @@ globalThis.BeautyArray = function(slave) {
 	function calcRestartPregBeauty(slave) {
 		if (slave.breedingMark === 1 && V.propOutcome === 1) {
 			if ((slave.preg > slave.pregData.normalBirth / 8) && ((slave.pregSource === -1) || (slave.pregSource === -6))) {
-				adjustBeauty("Preg Beauty: Eugenics", (FSVals.FSRestart)); /* 100 */
+				adjustBeauty("Preg Beauty: Eugenics", (FSValues.FSRestart)); /* 100 */
 			}
 		} else {
 			if (slave.preg > slave.pregData.normalBirth / 1.33) {
 				if (slave.bellyPreg >= 600000) {
-					adjustBeauty("Preg Beauty: Eugenics", -(2.5 * FSVals.FSRestart)); /* -250 */
+					adjustBeauty("Preg Beauty: Eugenics", -(2.5 * FSValues.FSRestart)); /* -250 */
 				} else if (slave.bellyPreg >= 300000) {
-					adjustBeauty("Preg Beauty: Eugenics", -(1.25 * FSVals.FSRestart)); /* -125 */
+					adjustBeauty("Preg Beauty: Eugenics", -(1.25 * FSValues.FSRestart)); /* -125 */
 				} else if (slave.bellyPreg >= 120000) {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart)); /* -100 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart)); /* -100 */
 				} else {
-					adjustBeauty("Preg Beauty: Eugenics", -(0.75 * FSVals.FSRestart)); /* -75 */
+					adjustBeauty("Preg Beauty: Eugenics", -(0.75 * FSValues.FSRestart)); /* -75 */
 				}
 			} else if (slave.preg > slave.pregData.normalBirth / 2) {
 				if (slave.pregType >= 20) {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart / 1.5)); /* -66.6 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart / 1.5)); /* -66.6 */
 				} else if (slave.pregType >= 10) {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart / 2)); /* -50 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart / 2)); /* -50 */
 				} else {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart / 3)); /* -33.3 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart / 3)); /* -33.3 */
 				}
 			} else if (slave.preg > slave.pregData.normalBirth / 4) {
 				if (slave.pregType >= 20) {
-					adjustBeauty("Preg Beauty: Eugenics", -(3 * (FSVals.FSRestart / 8))); /* -37.5 */
+					adjustBeauty("Preg Beauty: Eugenics", -(3 * (FSValues.FSRestart / 8))); /* -37.5 */
 				} else if (slave.pregType >= 10) {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart / 4)); /* -25 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart / 4)); /* -25 */
 				} else {
-					adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart / 8)); /* -12.5 */
+					adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart / 8)); /* -12.5 */
 				}
 			} else if (slave.preg === -2) {
-				adjustBeauty("Preg Beauty: Eugenics", (FSVals.FSRestart / 7)); /* 14.2 */
+				adjustBeauty("Preg Beauty: Eugenics", (FSValues.FSRestart / 7)); /* 14.2 */
 			} else if (slave.preg < 1) {
-				adjustBeauty("Preg Beauty: Eugenics", (FSVals.FSRestart / 5)); /* 20 */
+				adjustBeauty("Preg Beauty: Eugenics", (FSValues.FSRestart / 5)); /* 20 */
 			}
 			if (slave.counter.births > 50) {
-				adjustBeauty("Preg Beauty: Eugenics", -(FSVals.FSRestart)); /* -100 */
+				adjustBeauty("Preg Beauty: Eugenics", -(FSValues.FSRestart)); /* -100 */
 			} else {
-				adjustBeauty("Preg Beauty: Eugenics", -(slave.counter.births * (FSVals.FSRestart / 50)));
+				adjustBeauty("Preg Beauty: Eugenics", -(slave.counter.births * (FSValues.FSRestart / 50)));
 			}
 		}
 	}
@@ -1277,8 +1279,8 @@ globalThis.BeautyArray = function(slave) {
 			adjustBeauty("Small Balls: Femboy: Futa Law", 8);
 		}
 		if (slave.faceShape === "cute" && slave.face > 0) {
-			/* uggos need not apply, maybe a small boost for other faceShapes */
-			adjustBeauty("Cute face: Femboy: Futa Law", (((FSVals.FSGenderRadicalist / 25) * (slave.face / 30)) - 2)); /* gives a slightly better boost than androgynous does with gender radical boost, 15.3 */
+			/* ugly slaves need not apply, maybe a small boost for other faceShapes */
+			adjustBeauty("Cute face: Femboy: Futa Law", (((FSValues.FSGenderRadicalist / 25) * (slave.face / 30)) - 2)); /* gives a slightly better boost than androgynous does with gender radical boost, 15.3 */
 		}
 		if (slave.nipples === "tiny") {
 			adjustBeauty("Tiny Nipples: Femboy: Futa Law", 5);
@@ -1296,7 +1298,7 @@ globalThis.BeautyArray = function(slave) {
 		if (arcologyInfo.fsActive('FSGenderFundamentalist')) {
 			if (slave.shoulders > slave.hips) {
 				if (slave.boobs <= 2000 * (slave.shoulders - slave.hips)) {
-					adjustBeauty("Body Proportion: Gender Fundamentalist", -((slave.shoulders - slave.hips) * (1 + (FSVals.FSGenderFundamentalist / 200))));
+					adjustBeauty("Body Proportion: Gender Fundamentalist", -((slave.shoulders - slave.hips) * (1 + (FSValues.FSGenderFundamentalist / 200))));
 				}
 			}
 		} else if (!arcologyInfo.fsActive('FSGenderRadicalist')) {
@@ -1367,14 +1369,14 @@ globalThis.BeautyArray = function(slave) {
 		if (arcology.FSTransformationFetishist > 20) {
 			if (slave.lips > 70) {
 				if (slave.lipsImplant / slave.lips < 0.5) {
-					adjustBeauty("Lips: Transformation Fetishist", -((slave.lips / 10) + (FSVals.FSTransformationFetishist / 20)));
+					adjustBeauty("Lips: Transformation Fetishist", -((slave.lips / 10) + (FSValues.FSTransformationFetishist / 20)));
 				}
 			}
 			if (slave.hips === 3) {
 				adjustBeauty("Hips: Transformation Fetishist", (10));
 			}
 			if (hasAnyProstheticLimbs(slave)) {
-				adjustBeauty("Artificial Limbs: Transformation Fetishist", (FSVals.FSTransformationFetishist / 5));
+				adjustBeauty("Artificial Limbs: Transformation Fetishist", (FSValues.FSTransformationFetishist / 5));
 			}
 			if (slave.horn !== "none" || slave.tail !== "none" || (slave.earShape !== "normal" && slave.earShape !== "damaged") || slave.earT !== "none") {
 				adjustBeauty("Horn/Tail/Odd Ears: Transformation Fetishist", (10));
@@ -1392,9 +1394,9 @@ globalThis.BeautyArray = function(slave) {
 		}
 		if (arcology.FSHedonisticDecadenceLaw2 === 1) {
 			if (slave.boobs >= 2000 && slave.butt >= 5 && slave.weight > 95) {
-				adjustBeauty("Boobs/Butt/Weight: Hedonistic Decadence: Rotund Feminine Ideal", (5 + (FSVals.FSHedonisticDecadence / 20))); /* 10 */
+				adjustBeauty("Boobs/Butt/Weight: Hedonistic Decadence: Rotund Feminine Ideal", (5 + (FSValues.FSHedonisticDecadence / 20))); /* 10 */
 			} else {
-				adjustBeauty("Boobs/Butt/Weight: Hedonistic Decadence: Rotund Feminine Ideal", -(15 + (FSVals.FSHedonisticDecadence / 20))); /* -20 */
+				adjustBeauty("Boobs/Butt/Weight: Hedonistic Decadence: Rotund Feminine Ideal", -(15 + (FSValues.FSHedonisticDecadence / 20))); /* -20 */
 			}
 		}
 		if (arcologyInfo.fsActive('FSSlaveProfessionalism')) {
@@ -1409,13 +1411,13 @@ globalThis.BeautyArray = function(slave) {
 				if (bimboDegree > 0) {
 					adjustBeauty("Bimbo Degree: Intellectual Dependency Law, Beauty", (Math.pow(2, bimboDegree))); /* 64 */
 				} else {
-					adjustBeauty("Bimbo Degree: Intellectual Dependency Law, Beauty", -(FSVals.FSIntellectualDependency)); /* -100 */
+					adjustBeauty("Bimbo Degree: Intellectual Dependency Law, Beauty", -(FSValues.FSIntellectualDependency)); /* -100 */
 				}
 			}
 			if (slave.energy > 80) {
-				adjustBeauty("Energy: Intellectual Dependency", ((FSVals.FSIntellectualDependency / 50) * (8 + (slave.energy / 10)))); /* 16 to 36 */
+				adjustBeauty("Energy: Intellectual Dependency", ((FSValues.FSIntellectualDependency / 50) * (8 + (slave.energy / 10)))); /* 16 to 36 */
 			} else if (slave.energy <= 60) {
-				adjustBeauty("Energy: Intellectual Dependency", -((FSVals.FSIntellectualDependency / 50) * (60 - slave.energy))); /* -120 to 0 */
+				adjustBeauty("Energy: Intellectual Dependency", -((FSValues.FSIntellectualDependency / 50) * (60 - slave.energy))); /* -120 to 0 */
 			}
 		}
 		if (arcology.FSChattelReligionistCreed === 1) {
@@ -1443,13 +1445,13 @@ globalThis.BeautyArray = function(slave) {
 	function calcPurityBeauty(slave) {
 		if (isPure(slave)) {
 			if (arcologyInfo.fsActive('FSBodyPurist')) {
-				adjustBeauty("Purity: Body Purist", (FSVals.FSBodyPurist / 5));
+				adjustBeauty("Purity: Body Purist", (FSValues.FSBodyPurist / 5));
 			}
 			if (!arcologyInfo.fsActive('FSTransformationFetishist')) {
 				adjustBeauty("Purity", 2);
 			}
 		} else if (arcologyInfo.fsActive('FSTransformationFetishist')) {
-			adjustBeauty("Purity: Transformation Fetishist", (FSVals.FSTransformationFetishist / 40));
+			adjustBeauty("Purity: Transformation Fetishist", (FSValues.FSTransformationFetishist / 40));
 		}
 	}
 
@@ -1483,9 +1485,9 @@ globalThis.BeautyArray = function(slave) {
 		if (physiquePass === 1) {
 			adjustBeauty("Physique Beauty", (40));
 			if (arcology.FSSlimnessEnthusiast > 20) {
-				adjustBeauty("Physique Beauty: Slimness Enthusiast", (FSVals.FSSlimnessEnthusiast / 20));
+				adjustBeauty("Physique Beauty: Slimness Enthusiast", (FSValues.FSSlimnessEnthusiast / 20));
 				if (canTalk(slave) && slave.voice === 3) {
-					adjustBeauty("Physique Beauty: Slimness Enthusiast: High Voice", (FSVals.FSSlimnessEnthusiast / 40));
+					adjustBeauty("Physique Beauty: Slimness Enthusiast: High Voice", (FSValues.FSSlimnessEnthusiast / 40));
 				}
 			}
 		} else if (isStacked(slave)) {
@@ -1493,9 +1495,9 @@ globalThis.BeautyArray = function(slave) {
 				adjustBeauty("Physique Beauty", 1);
 			}
 			if (arcology.FSAssetExpansionist > 20) {
-				adjustBeauty("Physique Beauty: Asset Expansionist", (FSVals.FSAssetExpansionist / 20));
+				adjustBeauty("Physique Beauty: Asset Expansionist", (FSValues.FSAssetExpansionist / 20));
 				if (canTalk(slave) && slave.voice === 3) {
-					adjustBeauty("Physique Beauty: Asset Expansionist: High Voice", (FSVals.FSAssetExpansionist / 40));
+					adjustBeauty("Physique Beauty: Asset Expansionist: High Voice", (FSValues.FSAssetExpansionist / 40));
 				}
 			}
 		}
@@ -1506,9 +1508,9 @@ globalThis.BeautyArray = function(slave) {
 	 */
 	function calcSlimBeauty(slave) {
 		if (slimLawPass(slave) === 1) {
-			adjustBeauty("Slim Beauty: Slimness Enthusiast: Slim Law", (40 + (FSVals.FSSlimnessEnthusiast / 20))); /* 45 */
+			adjustBeauty("Slim Beauty: Slimness Enthusiast: Slim Law", (40 + (FSValues.FSSlimnessEnthusiast / 20))); /* 45 */
 		} else {
-			adjustBeauty("Slim Beauty: Slimness Enthusiast", -(FSVals.FSSlimnessEnthusiast / 20));
+			adjustBeauty("Slim Beauty: Slimness Enthusiast", -(FSValues.FSSlimnessEnthusiast / 20));
 		}
 	}
 
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index 3641df7be43..45d41305378 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -883,13 +883,14 @@ App.UI.SlaveList.penthousePage = function() {
 
 	/**
 	 * Displays encyclopedia entries for occupations at the top of the tab, if enabled
+	 * @param {string} jobName
 	 * @returns {HTMLSpanElement}
 	 */
-	function encycTips(jn) {
+	function encyclopediaTips(jobName) {
 		const span = document.createElement("span");
 		span.classList.add("note");
 		if (V.showTipsFromEncy) {
-			switch (jn) {
+			switch (jobName) {
 				case "rest":
 					span.append(App.Encyclopedia.Assignments.rest());
 					break;
@@ -982,9 +983,9 @@ App.UI.SlaveList.penthousePage = function() {
 	for (const jn of ph.jobsNames) {
 		const slaves = _slavesForJob(jn);
 		if (slaves.n > 0) {
-			tabs.push(makeTabDesc(jn, `${ph.desc.jobs[jn].position}${V.useSlaveSummaryTabs > 0 ? ` (${slaves.n})` : ""}`, App.UI.DOM.combineNodes(encycTips(jn), slaves.dom)));
+			tabs.push(makeTabDesc(jn, `${ph.desc.jobs[jn].position}${V.useSlaveSummaryTabs > 0 ? ` (${slaves.n})` : ""}`, App.UI.DOM.combineNodes(encyclopediaTips(jn), slaves.dom)));
 		} else if (V.useSlaveSummaryTabs === 0) {
-			tabs.push(makeTabDesc(jn, ph.desc.jobs[jn].position, encycTips(jn)));
+			tabs.push(makeTabDesc(jn, ph.desc.jobs[jn].position, encyclopediaTips(jn)));
 		}
 	}
 
diff --git a/src/js/slaveSummaryHelpers.js b/src/js/slaveSummaryHelpers.js
index 5dfcc3fe444..7d8998803b6 100644
--- a/src/js/slaveSummaryHelpers.js
+++ b/src/js/slaveSummaryHelpers.js
@@ -3,6 +3,7 @@
 // (tweego process them in this order), or rework the references.
 
 /* eslint-disable camelcase */
+// cSpell:ignore Natr
 
 App.UI.SlaveSummaryImpl = function() {
 	const data = App.Data.SlaveSummary;
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 0196dc02bbf..54cd1e32384 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -1,3 +1,5 @@
+// cSpell:ignore RA-Exmt, Anaph, Relx, Chas
+
 App.UI.SlaveSummaryRenderers = function() {
 	const bits = App.UI.SlaveSummaryImpl.bits;
 	const helpers = App.UI.SlaveSummaryImpl.helpers;
diff --git a/src/js/speech.js b/src/js/speech.js
index 5e7ce2aa6c2..b92d6f48cf3 100644
--- a/src/js/speech.js
+++ b/src/js/speech.js
@@ -1,4 +1,6 @@
-/** Get all the enunciations used by a particular slave as a destructurable object.
+// cSpell:ignore Dadda
+
+/** Get all the enunciations used by a particular slave as a destructible object.
  * @param {App.Entity.SlaveState} slave
  * @returns {FC.Enunciation}
  */
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index 399708d5fe8..5b5dcc1651b 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -1,3 +1,8 @@
+// cSpell:ignore plet, novemcentu, octocentu, septemcentu, sexcentu, quincentu, quadricentu, tricentu, bicentu, centu
+// cSpell:ignore nonagint, octogint, sexagint, vigint, nonu, octu, septu, sextu, quintu, quadru
+// cSpell:ignore akth, ekth, ikth, okth, ukth, ykth
+// cSpell:ignore intimidatee, intimidater
+
 globalThis.peacekeepersCanBeEstablished = function() {
 	return V.invasionVictory > 0 && App.Events.effectiveWeek() > 48;
 };
@@ -680,15 +685,15 @@ globalThis.generatePlayerPronouns = function(PC) {
 };
 
 /**
- * @param {number} nmbr1
- * @param {number} nmbr2
+ * @param {number} number1
+ * @param {number} number2
  */
-globalThis.pregNumberName = function(nmbr1, nmbr2) {
+globalThis.pregNumberName = function(number1, number2) {
 	let pt = "";
-	let p1 = nmbr1 % 10;
-	let p2 = ((nmbr1 % 100) - (nmbr1 % 10)) / 10;
-	let p3 = ((nmbr1 % 1000) - (nmbr1 % 100)) / 100;
-	switch (nmbr1) {
+	let p1 = number1 % 10;
+	let p2 = ((number1 % 100) - (number1 % 10)) / 10;
+	let p3 = ((number1 % 1000) - (number1 % 100)) / 100;
+	switch (number1) {
 		case 1:
 			pt += "bab";
 			break;
@@ -696,7 +701,7 @@ globalThis.pregNumberName = function(nmbr1, nmbr2) {
 			pt += "twin";
 			break;
 		default:
-			switch (nmbr1) {
+			switch (number1) {
 				case 3:
 					pt += "tri";
 					break;
@@ -777,7 +782,7 @@ globalThis.pregNumberName = function(nmbr1, nmbr2) {
 							pt += "nonagint";
 							break;
 					}
-					if (nmbr1 >= 100) {
+					if (number1 >= 100) {
 						if (p2 !== 0) {
 							pt += "i";
 						}
@@ -816,13 +821,13 @@ globalThis.pregNumberName = function(nmbr1, nmbr2) {
 			}
 			pt += "plet";
 	}
-	if (nmbr2 === 2) {
-		if (nmbr1 === 1) {
+	if (number2 === 2) {
+		if (number1 === 1) {
 			pt += "ie";
 		}
 		pt += "s";
 	} else {
-		if (nmbr1 === 1) {
+		if (number1 === 1) {
 			pt += "y";
 		}
 	}
diff --git a/src/js/utilsArcology.js b/src/js/utilsArcology.js
index 3ad6588c3a1..422b493e620 100644
--- a/src/js/utilsArcology.js
+++ b/src/js/utilsArcology.js
@@ -181,27 +181,27 @@ App.Utils.Arcology = class {
 	}
 
 	/**
-	 * @param {FC.FutureSociety[]} fses
+	 * @param {FC.FutureSociety[]} FSes
 	 * @returns {boolean}
 	 */
-	fsActiveSome(...fses) {
-		return fses.some((fs) => this.fsActive(fs));
+	fsActiveSome(...FSes) {
+		return FSes.some((fs) => this.fsActive(fs));
 	}
 
 	/**
-	 * @param {FC.FutureSociety[]} fses
+	 * @param {FC.FutureSociety[]} FSes
 	 * @returns {boolean}
 	 */
-	fsActiveEvery(...fses) {
-		return fses.every((fs) => this.fsActive(fs));
+	fsActiveEvery(...FSes) {
+		return FSes.every((fs) => this.fsActive(fs));
 	}
 
 	/**
-	 * @param {FC.FutureSociety[]} fses
+	 * @param {FC.FutureSociety[]} FSes
 	 * @returns {number}
 	 */
-	countActive(...fses) {
-		return fses.reduce((count, fs) => this.fsActive(fs) ? count + 1 : count, 0);
+	countActive(...FSes) {
+		return FSes.reduce((count, fs) => this.fsActive(fs) ? count + 1 : count, 0);
 	}
 
 	/**
diff --git a/src/js/utilsMisc.js b/src/js/utilsMisc.js
index 168d10115fe..668b3b745e9 100644
--- a/src/js/utilsMisc.js
+++ b/src/js/utilsMisc.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Musc
+
 /**
  * A categorizer is used to "slice" a value range into distinct categories in an efficient manner.
  *
diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js
index eb4beb339bf..5250da7fdcf 100644
--- a/src/js/utilsPC.js
+++ b/src/js/utilsPC.js
@@ -1,3 +1,5 @@
+// cSpell:ignore Educatrix, Tlatoani, Cihuacoatl, Implantrix, Repopulist, Pharmacologes, Pharmacologos
+
 /**
  * @returns {App.Entity.PlayerState}
  */
diff --git a/src/js/utilsSC.js b/src/js/utilsSC.js
index 1fbc2e20367..2a71143307f 100644
--- a/src/js/utilsSC.js
+++ b/src/js/utilsSC.js
@@ -171,7 +171,7 @@ App.UI.tabBar = function() {
 		return outerDiv;
 	}
 
-	function handlePreSelectedTab(defaultTab = "assign", immidiate = false) {
+	function handlePreSelectedTab(defaultTab = "assign", immediate = false) {
 		let selectedTab = V.tabChoice[tabChoiceVarName()];
 		if (!selectedTab) {
 			selectedTab = defaultTab;
@@ -186,7 +186,7 @@ App.UI.tabBar = function() {
 				tabBtn.click();
 			}
 		}
-		if (immidiate) {
+		if (immediate) {
 			selectTab();
 		} else {
 			$(document).one(':passageend', selectTab);
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index 27b6163861a..634191b2352 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -1,3 +1,5 @@
+// cSpell:ignore rapee, arousingly, Boobie, Fuckee, Unhearing, assed, GMILF, ress, Basotho, SHOX, tgirl
+
 /**
  * Height.mean(nationality, race, genes, age) - returns the mean height for the given combination and age in years (>=2)
  * Height.mean(nationality, race, genes) - returns the mean adult height for the given combination
@@ -788,9 +790,9 @@ globalThis.Intelligence = (function() {
 /**
  *  Breast size randomizer.
  *  Moved from generateNewSlaveJS to allow for use in BC.
- * @param {number} modif
+ * @param {number} modifier
  */
-globalThis.rollBreast = function(modif) {
+globalThis.rollBreast = function(modifier) {
 	const volume = [100, 300, 500, 650, 800, 1000, 1200, 1400, 1600, 1800, 2050, 2300, 2600, 2900, 3250, 3600, 3950, 4300, 4700, 5100, 5500, 5900];
 	const volumeDist = [90000, 470000, 720000, 840000, 908574, 947759, 970151, 982946, 990258, 994436, 996824, 998188, 998968, 999414, 999669, 999814, 999897, 999945, 999972, 999987, 999995, 1000000];
 	const randomRoll = Math.floor(Math.random() * 1000000) + 1;
@@ -803,7 +805,7 @@ globalThis.rollBreast = function(modif) {
 	if (Math.random() < 0.5) {
 		minorSizeAdjustment = (Math.floor(Math.random() * 2) + 1) * 50;
 	}
-	return Math.max(volume[actualSize] + minorSizeAdjustment + modif, 0);
+	return Math.max(volume[actualSize] + minorSizeAdjustment + modifier, 0);
 };
 
 /**
diff --git a/src/js/utilsSlaves.js b/src/js/utilsSlaves.js
index 327a0327c03..27c947c19c7 100644
--- a/src/js/utilsSlaves.js
+++ b/src/js/utilsSlaves.js
@@ -1,3 +1,9 @@
+// cSpell:ignore Dheight, AHeight, Dprestige, Aprestige, Dpregnancy, Apregnancy, Dsex, Asex, Dintelligence
+// cSpell:ignore Aintelligence, Dmuscles, Amuscles, Dweight, Aweight, Dhealth, Ahealth, Dbeauty, Abeauty, Dweekly
+// cSpell:ignore Aweekly, Dtrust, Atrust, Ddevotion, Adevotion, Dphysical, Aphysical, Dvisual, Avisual, Aactual
+// cSpell:ignore Dseniority, Aseniority, Dname, Dassignment, Aassignment
+
+
 globalThis.cumSlaves = function() {
 	return V.slaves.filter(s => (s.assignment === Job.MILKED || s.assignment === Job.DAIRY) && s.balls > 0 && s.ballType === "human");
 };
@@ -104,12 +110,12 @@ globalThis.SlaveSort = function() {
 		slaveIDs.sort((IDa, IDb) => cmp(slaves[slaveIndices[IDa]], slaves[slaveIndices[IDb]]));
 	}
 
-	/** @param {number[]} [slaveIdxs] */
-	function sortIndices(slaveIdxs) {
+	/** @param {number[]} [slaveIndices] */
+	function sortIndices(slaveIndices) {
 		const slaves = V.slaves;
 		const cmp = _comparator();
-		slaveIdxs = slaveIdxs || [...slaves.keys()];
-		slaveIdxs.sort((ia, ib) => cmp(slaves[ia], slaves[ib]));
+		slaveIndices = slaveIndices || [...slaves.keys()];
+		slaveIndices.sort((ia, ib) => cmp(slaves[ia], slaves[ib]));
 	}
 
 	/**
diff --git a/src/js/vignettes.js b/src/js/vignettes.js
index dada19d5f87..e0634ded192 100644
--- a/src/js/vignettes.js
+++ b/src/js/vignettes.js
@@ -1,3 +1,5 @@
+// cSpell:ignore genpuku, unthreatened, Jugendweihe, shiki, somnophiliac
+
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {{text: string, type: string, effect: number}}
diff --git a/src/npc/bodyguard/bgDescription.js b/src/npc/bodyguard/bgDescription.js
index 10dbb348fcb..98cea8cd937 100644
--- a/src/npc/bodyguard/bgDescription.js
+++ b/src/npc/bodyguard/bgDescription.js
@@ -1,6 +1,6 @@
-// cSpell:ignore Austeyr, Bofors, BREN, CETME, Cugir, Daewoo, DGIM, estoc, FACSA, FAMAE, FAMAS, Ferfrans, FMAP,
+// cSpell:ignore Austeyr, Bofors, BREN, CETME, CZUB, Cugir, Daewoo, DGIM, estoc, FACSA, FAMAE, FAMAS, Ferfrans, FMAP,
 // cSpell:ignore Glauberyt, Glock, GPMG, IMBEL, Indumil, Izhmash, jambiya, Khaybar, khopesh, kightly, kilij, KRISS
-// cSpell:ignore Lithgow, macuahuitl, MCIWS, MinebeaCZUB, MKEK, Modelo, Molot, MSBS, MSMC, MTAR, Nexter, Norinco
+// cSpell:ignore Lithgow, macuahuitl, MCIWS, Minebea, MKEK, Modelo, Molot, MSBS, MSMC, MTAR, Nexter, Norinco
 // cSpell:ignore Pecheneg, Pernach, Pistolul, Produkt, Rachot, Rheinmetall, SAKO, Sarsilmaz, shamshir, shotel, Stechkin
 // cSpell:ignore Steyr, Vektor, wakizashi, WITU, Xiuhcoatl, yatagan, Zastava
 
diff --git a/src/npc/descriptions/style/footwear.js b/src/npc/descriptions/style/footwear.js
index d82eb4babd2..177e9ca6585 100644
--- a/src/npc/descriptions/style/footwear.js
+++ b/src/npc/descriptions/style/footwear.js
@@ -4572,7 +4572,7 @@ App.Desc.footwear = function(slave) {
 
 		switch (slave.legAccessory) {
 			// split stocking descriptions from above into here
-			// I think these need to be integrated into the above switch statement and placed prior to the shoe descs
+			// I think these need to be integrated into the above switch statement and placed prior to the shoe descriptions
 			case "short stockings":
 				switch (slave.clothes) {
 					case "no clothing":
diff --git a/src/npc/generate/generateGenetics.js b/src/npc/generate/generateGenetics.js
index d9157109c05..f6cd6c5787a 100644
--- a/src/npc/generate/generateGenetics.js
+++ b/src/npc/generate/generateGenetics.js
@@ -1,4 +1,4 @@
-// CSpell:ignore matronym, patronym, heritance, Yengo, Vedantam, Marouli,
+// CSpell:ignore matronym, patronym, Yengo, Vedantam, Marouli, dóttir
 // Generates a child's genetics based off mother and father and returns it as an object to be attached to an ovum
 
 globalThis.generateGenetics = (function() {
diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js
index a143c9ac764..8caae9ced71 100644
--- a/src/npc/generate/generateMarketSlave.js
+++ b/src/npc/generate/generateMarketSlave.js
@@ -1,4 +1,6 @@
 /* eslint-disable camelcase */
+// cSpell:ignore WCPU, degradationists
+
 /**
  * @param {FC.SlaveMarketName} [market="kidnappers"]
  * @param {number} [numArcology=1] Defaults to 1 (V.arcologies[1]) since it refers to neighboring arcology, and V.arcologies[0] is the player's arcology.
diff --git a/src/npc/surgery/surrogacyWorkaround.js b/src/npc/surgery/surrogacyWorkaround.js
index dab3ddb2fff..1b87c8a98f3 100644
--- a/src/npc/surgery/surrogacyWorkaround.js
+++ b/src/npc/surgery/surrogacyWorkaround.js
@@ -1,5 +1,3 @@
-// cSpell:ignore incubatee
-
 App.UI.surrogacyWorkaround = function() {
 	const node = new DocumentFragment();
 
-- 
GitLab