From 36641034a818c975e33076bc6ad87a7f76f36c79 Mon Sep 17 00:00:00 2001
From: DCoded <dcoded@live.com>
Date: Fri, 26 Apr 2019 14:59:46 -0400
Subject: [PATCH] Fixes and cleanup

---
 src/js/displayVariables.js       |   2 +-
 src/js/economyJS.js              |  11 +-
 src/js/familyTreeJS.js           |  37 +--
 src/js/generateGenetics.js       |  26 +-
 src/js/nurseryWidgets.js         |   2 +-
 src/js/rbuttonJS.js              |   8 +-
 src/js/rulesAssistantOptions.js  | 173 +++---------
 src/js/slaveCostJS.js            |   5 +-
 src/js/slaveStatsChecker.js      |  20 --
 src/js/slaveSummaryWidgets.js    |  44 ++--
 src/js/utilJS.js                 | 438 +------------------------------
 src/uncategorized/wardrobeUse.tw |   4 +-
 12 files changed, 90 insertions(+), 680 deletions(-)

diff --git a/src/js/displayVariables.js b/src/js/displayVariables.js
index e75ff898020..2863f516b41 100644
--- a/src/js/displayVariables.js
+++ b/src/js/displayVariables.js
@@ -1,2 +1,2 @@
 /*! <<checkvars>> macro for SugarCube 2.x */
-!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<checkvars>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("checkvars",{handler:function(){function toString(value,indent){var baseType=typeof value;switch(baseType){case"number":return isNaN(value)?"NaN":isFinite(value)?String(value):"Infinity";case"string":return JSON.stringify(value);case"function":return"(function)";default:if("object"!==baseType||null==value)return String(value);var objType=Object.prototype.toString.call(value);if("[object Date]"===objType)return'(object: Date, value: "'+value.toISOString()+'")';if("[object RegExp]"===objType)return"(object: RegExp, value: "+value.toString()+")";var opener,closer,result=[],indentText="  ";return indent||(indent=""),("[object Set]"===objType||value instanceof Set)&&(value=Array.from(value)),Array.isArray(value)?(opener="[\n",closer="\n"+indent+"]",value.forEach(function(p,i){result.push(indent+indentText+i+" ⇒ "+toString(value[i],indent+indentText))}),Object.keys(value).forEach(function(p){/^\d+$/.test(p)||result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})):"[object Map]"===objType||value instanceof Map?(opener="{\n",closer="\n"+indent+"}",Array.from(value).map(function(kv){result.push(indent+indentText+toString(kv[0],indent+indentText)+" ⇒ "+toString(kv[1],indent+indentText))})):(opener="{\n",closer="\n"+indent+"}",Object.keys(value).forEach(function(p){result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})),opener+result.join(",\n")+closer}}var dialog,sv=State.variables,names=Object.keys(sv);if(dialog=UI.setup("Story $variables","checkvars"),0===names.length)return dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><p><em>No $variables currently set…</em></p>",void UI.open();dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody></tbody></table>"+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad">&nbsp;</div>');var tbody=dialog.querySelector("tbody");names.sort(function(a,b){return Util.isNumeric(a)&&Util.isNumeric(b)?Number(a)-Number(b):a.localeCompare(b)});for (var i=0;i<names.length;i++){var tr=document.createElement("tr"),tdName=document.createElement("td"),tdValue=document.createElement("td");tdName.textContent="$"+names[i],tdValue.textContent = toString(sv[names[i]]),tr.appendChild(tdName),tr.appendChild(tdValue),tbody.appendChild(tr)}UI.open()}})}();
+!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<checkvars>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("checkvars",{handler:function(){function toString(value,indent){var baseType=typeof value;switch(baseType){case"number":return isNaN(value)?"NaN":isFinite(value)?String(value):"Infinity";case"string":return JSON.stringify(value);case"function":return"(function)";default:if("object"!==baseType||null==value)return String(value);var objType=Object.prototype.toString.call(value);if("[object Date]"===objType)return'(object: Date, value: "'+value.toISOString()+'")';if("[object RegExp]"===objType)return"(object: RegExp, value: "+value.toString()+")";var opener,closer,result=[],indentText="  ";return indent||(indent=""),("[object Set]"===objType||value instanceof Set)&&(value=Array.from(value)),Array.isArray(value)?(opener="[\n",closer="\n"+indent+"]",value.forEach(function(p,i){result.push(indent+indentText+i+" ⇒ "+toString(value[i],indent+indentText))}),Object.keys(value).forEach(function(p){/^\d+$/.test(p)||result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})):"[object Map]"===objType||value instanceof Map?(opener="{\n",closer="\n"+indent+"}",Array.from(value).map(function(kv){result.push(indent+indentText+toString(kv[0],indent+indentText)+" ⇒ "+toString(kv[1],indent+indentText))})):(opener="{\n",closer="\n"+indent+"}",Object.keys(value).forEach(function(p){result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})),opener+result.join(",\n")+closer}}var dialog,sv=State.variables,names=Object.keys(sv);if(dialog=UI.setup("Story $variables","checkvars"),0===names.length)return dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><p><em>No $variables currently set…</em></p>",void UI.open();dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody></tbody></table>"+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad">&nbsp;</div>');var tbody=dialog.querySelector("tbody");names.sort(function(a,b){return Util.isNumeric(a)&&Util.isNumeric(b)?Number(a)-Number(b):a.localeCompare(b)});for(var i=0;i<names.length;i++){var tr=document.createElement("tr"),tdName=document.createElement("td"),tdValue=document.createElement("td");tdName.textContent="$"+names[i],tdValue.textContent = toString(sv[names[i]]),tr.appendChild(tdName),tr.appendChild(tdValue),tbody.appendChild(tr)}UI.open()}})}();
\ No newline at end of file
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index d503dcbc696..970863e4f81 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1,8 +1,4 @@
-window.LivingRule = Object.freeze({
-	LUXURIOUS: 'luxurious',
-	NORMAL: 'normal',
-	SPARE: 'spare'
-});
+window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARE: 'spare'});
 window.Job = Object.freeze({
 	DAIRY: 'work in the dairy',
 	MILKMAID: 'be the Milkmaid',
@@ -979,10 +975,7 @@ window.NPCSexSupply = function(LC) {
 // The function for calculating and storing a slave's sexual interaction with citizens/'the outside'
 window.slaveJobValues = function() {
 	const V = State.variables;
-	let slaveJobValues = {arcade: 0, club: 0, clubSP: 0},
-		clubSpots = 0,
-		toTheClubTotal = 0,
-		DJRepBonus = 0;
+	let slaveJobValues = {arcade: 0, club: 0, clubSP: 0}, clubSpots = 0, toTheClubTotal = 0, DJRepBonus = 0;
 	V.slavesGettingHelp = 0;
 
 	// This section is for specific slaves or non-unique slaves adding their values to the whole
diff --git a/src/js/familyTreeJS.js b/src/js/familyTreeJS.js
index 5961eed719d..87f9bab59ea 100644
--- a/src/js/familyTreeJS.js
+++ b/src/js/familyTreeJS.js
@@ -177,23 +177,13 @@ window.renderFamilyTree = function(slaves, filterID) {
 
 		let ticked = function() {
 			link
-				.attr('x1', function(d) {
-					return d.source.x;
-				})
-				.attr('y1', function(d) {
-					return d.source.y;
-				})
-				.attr('x2', function(d) {
-					return d.target.x;
-				})
-				.attr('y2', function(d) {
-					return d.target.y;
-				});
+				.attr('x1', function(d) {return d.source.x;})
+				.attr('y1', function(d) {return d.source.y;})
+				.attr('x2', function(d) {return d.target.x;})
+				.attr('y2', function(d) {return d.target.y;});
 
 			node
-				.attr("transform", function(d) {
-					return `translate(${ d.x }, ${ d.y })`;
-				});
+				.attr("transform", function(d) {return `translate(${ d.x }, ${ d.y })`;});
 		};
 
 		simulation.nodes(data.nodes)
@@ -515,11 +505,7 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 			continue;
 		}
 		if (typeof node_lookup[character.father] !== 'undefined') {
-			family_graph.links.push({
-				type: 'paternal',
-				target: node_lookup[char_id] * 1,
-				source: node_lookup[character.father] * 1
-			});
+			family_graph.links.push({type: 'paternal', target: node_lookup[char_id] * 1, source: node_lookup[character.father] * 1});
 		}
 	}
 	return family_graph;
@@ -612,7 +598,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 			slavesAdded[slave.ID] = true;
 		}
 		let data = {
-			"name": slave.slaveName + (slave.physicalAge ? (`&nbsp;(${ slave.physicalAge })`) : ""),
+			"name": slave.slaveName + (slave.physicalAge ? (`&nbsp;(${slave.physicalAge})`) : ""),
 			"class": slave.genes,
 			"textClass": (activeSlaveId === slave.ID) ? "emphasis" : "",
 			"marriages": [],
@@ -657,13 +643,8 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 					spouseName = (spouse.ID === -1) ? "(yourself)" : "(themselves)";
 				}
 				let marriage = {
-					"spouse": {
-						"name": spouseName,
-						"class": spouse.genes
-					},
-					"children": children.map(function(x) {
-						return slaveInfo_(x, activeSlaveId, slavesAdded, depth + 1);
-					}),
+					"spouse": {"name": spouseName, "class": spouse.genes},
+					"children": children.map(function(x) {return slaveInfo_(x, activeSlaveId, slavesAdded, depth + 1);}),
 				};
 				data.marriages.push(marriage);
 			}
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 4c4112fb66e..a326ea7aaf2 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -562,9 +562,7 @@ window.generateGenetics = (function() {
 		} else {
 			fetish = jsEither(["none", "none", "none", "none", "none", mother.fetish, mother.fetish]);
 		}
-		if (fetish === "mindbroken") {
-			fetish = "none";
-		}
+		if (fetish === "mindbroken") {fetish = "none";}
 		return fetish;
 	}
 
@@ -1538,23 +1536,11 @@ window.generateChild = function(mother, ova, destination) {
 		child.birthWeek = 0;
 		child.energy = 0;
 		child.anus = 0;
-		if (child.vagina > 0) {
-			child.vagina = 0;
-		}
-		if (child.fetish !== "none") {
-			child.fetishStrength = 20;
-		}
-		if (child.dick > 0) {
-			child.foreskin = 1;
-			child.balls = 1;
-			child.scrotum = 1;
-		}
-		if (genes.faceShape !== undefined) {
-			child.faceShape = genes.faceShape;
-		}
-		if (mother.addict > 0) {
-			child.addict = Math.trunc(mother.addict / 2);
-		}
+		if (child.vagina > 0) {child.vagina = 0;}
+		if (child.fetish !== "none") {child.fetishStrength = 20;}
+		if (child.dick > 0) {child.foreskin = 1; child.balls = 1; child.scrotum = 1;}
+		if (genes.faceShape !== undefined) {child.faceShape = genes.faceShape;}
+		if (mother.addict > 0) {child.addict = Math.trunc(mother.addict / 2);}
 		child.career = "a slave since birth";
 		child.birthName = child.slaveName;
 		child.birthSurname = child.slaveSurname;
diff --git a/src/js/nurseryWidgets.js b/src/js/nurseryWidgets.js
index 7da57471c09..92bff88e24a 100644
--- a/src/js/nurseryWidgets.js
+++ b/src/js/nurseryWidgets.js
@@ -2,6 +2,6 @@ App.Facilities.Nursery.ChildSummary = function(child) {
     const V = State.variables;
     let r = ``;
     r += `${child} will stay in ${V.nurseryName} for another ${child.weeksLeft} weeks. `;
-    SlaveSummary(child);
+    r += SlaveSummary(child);
     return r;
 };
diff --git a/src/js/rbuttonJS.js b/src/js/rbuttonJS.js
index 71107a368d2..b74200cf4d6 100644
--- a/src/js/rbuttonJS.js
+++ b/src/js/rbuttonJS.js
@@ -12,12 +12,8 @@ Macro.add('rbutton', {
 	handler() {
 		if (this.args.length < 2) {
 			const errors = [];
-			if (this.args.length < 1) {
-				errors.push('variable name');
-			}
-			if (this.args.length < 2) {
-				errors.push('checked value');
-			}
+			if (this.args.length < 1) {errors.push('variable name');}
+			if (this.args.length < 2) {errors.push('checked value');}
 			return this.error(`no ${errors.join(' or ')} specified`);
 		}
 
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 3fd3d95a327..5fa149f5acb 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -137,9 +137,7 @@ window.rulesAssistantOptions = (function() {
 			const section = document.createElement("section");
 			section.classList.add("rajs-section");
 			const h1 = document.createElement("h1");
-			h1.onclick = () => {
-				this.toggle_hidey();
-			};
+			h1.onclick = () => {this.toggle_hidey();};
 			h1.innerHTML = header;
 			const hidey = document.createElement("div");
 			section.appendChild(h1);
@@ -237,9 +235,7 @@ window.rulesAssistantOptions = (function() {
 			const elem = document.createElement("span");
 			elem.classList.add("rajs-listitem");
 			elem.innerHTML = displayvalue;
-			elem.onclick = () => {
-				return this.select();
-			};
+			elem.onclick = () => {return this.select();};
 			return elem;
 		}
 
@@ -267,12 +263,8 @@ window.rulesAssistantOptions = (function() {
 			res.setAttribute("type", "text");
 			res.classList.add("rajs-value"); //
 			// call the variable binding when the input field is no longer being edited, and when the enter key is pressed
-			res.onblur = () => {
-				this.inputEdited();
-			};
-			res.onkeypress = (e) => {
-				if (returnP(e)) this.inputEdited();
-			};
+			res.onblur = () => {this.inputEdited();};
+			res.onkeypress = (e) => {if (returnP(e)) this.inputEdited();};
 			return res;
 		}
 	}
@@ -289,12 +281,8 @@ window.rulesAssistantOptions = (function() {
 			res.setAttribute("min", min);
 			res.setAttribute("max", max);
 			res.classList.add("rajs-value"); //
-			res.onblur = () => {
-				this.inputEdited();
-			};
-			res.onkeypress = (e) => {
-				if (returnP(e)) this.inputEdited();
-			};
+			res.onblur = () => {this.inputEdited();};
+			res.onkeypress = (e) => {if (returnP(e)) this.inputEdited();};
 			return res;
 		}
 
@@ -331,9 +319,7 @@ window.rulesAssistantOptions = (function() {
 	class Options extends Element {
 		constructor(elements = []) {
 			super();
-			elements.forEach(element => {
-				this.appendChild(element);
-			});
+			elements.forEach(element => {this.appendChild(element);});
 		}
 
 		render() {
@@ -354,9 +340,7 @@ window.rulesAssistantOptions = (function() {
 			const elem = document.createElement("span");
 			elem.classList.add("rajs-listitem");
 			elem.innerHTML = label;
-			elem.onclick = () => {
-				return this.onclick(this);
-			};
+			elem.onclick = () => {return this.onclick(this);};
 			return elem;
 		}
 	}
@@ -377,9 +361,7 @@ window.rulesAssistantOptions = (function() {
 			);
 		}
 
-		onchange() {
-			return;
-		}
+		onchange() {return;}
 	}
 
 	class ButtonItem extends Element {
@@ -435,9 +417,7 @@ window.rulesAssistantOptions = (function() {
 			const button = document.createElement("button");
 			button.name = "Load";
 			button.innerHTML = "Load";
-			button.onclick = () => {
-				this.loadNewRule();
-			};
+			button.onclick = () => {this.loadNewRule();};
 			container.appendChild(button);
 			return container;
 		}
@@ -487,13 +467,9 @@ window.rulesAssistantOptions = (function() {
 		constructor(root) {
 			super();
 			this.root = root;
-			const newrule = new OptionsItem("Add a new rule", () => {
-				newRule(this.root);
-			});
+			const newrule = new OptionsItem("Add a new rule", () => {newRule(this.root);});
 			this.appendChild(newrule);
-			const importrule = new OptionsItem("Import a rule", () => {
-				this.root.appendChild(new NewRuleField(this.root));
-			});
+			const importrule = new OptionsItem("Import a rule", () => {this.root.appendChild(new NewRuleField(this.root));});
 			this.appendChild(importrule);
 		}
 	}
@@ -540,9 +516,7 @@ window.rulesAssistantOptions = (function() {
 		constructor(root) {
 			super();
 			this.element.onblur = () => changeName(this.element.value, root);
-			this.element.onkeypress = (e) => {
-				if (returnP(e)) changeName(this.element.value, root);
-			};
+			this.element.onkeypress = (e) => {if (returnP(e)) changeName(this.element.value, root);};
 		}
 
 		render() {
@@ -739,9 +713,7 @@ window.rulesAssistantOptions = (function() {
 			const min = document.createElement("input");
 			min.setAttribute("type", "text");
 			min.value = `${ data.value[0]}`;
-			min.onkeypress = e => {
-				if (returnP(e)) this.setmin(min.value);
-			};
+			min.onkeypress = e => {if (returnP(e)) this.setmin(min.value);};
 			min.onblur = e => this.setmin(min.value);
 			this.min = min;
 			elem.appendChild(min);
@@ -755,9 +727,7 @@ window.rulesAssistantOptions = (function() {
 			const max = document.createElement("input");
 			max.setAttribute("type", "text");
 			max.value = `${ data.value[1]}`;
-			max.onkeypress = e => {
-				if (returnP(e)) this.setmax(max.value);
-			};
+			max.onkeypress = e => {if (returnP(e)) this.setmax(max.value);};
 			max.onblur = e => this.setmax(max.value);
 			this.max = max;
 			elem.appendChild(max);
@@ -816,9 +786,7 @@ window.rulesAssistantOptions = (function() {
 			const input = document.createElement("input");
 			input.setAttribute("type", "text");
 			input.value = JSON.stringify(data.value);
-			input.onkeypress = e => {
-				if (returnP(e)) this.setValue(input);
-			};
+			input.onkeypress = e => {if (returnP(e)) this.setValue(input);};
 			input.onblur = e => this.setValue(input);
 			this.input = input;
 			elem.appendChild(input);
@@ -1272,12 +1240,8 @@ window.rulesAssistantOptions = (function() {
 				["Toga (FS)", "a toga"],
 				["Western clothing (FS)", "Western clothing"],
 			];
-			spclothes.forEach(pair => {
-				if (isItemAccessible(pair[1])) nclothes.push(pair);
-			});
-			fsnclothes.forEach(pair => {
-				if (isItemAccessible(pair[1])) nclothes.push(pair);
-			});
+			spclothes.forEach(pair => {if (isItemAccessible(pair[1])) nclothes.push(pair);});
+			fsnclothes.forEach(pair => {if (isItemAccessible(pair[1])) nclothes.push(pair);});
 			const nice = new ListSubSection(this, "Nice", nclothes);
 			this.appendChild(nice);
 
@@ -1291,9 +1255,7 @@ window.rulesAssistantOptions = (function() {
 			const fshclothes = [
 				["Chains (FS)", "chains"],
 			];
-			fshclothes.forEach(pair => {
-				if (isItemAccessible(pair[1])) hclothes.push(pair);
-			});
+			fshclothes.forEach(pair => {if (isItemAccessible(pair[1])) hclothes.push(pair);});
 
 			const harsh = new ListSubSection(this, "Harsh", hclothes);
 			this.appendChild(harsh);
@@ -1326,16 +1288,12 @@ window.rulesAssistantOptions = (function() {
 				["Bowtie collar", "bowtie"],
 				["Ancient Egyptian", "ancient Egyptian"],
 			];
-			fsncollars.forEach(pair => {
-				if (isItemAccessible(pair[1])) ncollars.push(pair);
-			});
+			fsncollars.forEach(pair => {if (isItemAccessible(pair[1])) ncollars.push(pair);});
 			const nice = new ListSubSection(this, "Nice", ncollars);
 			this.appendChild(nice);
 
 			const hcollars = [];
-			setup.harshCollars.forEach(item => {
-				if (item.fs === "seeAge" && V.seeAge === 0) return;
-				else if (item.fs === "seePreg" && V.seePreg === 0) return;
+			setup.harshCollars.forEach(item => {if (item.fs === "seeAge" && V.seeAge === 0) return; else if (item.fs === "seePreg" && V.seePreg === 0) return;
 				else if (item.rs === "buyGag" && V.toysBoughtGags !== 1) return;
 				else hcollars.push([item.name, item.value]);
 			});
@@ -1358,9 +1316,7 @@ window.rulesAssistantOptions = (function() {
 	class CorsetList extends List {
 		constructor() {
 			const bellies = [];
-			setup.bellyAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					bellies.push([acc.name, acc.value]);
+			setup.bellyAccessories.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)bellies.push([acc.name, acc.value]);
 				else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset")
 					bellies.push([`${acc.name } (FS)`, acc.value]);
 				else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1)
@@ -1402,9 +1358,7 @@ window.rulesAssistantOptions = (function() {
 	class VagAccVirginsList extends List {
 		constructor() {
 			const accs = [];
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.vaginalAccessories.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1417,9 +1371,7 @@ window.rulesAssistantOptions = (function() {
 	class VagAccAVirginsList extends List {
 		constructor() {
 			const accs = [];
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.vaginalAccessories.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1432,9 +1384,7 @@ window.rulesAssistantOptions = (function() {
 	class VagAccOtherList extends List {
 		constructor() {
 			const accs = [];
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.vaginalAccessories.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1447,9 +1397,7 @@ window.rulesAssistantOptions = (function() {
 	class VaginalAttachmentsList extends List {
 		constructor() {
 			const accs = [];
-			setup.vaginalAttachments.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.vaginalAttachments.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyVaginalAttachments" && V.toysBoughtVaginalAttachments === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1504,9 +1452,7 @@ window.rulesAssistantOptions = (function() {
 	class ButtplugsVirginsList extends List {
 		constructor() {
 			const accs = [];
-			setup.buttplugs.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.buttplugs.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1519,9 +1465,7 @@ window.rulesAssistantOptions = (function() {
 	class ButtplugsOtherList extends List {
 		constructor() {
 			const accs = [];
-			setup.buttplugs.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.buttplugs.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1534,9 +1478,7 @@ window.rulesAssistantOptions = (function() {
 	class ButtplugAttachmentsList extends List {
 		constructor() {
 			const accs = [];
-			setup.buttplugAttachments.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value]);
+			setup.buttplugAttachments.forEach(acc => {if (acc.fs === undefined && acc.rs === undefined)accs.push([acc.name, acc.value]);
 				else if (acc.rs === "buyTails" && V.toysBoughtButtPlugTails === 1)
 					accs.push([`${acc.name } (Purchased)`, acc.value]);
 			});
@@ -1629,9 +1571,8 @@ window.rulesAssistantOptions = (function() {
 		}
 
 		nds() {
-			[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
-				i.setValue("no default change");
-				i.propagateChange();
+			[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {i.setValue("no default change");
+			i.propagateChange();
 			});
 		}
 
@@ -1672,9 +1613,7 @@ window.rulesAssistantOptions = (function() {
 		}
 
 		none() {
-			this.sublists.forEach(i => {
-				i.setValue(0);
-				i.propagateChange();
+			this.sublists.forEach(i => {i.setValue(0); i.propagateChange();
 			});
 		}
 	}
@@ -2001,40 +1940,17 @@ window.rulesAssistantOptions = (function() {
 		constructor() {
 			// TODO: better data structure?
 			const pairs = [
-				["No default setting", {
-					cum: "no default setting",
-					milk: "no default setting"
-				}],
-				["Normal Diet", {
-					cum: 0,
-					milk: 0
-				}],
-				["Cum Added", {
-					cum: 1,
-					milk: 0
-				}],
-				["Milk Added", {
-					cum: 0,
-					milk: 1
-				}],
-				["Cum &amp; Milk Added", {
-					cum: 1,
-					milk: 1
-				}],
-				["Cum-Based", {
-					cum: 2,
-					milk: 0
-				}],
-				["Milk-Based", {
-					cum: 0,
-					milk: 2
-				}],
+				["No default setting", {cum: "no default setting", milk: "no default setting"}],
+				["Normal Diet", {cum: 0, milk: 0}],
+				["Cum Added", {cum: 1, milk: 0}],
+				["Milk Added", {cum: 0, milk: 1}],
+				["Cum &amp; Milk Added", {cum: 1, milk: 1}],
+				["Cum-Based", {cum: 2, milk: 0}],
+				["Milk-Based", {cum: 0, milk: 2}],
 			];
 			super("Diet base", pairs);
 			this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
-			this.onchange = (value) => {
-				current_rule.set.dietCum = value.cum;
-				current_rule.set.dietMilk = value.milk;
+			this.onchange = (value) => {current_rule.set.dietCum = value.cum; current_rule.set.dietMilk = value.milk;
 				this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
 			};
 		}
@@ -2363,9 +2279,7 @@ window.rulesAssistantOptions = (function() {
 				"orange",
 				"amber",
 				"red"
-			].forEach(i => items.push(new OptionsItem(i, item => {
-				this.value = item.label;
-				this.parent.setValue();
+			].forEach(i => items.push(new OptionsItem(i, item => {this.value = item.label;this.parent.setValue();
 			})));
 			super(items);
 		}
@@ -2389,10 +2303,7 @@ window.rulesAssistantOptions = (function() {
 				"bright",
 				"teary",
 				"vacant"
-			].forEach(i => items.push(new OptionsItem(i, item => {
-				this.value = item.label;
-				this.parent.setValue();
-			})));
+			].forEach(i => items.push(new OptionsItem(i, item => {this.value = item.label; this.parent.setValue();})));
 			super(items);
 		}
 	}
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 06506231439..b23a773c607 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -2225,10 +2225,7 @@ window.slaveCost = (function() {
 		}
 	}
 
-	function calcCost(
-		/* slave
-		 */
-	) {
+	function calcCost(/* slave */) {
 		cost *= multiplier * 50;
 		cost = Number(cost) || 0;
 		if (cost < V.minimumSlaveCost) {
diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js
index debd3a7aa58..5a1f1b6f5fb 100644
--- a/src/js/slaveStatsChecker.js
+++ b/src/js/slaveStatsChecker.js
@@ -239,26 +239,6 @@ window.isStacked = function(slave) {
 	return (slave.butt > 4) && (slave.boobs > 800);
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.isModded = function(slave) {
-	const tatScore = SlaveStatsChecker.tatScore(slave);
-	const piercingScore = SlaveStatsChecker.piercingScore(slave);
-	const modScore = piercingScore + tatScore;
-
-	return ((modScore > 15) || (piercingScore > 8 && tatScore > 5));
-};
-
-/**
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.isUnmodded = function(slave) {
-	return (!isModded(slave) && (slave.corsetPiercing === 0) && (SlaveStatsChecker.piercingScore(slave) < 3) && (SlaveStatsChecker.tatScore(slave) < 2));
-};
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {boolean}
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 2bdfb6fd51c..fac4f0c67c0 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -359,7 +359,7 @@ window.SlaveSummaryUncached = (function() {
 		} else if (slave.trust < -95) {
 			r += `<span class="darkgoldenrod">ETerr${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
 		} else if (slave.trust < -50) {
-			r += `<span class="gold"enrod>Terr${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
+			r += `<span class="goldenrod>Terr${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
 		} else if (slave.trust < -20) {
 			r += `<span class="gold">Fright${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
 		} else if (slave.trust <= 20) {
@@ -372,7 +372,7 @@ window.SlaveSummaryUncached = (function() {
 			}
 		} else if (slave.trust < 95) {
 			if (slave.devotion < -20) {
-				r += `<span class="orange"red>Bold${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
+				r += `<span class="orangered">Bold${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
 			} else {
 				r += `<span class="mediumseagreen">Trust${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
 			}
@@ -413,7 +413,7 @@ window.SlaveSummaryUncached = (function() {
 		} else if (slave.trust < -95) {
 			r += `<span class="darkgoldenrod">Extremely terrified${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
 		} else if (slave.trust < -50) {
-			r += `<span class="gold"enrod>Terrified${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
+			r += `<span class="goldenrod>Terrified${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
 		} else if (slave.trust < -20) {
 			r += `<span class="gold">Frightened${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
 		} else if (slave.trust <= 20) {
@@ -426,7 +426,7 @@ window.SlaveSummaryUncached = (function() {
 			}
 		} else if (slave.trust < 95) {
 			if (slave.devotion < -20) {
-				r += `<span class="orange"red>Bold${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
+				r += `<span class="orangered">Bold${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
 			} else {
 				r += `<span class="mediumseagreen">Trusting${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
 			}
@@ -2811,11 +2811,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `I(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>I-(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I-(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>I--(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I--(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else {
-				r += `<span class="orange"red>I---(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I---(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			}
 		} else if (slave.intelligenceImplant >= 15) {
 			if (intelligence > 95) {
@@ -2827,11 +2827,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `I(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>I-(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I-(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>I--(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I--(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else {
-				r += `<span class="orange"red>I---(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I---(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			}
 		} else {
 			if (intelligence > 95) {
@@ -2843,11 +2843,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `I${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>I-${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I-${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>I--${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I--${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			} else {
-				r += `<span class="orange"red>I---${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
+				r += `<span class="orangered">I---${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
 			}
 		}
 		r += " ";
@@ -2965,11 +2965,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `Average intelligence, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>Slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>Very slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Very slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else {
-				r += `<span class="orange"red>Moronic, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Moronic, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			}
 		} else if (slave.intelligenceImplant >= 15) {
 			if (intelligence > 95) {
@@ -2981,11 +2981,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `Average intelligence, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>Slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>Very slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Very slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else {
-				r += `<span class="orange"red>Moronic, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Moronic, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			}
 		} else {
 			if (intelligence > 95) {
@@ -2997,11 +2997,11 @@ window.SlaveSummaryUncached = (function() {
 			} else if (intelligence >= -15) {
 				r += `Average intelligence${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
 			} else if (intelligence >= -50) {
-				r += `<span class="orange"red>Slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else if (intelligence >= -95) {
-				r += `<span class="orange"red>Very slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Very slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			} else {
-				r += `<span class="orange"red>Moronic${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
+				r += `<span class="orangered">Moronic${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
 			}
 		}
 		r += " ";
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 06dbfc38632..16285cc2492 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -98,443 +98,9 @@ window.Height = (function() {
 	};
 
 	/* if you can find an average for an undefined, add it in! */
-	const xxMeanHeight = {
-		"Afghan": 155.08,
-		"Albanian": 161.77,
-		"Algerian": 159.09,
-		"American.asian": 158.4,
-		"American.black": 163.6,
-		"American.latina": 158.9,
-		"American.white": 165,
-		"American": 163.54,
-		"Andorran": 162.90,
-		"Angolan": 157.31,
-		"Antiguan": 160.65,
-		"Argentinian": 159.18,
-		"Armenian": 158.09,
-		"Aruban": 158,
-		"Australian": 165.86,
-		"Austrian": 164.62,
-		"Azerbaijani": 158.25,
-		"Bahamian": 160.68,
-		"Bahraini": 156.69,
-		"Bangladeshi": 150.79,
-		"Barbadian": 165.28,
-		"Belarusian": 166.35,
-		"Belgian": 165.49,
-		"Belizean": 156.88,
-		"Beninese": 156.16,
-		"Bermudian": 160.69,
-		"Bhutanese": 153.63,
-		"Bissau-Guinean": 158.24,
-		"Bolivian": 153.89,
-		"Bosnian": 165.85,
-		"Brazilian": 160.86,
-		"British": 164.40,
-		"Bruneian": 153.98,
-		"Bulgarian": 164.80,
-		"Burkinabé": 160.19,
-		"Burmese": 154.37,
-		"Burundian": 154.02,
-		"Cambodian": 152.91,
-		"Cameroonian": 158.82,
-		"Canadian": 163.91,
-		"Cape Verdean": 161.65,
-		"Catalan": 163.4,
-		"Central African": 158.04,
-		"Chadian": 160.17,
-		"Chilean": 159.36,
-		"Chinese": 159.71,
-		"Colombian": 156.85,
-		"Comorian": 155.58,
-		"Congolese": 157.57,
-		"a Cook Islander": 163.19,
-		"Costa Rican": 156.37,
-		"Croatian": 165.63,
-		"Cuban": 157.98,
-		"Curaçaoan": 158,
-		"Cypriot": 162.27,
-		"Czech": 168.46,
-		"Danish": 167.21,
-		"Djiboutian": 156.11,
-		"Dominican": 159.03,
-		"Dominiquais": 164.34,
-		"Dutch": 168.72,
-		"East Timorese": 151.15,
-		"Ecuadorian": 154.23,
-		"Egyptian": 157.33,
-		"Emirati": 158.68,
-		"Equatoguinean": 157.33,
-		"Eritrean": 156.39,
-		"Estonian": 168.67,
-		"Ethiopian": 155.71,
-		"Fijian": 161.69,
-		"Filipina": 149.60,
-		"Finnish": 165.90,
-		"French Guianan": 157,
-		"French Polynesian": 164.52,
-		"French": 164.88,
-		"Gabonese": 158.84,
-		"Gambian": 160.93,
-		"Georgian": 162.98,
-		"German": 165.86,
-		"Ghanan": 157.91,
-		"Greek": 164.87,
-		"Greenlandic": 161.55,
-		"Grenadian": 164.51,
-		"Guamanian": 153.7,
-		"Guatemalan": 149.39,
-		"Guinean": 157.80,
-		"Guyanese": 157.92,
-		"Haitian": 158.72,
-		"Honduran": 153.84,
-		"Hungarian": 163.66,
-		"I-Kiribati": 157.00,
-		"Icelandic": 165.95,
-		"Indian": 152.59,
-		"Indonesian": 152.80,
-		"Iranian": 159.67,
-		"Iraqi": 158.67,
-		"Irish": 165.11,
-		"Israeli": 161.80,
-		"Italian": 164.61,
-		"Ivorian": 158.07,
-		"Jamaican": 163.12,
-		"Japanese": 158.31,
-		"Jordanian": 158.83,
-		"Kazakh": 158.58,
-		"Kenyan": 158.16,
-		"Kittitian": 159.20,
-		"Korean": 160.65,
-		"Kosovan": 165.7,
-		"Kurdish": 165,
-		"Kuwaiti": 159.43,
-		"Kyrgyz": 159.35,
-		"Laotian": 151.28,
-		"Latvian": 169.80,
-		"Lebanese": 162.43,
-		"Liberian": 157.3,
-		"Libyan": 162.08,
-		"a Liechtensteiner": 164.3,
-		"Lithuanian": 166.61,
-		"Luxembourgian": 164.43,
-		"Macedonian": 159.75,
-		"Malagasy": 151.18,
-		"Malawian": 154.40,
-		"Malaysian": 156.30,
-		"Maldivian": 155.02,
-		"Malian": 160.47,
-		"Maltese": 160.85,
-		"Marshallese": 151.31,
-		"Mauritanian": 157.72,
-		"Mauritian": 157.24,
-		"Mexican": 156.85,
-		"Micronesian": 156.09,
-		"Moldovan": 163.24,
-		"Monégasque": 164.61,
-		"Mongolian": 158.22,
-		"Montenegrin": 164.86,
-		"Moroccan": 157.82,
-		"Mosotho": 155.71,
-		"Motswana": 161.38,
-		"Mozambican": 153.96,
-		"Namibian": 158.78,
-		"Nauruan": 153.98,
-		"Nepalese": 150.86,
-		"New Caledonian": 158.0,
-		"a New Zealander": 164.94,
-		"Ni-Vanuatu": 158.17,
-		"Nicaraguan": 154.39,
-		"Nigerian": 156.32,
-		"Nigerien": 158.25,
-		"Niuean": 164.80,
-		"Norwegian": 165.56,
-		"Omani": 157.19,
-		"Pakistani": 153.84,
-		"Palauan": 156.22,
-		"Palestinian": 158.75,
-		"Panamanian": 155.47,
-		"Papua New Guinean": 154.87,
-		"Paraguayan": 159.86,
-		"Peruvian": 152.93,
-		"Polish": 164.59,
-		"Portuguese": 163.04,
-		"Puerto Rican": 159.20,
-		"Qatari": 159.38,
-		"Romanian": 162.73,
-		"Russian": 165.27,
-		"Rwandan": 154.79,
-		"Sahrawi": 157.82,
-		"Saint Lucian": 162.31,
-		"Salvadoran": 154.55,
-		"Sammarinese": 164.61,
-		"Samoan": 161.97,
-		"São Toméan": 158.91,
-		"Saudi": 155.88,
-		"Scottish": 163,
-		"Senegalese": 162.52,
-		"Serbian": 167.69,
-		"Seychellois": 162.08,
-		"Sierra Leonean": 156.60,
-		"Singaporean": 160.32,
-		"Slovak": 167.47,
-		"Slovene": 166.05,
-		"a Solomon Islander": 154.42,
-		"Somali": 156.06,
-		"South African": 158.03,
-		"South Sudanese": 169.0,
-		"Spanish": 163.40,
-		"Sri Lankan": 154.56,
-		"Sudanese": 156.04,
-		"Surinamese": 160.66,
-		"Swazi": 158.64,
-		"Swedish": 165.70,
-		"Swiss": 163.45,
-		"Syrian": 158.65,
-		"Taiwanese": 161.45,
-		"Tajik": 157.33,
-		"Tanzanian": 156.6,
-		"Thai": 157.87,
-		"Tibetan": 158.75,
-		"Togolese": 158.30,
-		"Tongan": 165.52,
-		"Trinidadian": 160.64,
-		"Tunisian": 160.35,
-		"Turkish": 160.50,
-		"Turkmen": 161.73,
-		"Tuvaluan": 158.10,
-		"Ugandan": 156.72,
-		"Ukrainian": 166.34,
-		"Uruguayan": 162.13,
-		"Uzbek": 157.82,
-		"Vatican": 162.5,
-		"Venezuelan": 157.44,
-		"Vietnamese": 153.59,
-		"Vincentian": 160.70,
-		"Yemeni": 153.97,
-		"Zairian": 155.25,
-		"Zambian": 155.82,
-		"Zimbabwean": 158.22,
-		"": 159.65, // default
+	const xxMeanHeight = {"Afghan": 155.08, "Albanian": 161.77, "Algerian": 159.09, "American.asian": 158.4, "American.black": 163.6, "American.latina": 158.9, "American.white": 165, "American": 163.54, "Andorran": 162.90, "Angolan": 157.31, "Antiguan": 160.65, "Argentinian": 159.18, "Armenian": 158.09, "Aruban": 158, "Australian": 165.86, "Austrian": 164.62, "Azerbaijani": 158.25, "Bahamian": 160.68, "Bahraini": 156.69, "Bangladeshi": 150.79, "Barbadian": 165.28, "Belarusian": 166.35, "Belgian": 165.49, "Belizean": 156.88, "Beninese": 156.16, "Bermudian": 160.69, "Bhutanese": 153.63, "Bissau-Guinean": 158.24, "Bolivian": 153.89, "Bosnian": 165.85, "Brazilian": 160.86, "British": 164.40, "Bruneian": 153.98, "Bulgarian": 164.80, "Burkinabé": 160.19, "Burmese": 154.37, "Burundian": 154.02, "Cambodian": 152.91, "Cameroonian": 158.82, "Canadian": 163.91, "Cape Verdean": 161.65, "Catalan": 163.4, "Central African": 158.04, "Chadian": 160.17, "Chilean": 159.36, "Chinese": 159.71, "Colombian": 156.85, "Comorian": 155.58, "Congolese": 157.57, "a Cook Islander": 163.19, "Costa Rican": 156.37, "Croatian": 165.63, "Cuban": 157.98, "Curaçaoan": 158, "Cypriot": 162.27, "Czech": 168.46, "Danish": 167.21, "Djiboutian": 156.11, "Dominican": 159.03, "Dominiquais": 164.34, "Dutch": 168.72, "East Timorese": 151.15, "Ecuadorian": 154.23, "Egyptian": 157.33, "Emirati": 158.68, "Equatoguinean": 157.33, "Eritrean": 156.39, "Estonian": 168.67, "Ethiopian": 155.71, "Fijian": 161.69, "Filipina": 149.60, "Finnish": 165.90, "French Guianan": 157, "French Polynesian": 164.52, "French": 164.88, "Gabonese": 158.84, "Gambian": 160.93, "Georgian": 162.98, "German": 165.86, "Ghanan": 157.91, "Greek": 164.87, "Greenlandic": 161.55, "Grenadian": 164.51, "Guamanian": 153.7, "Guatemalan": 149.39, "Guinean": 157.80, "Guyanese": 157.92, "Haitian": 158.72, "Honduran": 153.84, "Hungarian": 163.66, "I-Kiribati": 157.00, "Icelandic": 165.95, "Indian": 152.59, "Indonesian": 152.80, "Iranian": 159.67, "Iraqi": 158.67, "Irish": 165.11, "Israeli": 161.80, "Italian": 164.61, "Ivorian": 158.07, "Jamaican": 163.12, "Japanese": 158.31, "Jordanian": 158.83, "Kazakh": 158.58, "Kenyan": 158.16, "Kittitian": 159.20, "Korean": 160.65, "Kosovan": 165.7, "Kurdish": 165, "Kuwaiti": 159.43, "Kyrgyz": 159.35, "Laotian": 151.28, "Latvian": 169.80, "Lebanese": 162.43, "Liberian": 157.3, "Libyan": 162.08, "a Liechtensteiner": 164.3, "Lithuanian": 166.61, "Luxembourgian": 164.43, "Macedonian": 159.75, "Malagasy": 151.18, "Malawian": 154.40, "Malaysian": 156.30, "Maldivian": 155.02, "Malian": 160.47, "Maltese": 160.85, "Marshallese": 151.31, "Mauritanian": 157.72, "Mauritian": 157.24, "Mexican": 156.85, "Micronesian": 156.09, "Moldovan": 163.24, "Monégasque": 164.61, "Mongolian": 158.22, "Montenegrin": 164.86, "Moroccan": 157.82, "Mosotho": 155.71, "Motswana": 161.38, "Mozambican": 153.96, "Namibian": 158.78, "Nauruan": 153.98, "Nepalese": 150.86, "New Caledonian": 158.0, "a New Zealander": 164.94, "Ni-Vanuatu": 158.17, "Nicaraguan": 154.39, "Nigerian": 156.32, "Nigerien": 158.25, "Niuean": 164.80, "Norwegian": 165.56, "Omani": 157.19, "Pakistani": 153.84, "Palauan": 156.22, "Palestinian": 158.75, "Panamanian": 155.47, "Papua New Guinean": 154.87, "Paraguayan": 159.86, "Peruvian": 152.93, "Polish": 164.59, "Portuguese": 163.04, "Puerto Rican": 159.20, "Qatari": 159.38, "Romanian": 162.73, "Russian": 165.27, "Rwandan": 154.79, "Sahrawi": 157.82, "Saint Lucian": 162.31, "Salvadoran": 154.55, "Sammarinese": 164.61, "Samoan": 161.97, "São Toméan": 158.91, "Saudi": 155.88, "Scottish": 163, "Senegalese": 162.52, "Serbian": 167.69, "Seychellois": 162.08, "Sierra Leonean": 156.60, "Singaporean": 160.32, "Slovak": 167.47, "Slovene": 166.05, "a Solomon Islander": 154.42, "Somali": 156.06, "South African": 158.03, "South Sudanese": 169.0, "Spanish": 163.40, "Sri Lankan": 154.56, "Sudanese": 156.04, "Surinamese": 160.66, "Swazi": 158.64, "Swedish": 165.70, "Swiss": 163.45, "Syrian": 158.65, "Taiwanese": 161.45, "Tajik": 157.33, "Tanzanian": 156.6, "Thai": 157.87, "Tibetan": 158.75, "Togolese": 158.30, "Tongan": 165.52, "Trinidadian": 160.64, "Tunisian": 160.35, "Turkish": 160.50, "Turkmen": 161.73, "Tuvaluan": 158.10, "Ugandan": 156.72, "Ukrainian": 166.34, "Uruguayan": 162.13, "Uzbek": 157.82, "Vatican": 162.5, "Venezuelan": 157.44, "Vietnamese": 153.59, "Vincentian": 160.70, "Yemeni": 153.97, "Zairian": 155.25, "Zambian": 155.82, "Zimbabwean": 158.22, "": 159.65, // default
 	};
-	const xyMeanHeight = {
-		"Afghan": 165.26,
-		"Albanian": 173.39,
-		"Algerian": 170.07,
-		"American.asian": 172.5,
-		"American.black": 177.4,
-		"American.latina": 172.5,
-		"American.white": 178.2,
-		"American": 177.13,
-		"Andorran": 176.06,
-		"Angolan": 167.31,
-		"Antiguan": 164.8,
-		"Argentinian": 174.62,
-		"Armenian": 172.00,
-		"Aruban": 165.1,
-		"Australian": 179.20,
-		"Austrian": 177.41,
-		"Azerbaijani": 169.75,
-		"Bahamian": 172.75,
-		"Bahraini": 167.74,
-		"Bangladeshi": 163.81,
-		"Barbadian": 175.92,
-		"Belarusian": 178.44,
-		"Belgian": 181.70,
-		"Belizean": 168.73,
-		"Beninese": 167.06,
-		"Bermudian": 172.69,
-		"Bhutanese": 165.31,
-		"Bissau-Guinean": 167.90,
-		"Bolivian": 166.85,
-		"Bosnian": 180.87,
-		"Brazilian": 173.55,
-		"British": 177.49,
-		"Bruneian": 165.01,
-		"Bulgarian": 178.24,
-		"Burkinabé": 169.33,
-		"Burmese": 164.67,
-		"Burundian": 166.64,
-		"Cambodian": 163.33,
-		"Cameroonian": 167.82,
-		"Canadian": 178.09,
-		"Cape Verdean": 173.22,
-		"Catalan": 175.8,
-		"Central African": 166.67,
-		"Chadian": 170.44,
-		"Chilean": 171.81,
-		"Chinese": 171.83,
-		"Colombian": 169.50,
-		"Comorian": 166.19,
-		"Congolese": 167.45,
-		"a Cook Islander": 174.77,
-		"Costa Rican": 168.93,
-		"Croatian": 180.78,
-		"Cuban": 172.00,
-		"Curaçaoan": 165.1,
-		"Cypriot": 174.99,
-		"Czech": 180.10,
-		"Danish": 181.39,
-		"Djiboutian": 166.57,
-		"Dominican": 172.75,
-		"Dominiquais": 176.31,
-		"Dutch": 182.54,
-		"East Timorese": 159.79,
-		"Ecuadorian": 167.08,
-		"Egyptian": 166.68,
-		"Emirati": 170.46,
-		"Equatoguinean": 167.36,
-		"Eritrean": 168.36,
-		"Estonian": 181.59,
-		"Ethiopian": 166.23,
-		"Fijian": 173.90,
-		"Filipina": 163.23,
-		"Finnish": 179.59,
-		"French Guianan": 168,
-		"French Polynesian": 177.41,
-		"French": 179.74,
-		"Gabonese": 167.94,
-		"Gambian": 165.40,
-		"Georgian": 174.34,
-		"German": 179.88,
-		"Ghanan": 168.85,
-		"Greek": 177.32,
-		"Greenlandic": 174.87,
-		"Grenadian": 176.97,
-		"Guamanian": 169.8,
-		"Guatemalan": 163.41,
-		"Guinean": 167.54,
-		"Guyanese": 170.21,
-		"Haitian": 172.64,
-		"Honduran": 166.39,
-		"Hungarian": 177.26,
-		"I-Kiribati": 169.20,
-		"Icelandic": 180.49,
-		"Indian": 164.95,
-		"Indonesian": 163.55,
-		"Iranian": 170.3,
-		"Iraqi": 170.43,
-		"Irish": 178.93,
-		"Israeli": 176.86,
-		"Italian": 177.77,
-		"Ivorian": 166.53,
-		"Jamaican": 174.53,
-		"Japanese": 170.82,
-		"Jordanian": 171.03,
-		"Kazakh": 171.14,
-		"Kenyan": 169.64,
-		"Kittitian": 169.62,
-		"Korean": 173.46,
-		"Kosovan": 179.5,
-		"Kurdish": 175,
-		"Kuwaiti": 172.07,
-		"Kyrgyz": 171.24,
-		"Laotian": 160.52,
-		"Latvian": 181.42,
-		"Lebanese": 174.39,
-		"Liberian": 163.66,
-		"Libyan": 173.53,
-		"a Liechtensteiner": 175.4,
-		"Lithuanian": 179.03,
-		"Luxembourgian": 177.86,
-		"Macedonian": 178.33,
-		"Malagasy": 161.55,
-		"Malawian": 166,
-		"Malaysian": 167.89,
-		"Maldivian": 167.68,
-		"Malian": 171.3,
-		"Maltese": 173.32,
-		"Marshallese": 162.81,
-		"Mauritanian": 163.28,
-		"Mauritian": 170.50,
-		"Mexican": 169.01,
-		"Micronesian": 168.51,
-		"Moldovan": 175.49,
-		"Monégasque": 177.77,
-		"Mongolian": 169.07,
-		"Montenegrin": 178.28,
-		"Moroccan": 170.40,
-		"Mosotho": 165.59,
-		"Motswana": 171.63,
-		"Mozambican": 164.80,
-		"Namibian": 166.96,
-		"Nauruan": 167.83,
-		"Nepalese": 162.32,
-		"New Caledonian": 171.0,
-		"a New Zealander": 177.74,
-		"Ni-Vanuatu": 168.09,
-		"Nicaraguan": 166.71,
-		"Nigerian": 165.91,
-		"Nigerien": 167.68,
-		"Niuean": 175.83,
-		"Norwegian": 179.75,
-		"Omani": 169.16,
-		"Pakistani": 166.95,
-		"Palauan": 167.69,
-		"Palestinian": 172.09,
-		"Panamanian": 168.49,
-		"Papua New Guinean": 163.57,
-		"Paraguayan": 172.83,
-		"Peruvian": 165.23,
-		"Polish": 177.33,
-		"Portuguese": 172.93,
-		"Puerto Rican": 172.08,
-		"Qatari": 170.48,
-		"Romanian": 174.74,
-		"Russian": 176.46,
-		"Rwandan": 162.68,
-		"Sahrawi": 170.40,
-		"Saint Lucian": 171.95,
-		"Salvadoran": 169.77,
-		"Sammarinese": 177.77,
-		"Samoan": 174.38,
-		"São Toméan": 167.38,
-		"Saudi": 167.67,
-		"Scottish": 177.6,
-		"Senegalese": 173.14,
-		"Serbian": 180.57,
-		"Seychellois": 174.21,
-		"Sierra Leonean": 164.41,
-		"Singaporean": 172.57,
-		"Slovak": 179.50,
-		"Slovene": 179.80,
-		"a Solomon Islander": 164.14,
-		"Somali": 166.60,
-		"South African": 166.68,
-		"South Sudanese": 175.9,
-		"Spanish": 176.59,
-		"Sri Lankan": 165.69,
-		"Sudanese": 166.63,
-		"Surinamese": 172.72,
-		"Swazi": 168.13,
-		"Swedish": 179.74,
-		"Swiss": 178.42,
-		"Syrian": 170.43,
-		"Taiwanese": 174.52,
-		"Tajik": 171.26,
-		"Tanzanian": 164.80,
-		"Thai": 169.16,
-		"Tibetan": 168.91,
-		"Togolese": 168.33,
-		"Tongan": 176.76,
-		"Trinidadian": 173.74,
-		"Tunisian": 173.95,
-		"Turkish": 174.21,
-		"Turkmen": 171.97,
-		"Tuvaluan": 169.64,
-		"Ugandan": 165.62,
-		"Ukrainian": 178.46,
-		"Uruguayan": 173.43,
-		"Uzbek": 169.38,
-		"Vatican": 176.5,
-		"Venezuelan": 171.59,
-		"Vietnamese": 164.45,
-		"Vincentian": 172.78,
-		"Yemeni": 159.89,
-		"Zairian": 166.80,
-		"Zambian": 166.52,
-		"Zimbabwean": 168.59,
-		"": 171.42, // defaults
+	const xyMeanHeight = {"Afghan": 165.26, "Albanian": 173.39, "Algerian": 170.07, "American.asian": 172.5, "American.black": 177.4, "American.latina": 172.5, "American.white": 178.2, "American": 177.13, "Andorran": 176.06, "Angolan": 167.31, "Antiguan": 164.8, "Argentinian": 174.62, "Armenian": 172.00, "Aruban": 165.1, "Australian": 179.20, "Austrian": 177.41, "Azerbaijani": 169.75, "Bahamian": 172.75, "Bahraini": 167.74, "Bangladeshi": 163.81, "Barbadian": 175.92, "Belarusian": 178.44, "Belgian": 181.70, "Belizean": 168.73, "Beninese": 167.06, "Bermudian": 172.69, "Bhutanese": 165.31, "Bissau-Guinean": 167.90, "Bolivian": 166.85, "Bosnian": 180.87, "Brazilian": 173.55, "British": 177.49, "Bruneian": 165.01, "Bulgarian": 178.24, "Burkinabé": 169.33, "Burmese": 164.67, "Burundian": 166.64, "Cambodian": 163.33, "Cameroonian": 167.82, "Canadian": 178.09, "Cape Verdean": 173.22, "Catalan": 175.8, "Central African": 166.67, "Chadian": 170.44, "Chilean": 171.81, "Chinese": 171.83, "Colombian": 169.50, "Comorian": 166.19, "Congolese": 167.45, "a Cook Islander": 174.77, "Costa Rican": 168.93, "Croatian": 180.78, "Cuban": 172.00, "Curaçaoan": 165.1, "Cypriot": 174.99, "Czech": 180.10, "Danish": 181.39, "Djiboutian": 166.57, "Dominican": 172.75, "Dominiquais": 176.31, "Dutch": 182.54, "East Timorese": 159.79, "Ecuadorian": 167.08, "Egyptian": 166.68, "Emirati": 170.46, "Equatoguinean": 167.36, "Eritrean": 168.36, "Estonian": 181.59, "Ethiopian": 166.23, "Fijian": 173.90, "Filipina": 163.23, "Finnish": 179.59, "French Guianan": 168, "French Polynesian": 177.41, "French": 179.74, "Gabonese": 167.94, "Gambian": 165.40, "Georgian": 174.34, "German": 179.88, "Ghanan": 168.85, "Greek": 177.32, "Greenlandic": 174.87, "Grenadian": 176.97, "Guamanian": 169.8, "Guatemalan": 163.41, "Guinean": 167.54, "Guyanese": 170.21, "Haitian": 172.64, "Honduran": 166.39, "Hungarian": 177.26, "I-Kiribati": 169.20, "Icelandic": 180.49, "Indian": 164.95, "Indonesian": 163.55, "Iranian": 170.3, "Iraqi": 170.43, "Irish": 178.93, "Israeli": 176.86, "Italian": 177.77, "Ivorian": 166.53, "Jamaican": 174.53, "Japanese": 170.82, "Jordanian": 171.03, "Kazakh": 171.14, "Kenyan": 169.64, "Kittitian": 169.62, "Korean": 173.46, "Kosovan": 179.5, "Kurdish": 175, "Kuwaiti": 172.07, "Kyrgyz": 171.24, "Laotian": 160.52, "Latvian": 181.42, "Lebanese": 174.39, "Liberian": 163.66, "Libyan": 173.53, "a Liechtensteiner": 175.4, "Lithuanian": 179.03, "Luxembourgian": 177.86, "Macedonian": 178.33, "Malagasy": 161.55, "Malawian": 166, "Malaysian": 167.89, "Maldivian": 167.68, "Malian": 171.3, "Maltese": 173.32, "Marshallese": 162.81, "Mauritanian": 163.28, "Mauritian": 170.50, "Mexican": 169.01, "Micronesian": 168.51, "Moldovan": 175.49, "Monégasque": 177.77, "Mongolian": 169.07, "Montenegrin": 178.28, "Moroccan": 170.40, "Mosotho": 165.59, "Motswana": 171.63, "Mozambican": 164.80, "Namibian": 166.96, "Nauruan": 167.83, "Nepalese": 162.32, "New Caledonian": 171.0, "a New Zealander": 177.74, "Ni-Vanuatu": 168.09, "Nicaraguan": 166.71, "Nigerian": 165.91, "Nigerien": 167.68, "Niuean": 175.83, "Norwegian": 179.75, "Omani": 169.16, "Pakistani": 166.95, "Palauan": 167.69, "Palestinian": 172.09, "Panamanian": 168.49, "Papua New Guinean": 163.57, "Paraguayan": 172.83, "Peruvian": 165.23, "Polish": 177.33, "Portuguese": 172.93, "Puerto Rican": 172.08, "Qatari": 170.48, "Romanian": 174.74, "Russian": 176.46, "Rwandan": 162.68, "Sahrawi": 170.40, "Saint Lucian": 171.95, "Salvadoran": 169.77, "Sammarinese": 177.77, "Samoan": 174.38, "São Toméan": 167.38, "Saudi": 167.67, "Scottish": 177.6, "Senegalese": 173.14, "Serbian": 180.57, "Seychellois": 174.21, "Sierra Leonean": 164.41, "Singaporean": 172.57, "Slovak": 179.50, "Slovene": 179.80, "a Solomon Islander": 164.14, "Somali": 166.60, "South African": 166.68, "South Sudanese": 175.9, "Spanish": 176.59, "Sri Lankan": 165.69, "Sudanese": 166.63, "Surinamese": 172.72, "Swazi": 168.13, "Swedish": 179.74, "Swiss": 178.42, "Syrian": 170.43, "Taiwanese": 174.52, "Tajik": 171.26, "Tanzanian": 164.80, "Thai": 169.16, "Tibetan": 168.91, "Togolese": 168.33, "Tongan": 176.76, "Trinidadian": 173.74, "Tunisian": 173.95, "Turkish": 174.21, "Turkmen": 171.97, "Tuvaluan": 169.64, "Ugandan": 165.62, "Ukrainian": 178.46, "Uruguayan": 173.43, "Uzbek": 169.38, "Vatican": 176.5, "Venezuelan": 171.59, "Vietnamese": 164.45, "Vincentian": 172.78, "Yemeni": 159.89, "Zairian": 166.80, "Zambian": 166.52, "Zimbabwean": 168.59, "": 171.42, // defaults
 	};
 
 	// Helper method - table lookup for nationality/race combinations
diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw
index 3c13257ba0d..0309112121b 100644
--- a/src/uncategorized/wardrobeUse.tw
+++ b/src/uncategorized/wardrobeUse.tw
@@ -252,8 +252,8 @@
 		/* prepare display of currently selected color. */
 		/* TODO: update currently selected color upon outfit select */
 		/* _clothingBaseColor is set by display (Art_Vector_Set_Colour_Shoe_), but not all outfits define a color. */
-		/* _skinColor is used as fallback default (set by Art_Vector_Set_Colour_Skin_). */
-		<<set _clothingBaseColor = _skinColor >>
+		/* _skinColour is used as fallback default (set by Art_Vector_Set_Colour_Skin_). */
+		<<set _clothingBaseColor = _skinColour >>
 		<<if def _outfitBaseColour>>
 			/* set default color predefined by choice of outfit */
 			<<set _clothingBaseColor = _outfitBaseColour>>
-- 
GitLab