From c0f1e51d0c33103092bf347bc9e24585f827cc15 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Fri, 18 Dec 2020 11:20:35 -0500
Subject: [PATCH] move eye color to physical, move physical to JS

---
 src/npc/startingGirls/startingGirls.js | 493 +++++++++++++------------
 src/npc/startingGirls/startingGirls.tw |   3 +-
 2 files changed, 261 insertions(+), 235 deletions(-)

diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index a9998e8e1a7..388070a5aa4 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -686,23 +686,35 @@ App.StartingGirls.applyPlayerOrigin = function(slave) {
 
 App.StartingGirls.physical = function(slave) {
 	const el = new DocumentFragment();
-	const _options = new App.UI.OptionsGroup();
-	let _option;
+	const options = new App.UI.OptionsGroup();
+	let option;
 
-	_options.addOption(`Height: ${heightToEitherUnit(slave.height)}`, "height", slave).showTextBox("cm")
+	options.addOption(`Height: ${heightToEitherUnit(slave.height)}`, "height", slave).showTextBox("cm")
 		.addRange(145, 150, "<", "Petite")
 		.addRange(155, 160, "<", "Short")
 		.addRange(165, 170, "<", "Average")
 		.addRange(180, 185, "<", "Tall")
 		.addRange(190, 185, ">=", "Very tall");
-	_option = _options.addOption(`Average height for a ${slave.actualAge} year old """is ${heightToEitherUnit(Math.round(Height.mean(slave)))}"""`)
-		.customButton("Make average", () => resyncSlaveHight(slave)));
+	option = options.addOption(`Average height for a ${slave.actualAge} year old """is ${heightToEitherUnit(Math.round(Height.mean(slave)))}"""`)
+		.customButton(
+			"Make average",
+			() => resyncSlaveHight(slave),
+			""
+		);
 	if (V.cheatMode === 1) {
-		_option.customButton("Make dwarf", () => slave.height = Height.random(slave, {limitMult:	[-4, -1], spread: 0.15}))
-		.customButton("Make giant", () => ${slave.height} = Height.random(slave, {limitMult:	[3, 10], spread: 0.15})));
+		option.customButton(
+			"Make dwarf",
+			() => slave.height = Height.random(slave, {limitMult: [-4, -1], spread: 0.15}),
+			""
+		)
+			.customButton(
+				"Make giant",
+				() => slave.height = Height.random(slave, {limitMult: [3, 10], spread: 0.15}),
+				""
+			);
 	}
 
-	_options.addOption("Weight", "weight", slave)
+	options.addOption("Weight", "weight", slave)
 		.addRange(-100, -95, "<", "Emaciated")
 		.addRange(-50, -30, "<", "Skinny")
 		.addRange(-20, -10, "<", "Thin")
@@ -714,7 +726,7 @@ App.StartingGirls.physical = function(slave) {
 		.addRange(180, 190, "<", "Super obese")
 		.addRange(200, 190, ">=", "Dangerously obese");
 
-	_options.addOption("Muscles", "muscles", slave)
+	options.addOption("Muscles", "muscles", slave)
 		.addRange(-100, -96, "<", "Frail")
 		.addRange(-66, -51, "<", "Very weak")
 		.addRange(-41, -6, "<", "Weak")
@@ -724,7 +736,7 @@ App.StartingGirls.physical = function(slave) {
 		.addRange(65, 95, "<", "Quite muscular")
 		.addRange(100, 95, ">=", "Ripped");
 
-	_options.addOption("Waist", "waist", slave)
+	options.addOption("Waist", "waist", slave)
 		.addRange(-100, -95, "<", "	Absurd")
 		.addRange(-55, -40, "<", "Hourglass")
 		.addRange(-25, -15, "<", "Feminine")
@@ -733,14 +745,14 @@ App.StartingGirls.physical = function(slave) {
 		.addRange(55, 95, "<", "Ugly")
 		.addRange(100, 10, ">=", "Masculine");
 
-	_option = _options.addOption("Facial appearance", "faceShape", slave)
-		.addValue("Normal", "normal")
-		if (V.seeDicks !== 0) {
-			_option.addValue("Masculine", "masculine");
-		}
-		_option.addValueList([["Androgynous", "androgynous"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]]);
+	option = options.addOption("Facial appearance", "faceShape", slave)
+		.addValue("Normal", "normal");
+	if (V.seeDicks !== 0) {
+		option.addValue("Masculine", "masculine");
+	}
+	option.addValueList([["Androgynous", "androgynous"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]]);
 
-	_options.addOption("Facial attractiveness", "face", slave)
+	options.addOption("Facial attractiveness", "face", slave)
 		.addRange(-100, -95, "<", "Very ugly")
 		.addRange(-55, -40, "<", "Ugly")
 		.addRange(-15, -10, "<", "Unattractive")
@@ -749,23 +761,23 @@ App.StartingGirls.physical = function(slave) {
 		.addRange(55, 95, "<", "Beautiful")
 		.addRange(100, 95, ">=", "Very beautiful");
 
-	_option = _options.addOption("Lips", "lips", slave)
+	option = options.addOption("Lips", "lips", slave)
 		.addRange(5, 10, "<", "Thin")
 		.addRange(15, 20, "<", "Normal")
 		.addRange(25, 40, "<", "Pretty")
 		.addRange(55, 70, "<", "Plush");
 	if (V.seeExtreme === 1) {
-		_option.addRange(85, 95, "<", "Huge")
+		option.addRange(85, 95, "<", "Huge")
 			.addRange(100, 95, ">=", "Facepussy");
 	} else {
-		_option.addRange(85, 70, ">=", "Huge");
+		option.addRange(85, 70, ">=", "Huge");
 	}
 
-	_options.addOption("Voice", "voice", slave)
-	.addValueList([["Mute", 0], ["Deep", 1], ["Normal", 2], ["High", 3]]));
+	options.addOption("Voice", "voice", slave)
+		.addValueList([["Mute", 0], ["Deep", 1], ["Normal", 2], ["High", 3]]);
 
 	if (slave.voice !== 0) {
-		_options.addOption("V.language", "accent", slave)
+		options.addOption(V.language, "accent", slave)
 			.addValueList([
 				["Unaccented", 0],
 				[`Pretty ${aNational(slave.nationality)} accent`, 1],
@@ -774,30 +786,30 @@ App.StartingGirls.physical = function(slave) {
 			]);
 	}
 
-	_option = _options.addOption("Teeth", "teeth", slave)
-	.addValueList([
-		["Crooked", "crooked"],
-		["Gapped", "gapped"],
-		["Braces", "straightening braces"]
-	]);
+	option = options.addOption("Teeth", "teeth", slave)
+		.addValueList([
+			["Crooked", "crooked"],
+			["Gapped", "gapped"],
+			["Braces", "straightening braces"]
+		]);
 	if (slave.physicalAge >= 12) {
 		if (slave.teeth === "baby" || slave.teeth === "mixed") {
 			slave.teeth = "normal";
 		}
-		_option.addValue("Straight", "normal");
+		option.addValue("Straight", "normal");
 	} else if (slave.physicalAge >= 6) {
 		if (slave.teeth === "baby" || slave.teeth === "normal" || slave.teeth === "") {
 			slave.teeth = "mixed";
 		}
-		_option.addValue("Mixed adult & child", "mixed");
+		option.addValue("Mixed adult & child", "mixed");
 	} else {
 		if (slave.teeth === "mixed" || slave.teeth === "normal" || slave.teeth === "") {
 			slave.teeth = "mixed";
 		}
-		_option.addValue("Baby", "baby");
+		option.addValue("Baby", "baby");
 	}
 
-	_options.addOption("Breasts", "boobs", slave).showTextBox("CCs")
+	options.addOption("Breasts", "boobs", slave).showTextBox("CCs")
 		.addRange(200, 200, "<=", "Flat (AA-cup)")
 		.addRange(300, 300, "<=", "Small (A-cup)")
 		.addRange(400, 400, "<=", "Medium (B-cup)")
@@ -809,240 +821,251 @@ App.StartingGirls.physical = function(slave) {
 		.addRange(6000, 6000, "<=", "Monstrous")
 		.addRange(8000, 6000, ">", "Science Experiment");
 
-	_options.addOption("Natural shape", "boobShape", slave)
-	.addValueList([
-		["Normal", "normal"],
-		["Perky", "perky"],
-		["Torpedo-shaped", "torpedo-shaped"],
-		["Wide-set", "wide-set"],
-		["Downward-facing", "downward-facing"],
-		["Saggy", "saggy"]
-	]);
-
-	_options.addOption("Lactation", "lactation", slave)
+	options.addOption("Natural shape", "boobShape", slave)
+		.addValueList([
+			["Normal", "normal"],
+			["Perky", "perky"],
+			["Torpedo-shaped", "torpedo-shaped"],
+			["Wide-set", "wide-set"],
+			["Downward-facing", "downward-facing"],
+			["Saggy", "saggy"]
+		]);
+
+	options.addOption("Lactation", "lactation", slave)
 		.addValue("Artificial", 2, () => slave.lactationDuration = 2)
 		.addValue("Natural", 1, () => slave.lactationDuration = 2)
 		.addValue("None", 0);
 
-	_options.addOption("Nipples", "nipples", slave)
-	.addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Partially Inverted", "partially inverted"], ["Inverted", "inverted"], ["Huge", "huge"]]);
+	options.addOption("Nipples", "nipples", slave)
+		.addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Partially Inverted", "partially inverted"], ["Inverted", "inverted"], ["Huge", "huge"]]);
 
-	_options.addOption("Areolae", "areolae", slave)
-	.addValueList([["Normal", 0], ["Large", 1], ["Wide", 2], ["Huge", 3], ["Massive", 4]]);
+	options.addOption("Areolae", "areolae", slave)
+		.addValueList([["Normal", 0], ["Large", 1], ["Wide", 2], ["Huge", 3], ["Massive", 4]]);
 
-	_options.addOption("Shoulders", "shoulders", slave)
-	.addValueList([["Very narrow", -2], ["Narrow", -1], ["Feminine", 0], ["Broad", 1], ["Very broad", 2]]);
+	options.addOption("Shoulders", "shoulders", slave)
+		.addValueList([["Very narrow", -2], ["Narrow", -1], ["Feminine", 0], ["Broad", 1], ["Very broad", 2]]);
 
-	_options.addOption("Hips", "hips", slave)
-	.addValueList([["Very narrow", -2], ["Narrow", -1], ["Normal", 0], ["Broad", 1], ["Very broad", 2]]);
+	options.addOption("Hips", "hips", slave)
+		.addValueList([["Very narrow", -2], ["Narrow", -1], ["Normal", 0], ["Broad", 1], ["Very broad", 2]]);
 
-	_options.addOption("Butt", "butt", slave)
-	.addValueList([["Flat", 0], ["Small", 1], ["Plump", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]]);
+	options.addOption("Butt", "butt", slave)
+		.addValueList([["Flat", 0], ["Small", 1], ["Plump", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]]);
 
-	_options.addOption("Anus", "anus", slave)
-	.addValueList([["Virgin", 0], ["Normal", 1], ["Veteran", 2], ["Gaping", 3]]);
+	options.addOption("Anus", "anus", slave)
+		.addValueList([["Virgin", 0], ["Normal", 1], ["Veteran", 2], ["Gaping", 3]]);
 
 	if (slave.anus > 0) {
+		let comment;
 		if (slave.analArea <= slave.anus) {
-			_comment = "Recently stretched to current size.";
+			comment = "Recently stretched to current size.";
 		} else if (slave.analArea - slave.anus === 1) {
-			_comment = "Used to current size.";
+			comment = "Used to current size.";
 		} else {
-			_comment = "Very broad.";
+			comment = "Very broad.";
 		}
-		_options.addOption("External anus appearance", "anus", slave)
-		.addValueList([
-			["Recently stretched", slave.analArea = slave.anus],
-			["Used to current size", slave.analArea = slave.anus+1],
-			["Very broad", slave.analArea = slave.anus+2],
-		]).addComment(_comment);
+		options.addOption("External anus appearance", "anus", slave)
+			.addValueList([
+				["Recently stretched", slave.analArea = slave.anus],
+				["Used to current size", slave.analArea = slave.anus+1],
+				["Very broad", slave.analArea = slave.anus+2],
+			]).addComment(comment);
 	}
 
-	_options.addOption("Vagina", "vagina", slave)
-	.addValue("No vagina", -1, () => {
-		slave.preg = 0;
-		WombFlush(slave);
-		slave.belly = 0;
-		slave.bellyPreg = 0;
-		slave.pubertyXX = 0;
-		slave.pubertyAgeXX = V.fertilityAge;
-		slave.ovaries= 0;
-	}).addValue("Virgin", 0, () => {
-		slave.preg} = -1;
-		slave.belly} = 0;
-		slave.bellyPreg} = 0;
-		slave.ovaries} = 1`);
-	}).addValue("Normal", 1, () => {
-		slave.preg} = -1;
-		slave.belly} = 0;
-		slave.bellyPreg} = 0;
-		slave.ovaries} = 1`);
-	}).addValue("Veteran", 2, () => {
-		slave.preg} = -1;
-		slave.belly} = 0;
-		slave.bellyPreg} = 0;
-		slave.ovaries} = 1`);
-	}).addValue("Gaping", 3, () => {
-		slave.preg} = -1;
-		slave.belly} = 0;
-		slave.bellyPreg} = 0;
-		slave.ovaries} = 1`);
-	})>>
+	options.addOption("Vagina", "vagina", slave)
+		.addValue("No vagina", -1, () => {
+			slave.preg = 0;
+			WombFlush(slave);
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.pubertyXX = 0;
+			slave.pubertyAgeXX = V.fertilityAge;
+			slave.ovaries= 0;
+		})
+		.addValue("Virgin", 0, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Normal", 1, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Veteran", 2, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Gaping", 3, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		});
 
 	if (slave.vagina > -1) {
 		if (slave.dick === 0) {
-			_options.addOption("Clit", "clit", slave)
-			.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]]));
+			options.addOption("Clit", "clit", slave)
+				.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]]);
 		}
 
-		_options.addOption("Labia", "labia", slave)
-		.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2], ["Huge Dangling", 3]]));
+		options.addOption("Labia", "labia", slave)
+			.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2], ["Huge Dangling", 3]]);
 
-		_options.addOption("Vaginal wetness", "vaginaLube", slave)
-		.addValueList([["Dry", 0], ["Normal", 1], ["Excessive", 2]]));
+		options.addOption("Vaginal wetness", "vaginaLube", slave)
+			.addValueList([["Dry", 0], ["Normal", 1], ["Excessive", 2]]);
 
 		if (V.seePreg !== 0) {
 			/* This is only shown if slave has vagina */
-			_options.addOption("Puberty", "pubertyXX", slave)
-			.addValue("Prepubescent", 0, () => {`);
-				slave.pubertyAgeXX} = V.fertilityAge;
-				slave.belly} = 0;
-				slave.bellyPreg} = 0;
-				WombFlush(${slave)
-			}).addValue("Postpubescent", 1)>>
+			options.addOption("Puberty", "pubertyXX", slave)
+				.addValue("Prepubescent", 0, () => {
+					slave.pubertyAgeXX = V.fertilityAge;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					WombFlush(slave);
+				}).addValue("Postpubescent", 1);
 
-			_options.addOption("Age of puberty", "pubertyAgeXX", slave).showTextBox();
+			options.addOption("Age of puberty", "pubertyAgeXX", slave).showTextBox();
 
 			if (slave.pubertyXX === 1) {
-				_option = _options.addOption("Pregnancy", "preg", slave);
+				option = options.addOption("Pregnancy", "preg", slave);
 				if (V.seeHyperPreg === 1 && V.cheatMode === 1) {
-					_option.addValue("Bursting at the seams", 43, () => {
-						slave.pregType} = 150;
-						slave.pregWeek} = 43;
-						slave.pregKnown} = 1;
-						slave.belly} = 2700000;
-						slave.bellyPreg} = 2700000;
-						slave.pubertyXX} = 1;
-					})>>
+					option.addValue("Bursting at the seams", 43, () => {
+						slave.pregType = 150;
+						slave.pregWeek = 43;
+						slave.pregKnown = 1;
+						slave.belly = 2700000;
+						slave.bellyPreg = 2700000;
+						slave.pubertyXX = 1;
+					});
 					if (slave.preg === 43) {
-						_option.addComment("Extreme hyper pregnancy!");
+						option.addComment("Extreme hyper pregnancy!");
 					}
 				}
-				_option.addValue("Completely Filled", 42, () => {
-					slave.pregType} = 8;
-					slave.pregWeek} = 42;
-					slave.pregKnown} = 1;
-					slave.belly} = 120000;
-					slave.bellyPreg} = 120000;
-					slave.pubertyXX} = 1;
+				option.addValue("Completely Filled", 42, () => {
+					slave.pregType = 8;
+					slave.pregWeek = 42;
+					slave.pregKnown = 1;
+					slave.belly = 120000;
+					slave.bellyPreg = 120000;
+					slave.pubertyXX = 1;
 				}).addValue("Ready to drop", 40, () => {
-					slave.pregType} = 1;
-					slave.pregWeek} = 40;
-					slave.pregKnown} = 1;
-					slave.belly} = 15000;
-					slave.bellyPreg} = 15000;
-					slave.pubertyXX} = 1;
+					slave.pregType = 1;
+					slave.pregWeek = 40;
+					slave.pregKnown = 1;
+					slave.belly = 15000;
+					slave.bellyPreg = 15000;
+					slave.pubertyXX = 1;
 				}).addValue("Advanced", 34, () => {
-					slave.pregType} = 1;
-					slave.pregWeek} = 34;
-					slave.pregKnown} = 1;
-					slave.belly} = 10000;
-					slave.bellyPreg} = 10000;
-					slave.pubertyXX} = 1;
+					slave.pregType = 1;
+					slave.pregWeek = 34;
+					slave.pregKnown = 1;
+					slave.belly = 10000;
+					slave.bellyPreg = 10000;
+					slave.pubertyXX = 1;
 				}).addValue("Showing", 27, () => {
-					slave.pregType} = 1;
-					slave.pregWeek} = 27;
-					slave.pregKnown} = 1;
-					slave.belly} = 5000;
-					slave.bellyPreg} = 5000;
-					slave.pubertyXX} = 1;
+					slave.pregType = 1;
+					slave.pregWeek = 27;
+					slave.pregKnown = 1;
+					slave.belly = 5000;
+					slave.bellyPreg = 5000;
+					slave.pubertyXX = 1;
 				}).addValue("Early", 12, () => {
-					slave.pregType} = 1;
-					slave.pregWeek} = 12;
-					slave.pregKnown} = 1;
-					slave.belly} = 100;
-					slave.bellyPreg} = 100;
-					slave.pubertyXX} = 1;
+					slave.pregType = 1;
+					slave.pregWeek = 12;
+					slave.pregKnown = 1;
+					slave.belly = 100;
+					slave.bellyPreg = 100;
+					slave.pubertyXX = 1;
 				}).addValue("None", 0, () => {
-					slave.pregType} = 0;
-					slave.belly} = 0;
-					slave.bellyPreg} = 0;
-					slave.pregSource} = 0;
-					slave.pregWeek} = 0;
-					slave.pregKnown} = 0;
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
 				}).addValue("Contraceptives", -1, () => {
-					slave.pregType} = 0;
-					slave.belly} = 0;
-					slave.bellyPreg} = 0;
-					slave.pregSource} = 0;
-					slave.pregWeek} = 0;
-					slave.pregKnown} = 0;
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
 				}).addValue("Barren", -2, () => {
-					slave.pregType} = 0;
-					slave.belly} = 0;
-					slave.bellyPreg} = 0;
-					slave.pregSource} = 0;
-					slave.pregWeek} = 0;
-					slave.pregKnown} = 0;
-				})>>
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
+				});
 			}
 
 			if (V.PC.dick > 0 && slave.preg > 0) {
-				_options.addOption("Father of child", "pregSource", slave)
-				.addValueList([["My child", -1], ["Not me", 0]]));
+				options.addOption("Father of child", "pregSource", slave)
+					.addValueList([["My child", -1], ["Not me", 0]]);
 			}
 		}
 	}
 
 	if (V.seeDicks !== 0 || V.makeDicks === 1) {
-		_options.addOption("Penis", "dick", slave)
-		.addValue("None", 0, () => {`);
-			slave.balls} = 0;
-			slave.pubertyXY} = 0;
-			slave.pubertyAgeXY} = V.potencyAge;
-		}).addValue("Tiny", 1, () => {slave.clit = 0})
-		.addValue("Small", 2, () => {${slave.clit} = 0});
-		.addValue("Normal", 3, () => {${slave.clit} = 0});
-		.addValue("Large", 4, () => {${slave.clit} = 0});
-		.addValue("Massive", 5, () => {${slave.clit} = 0}));
+		options.addOption("Penis", "dick", slave)
+			.addValue("None", 0, () => {
+				slave.balls = 0;
+				slave.pubertyXY = 0;
+				slave.pubertyAgeXY = V.potencyAge;
+			})
+			.addValue("Tiny", 1, () => slave.clit = 0)
+			.addValue("Small", 2, () => slave.clit = 0)
+			.addValue("Normal", 3, () => slave.clit = 0)
+			.addValue("Large", 4, () => slave.clit = 0)
+			.addValue("Massive", 5, () => slave.clit = 0);
 
 		if (slave.dick > 0) {
-			_option = _options.addOption("Foreskin", "foreskin", slave);
+			option = options.addOption("Foreskin", "foreskin", slave);
 			if (V.seeCircumcision === 1) {
-				_option.addValue("Circumcised", 0);
+				option.addValue("Circumcised", 0);
 			} else if (slave.foreskin === 0) {
 				slave.foreskin = 3;
 			}
-			_option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
+			option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
 		}
 
-		_options.addOption("Testicles", "balls", slave)
-		.addValue("None", 0, () => {`);
-			slave.pubertyXY} = 0;
-			slave.pubertyAgeXY} = V.potencyAge;
-			slave.scrotum} = 0;
-		}).addValueList([["Vestigial", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>>
+		options.addOption("Testicles", "balls", slave)
+			.addValue("None", 0, () => {
+				slave.pubertyXY = 0;
+				slave.pubertyAgeXY = V.potencyAge;
+				slave.scrotum = 0;
+			}).addValueList([["Vestigial", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
 
-		_options.addOption("Age of Male Puberty", "pubertyAgeXY", slave).showTextBox();
+		options.addOption("Age of Male Puberty", "pubertyAgeXY", slave).showTextBox();
 
 		if (slave.balls > 0) {
-			_options.addOption("Ballsack", "scrotum", slave)
-			.addValueList([["None", 0], ["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]));
+			options.addOption("Ballsack", "scrotum", slave)
+				.addValueList([["None", 0], ["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
 
-			_options.addOption("Male Puberty", "pubertyXY", slave)
-			.addValue("Prepubescent", 0, () => {${slave.pubertyAgeXY} = V.potencyAge});
-			.addValue("Postpubescent", 1));
+			options.addOption("Male Puberty", "pubertyXY", slave)
+				.addValue("Prepubescent", 0, () => slave.pubertyAgeXY = V.potencyAge)
+				.addValue("Postpubescent", 1);
 		}
 	}
 
-	_options.addOption("Prostate", "prostate", slave)
-	.addValueList([["No prostate", 0], ["Has a prostate", 1]]));
-
-	_optionLeft = _options.addOption("Left eye", "vision", slave.eye.left);
-	_optionRight = _options.addOption("Right eye", "vision", slave.eye.right);
-	_optionLeft.addValueList([["Normal", 2], ["Nearsighted", 1]]), _optionRight.addValueList([["Normal", 2], ["Nearsighted", 1]]);
+	options.addOption("Prostate", "prostate", slave)
+		.addValueList([
+			["No prostate", 0],
+			["Has a prostate", 1]
+		]);
+
+	const optionLeft = options.addOption("Left eye", "vision", slave.eye.left);
+	const optionRight = options.addOption("Right eye", "vision", slave.eye.right);
+	optionLeft.addValueList([["Normal", 2], ["Nearsighted", 1]]);
+	optionRight.addValueList([["Normal", 2], ["Nearsighted", 1]]);
 	if (V.seeExtreme === 1) {
-		_optionLeft.addValue("Blind", 0),  _optionRight.addValue("Blind", 0);
+		optionLeft.addValue("Blind", 0);
+		optionRight.addValue("Blind", 0);
 	} else {
 		if (slave.eye.left.vision === 0) {
 			slave.eye.left.vision = 2;
@@ -1051,44 +1074,48 @@ App.StartingGirls.physical = function(slave) {
 			slave.eye.right.vision = 2;
 		}
 	}
+	option = options.addOption("Natural eye color", "origColor", slave.eye);
+	for (const color of App.Medicine.Modification.eyeColor.map(color => color.value)) {
+		option.addValue(capFirstChar(color), color);
+	}
+	option.pulldown();
 
-	_option = _options.addOption("Hearing", "hears", slave);
-	_option.addValueList([["Normal", 0], ["Hard of hearing", -1]]);
+	option = options.addOption("Hearing", "hears", slave);
+	option.addValueList([["Normal", 0], ["Hard of hearing", -1]]);
 	if (V.seeExtreme === 1) {
-		_option.addValue("Deaf", -2);
+		option.addValue("Deaf", -2);
 	} else if (slave.hears === 0) {
 		slave.hears = 2;
 	}
 
-
 	if (V.seeExtreme === 1) {
-		_options.addOption("Smell ability", "smells", slave)
-		.addValueList([["Normal", 0], ["None", -1]]));
-
-		_options.addOption("Taste ability", "tastes", slave)
-		.addValueList([["Normal", 0], ["None", -1]]));
-
-		_LA = hasLeftArm(slave);
-		_options.addOption("Left arm", "LA", State.temporary)
-		.addValue("Healthy", true, () => ${slave.arm.left} = new App.Entity.LimbState());
-		.addValue("Amputated", false, () => ${slave.arm.left} = null));
-
-		_RA = hasRightArm(slave);
-		_options.addOption("Right arm", "RA", State.temporary)
-		.addValue("Healthy", true, () => ${slave.arm.right} = new App.Entity.LimbState());
-		.addValue("Amputated", false, () => ${slave.arm.right} = null));
-
-		_LL = hasLeftLeg(slave);
-		_options.addOption("Left leg", "LL", State.temporary)
-		.addValue("Healthy", true, () => ${slave.leg.left} = new App.Entity.LimbState());
-		.addValue("Amputated", false, () => ${slave.leg.left} = null));
-
-		_RL = hasRightLeg(slave);
-		_options.addOption("Right leg", "RL", State.temporary)
-		.addValue("Healthy", true, () => ${slave.leg.right} = new App.Entity.LimbState());
-		.addValue("Amputated", false, () => ${slave.leg.right} = null));
+		options.addOption("Smell ability", "smells", slave)
+			.addValueList([["Normal", 0], ["None", -1]]);
+
+		options.addOption("Taste ability", "tastes", slave)
+			.addValueList([["Normal", 0], ["None", -1]]);
+
+		State.temporary.LA = hasLeftArm(slave);
+		options.addOption("Left arm", "LA", State.temporary)
+			.addValue("Healthy", true, () => slave.arm.left = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.arm.left = null);
+
+		State.temporary.RA = hasRightArm(slave);
+		options.addOption("Right arm", "RA", State.temporary)
+			.addValue("Healthy", true, () => slave.arm.right = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.arm.right = null);
+
+		State.temporary.LL = hasLeftLeg(slave);
+		options.addOption("Left leg", "LL", State.temporary)
+			.addValue("Healthy", true, () => slave.leg.left = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.leg.left = null);
+
+		State.temporary.RL = hasRightLeg(slave);
+		options.addOption("Right leg", "RL", State.temporary)
+			.addValue("Healthy", true, () => slave.leg.right = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.leg.right = null);
 	}
 
-	<<includeDOM _options.render()>>
+	el.append(options.render());
 	return el;
 };
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 65d8837e967..81527ab4386 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -348,8 +348,7 @@
 
 <div id="Physical" class="tab-content">
 	<div class="content">
-
-	
+		<<includeDOM App.StartingGirls.physical($activeSlave)>>
 	</div>
 </div>
 
-- 
GitLab