diff --git a/devNotes/eye functions.md b/devNotes/eye functions.md
new file mode 100644
index 0000000000000000000000000000000000000000..e1bdb1a49e240fd267cc3749277d67c1979cb098
--- /dev/null
+++ b/devNotes/eye functions.md	
@@ -0,0 +1,133 @@
+## Eye Functions
+
+In all functions `side` can be `left`, `right` or `both` unless stated otherwise.
+
+Eye types: `1`: normal; `2`: glass; `3`: cybernetic  
+`0` is used as return value if there is no eye, but is never stored in the slave object.
+
+Vision: `0`: blind; `1`: nearsighted (or impaired/blurred); `2`: normal
+
+### Read-only functions
+
+* `hasAnyEyes(slave)`:  
+    True if slave has at least one eye.
+
+* `hasAnyNaturalEyes(slave)`:  
+    True if slave has at least one eye that is natural.
+
+* `hasAnyProstheticEyes(slave)`:  
+    True if slave has at least one eye that is prosthetic (cybernetic or glass).
+
+* `hasAnyCyberneticEyes(slave)`:  
+    True if slave has at least one eye that is cybernetic.
+
+* `hasBothEyes(slave)`:  
+    True if slave has both eyes.
+
+* `hasBothNaturalEyes(slave)`:    
+    True if slave has both eyes and they are natural.
+
+* `hasBothProstheticEyes(slave)`:
+    True if slave has both eyes and they are prosthetic (cybernetic or glass).
+
+* `hasBothCyberneticEyes(slave)`:  
+    True if slave has both eyes and they are cybernetic.
+
+* `hasLeftEye(slave)`:  
+    True if slave has left eye.
+
+* `hasRightEye(slave)`:  
+    True if slave has right eye.
+
+* `getLeftEyeType(slave)`:  
+    Returns type of the left eye.
+
+* `getRightEyeType(slave)`:  
+    Returns type of the right eye.
+
+* `getLeftEyeVision(slave)`:  
+    Returns vision of the left eye.
+
+* `getRightEyeVision(slave)`:  
+    Returns vision of the right eye.
+
+* `getBestVision(slave)`:  
+    Returns highest vision of both eyes.
+
+* `getWorstVision(slave)`:  
+    Returns lowest vision of both eyes. 
+
+* `anyVisionEquals(slave, vision)`:  
+    True if one eye has the specified vision.
+
+* `getLeftEyeColor(slave)`:  
+    Returns color of the left eye. If there is no eye `empty` is returned.
+
+* `getRightEyeColor(slave)`:  
+    Returns color of the right eye. If there is no eye `empty` is returned.
+
+* `getLeftEyePupil(slave)`:  
+    Returns the shape of pupil of the left eye. If there is no eye `circular` is returned.
+
+* `getRightEyePupil(slave)`:  
+    Returns the shape of pupil of the right eye. If there is no eye `circular` is returned.
+
+* `hasVisibleHeterochromia(slave)`:  
+    True if left and right eye colors are different. Does NOT relate to the genetic quirk.
+
+* `getGeneticEyeColor(slave, side)`:  
+    Gives the genetic color of the specified eye.  
+    `both` is not allowed as value of `side`.
+
+* `getLenseCount(slave)`:  
+    Counts the number of eyes that are not the genetic color.
+
+
+### Description
+
+* `App.Desc.eyesType(slave)`:  
+    Fits in a sentence like this: She has {return}.
+
+* `App.Desc.eyeTypeToString(type)`:  
+    Converts an eye type to a string.  
+    `1` -> `natural`  
+    `2` -> `glass`  
+    `3` -> `artificial`
+
+* `App.Desc.eyesColor(slave, adj = "", eye = "eye", eyes = "eyes")`:  
+    Fits in a sentence like this: She has {return}.  
+    `adj` is added in between color and eye like this: `brown wet eyes`.
+
+* `App.Desc.eyeColor(slave)`:  
+    Fits in a sentence like this: She has {return} eyes.  
+    Prefer App.Desc.eyesColor if possible as it works reliably with only one eye. Example where this is better: {return}-eyed gaze
+
+* `App.Desc.eyesVision(slave)`:  
+    Fits in a sentence like this: She has {return}.
+
+* `App.Desc.eyesToVision(slave)`:  
+    Converts an eye vision to a string.  
+    `0` -> `blind`  
+    `1` -> `nearsighted`  
+    `2` -> `normal`  
+
+
+### Modification
+
+* `eyeSurgery(slave, side, action)`:  
+    Modifies a slaves eyes.  
+    Allowed values for `action`:  
+    No Existing eyes required: `normal`, `glass`, `cybernetic`  
+    Existing eyes required: `remove`, `blind`, `blur`, `fix`
+
+* `setEyeColor(slave, color, side = "both")`:  
+    Changes the visible eye color.
+
+* `setEyeColorFull(slave, iris, pupil, sclera, side)`:  
+    Changes all visible parts of the eye.
+
+* `setGeneticEyeColor(slave, color, heterochromia = false)`:  
+    Changes the genetic eye color. WARNING: If `heterochromia` is `true`, the function will add the genetic quirk, even if the slave did not have it before.
+
+* `resetEyeColor(slave, side)`:  
+    Sets the eye color to the genetic color. Takes heterochromia and albinism into account.
\ No newline at end of file
diff --git a/devTools/javaSanityCheck/ignoredVariables b/devTools/javaSanityCheck/ignoredVariables
index 0fc5a1a4d7c6b699daec3e63842c7279347fa434..a37fa1878c60ccb5939b3c7aed3e9531e341deee 100644
--- a/devTools/javaSanityCheck/ignoredVariables
+++ b/devTools/javaSanityCheck/ignoredVariables
@@ -83,12 +83,10 @@ toy
 base;pmod
 saRules
 plural
-orig
 bimboMaleNames
 RuleHasError
 DefaultRulesError
 # PC
-vision
 criticalDamage
 marriage
 lovers
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index e03826017476958517a98b40adb8c2dec4204cea..4bd49fb8953eb04ea8bc460c50f5ee090ffd6706 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1356,28 +1356,25 @@ accepts string
 "freckles"
 "heavily freckled"
 
-eyes:
+eye:
+Object, for easy read/write access see "devNotes/eye functions.md"
 
-slave eyesight
--4 - empty
--3 - glass eye
--2 - blind
--1 - nearsighted
- 1 - normal
+eye.origColor:
+genetic eye color
 
-eyesImplant:
+left/right interchangeable in the following:
+eye.left.vision:
+0: blind
+1: nearsighted
+2: normal
 
-0 - normal eyes
-1 - artificial eyes
+eye.left.type:
+1: normal
+2: glass
+3: cybernetic
 
-origEye:
-
-slave's original eye color, defaults to their initial eye color.
-
-eyeColor:
-
-eye color
-accepts string
+eye.left.iris:
+basic eye color:
 
 "blue"
 "black"
@@ -1392,10 +1389,8 @@ accepts string
 "amber"
 "red"
 
-pupil:
-
-shape of slave pupils
-accepts string
+eye.left.pupil:
+shape of pupil
 
 "catlike"
 "serpent-like"
@@ -1412,10 +1407,8 @@ accepts string
 "star-shaped"
 "goat-like"
 
-sclerae:
-
-color of slave sclerae
-accepts string
+eye.left.sclera:
+color of sclera
 
 "white"
 "blue"
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index e4928d8c1b544482ab5376d681d4fab4ec7163bf..2a25d8dc5917bd3f618e24c201794d07512b9334 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -1,7 +1,7 @@
 App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "3.1.0",
-	release: 1058,
+	release: 1059,
 };
 
 /* Use release as save version */
diff --git a/src/SecExp/attackHandler.tw b/src/SecExp/attackHandler.tw
index 57d263a0b836cb1116b257cc4dbfdaebbe00ada2..46186e3aafadc243820240dff61c2c6fa5b48389 100644
--- a/src/SecExp/attackHandler.tw
+++ b/src/SecExp/attackHandler.tw
@@ -283,7 +283,7 @@
 		<<if $Bodyguard.muscles < -30>>
 			<<set _woundChance += 1>>
 		<</if>>
-		<<if $Bodyguard.eyes <= -2>>
+		<<if getBestVision($Bodyguard) === 0>>
 			<<set _woundChance += 1>>
 		<</if>>
 		<<if $Bodyguard.heels == 1>>
@@ -320,7 +320,7 @@
 				<<set $slaves[_i].voice = 0>>
 				<<set $slaves[_i].health -= 60>>
 			<<elseif $woundType == 2>>
-				<<set $slaves[_i].eyes = -2>>
+				<<run eyeSurgery($slaves[_i], "both", "blind")>>
 				<<set $slaves[_i].health -= 30>>
 			<<elseif $woundType == 3>>
 				<<run removeLimbs($slaves[_i], "all")>>
@@ -409,7 +409,7 @@
 		<<if $HeadGirl.muscles < -30>>
 			<<set _woundChance += 1>>
 		<</if>>
-		<<if $HeadGirl.eyes <= -2>>
+		<<if getBestVision($HeadGirl) === 0>>
 			<<set _woundChance += 1>>
 		<</if>>
 		<<if $HeadGirl.heels == 1>>
@@ -446,7 +446,7 @@
 				<<set $slaves[_i].voice = 0>>
 				<<set $slaves[_i].health -= 60>>
 			<<elseif $woundType == 2>>
-				<<set $slaves[_i].eyes = -2>>
+				<<set eyeSurgery($slaves[_i], "both", "blind")>>
 				<<set $slaves[_i].health -= 30>>
 			<<elseif $woundType == 3>>
 				<<run removeLimbs($slaves[_i], "all")>>
diff --git a/src/SecExp/rebellionReport.tw b/src/SecExp/rebellionReport.tw
index cb2eebbb597727feb75f8d47f92cfa1c5036f3d7..c74fc093fa6dbdcde152271bca5b0bd14c2ae982 100644
--- a/src/SecExp/rebellionReport.tw
+++ b/src/SecExp/rebellionReport.tw
@@ -576,7 +576,7 @@
 			<<if $Concubine.muscles < -30>>
 				<<set _woundChance += 1>>
 			<</if>>
-			<<if $Concubine.eyes <= -2>>
+			<<if getBestVision($Concubine) === 0>>
 				<<set _woundChance += 1>>
 			<</if>>
 			<<if $Concubine.heels == 1>>
@@ -609,7 +609,7 @@
 					<<set $Concubine.voice = 0>>
 				<<elseif $woundType == 2>>
 					a splinter hit $his face, severely damaging $his eyes.
-					<<set $Concubine.eyes = -2>>
+					<<run eyeSurgery($Concubine, "both", "blind")>>
 				<<elseif $woundType == 3>>
 					an explosion near $him caused the loss of all $his limbs.
 					<<run removeLimbs($Concubine, "all")>>
@@ -637,7 +637,7 @@
 		<<if $Bodyguard.muscles < -30>>
 			<<set _woundChance += 1>>
 		<</if>>
-		<<if $Bodyguard.eyes <= -2>>
+		<<if getBestVision($Bodyguard) === 0>>
 			<<set _woundChance += 1>>
 		<</if>>
 		<<if $Bodyguard.heels == 1>>
@@ -670,7 +670,7 @@
 				<<set $Bodyguard.voice = 0>>
 			<<elseif $woundType == 2>>
 				A splinter hit _his2 face, severely damaging _his2 eyes.
-				<<set $Bodyguard.eyes = -2>>
+				<<run eyeSurgery($Bodyguard, "both", "blind")>>
 			<<elseif $woundType == 3>>
 				An explosion near _him2 caused the loss of all _his2 limbs.
 				<<run removeLimbs($Bodyguard, "all")>>
@@ -745,7 +745,7 @@
 			<<if $Concubine.muscles < -30>>
 				<<set _woundChance += 1>>
 			<</if>>
-			<<if $Concubine.eyes <= -2>>
+			<<if getBestVision($Concubine) === 0>>
 				<<set _woundChance += 1>>
 			<</if>>
 			<<if $Concubine.heels == 1>>
@@ -778,7 +778,7 @@
 					<<set $Concubine.voice = 0>>
 				<<elseif $woundType == 2>>
 					a splinter hit $his face, severely damaging $his eyes.
-					<<set $Concubine.eyes = -2>>
+					<<run eyeSurgery($Concubine, "both", "blind")>>
 				<<elseif $woundType == 3>>
 					an explosion near $him caused the loss of all $his limbs.
 					<<run removeLimbs($Concubine, "all")>>
@@ -854,7 +854,7 @@
 			<<if $Concubine.muscles < -30>>
 				<<set _woundChance += 1>>
 			<</if>>
-			<<if $Concubine.eyes <= -2>>
+			<<if getBestVision($Concubine) === 0>>
 				<<set _woundChance += 1>>
 			<</if>>
 			<<if $Concubine.heels == 1>>
@@ -887,7 +887,7 @@
 					<<set $Concubine.voice = 0>>
 				<<elseif $woundType == 2>>
 					a splinter hit $his face, severely damaging $his eyes.
-					<<set $Concubine.eyes = -2>>
+					<<run eyeSurgery($Concubine, "both", "blind")>>
 				<<elseif $woundType == 3>>
 					an explosion near $him caused the loss of all $his limbs.
 					<<run removeLimbs($Concubine, "all")>>
diff --git a/src/art/vector/Body_Clothing_Control.tw b/src/art/vector/Body_Clothing_Control.tw
index 85d3e9789c194ef43327639bbe8148cf97a912df..0ecade1d27598491202ba2574eeee14ef531f83f 100644
--- a/src/art/vector/Body_Clothing_Control.tw
+++ b/src/art/vector/Body_Clothing_Control.tw
@@ -2,15 +2,12 @@
 
 <<set _eyeBallColor = "#ffffff">>
 
-<<if _artSlave.eyeColor != "">>
-	<<if _artSlave.eyeColor.split(" ").length > 1>>
-		<<set _eyeLens = _artSlave.eyeColor.split(" ")[0]>>
-
-		<<if _eyeLens == "demonic">>
-			<<set _eyeBallColor = _eyeColor>>
-		<<elseif _eyeLens == "devilish">>
-			<<set _eyeBallColor = "#000000">>
-		<</if>>
+<<if hasAnyEyes(_artSlave)>>
+	<<set _eyeLens = hasLeftEye(_artSlave) ? getLeftEyePupil(_artSlave) : getRightEyePupil(_artSlave)>>
+	<<if _eyeLens == "demonic">>
+		<<set _eyeBallColor = hasLeftEye(_artSlave) ? getLeftEyeColor(_artSlave) : getRightEyeColor(_artSlave)>>
+	<<elseif _eyeLens == "devilish">>
+		<<set _eyeBallColor = "#000000">>
 	<</if>>
 <</if>>
 
@@ -97,4 +94,4 @@
 	<<set _showTorsoHighlight = 0>>
 	<<set _showLegHighlight = 0>>
 	<<set _showBoobsHighlight = 0>>
-<</if>>
\ No newline at end of file
+<</if>>
diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js
index f6f25cd0a6a81c15c1f724401292524229ddba07..0227136241d63723cf033b32b04c8829cd5d8e06 100644
--- a/src/art/vector/VectorArtJS.js
+++ b/src/art/vector/VectorArtJS.js
@@ -1325,7 +1325,11 @@ App.Art.vectorArtElement = (function() {
 				T.glassesColor = slave.glassesColor || "#010101"; /* use custom color or default */
 			}
 
-			T.eyeColor = extractColor(slave.eyeColor, 1);
+			if (hasAnyEyes(slave)) {
+				T.eyeColor = extractColor(hasLeftEye(slave) ? getLeftEyeColor(slave) : getRightEyeColor(slave), 1);
+			} else {
+				T.eyeColor = extractColor("brown");
+			}
 			T.outfitBaseColour = outfitBaseColour;
 		}
 
@@ -1670,7 +1674,12 @@ App.Art.vectorArtElement = (function() {
 			T.pubicHairColour = extractColor(slave.pubicHColor);
 			T.underarmHairColour = extractColor(slave.underArmHColor);
 			T.eyebrowHairColour = extractColor(slave.eyebrowHColor);
-			T.sclerae = extractColor(slave.sclerae);
+			if (hasAnyEyes(slave)) {
+				T.sclerae = extractColor(hasLeftEye(slave) ? slave.eye.left.sclera : slave.eye.right.sclera);
+
+			} else {
+				T.sclerae = extractColor("white");
+			}
 		}
 
 		function setShoeColor() {
diff --git a/src/art/vector_revamp/vectorRevampedArtControl.js b/src/art/vector_revamp/vectorRevampedArtControl.js
index 777e24b26bebf37cd482239409468acb051138c8..e752bf9b8d273f37ba905b109c1079e93b37e514 100644
--- a/src/art/vector_revamp/vectorRevampedArtControl.js
+++ b/src/art/vector_revamp/vectorRevampedArtControl.js
@@ -173,17 +173,11 @@ class ArtStyleControl {
 	}
 
 	applyEyeLensStyle() {
-		if (this.artSlave.eyeColor === null || this.artSlave.eyeColor === undefined) {
+		if (!hasAnyEyes(this.artSlave)) {
 			return;
 		}
 
-		let eyeColorSplit = this.artSlave.eyeColor.split(" ");
-
-		if (eyeColorSplit === 1) {
-			return;
-		}
-
-		let eyeLens = eyeColorSplit[0];
+		let eyeLens = hasLeftEye(this.artSlave) ? getLeftEyePupil(this.artSlave) : getRightEyePupil(this.artSlave);
 
 		switch (eyeLens) {
 			case "demonic":
@@ -308,7 +302,11 @@ class ArtStyleControl {
 		this.eyeball.fill = "#dfdfdf";
 
 		this.iris = new ArtStyleEntry("iris");
-		this.iris.fill = extractColor(this.artSlave.eyeColor, 1);
+		if (hasAnyEyes(this.artSlave)) {
+			this.iris.fill = extractColor(hasLeftEye(this.artSlave) ? getLeftEyeColor(this.artSlave) : getRightEyeColor(this.artSlave), 1);
+		} else {
+			this.iris.fill = extractColor("brown", 1);
+		}
 
 		this.highlight1 = new ArtStyleEntry("highlight1");
 		this.highlight1.fill = "#ffffff";
diff --git a/src/endWeek/saNanny.js b/src/endWeek/saNanny.js
index d68140b503c3ecd31974899914050b20f4ac232f..3ffe96b82e2dc97014afe77dd4882b08ca62e8d9 100644
--- a/src/endWeek/saNanny.js
+++ b/src/endWeek/saNanny.js
@@ -64,7 +64,7 @@ window.saNanny = function saNanny(slave) {
 		t += ` ${His} low sex drive keeps ${him} from becoming too distracted by the intercourse all around ${him}, making ${him} more efficient.`;
 	}
 	// TODO:
-	if ((slave.eyes <= -1 && slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts") || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
+	if (!canSeePerfectly(slave)) {
 		t += ` ${His} bad vision makes ${him} a worse nanny.`;
 	}
 
diff --git a/src/endWeek/saServant.js b/src/endWeek/saServant.js
index b52daabac3ff2d59a7599ce3fc095b88f37f95c9..f8db6797f13cf4faeae757639c6cc6d9e7a3f17b 100644
--- a/src/endWeek/saServant.js
+++ b/src/endWeek/saServant.js
@@ -97,7 +97,7 @@ window.saServant = function saServant(slave) {
 		t += ` ${His} low sex drive keeps ${him} from becoming too distracted by the intercourse all around ${him}, making ${him} more efficient.`;
 	}
 
-	if ((slave.eyes <= -1 && slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts") || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
+	if (!canSeePerfectly(slave)) {
 		t += ` ${His} bad vision makes ${him} a worse servant.`;
 	}
 
diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
index 93fa0c6da327bddc9ae605c4e753105ac106387a..3c4705b0544898314b5a4bf08b0f31af7103a3f2 100644
--- a/src/endWeek/saWorkTheFarm.js
+++ b/src/endWeek/saWorkTheFarm.js
@@ -67,10 +67,10 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 	if (slave.weight > 95) {
 		t += `${He} is so overweight that ${he} has to stop every few minutes to catch ${his} breath, and so ${his} productivity suffers. `;
 	}
-	if (slave.eyes === -1) {
-		t += `${His} nearsightedness makes it harder for ${him} to work as hard as ${he} otherwise would. `;
-	} else if (slave.eyes < -1) {
+	if (!canSee(slave)) {
 		t += `${His} blindness makes it extremely difficult for ${him} to work, severely limiting ${his} production. `;
+	} else if (!canSeePerfectly(slave)) {
+		t += `${His} nearsightedness makes it harder for ${him} to work as hard as ${he} otherwise would. `;
 	}
 	if (slave.hears === -1) {
 		t += `${He} is hard-of-hearing, which gets in the way of ${his} work whenever ${he} misses directions`;
@@ -343,9 +343,9 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 		} else if (slave.muscles < -30) {
 			// TODO: write this - maybe something about the slave's ability to handle the animal?
 		}
-		if (slave.eyes < 1) {
+		if (!canSeePerfectly(slave)) {
 			t += `${His} `;
-			if (slave.eyes < 0) {
+			if (!canSee(slave)) {
 				t += `blindness makes it impossible`;
 			} else {
 				t += `nearsightedness makes it harder`;
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index e7aacfb75b0e090dd3c613ccaa2ad7ac4f6b8ad8..e0110d3a93c7d624c20470b7e90aa6a92f8f77c3 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -528,7 +528,7 @@ __''The Free City''__
 				<<option "Africa" "Africa" "$language = 'Arabic'">>
 				<<option "Asia" "Asia" "$language = 'Chinese'">>
 				<<option "Australia" "Australia" "$language = 'English'">>
-				<<option "Japan" "Japan" "$language = 'Japanese', $PC.race = 'asian', $PC.nationality = 'Japanese', $PC.hColor = 'black', $PC.eye.right.iris = 'brown', $PC.eye.left.iris = 'brown'">>
+				<<option "Japan" "Japan" "$language = 'Japanese', $PC.race = 'asian', $PC.nationality = 'Japanese', $PC.hColor = 'black', $PC.eye.origColor = 'brown', resetEyeColor($PC)">>
 			<</options>>
 		<<else>>
 			<<options $continent>>
@@ -748,11 +748,10 @@ __''Player Character''__
 	<</options>>
 
 	<br>
-	<<set $PC.eye.left.iris = $PC.eye.right.iris>>
 	<<options>>
 		Your eyes are:
 		<<option>>
-			<<textbox2 "$PC.eye.right.iris" $PC.eye.right.iris "Intro Summary">>
+			<<textbox2 "$PC.eye.origColor" $PC.eye.origColor "Intro Summary">>
 	<</options>>
 	<br>
 	<<options>>
@@ -1043,7 +1042,7 @@ __''Player Character''__
 	//Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.//
 
 	<br>
-	You are a $PC.nationality $PC.race with <<if $PC.markings == "heavily freckled">>heavily freckled<<elseif $PC.markings == "freckles">>lightly freckled<<else>>clear<</if>> $PC.skin skin, $PC.hColor hair and $PC.eye.right.iris eyes. You have a $PC.faceShape face.
+	You are a $PC.nationality $PC.race with <<if $PC.markings == "heavily freckled">>heavily freckled<<elseif $PC.markings == "freckles">>lightly freckled<<else>>clear<</if>> $PC.skin skin, $PC.hColor hair and <<print App.Desc.eyesColor($PC)>>. You have a $PC.faceShape face.
 
 	<br>
 	Your preferred refreshment is <<textbox2 "$PC.refreshment" $PC.refreshment "Intro Summary">> [[Cigars|Intro Summary][$PC.refreshment = "cigar",$PC.refreshmentType = 0]] | [[Whiskey|Intro Summary][$PC.refreshment = "whiskey",$PC.refreshmentType = 1]]
@@ -1395,11 +1394,12 @@ __''Mods''__
 	<<if $secExpEnabled > 0>>
 		<<set $wasToggledBefore = 1>>
 	<</if>>
+	<<run resetEyeColor($PC)>>
 <</link>>
 
 <<if ($economy != 100) || ($seeDicks != 25) || ($continent != "North America") || ($internationalTrade != 1) || ($internationalVariety != 1) || ($seeRace != 1) || ($seeNationality != 1) || ($seeExtreme != 0) || ($seeCircumcision != 1) || ($seeAge != 1) || ($plot != 1)>>
-	| [[restore defaults|Intro Summary][$seeDicks = 25,$economy = 100,$continent = "North America",$internationalTrade = 1,$internationalVariety = 1,$seeRace = 1,$seeNationality = 1,$seeExtreme = 0,$seeCircumcision = 1,$seeAge = 1,$plot = 1]]
+	| [[restore defaults|Intro Summary][$seeDicks = 25, $economy = 100, $continent = "North America", $internationalTrade = 1, $internationalVariety = 1, $seeRace = 1, $seeNationality = 1, $seeExtreme = 0, $seeCircumcision = 1, $seeAge = 1, $plot = 1]]
 <</if>>
 
 <br><br>
-[[Cheat Start|init Nationalities][cashX(1000000, "cheating"),$PC.rules.living = "luxurious",repX(20000, "cheating"),$dojo += 1,$cheatMode = 1,$seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion",$sortSlavesOrder = "descending",$sortSlavesMain = 0,$rulesAssistantMain = 1,$abbreviateDevotion = 1,$abbreviateRules = 1,$abbreviateClothes = 2,$abbreviateHealth = 1,$abbreviateDiet = 1,$abbreviateDrugs = 1,$abbreviateRace = 1,$abbreviateNationality = 1,$abbreviateGenitalia = 1,$abbreviatePhysicals = 1,$abbreviateSkills = 1,$abbreviateMental = 2,$PC.skill.trading = 100,$PC.skill.warfare = 100,$PC.skill.slaving = 100,$PC.skill.engineering = 100,$PC.skill.medicine = 100,$PC.skill.hacking = 100]] | //Intended for debugging: may have unexpected effects//
+[[Cheat Start|init Nationalities][cashX(1000000, "cheating"), $PC.rules.living = "luxurious",repX(20000, "cheating"), $dojo += 1, $cheatMode = 1, $seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion", $sortSlavesOrder = "descending", $sortSlavesMain = 0, $rulesAssistantMain = 1, $abbreviateDevotion = 1, $abbreviateRules = 1, $abbreviateClothes = 2, $abbreviateHealth = 1, $abbreviateDiet = 1, $abbreviateDrugs = 1, $abbreviateRace = 1, $abbreviateNationality = 1, $abbreviateGenitalia = 1, $abbreviatePhysicals = 1, $abbreviateSkills = 1, $abbreviateMental = 2, $PC.skill.trading = 100, $PC.skill.warfare = 100, $PC.skill.slaving = 100, $PC.skill.engineering = 100, $PC.skill.medicine = 100, $PC.skill.hacking = 100, resetEyeColor($PC)]] | //Intended for debugging: may have unexpected effects//
diff --git a/src/events/intro/locationIntro.tw b/src/events/intro/locationIntro.tw
index 15732ebbe7211ddb9114a38a81143e312b0d74a0..cb1a33f74ae90a508ceab72ebfbbdcc4c9df9b7d 100644
--- a/src/events/intro/locationIntro.tw
+++ b/src/events/intro/locationIntro.tw
@@ -10,7 +10,7 @@ As the old countries crumble and technology stagnates, the gap between rich and
 [[Africa|Intro Summary][$continent = "Africa", $language = "Arabic"]]
 [[Asia|Intro Summary][$continent = "Asia", $language = "Chinese"]]
 <<if $freshPC == 1 || $saveImported == 0>>
-	[[Japan|Intro Summary][$continent = "Japan", $language = "Japanese", $PC.race = "asian", $PC.nationality = "Japanese", $PC.hColor = "black", $PC.eye.right.iris = "brown", $PC.eye.left.iris = "brown"]]
+	[[Japan|Intro Summary][$continent = "Japan", $language = "Japanese", $PC.race = "asian", $PC.nationality = "Japanese", $PC.hColor = "black", $PC.eye.origColor = "brown", resetEyeColor($PC)]]
 <<else>>
 	[[Japan|Intro Summary][$continent = "Japan", $language = "Japanese"]]
 <</if>>
diff --git a/src/facilities/nursery/nurseryDatatypeCleanup.js b/src/facilities/nursery/nurseryDatatypeCleanup.js
index 2eac8e034c34e9e7033675caafee57aa2264703f..0af37840adfe6c6ccdbf251d1bbbbcd08f6830d7 100644
--- a/src/facilities/nursery/nurseryDatatypeCleanup.js
+++ b/src/facilities/nursery/nurseryDatatypeCleanup.js
@@ -72,19 +72,6 @@ App.Facilities.Nursery.ChildDatatypeCleanup = function(child) {
 		if (typeof child.faceShape !== "string") {
 			child.faceShape = "normal";
 		}
-		child.eyes = Math.clamp(+child.eyes, -3, 1) || 1; /* if 0 or undefined, this sets to 1 */
-		if (typeof child.eyeColor !== "string") {
-			child.eyeColor = "brown";
-		}
-		if (typeof child.origEye !== "string") {
-			child.origEye = child.eyeColor;
-		}
-		if (typeof child.pupil !== "string") {
-			child.pupil = "circular";
-		}
-		if (typeof child.sclerae !== "string") {
-			child.sclerae = "white";
-		}
 		if (child.lips !== 0) {
 			child.lips = Math.clamp(+child.lips, 0, 100) || 15;
 		}
@@ -565,10 +552,6 @@ App.Facilities.Nursery.InfantDatatypeCleanup = function(child) {
 		if (typeof child.faceShape !== "string") {
 			child.faceShape = "normal";
 		}
-		child.eyes = Math.clamp(+child.eyes, -3, 1) || 1; /* if 0 or undefined, this sets to 1 */
-		if (typeof child.eyeColor !== "string") {
-			child.eyeColor = "brown";
-		}
 	}
 
 	function hairDatatypeCleanup(child) {
diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js
index b7cdf6087abe7f3530e236a158fa4c9eab89af06..72b7930972e2a8ebb475f9dc5e10105882eb2451 100644
--- a/src/facilities/nursery/nurseryWidgets.js
+++ b/src/facilities/nursery/nurseryWidgets.js
@@ -1068,9 +1068,9 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	 * @param {App.Entity.SlaveState} child
 	 */
 	function shortEyes(child) {
-		if (child.eyes === -2) {
+		if (!canSee(slave)) {
 			r += `<span class="red">Blind</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			r += `<span class="yellow">Sight-</span> `;
 		}
 	}
@@ -1129,9 +1129,9 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	 * @param {App.Entity.SlaveState} child
 	 */
 	function longEyes(child) {
-		if (child.eyes <= -2) {
+		if (!canSee(slave)) {
 			r += `<span class="red">Blind.</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			r += `<span class="yellow">Nearsighted.</span> `;
 		}
 	}
@@ -4442,9 +4442,9 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	 * @param {App.Entity.SlaveState} child
 	 */
 	function shortEyes(child) {
-		if (child.eyes === -2) {
+		if (!canSee(slave)) {
 			r += `<span class="red">Blind</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			r += `<span class="yellow">Sight-</span> `;
 		}
 	}
@@ -4767,9 +4767,9 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	 * @param {App.Entity.SlaveState} child
 	 */
 	function longEyes(child) {
-		if (child.eyes <= -2) {
+		if (!canSee(slave)) {
 			r += `<span class="red">Blind.</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			r += `<span class="yellow">Nearsighted.</span> `;
 		}
 	}
@@ -12057,12 +12057,11 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 	}
 
 	function upperFace(child) {
-		let
-			r = ``;
+		let r = ``;
 
 		if (!child.fuckdoll) {
-			if (child.eyesImplant) {
-				r += `${He} has artificial eyes. `;
+			if (hasAnyProstheticEyes(child)) {
+				r += `${He} has ${App.Desc.eyesType(slave)}. `;
 			}
 
 			if (child.eyewear === "corrective glasses" || child.eyewear === "blurring glasses" || child.eyewear === "glasses") {
@@ -12080,13 +12079,13 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 						break;
 				}
 
-				if (child.eyes > -1) {
+				if (getWorstVision(child) >= 2) {
 					if (child.eyewear === "blurring glasses") {
 						r += ` which are designed to blur ${his} vision, making ${him} clumsy. `;
 					} else {
 						r += ` which are just for show. `;
 					}
-				} else if (child.eyes === -1) {
+				} else if (getWorstVision(child) >= 1) {
 					if (child.eyewear === "corrective glasses") {
 						r += ` which correct ${his} vision. `;
 					} else {
@@ -12096,11 +12095,11 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 					r += ` which, since ${he} is <span class="red">blind,</span> are just for show. ${He} moves carefully as to not bump into things. `;
 				}
 			} else {
-				if (child.eyes > -1) {
+				if (getWorstVision(child) >= 2) {
 					if (child.eyewear === "blurring contacts") {
 						r += `${He}'s wearing contact lenses designed to blur ${his} vision, making ${him} clumsy. `;
 					}
-				} else if (child.eyes === -1) {
+				} else if (getWorstVision(child) >= 2) {
 					if (child.eyewear === "corrective contacts") {
 						r += `${He}'s wearing contact lenses to correct ${his} <span class="yellow">nearsightedness.</span> `;
 					} else {
@@ -15595,7 +15594,7 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.eyebrowFullness = "natural",
 	child.eyebrowHStyle = "natural",
 	child.eyebrowPiercing = 0,
-	child.eyes = 1,
+	child.eye = new App.Entity.EyeState(),
 	child.eyewear = "none",
 	child.faceImplant = 0,
 	child.fertKnown = 1,
@@ -15674,7 +15673,8 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.oldTrust = 0,		// TODO:
 	child.onDiet = 0,
 	child.origRace = child.race,
-	child.origEye = child.eyeColor,
+	child.eye = new App.Entity.EyeState(),
+	child.eye.orig = child.eyeColor,
 	child.origHColor = child.hColor,
 	child.origSkin = child.skin,
 	child.ovaries = child.genes === "XX" ? 1 : 0,
@@ -15762,7 +15762,6 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.pubertyXX = 1,
 	child.pubicHColor = "black",
 	child.pubicHStyle = "bushy",
-	child.pupil = "circular",
 	child.readyOva = 0,
 	child.rearAccessory = "none",
 	child.relationship = 0,
@@ -15773,7 +15772,6 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.rivalryTarget = 0,
 	child.rudeTitle = 0,
 	child.scars = 0,
-	child.sclerae = "white",
 	child.scrotum = 0,
 	child.shoes = "none",
 	child.shoulders = 0,
@@ -16100,7 +16098,7 @@ App.Facilities.Nursery.newChild = function newChild(child) {
 	}
 
 	if (child.override_Eye_Color !== 1) {
-		child.eyeColor = getGeneticEyeColor(child);
+		resetEyeColor(child, "both");
 	}
 	if (child.override_H_Color !== 1) {
 		child.hColor = getGeneticHairColor(child);
@@ -16808,26 +16806,10 @@ App.Facilities.Nursery.ChildState = class ChildState {
 		*/
 		this.markings = "none";
 		/**
-			* slave eyesight
-			* * -4: empty (no descriptions)
-			* * -3: glass eye
-			* * -2: blind
-			* * -1: nearsighted
-			* * 1: normal
-			*/
-		this.eyes = 1;
-		/** Child has artificial eyes
-			*
-			* 0: no; 1: yes */
-		this.eyesImplant = 0;
-		/** Eye color */
-		this.eyeColor = "brown";
-		/** Child's original eye color, defaults to their initial eye color. */
-		this.origEye = "brown";
-		/** Shape of slave pupils */
-		this.pupil = "circular";
-		/** Color of slave sclerae */
-		this.sclerae = "white";
+		 * Eyes of the slave.
+		 * @type {App.Entity.EyeState}
+		 */
+		this.eye = new App.Entity.EyeState();
 		/** "none", "glasses", "blurring glasses", "corrective glasses", "blurring contacts", "corrective contacts" */
 		this.eyewear = "none";
 		/** Slave hearing
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index fc2c5944818499eb74180c964ac56aca6982cd17..5da49ebb6af150363c99a3da89522ade0375cf47 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1363,7 +1363,7 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $weatherToday = $niceWeather.random()>>
 
 <<set $customSlaveOrdered = 0>>
-<<set $customSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eyes: 1, hears: 0}>>
+<<set $customSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eye: new App.Entity.EyeState(), hears: 0}>>
 
 <<set $huskSlaveOrdered = 0>>
 <<set $huskSlave = {age: 18, nationality: "Stateless", race: "white", sex: 1, virgin: 0}>>
diff --git a/src/interaction/prostheticConfig.tw b/src/interaction/prostheticConfig.tw
index 04540e8427b5f736548f14ff8e0f4fb70b8a3820..f628de0ddf67c45ede151be337a56615dbededd2 100644
--- a/src/interaction/prostheticConfig.tw
+++ b/src/interaction/prostheticConfig.tw
@@ -26,82 +26,98 @@ This room is lined with shelves and cabinets, it could be easily mistaken for a
 	Your slave $activeSlave.slaveName is lying on the table, waiting for your instructions.
 <</if>>
 
-<<if $activeSlave.eyesImplant == 1>><br><br>&nbsp;
-	$He has an ocular implant installed.
-	<<if $activeSlave.eyes == 1>>
-		They are operating normally.
-	<<elseif $activeSlave.eyes == -1>>
-		They are set to blur $his vision.
-	<<else>>
-		They are turned off.
-	<</if>>
-	<br><br>
-	<<if $activeSlave.eyes != 1>>
-		[[Restore vision|Prosthetics Configuration][$activeSlave.eyes = 1, $prostheticsConfig = "eyes"]] |
-	<</if>>
-	<<if $activeSlave.eyes != -1>>
-		[[Blur|Prosthetics Configuration][$activeSlave.eyes = -1, $prostheticsConfig = "eyes"]] |
+<<if hasAnyCyberneticEyes($activeSlave)>>
+	<h2>Eyes</h2>
+	$He has <<if hasBothCyberneticEyes($activeSlave)>> ocular implants <<else>> an ocular implant <</if>> installed. You can change the settings:
+
+	<style>
+		.eyeContainer {
+			display: grid;
+			grid-template-columns: 80px 50px 70px 50px;
+		}
+	</style>
+
+	<div class="eyeContainer">
+	<<set _on = 0, _blur = 0, _off = 0>>
+	<<if getLeftEyeType($activeSlave) === 3>>
+		<div>&nbsp;Left:</div>
+		<div>
+		<<if getLeftEyeVision($activeSlave) !== 2>>
+			<<set _on++>>
+			[["[ON]"|Prosthetics Configuration][eyeSurgery($activeSlave, "left", "fix")]]
+		<<else>>
+			<<print "[ON]">>
+		<</if>>
+		</div><div>
+		<<if getLeftEyeVision($activeSlave) !== 1>>
+			<<set _blur++>>
+			[["[BLUR]"|Prosthetics Configuration][eyeSurgery($activeSlave, "left", "blur")]]
+		<<else>>
+			<<print "[BLUR]">>
+		<</if>>
+		</div><div>
+		<<if getLeftEyeVision($activeSlave) !== 0>>
+			<<set _off++>>
+			[["[OFF]"|Prosthetics Configuration][eyeSurgery($activeSlave, "left", "blind")]]
+		<<else>>
+			<<print "[OFF]">>
+		<</if>>
+		</div>
+	<</if>>
+	<<if getRightEyeType($activeSlave) === 3>>
+		<div>&nbsp;Right:</div>
+		<div>
+		<<if getRightEyeVision($activeSlave) !== 2>>
+			<<set _on++>>
+			[["[ON]"|Prosthetics Configuration][eyeSurgery($activeSlave, "right", "fix")]]
+		<<else>>
+			<<print "[ON]">>
+		<</if>>
+		</div><div>
+		<<if getRightEyeVision($activeSlave) !== 1>>
+			<<set _blur++>>
+			[["[BLUR]"|Prosthetics Configuration][eyeSurgery($activeSlave, "right", "blur")]]
+		<<else>>
+			<<print "[BLUR]">>
+		<</if>>
+		</div><div>
+		<<if getRightEyeVision($activeSlave) !== 0>>
+			<<set _off++>>
+			[["[OFF]"|Prosthetics Configuration][eyeSurgery($activeSlave, "right", "blind")]]
+		<<else>>
+			<<print "[OFF]">>
+		<</if>>
+		</div>
 	<</if>>
-	<<if $activeSlave.eyes != -2>>
-		[[Disable|Prosthetics Configuration][$activeSlave.eyes = -2, $prostheticsConfig = "eyes"]]
+	<<if hasBothCyberneticEyes($activeSlave)>>
+		<div>&nbsp;Both:</div>
+		<div>
+		<<if _on > 0>>
+			[["[ON]"|Prosthetics Configuration][eyeSurgery($activeSlave, "both", "fix")]]
+		<<else>>
+			<<print "[ON]">>
+		<</if>>
+		</div><div>
+		<<if _blur > 0>>
+			[["[BLUR]"|Prosthetics Configuration][eyeSurgery($activeSlave, "both", "blur")]]
+		<<else>>
+			<<print "[BLUR]">>
+		<</if>>
+		</div><div>
+		<<if _off > 0>>
+			[["[OFF]"|Prosthetics Configuration][eyeSurgery($activeSlave, "both", "blind")]]
+		<<else>>
+			<<print "[OFF]">>
+		<</if>>
+		</div>
 	<</if>>
+	</div>
 
-	$He currently has $activeSlave.eyeColor lenses equipped.
-
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-	Swap out $his lenses:
-	<br>
-	Iris Color:
-	[[Blue|Prosthetics Configuration][$activeSlave.eyeColor = "blue", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Black|Prosthetics Configuration][$activeSlave.eyeColor = "black", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Brown|Prosthetics Configuration][$activeSlave.eyeColor = "brown", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Green|Prosthetics Configuration][$activeSlave.eyeColor = "green", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Turquoise|Prosthetics Configuration][$activeSlave.eyeColor = "turquoise", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Sky-Blue|Prosthetics Configuration][$activeSlave.eyeColor = "sky-blue", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Hazel|Prosthetics Configuration][$activeSlave.eyeColor = "hazel", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Pale-Grey|Prosthetics Configuration][$activeSlave.eyeColor = "pale-grey", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[White|Prosthetics Configuration][$activeSlave.eyeColor = "white", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Pink|Prosthetics Configuration][$activeSlave.eyeColor = "pink", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Amber|Prosthetics Configuration][$activeSlave.eyeColor = "amber", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Red|Prosthetics Configuration][$activeSlave.eyeColor = "red", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Yellow|Prosthetics Configuration][$activeSlave.eyeColor = "yellow", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Orange|Prosthetics Configuration][$activeSlave.eyeColor = "orange", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	<br>
-	Pupil Shape:
-	<br>[[Circular|Prosthetics Configuration][$activeSlave.pupil = "circular", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Catlike|Prosthetics Configuration][$activeSlave.pupil = "catlike", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Serpent-Like|Prosthetics Configuration][$activeSlave.pupil = "serpent-like", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Devilish|Prosthetics Configuration][$activeSlave.pupil = "devilish", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Demonic|Prosthetics Configuration][$activeSlave.pupil = "demonic", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Hypnotic|Prosthetics Configuration][$activeSlave.pupil = "hypnotic", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Heart-Shaped|Prosthetics Configuration][$activeSlave.pupil = "heart-shaped", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Wide-Eyed|Prosthetics Configuration][$activeSlave.pupil = "wide-eyed", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Almond-Shaped|Prosthetics Configuration][$activeSlave.pupil = "almond-shaped", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Bright|Prosthetics Configuration][$activeSlave.pupil = "bright", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Teary|Prosthetics Configuration][$activeSlave.pupil = "teary", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Vacant|Prosthetics Configuration][$activeSlave.pupil = "vacant", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Star-Shaped|Prosthetics Configuration][$activeSlave.pupil = "star-shaped", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Goat-Like|Prosthetics Configuration][$activeSlave.pupil = "goat-like", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	<br>
-	Sclera Colors:
-	[[White|Prosthetics Configuration][$activeSlave.sclerae = "white", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Blue|Prosthetics Configuration][$activeSlave.sclerae = "blue", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Black|Prosthetics Configuration][$activeSlave.sclerae = "black", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Brown|Prosthetics Configuration][$activeSlave.sclerae = "brown", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Green|Prosthetics Configuration][$activeSlave.sclerae = "green", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Turquoise|Prosthetics Configuration][$activeSlave.sclerae = "turquoise", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Sky-Blue|Prosthetics Configuration][$activeSlave.sclerae = "sky-blue", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Hazel|Prosthetics Configuration][$activeSlave.sclerae = "hazel", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Pale-Grey|Prosthetics Configuration][$activeSlave.sclerae = "pale-grey", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Pink|Prosthetics Configuration][$activeSlave.sclerae = "pink", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Amber|Prosthetics Configuration][$activeSlave.sclerae = "amber", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Red|Prosthetics Configuration][$activeSlave.sclerae = "red", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Yellow|Prosthetics Configuration][$activeSlave.sclerae = "yellow", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Orange|Prosthetics Configuration][$activeSlave.sclerae = "orange", $prostheticsConfig = "eyeColor", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	<br>$He has <<print App.Desc.eyesColor($activeSlave)>>. To change $his eye color visit the auto salon.
 <</if>>
 
-<<if $activeSlave.earImplant == 1>><br><br>&nbsp;
+<<if $activeSlave.earImplant == 1>><br><br>
+	<h2>Ears</h2>
 	$He has a cochlear implant installed.
 	<<if $activeSlave.hears == 0>>
 		They are operating normally.
@@ -122,7 +138,8 @@ This room is lined with shelves and cabinets, it could be easily mistaken for a
 	<</if>>
 <</if>>
 
-<<if $activeSlave.electrolarynx == 1>><br><br>&nbsp;
+<<if $activeSlave.electrolarynx == 1>><br><br>
+	<h2>Voice</h2>
 	$He has an electrolarynx installed.
 	<<if $activeSlave.voice == 0>>
 		It is turned off.
@@ -148,10 +165,13 @@ This room is lined with shelves and cabinets, it could be easily mistaken for a
 	<</if>>
 <</if>>
 
+<br><br>
+<h2>Limbs</h2>
 <<= App.Desc.limbChange().selector($activeSlave, App.Desc.limbChange().currentLimbs($activeSlave))>>
 
+<br><br>
+<h2>Tail</h2>
 <<if $activeSlave.PTail == 1>>
-	<br><br>
 	$He has a neural tail interface installed. You can assign and adjust $his tail here.
 	<<if $activeSlave.tail != "none">><br>&nbsp;
 		$He currently has a tail attached, if you wish to change it you will first need to detach it.<br>
@@ -174,8 +194,8 @@ This room is lined with shelves and cabinets, it could be easily mistaken for a
 			| [[Attach Pleasure Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", $activeSlave.tail = "sex", $activeSlave.tailColor = "pink"]]
 		<</if>>
 	<</if>>
-<<else>><br><br>
-	$He does not have a neural tail interface installed so you cannot attach a tail.
+<<else>>
+	//$He does not have a neural tail interface installed so you cannot attach a tail.//
 <</if>>
 <<if $activeSlave.tail == "mod">><br>
 	$He currently has a modular tail, styled to look like
@@ -204,8 +224,8 @@ This room is lined with shelves and cabinets, it could be easily mistaken for a
 <</if>>
 
 <br><br>
-Fit prosthetics to $him:
-<hr>
+<h2>Prosthetics</h2>
+//Fit prosthetics to $him://
 
 <style>
 	.container {
@@ -269,10 +289,7 @@ Fit prosthetics to $him:
 
 /* base screen END */
 
-<<case "eyeColor">>
-	<<set $prostheticsConfig = "main", $nextButton = "Continue", $nextLink = "Prosthetics Configuration">>
-	<<if hasBothLegs($activeSlave)>>You have $him lie down and<<else>>You<</if>> use a speculum to keep $his eyes open while you disengage $his lenses remotely and swap them out with $his new $activeSlave.eyeColor lenses<<if $activeSlave.pupil != "circular" || $activeSlave.sclerae != "white">> with <<if $activeSlave.pupil != "circular" >>$activeSlave.pupil pupils<</if>><<if $activeSlave.pupil != "circular" && $activeSlave.sclerae != "white">> and <</if>><<if $activeSlave.sclerae != "white" >>$activeSlave.sclerae sclerae<</if>><</if>>.
-
+/*
 <<case "eyes">>
 	<<set $prostheticsConfig = "main", $nextButton = "Continue", $nextLink = "Prosthetics Configuration">>
 	<<if $activeSlave.eyes == 1>>
@@ -282,6 +299,7 @@ Fit prosthetics to $him:
 	<<else>>
 		$He has a panicked expression when $his vision suddenly goes out.
 	<</if>>
+*/
 
 <<case "limbs">>
 	<<set $prostheticsConfig = "main", $nextButton = "Continue", $nextLink = "Prosthetics Configuration">>
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 43a9dd547fb01509be47f3428779788ffc9e4f6f..f68846ceaf3d957285a22526b2694d5124b6a951 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -250,7 +250,7 @@ window.DefaultRules = (function() {
 		if ((rule.eyewear !== undefined) && (rule.eyewear !== null)) {
 			switch (rule.eyewear) {
 				case "correct with glasses":
-					if (slave.eyes === -1) {
+					if (anyVisionEquals(slave, 1)) {
 						if (slave.eyewear !== "corrective glasses") {
 							slave.eyewear = "corrective glasses";
 							cashX(forceNeg(V.modCost), "slaveMod", slave);
@@ -265,7 +265,7 @@ window.DefaultRules = (function() {
 					break;
 
 				case "correct with contacts":
-					if (slave.eyes === -1) {
+					if (anyVisionEquals(slave, 1)) {
 						if (slave.eyewear !== "corrective contacts") {
 							slave.eyewear = "corrective contacts";
 							cashX(forceNeg(V.modCost), "slaveMod", slave);
@@ -280,7 +280,7 @@ window.DefaultRules = (function() {
 					break;
 
 				case "blur with glasses":
-					if (slave.eyes > -1) {
+					if (anyVisionEquals(slave, 2)) {
 						if (slave.eyewear !== "blurring glasses") {
 							slave.eyewear = "blurring glasses";
 							cashX(forceNeg(V.modCost), "slaveMod", slave);
@@ -295,7 +295,7 @@ window.DefaultRules = (function() {
 					break;
 
 				case "blur with contacts":
-					if (slave.eyes > -1) {
+					if (anyVisionEquals(slave, 2)) {
 						if (slave.eyewear !== "blurring contacts") {
 							slave.eyewear = "blurring contacts";
 							cashX(forceNeg(V.modCost), "slaveMod", slave);
@@ -310,7 +310,7 @@ window.DefaultRules = (function() {
 					break;
 
 				case "universal glasses":
-					if (slave.eyes === -1) {
+					if (anyVisionEquals(slave, 1)) {
 						if (slave.eyewear !== "corrective glasses") {
 							slave.eyewear = "corrective glasses";
 							cashX(forceNeg(V.modCost), "slaveMod", slave);
@@ -2133,10 +2133,10 @@ window.DefaultRules = (function() {
 	 */
 	function ProcessStyle(slave, rule) {
 		if (rule.eyeColor !== undefined && (rule.eyeColor !== null)) {
-			if ((slave.eyeColor !== rule.eyeColor)) {
-				slave.eyeColor = rule.eyeColor;
+			if (getLeftEyeColor(slave) !== rule.eyeColor || getRightEyeColor(slave) !== rule.eyeColor) {
+				setEyeColor(slave, rule.eyeColor);
 				cashX(forceNeg(V.modCost), "slaveMod", slave);
-				r += `<br>${slave.slaveName} has been given ${slave.eyeColor} contact lenses.`;
+				r += `<br>${slave.slaveName} has been given ${rule.eyeColor} contact lenses.`;
 			}
 		}
 
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 5fa48a24a0374198dfbf45af261f05992d3ade1f..9fb9ed392619adf37d48f31b8f9ae79eb7782419 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -440,7 +440,7 @@ App.Entity.LimbState = class LimbState {
 /**
  * To ensure that all new eyes contain expected attributes
  */
-App.Entity.EyeState = class EyeState {
+App.Entity.SingleEyeState = class SingleEyeState {
 	constructor() {
 		/**
 		 * type of eye
@@ -451,19 +451,15 @@ App.Entity.EyeState = class EyeState {
 		this.type = 1;
 		/**
 		 * vision of eye
-		 * * 1: normal
-		 * * 2: impaired
-		 * * 3: blind
+		 * * 0: blind
+		 * * 1: impaired
+		 * * 2: normal
 		 */
-		this.see = 1;
+		this.vision = 2;
 		/**
 		 * current eye color
 		 */
 		this.iris = "brown";
-		/**
-		 * original eye color
-		 */
-		this.orig = "brown";
 		/**
 		 * pupil shape
 		 */
@@ -475,6 +471,14 @@ App.Entity.EyeState = class EyeState {
 	}
 };
 
+App.Entity.EyeState = class EyeState {
+	constructor() {
+		this.left = new App.Entity.SingleEyeState();
+		this.right = new App.Entity.SingleEyeState();
+		this.origColor = "brown";
+	}
+};
+
 App.Entity.SlaveState = class SlaveState {
 	constructor() {
 		/** Slave's current name */
@@ -677,38 +681,12 @@ App.Entity.SlaveState = class SlaveState {
 		 */
 		this.markings = "none";
 		/**
-		 * slave eyesight
-		 * * -4: empty (no descriptions)
-		 * * -3: glass eye
-		 * * -2: blind
-		 * * -1: nearsighted
-		 * * 1: normal
+		 * Eyes of the slave.
+		 * @type {App.Entity.EyeState}
 		 */
-		this.eyes = 1;
-		/** Slave has artificial eyes
-		 *
-		 * 0: no; 1: yes */
-		this.eyesImplant = 0;
-		/** eye color */
-		this.eyeColor = "brown";
-		/** slave's original eye color, defaults to their initial eye color. */
-		this.origEye = "brown";
-		/** shape of slave pupils */
-		this.pupil = "circular";
-		/** color of slave sclerae */
-		this.sclerae = "white";
+		this.eye = new App.Entity.EyeState();
 		/** "none", "glasses", "blurring glasses", "corrective glasses", "blurring contacts", "corrective contacts" */
 		this.eyewear = "none";
-		/**
-		 * eyes of the slave
-		 */
-		/*
-		this.eyeball = {
-			left: new App.Entity.EyeState(),
-			right: new App.Entity.EyeState()
-		};
-
-		 */
 		/** slave hearing
 		 *
 		 * -2: deaf; -1: hard of hearing; 0: normal */
@@ -2114,7 +2092,7 @@ App.Entity.SlaveState = class SlaveState {
 			uFace: 0,
 			/** has pale skin, white hair and red eyes */
 			albinism: 0,
-			/** may have mismatched eyes */
+			/** may have mismatched eyes, the eye color stored here is always the left eye */
 			heterochromia: 0,
 			/** ass never stops growing. Increased growth rate, reduced shrink rate. */
 			rearLipedema: 0,
@@ -2504,6 +2482,7 @@ App.Entity.SlaveState = class SlaveState {
 		return {
 			arm: {left: {}, right: {}},
 			leg: {left: {}, right: {}},
+			eye: {left: {}, right: {}},
 			readyProsthetics: [], // yes, not an object, but needed for hero slaves
 			counter: {},
 			brand: {},
diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index dfe35e3a7c13315f7aa367a0e5c6d266b912a24f..42c39cc88716ecbff018a48426e0fda05d12619d 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -50,14 +50,6 @@ window.inferiorRaceP = function inferiorRaceP(slave) {
 	return State.variables.arcologies[0].FSSubjugationistRace === slave.race;
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasVisibleHeterochromia = function hasVisibleHeterochromia(slave) {
-	return slave.geneticQuirks.heterochromia !== 0 && slave.geneticQuirks.heterochromia !== 1 && slave.geneticQuirks.albinism !== 2 && slave.geneticQuirks.heterochromia !== slave.eyeColor && slave.eyeColor === slave.origEye;
-};
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {boolean}
@@ -76,7 +68,7 @@ window.isLeaderP = function isLeaderP(slave) {
  */
 window.applyGeneticColor = function(slave) {
 	if (slave.override_Eye_Color !== 1) {
-		slave.eyeColor = getGeneticEyeColor(slave);
+		resetEyeColor(slave, "both");
 	}
 	if (slave.override_H_Color !== 1) {
 		slave.hColor = getGeneticHairColor(slave);
@@ -1096,7 +1088,7 @@ window.DegradingName = function DegradingName(slave) {
 			}
 		}
 		names.push(slave.hColor);
-		if (slave.eyes <= -2) {
+		if (!hasAnyEyes(slave)) {
 			names.push("Blind", "Eyeless", "Sightless");
 		}
 		if (slave.hears === -2) {
@@ -1721,7 +1713,7 @@ window.Deadliness = function Deadliness(slave) {
 
 	if (!canSee(slave)) {
 		deadliness -= 8;
-	} else if ((slave.eyes === -1 && !["corrective contacts", "corrective glasses"].includes(slave.eyewear)) || (slave.eyes === 1 && ["blurring contacts", "blurring glasses"].includes(slave.eyewear))) {
+	} else if (!canSeePerfectly(slave)) {
 		deadliness -= 1;
 	}
 
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index d94ae4e8eb1ba8cd61804c0b33bb2db5c41a9334..78999d56e799fa68836ede4accde7aceecb4cfba 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -464,19 +464,6 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		if (typeof slave.faceShape !== "string") {
 			slave.faceShape = "normal";
 		}
-		slave.eyes = Math.clamp(+slave.eyes, -3, 1) || 1; /* if 0 or undefined, this sets to 1 */
-		if (typeof slave.eyeColor !== "string") {
-			slave.eyeColor = "brown";
-		}
-		if (typeof slave.origEye !== "string") {
-			slave.origEye = slave.eyeColor;
-		}
-		if (typeof slave.pupil !== "string") {
-			slave.pupil = "circular";
-		}
-		if (typeof slave.sclerae !== "string") {
-			slave.sclerae = "white";
-		}
 		if (slave.lips !== 0) {
 			slave.lips = Math.clamp(+slave.lips, 0, 100) || 15;
 		}
@@ -1139,19 +1126,6 @@ window.childFaceDatatypeCleanup = function childFaceDatatypeCleanup(child) {
 	if (typeof child.faceShape !== "string") {
 		child.faceShape = "normal";
 	}
-	child.eyes = Math.clamp(+child.eyes, -3, 1) || 1; /* if 0 or undefined, this sets to 1 */
-	if (typeof child.eyeColor !== "string") {
-		child.eyeColor = "brown";
-	}
-	if (typeof child.origEye !== "string") {
-		child.origEye = child.eyeColor;
-	}
-	if (typeof child.pupil !== "string") {
-		child.pupil = "circular";
-	}
-	if (typeof child.sclerae !== "string") {
-		child.sclerae = "white";
-	}
 	if (child.lips !== 0) {
 		child.lips = Math.clamp(+child.lips, 0, 100) || 15;
 	}
diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js
index abe0385c4ec64e61f09c9ee38631357488914224..ac166ff90b5b650a4e0cd3d572c886b859a2fcf9 100644
--- a/src/js/descriptionWidgets.js
+++ b/src/js/descriptionWidgets.js
@@ -11,10 +11,18 @@ App.Desc.eyes = function(slave) {
 	} = getPronouns(slave);
 	/* eslint-enable */
 
-	if (slave.eyes <= -2) {
-		const HC = hasVisibleHeterochromia(slave) ? 1 : 0;
-		if (slave.eyes === -2) {
-			r += `${His} eyes are dull`;
+	if (getBestVision(slave) === 0) {
+		if (!hasAnyEyes(slave)) {
+			r += `${His} gaze is empty`;
+		} else if (getLeftEyeType(slave) === 2 && getRightEyeType(slave) === 2) {
+			r += `${He} has ${App.Desc.eyesColor(slave, "colored glass")}`;
+		} else {
+			const HC = hasVisibleHeterochromia(slave) ? 1 : 0;
+			if (hasBothEyes(slave)) {
+				r += `${His} eyes are dull`;
+			} else {
+				r += `${His} eye is dull`;
+			}
 			if (V.saleDescription && V.PC.skill.medicine >= 50 || V.PC.skill.slaving >= 50) {
 				r += `, unfocused`;
 				if (HC) {
@@ -27,10 +35,6 @@ App.Desc.eyes = function(slave) {
 				}
 				r += ` and unfocused`;
 			}
-		} else if (slave.eyes === -3) {
-			r += `${He} has ${slave.eyeColor} colored glass eyes`;
-		} else {
-			r += `${His} gaze is empty`;
 		}
 		r += `, `;
 		if (slave.intelligence > 95) {
@@ -160,7 +164,7 @@ App.Desc.eyes = function(slave) {
 		}
 	} else {
 		if (slave.intelligence > 95) {
-			r += `${His} ${slave.eyeColor}-eyed gaze is incisive, quick, cunning; `;
+			r += `${His} ${App.Desc.eyeColor(slave)}-eyed gaze is incisive, quick, cunning; `;
 			if (slave.intelligence + slave.intelligenceImplant >= 130) {
 				r += `with ${his} education, ${he} is so far <span class="deepskyblue">beyond brilliant</span> that ${he} is nearly peerless. `;
 			} else if (slave.intelligence + slave.intelligenceImplant <= 95) {
@@ -184,17 +188,17 @@ App.Desc.eyes = function(slave) {
 			}
 		} else if (slave.intelligence > 50) {
 			if (slave.intelligence + slave.intelligenceImplant > 95) {
-				r += `${His} ${slave.eyeColor}-eyed gaze is incisive, quick, cunning; with ${his} education, ${he} can be considered <span class="deepskyblue">brilliant.</span> `;
+				r += `${His} ${App.Desc.eyeColor(slave)}-eyed gaze is incisive, quick, cunning; with ${his} education, ${he} can be considered <span class="deepskyblue">brilliant.</span> `;
 			} else if (slave.intelligence + slave.intelligenceImplant <= 50) {
-				r += `${His} ${slave.eyeColor} eyes are alive with intelligence; with ${his} miseducation, however, ${he} performs merely <span class="orangered">above average.</span> `;
+				r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} alive with intelligence; with ${his} miseducation, however, ${he} performs merely <span class="orangered">above average.</span> `;
 			} else if (slave.intelligenceImplant >= 15) {
-				r += `${His} ${slave.eyeColor} eyes are alive with intelligence; ${he} is both <span class="deepskyblue">highly intelligent</span> and `;
+				r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} alive with intelligence; ${he} is both <span class="deepskyblue">highly intelligent</span> and `;
 				if (slave.intelligenceImplant >= 30) {
 					r += `well `;
 				}
 				r += `educated. `;
 			} else {
-				r += `${His} ${slave.eyeColor} eyes are alive with intelligence; ${he} is so <span class="deepskyblue">highly intelligent</span> that ${his} `;
+				r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} alive with intelligence; ${he} is so <span class="deepskyblue">highly intelligent</span> that ${his} `;
 				if (slave.intelligenceImplant > 0) {
 					r += `meager`;
 				} else if (slave.intelligenceImplant <= -15) {
@@ -205,7 +209,7 @@ App.Desc.eyes = function(slave) {
 				r += ` education is unimportant. `;
 			}
 		} else if (slave.intelligence > 15) {
-			r += `${His} ${slave.eyeColor} eyes are `;
+			r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} `;
 			if (slave.intelligence + slave.intelligenceImplant > 50) {
 				r += `alive with intelligence; with ${his} education, ${he} can be considered <span class="deepskyblue">highly intelligent.</span> `;
 			} else if (slave.intelligence + slave.intelligenceImplant <= 15) {
@@ -222,7 +226,7 @@ App.Desc.eyes = function(slave) {
 				r += `clever; ${he} is of <span class="deepskyblue">above average intelligence</span> despite being undereducated. `;
 			}
 		} else if (slave.intelligence >= -15) {
-			r += `${His} ${slave.eyeColor} eyes are `;
+			r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} `;
 			if (slave.intelligence + slave.intelligenceImplant > 15) {
 				r += `clever; with ${his} education, ${he} can be considered of <span class="deepskyblue">above average intelligence.</span> `;
 			} else if (slave.intelligence + slave.intelligenceImplant < -15) {
@@ -239,7 +243,7 @@ App.Desc.eyes = function(slave) {
 				r += `alert; ${he} is of average intelligence and is undereducated. `;
 			}
 		} else if (slave.intelligence >= -50) {
-			r += `${His} ${slave.eyeColor} eyes are `;
+			r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} `;
 			if (slave.intelligence + slave.intelligenceImplant >= -15) {
 				r += `alert; with ${his} education, ${he} can be considered of average intelligence. `;
 			} else if (slave.intelligence + slave.intelligenceImplant < -50) {
@@ -256,7 +260,7 @@ App.Desc.eyes = function(slave) {
 				r += `dim; ${he} is of <span class="orangered">below average intelligence</span> and is poorly educated. `;
 			}
 		} else if (slave.intelligence >= -95) {
-			r += `${His} ${slave.eyeColor} eyes are `;
+			r += `${His} ${App.Desc.eyesColor(slave, "", "eye is", "eyes are")} `;
 			if (slave.intelligence + slave.intelligenceImplant >= -50) {
 				r += `dim; even with ${his} education, ${he} can only be considered of <span class="orangered">below average intelligence.</span> `;
 			} else if (slave.intelligence + slave.intelligenceImplant < -95) {
@@ -275,7 +279,7 @@ App.Desc.eyes = function(slave) {
 				r += `dull; ${he} is <span class="orangered">quite stupid</span> and ignorant. `;
 			}
 		} else {
-			r += `${His} ${slave.eyeColor}-eyed gaze betrays near-total insensibility; `;
+			r += `${His} ${App.Desc.eyeColor(slave)}-eyed gaze betrays near-total insensibility; `;
 			if (slave.intelligence + slave.intelligenceImplant >= -95) {
 				r += `even with ${his} education, ${he} is still <span class="orangered">really stupid.</span> `;
 			} else if (slave.intelligence + slave.intelligenceImplant < -115) {
@@ -292,30 +296,6 @@ App.Desc.eyes = function(slave) {
 	return r;
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @returns {string} Slave's eye color
- */
-App.Desc.eyeColor = function(slave) {
-	"use strict";
-	let r;
-
-	if (slave.eyes === -4) {
-		r = "empty";
-	} else if (hasVisibleHeterochromia(slave)) {
-		r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromia}`;
-	} else {
-		r = `${slave.eyeColor}`;
-	}
-	return r;
-};
-
-// temporary while eye rework
-// TODO remove @Arkerthan
-App.Desc.eyesColor = function(slave) {
-	return `${App.Desc.eyeColor(slave)} eyes`;
-};
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {string} Slave's age and health
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index b8511cfc2452489cb5d5d970031154abf3cb3c29..9c51188ad5ce05fb1371e1c10a3508a781f6afc8 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -721,9 +721,7 @@ window.getSlaveCost = function(s) {
 	}
 	if (!canSee(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) {
 		cost += 50;
-	} else if (s.eyes <= -1 && s.eyewear !== 'corrective glasses' && s.eyewear !== 'corrective contacts') {
-		cost += 25;
-	} else if (s.eyewear === 'blurring glasses' || s.eyewear === 'blurring contacts') {
+	} else if (!canSeePerfectly(s)) {
 		cost += 25;
 	}
 	if (!canHear(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) {
@@ -1017,7 +1015,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			V.DJRepBonus += 0.1;
 			// $He tries $his best to be your energetic, cheerful $wife.
 		}
-		if (V.DJ.eyes <= -2) {
+		if (!canSee(V.DJ)) {
 			V.DJRepBonus += 0.15;
 		}
 		if ( V.DJ.skill.entertainment > 10 && V.DJ.skill.entertainment <= 30) {
diff --git a/src/js/food.js b/src/js/food.js
index 6a79cf078fbe7408d3122c52197bb94a4cb3859a..8595f62a365c983aa2cec7d7a0c370949b5dfec5 100644
--- a/src/js/food.js
+++ b/src/js/food.js
@@ -37,10 +37,10 @@ window.foodAmount = function(slave) {
 		} else if (slave.weight > 190) {							// slave is very obese or more
 			food *= 0.6;
 		}
-		if (slave.eyes === -1) {									// slave is nearsighted
-			food *= 0.8;
-		} else if (slave.eyes < -1) {								// slave is blind
+		if (!canSee(slave)) {										// slave is blind
 			food *= 0.6;
+		} else if (!canSeePerfectly(slave)) {						// slave is nearsighted
+			food *= 0.8;
 		}
 		if (slave.hears === -1) {									// slave is hard of hearing
 			food *= 0.8;
@@ -287,7 +287,7 @@ window.farmShowsIncome = function(slave) {
 		} else if (slave.muscles < -30) {							// slave is very weak or less
 			cash *= 0.9;											// TODO: should this be on a scale?
 		}
-		if (slave.eyes < 1) {										// slaves eyesight is nearsighted or worse
+		if (!canSeePerfectly(slave)) {								// slaves eyesight is nearsighted or worse
 			cash *= 0.9;											// TODO: should nearsighted and blind slaves receive a penalty?
 		}
 		if (slave.hears < 0) {										// slave is hard of hearing or less
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index e09e803a2d4803c8181e8b735a635894c7adb9d3..0be5f8c233a7567259c715e3a4d8de9821f0e425 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -313,26 +313,26 @@ window.generateGenetics = (function() {
 		let eyeColor;
 		let fatherEye = 0;
 		if (father !== 0) {
-			if (mother.origEye === father.origEye) {
-				eyeColor = mother.origEye;
-			} else if (mother.origEye === "red" || mother.origEye === "pale red" || mother.origEye === "light red" || mother.origEye === "pale gray" || mother.origEye === "milky white") {
-				eyeColor = father.origEye;
-			} else if (father.origEye === "red" || father.origEye === "pale red" || father.origEye === "light red" || father.origEye === "pale gray" || father.origEye === "milky white") {
-				eyeColor = mother.origEye;
-			} else if (mother.origEye === "blue") {
+			if (mother.eye.origColor === father.eye.origColor) {
+				eyeColor = mother.eye.origColor;
+			} else if (mother.eye.origColor === "red" || mother.eye.origColor === "pale red" || mother.eye.origColor === "light red" || mother.eye.origColor === "pale gray" || mother.eye.origColor === "milky white") {
+				eyeColor = father.eye.origColor;
+			} else if (father.eye.origColor === "red" || father.eye.origColor === "pale red" || father.eye.origColor === "light red" || father.eye.origColor === "pale gray" || father.eye.origColor === "milky white") {
+				eyeColor = mother.eye.origColor;
+			} else if (mother.eye.origColor === "blue") {
 				if (jsRandom(1, 4) === 2) {
-					eyeColor = mother.origEye;
+					eyeColor = mother.eye.origColor;
 				} else {
-					eyeColor = father.origEye;
+					eyeColor = father.eye.origColor;
 				}
-			} else if (father.origEye === "blue") {
+			} else if (father.eye.origColor === "blue") {
 				if (jsRandom(1, 4) === 2) {
-					eyeColor = father.origEye;
+					eyeColor = father.eye.origColor;
 				} else {
-					eyeColor = mother.origEye;
+					eyeColor = mother.eye.origColor;
 				}
 			} else {
-				eyeColor = jsEither([father.origEye, mother.origEye]);
+				eyeColor = jsEither([father.eye.origColor, mother.eye.origColor]);
 			}
 		} else {
 			if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) {
@@ -342,13 +342,13 @@ window.generateGenetics = (function() {
 				fatherEye = randomRaceEye(racesList.random());
 			}
 			if (fatherEye !== 0) {
-				if (mother.origEye === fatherEye) {
-					eyeColor = mother.origEye;
-				} else if (mother.origEye === "red" || mother.origEye === "pale red" || mother.origEye === "light red" || mother.origEye === "pale gray" || mother.origEye === "milky white") {
+				if (mother.eye.origColor === fatherEye) {
+					eyeColor = mother.eye.origColor;
+				} else if (mother.eye.origColor === "red" || mother.eye.origColor === "pale red" || mother.eye.origColor === "light red" || mother.eye.origColor === "pale gray" || mother.eye.origColor === "milky white") {
 					eyeColor = fatherEye;
-				} else if (mother.origEye === "blue") {
+				} else if (mother.eye.origColor === "blue") {
 					if (jsRandom(1, 4) === 2) {
-						eyeColor = mother.origEye;
+						eyeColor = mother.eye.origColor;
 					} else {
 						eyeColor = fatherEye;
 					}
@@ -356,13 +356,13 @@ window.generateGenetics = (function() {
 					if (jsRandom(1, 4) === 2) {
 						eyeColor = fatherEye;
 					} else {
-						eyeColor = mother.origEye;
+						eyeColor = mother.eye.origColor;
 					}
 				} else {
-					eyeColor = jsEither([fatherEye, mother.origEye]);
+					eyeColor = jsEither([fatherEye, mother.eye.origColor]);
 				}
 			} else {
-				eyeColor = mother.origEye;
+				eyeColor = mother.eye.origColor;
 			}
 		}
 		// just in case something wrong gets through
@@ -383,8 +383,8 @@ window.generateGenetics = (function() {
 		let fatherHEye = 0;
 		let eyeColorArray = [];
 		if (father !== 0) {
-			eyeColorArray.push(mother.origEye);
-			eyeColorArray.push(father.origEye);
+			eyeColorArray.push(mother.eye.origColor);
+			eyeColorArray.push(father.eye.origColor);
 			if (father.geneticQuirks.heterochromia !== 0 && father.geneticQuirks.heterochromia !== 1) {
 				eyeColorArray.push(father.geneticQuirks.heterochromia);
 			}
@@ -397,9 +397,9 @@ window.generateGenetics = (function() {
 			}
 			if (fatherHEye !== 0) {
 				eyeColorArray.push(fatherHEye);
-				eyeColorArray.push(mother.origEye);
+				eyeColorArray.push(mother.eye.origColor);
 			} else {
-				eyeColorArray.push(mother.origEye);
+				eyeColorArray.push(mother.eye.origColor);
 			}
 		}
 		if (mother.geneticQuirks.heterochromia !== 0 && mother.geneticQuirks.heterochromia !== 1) {
@@ -1369,11 +1369,11 @@ window.generateChild = function(mother, ova, destination) {
 			}
 		}
 		child.origSkin = genes.skin;
-		child.origEye = genes.eyeColor;
+		child.eye.origColor = genes.eyeColor;
 		child.origHColor = genes.hColor;
 		child.skin = getGeneticSkinColor(child);
-		child.eyeColor = getGeneticEyeColor(child);
 		child.hColor = getGeneticHairColor(child);
+		resetEyeColor(child, "both");
 		child.pubicHColor = child.hColor;
 		child.underArmHColor = child.hColor;
 		child.eyebrowHColor = child.hColor;
@@ -1692,11 +1692,11 @@ window.generateChild = function(mother, ova, destination) {
 			}
 		}
 		child.origSkin = genes.skin;
-		child.origEye = genes.eyeColor;
+		child.eye.origColor = genes.eyeColor;
 		child.origHColor = genes.hColor;
 		child.skin = getGeneticSkinColor(child);
-		child.eyeColor = getGeneticEyeColor(child);
 		child.hColor = getGeneticHairColor(child);
+		resetEyeColor(child, "both");
 		child.pubicHColor = child.hColor;
 		child.underArmHColor = child.hColor;
 		child.eyebrowHColor = child.hColor;
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 7ebf18f640786b5dac524a055875d3383665be03..47a561f854bc2b56b5eabe7a46684b627df3ca60 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -630,7 +630,16 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.trust -= jsRandom(0, 10);
 				}
 				if (jsRandom(1, 100) > 90) {
-					V.activeSlave.eyes = -2;
+					// one in twenty slaves has only one blind eye.
+					if (jsRandom(1, 20) > 1) {
+						if (jsRandom(1, 2) === 1) {
+							eyeSurgery(V.activeSlave, "left", "blind");
+						} else {
+							eyeSurgery(V.activeSlave, "left", "blind");
+						}
+					} else {
+						eyeSurgery(V.activeSlave, "blind", "blind");
+					}
 				}
 				if (jsRandom(1, 100) > 90) {
 					V.activeSlave.hears = -2;
@@ -1077,7 +1086,11 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.intelligenceImplant = 0;
 			V.activeSlave.health = jsRandom(-99, 0);
 			V.activeSlave.weight = jsRandom(-100, 0);
-			V.activeSlave.eyes = jsEither([-2, -1, -1, -1, -1, 1, 1, 1]);
+			if (jsRandom(1, 8) === 1) {
+				eyeSurgery(V.activeSlave, "both", "blind");
+			} else if (jsRandom(1, 7) <= 4) {
+				eyeSurgery(V.activeSlave, "both", "blur");
+			}
 			V.activeSlave.hears = jsEither([-2, -1, -1, -1, -1, 0, 0, 0]);
 			if (V.seeExtreme === 1 && jsRandom(0, 2) === 2) {
 				// TODO: maybe only partly amputee?
@@ -1133,7 +1146,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.health = jsRandom(-99, -50);
 			V.activeSlave.weight = jsRandom(-100, -50);
 			V.activeSlave.muscles = jsRandom(-100, -50);
-			V.activeSlave.eyes = -2;
+			eyeSurgery(V.activeSlave, "both", "blind");
 			V.activeSlave.hears = -2;
 			V.activeSlave.smells = -1;
 			V.activeSlave.tastes = -1;
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index 852b56de8be81b3a42fce76495de0802ee11808e..3a40af97f3011aafac055669ad72e6b757847307 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -67,9 +67,10 @@ window.GenerateNewSlave = (function() {
 		generateHormones();
 		generatePronouns(slave);
 		slave.origRace = slave.race;
-		slave.eyeColor = getGeneticEyeColor(slave);
 		slave.hColor = getGeneticHairColor(slave);
 		slave.skin = getGeneticSkinColor(slave);
+		resetEyeColor(slave, "both");
+
 	}
 
 	function GenerateXXSlave() {
@@ -1400,46 +1401,29 @@ window.GenerateNewSlave = (function() {
 				slave.origSkin = jsEither(["black", "brown", "dark brown"]);
 				slave.origHColor = jsEither(["black", "black", "black", "brown"]);
 				slave.hStyle = jsEither(["crinkled", "neat"]);
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = "brown";
-				}
+				eyeColor(["brown"], true);
 				break;
 			case "white":
 				slave.lips = jsRandom(5, 25);
 				if (slave.nationality === "German") {
 					slave.origSkin = jsEither(["fair", "light", "pale"]);
-					slave.origEye = jsEither(["blue", "blue", "blue", "brown", "green"]);
-					if (slave.geneticQuirks.heterochromia === 2) {
-						slave.geneticQuirks.heterochromia = jsEither(["blue", "blue", "blue", "brown", "green"]);
-					}
+					eyeColor(["blue", "blue", "blue", "brown", "green"]);
 					slave.origHColor = jsEither(["black", "blonde", "blonde", "blonde", "brown", "red"]);
 				} else if (slave.nationality === "Icelandic") {
 					slave.origSkin = jsEither(["fair", "light", "pale", "pale"]);
-					slave.origEye = jsEither(["blue", "blue", "blue", "brown", "green"]);
-					if (slave.geneticQuirks.heterochromia === 2) {
-						slave.geneticQuirks.heterochromia = jsEither(["blue", "blue", "blue", "brown", "green"]);
-					}
+					eyeColor(["blue", "blue", "blue", "brown", "green"]);
 					slave.origHColor = jsEither(["black", "blonde", "blonde", "blonde", "brown", "red"]);
 				} else if (slave.nationality === "Irish") {
 					slave.origSkin = jsEither(["fair", "light", "pale", "pale"]);
-					slave.origEye = jsEither(["blue", "brown", "green", "green", "green"]);
-					if (slave.geneticQuirks.heterochromia === 2) {
-						slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green", "green", "green"]);
-					}
+					eyeColor(["blue", "brown", "green", "green", "green"]);
 					slave.origHColor = jsEither(["black", "blonde", "brown", "red", "red", "red"]);
 				} else if (slave.nationality === "Scottish") {
 					slave.origSkin = jsEither(["fair", "fair", "light", "pale"]);
-					slave.origEye = jsEither(["blue", "brown", "brown", "green", "green", "green"]);
-					if (slave.geneticQuirks.heterochromia === 2) {
-						slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "brown", "green", "green", "green"]);
-					}
+					eyeColor(["blue", "brown", "brown", "green", "green", "green"]);
 					slave.origHColor = jsEither(["black", "black", "blonde", "red", "red", "red", "brown"]);
 				} else {
 					slave.origSkin = jsEither(["fair", "light", "pale"]);
-					slave.origEye = jsEither(["blue", "brown", "green"]);
-					if (slave.geneticQuirks.heterochromia === 2) {
-						slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
-					}
+					eyeColor(["blue", "brown", "green"]);
 					slave.origHColor = jsEither(["black", "blonde", "brown", "red"]);
 				}
 				slave.hStyle = "neat";
@@ -1448,10 +1432,8 @@ window.GenerateNewSlave = (function() {
 				slave.lips = jsRandom(5, 25);
 				slave.origSkin = jsEither(["brown", "dark brown", "dark olive", "light olive", "tan"]);
 				slave.origHColor = jsEither(["black", "brown"]);
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
-				}
 				slave.hStyle = "neat";
+				eyeColor(["blue", "brown", "green"], true);
 				break;
 			case "indo-aryan":
 			case "malay":
@@ -1461,18 +1443,14 @@ window.GenerateNewSlave = (function() {
 				slave.origSkin = jsEither(["dark", "light"]);
 				slave.origHColor = "black";
 				slave.hStyle = "neat";
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = "brown";
-				}
+				eyeColor(["brown"], true);
 				break;
 			case "asian":
 				slave.lips = jsRandom(5, 25);
 				slave.origSkin = jsEither(["dark olive", "light olive", "light"]);
 				slave.origHColor = "black";
 				slave.hStyle = "neat";
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
-				}
+				eyeColor(["blue", "brown", "green"], true);
 				break;
 			case "middle eastern":
 			case "semitic":
@@ -1481,18 +1459,14 @@ window.GenerateNewSlave = (function() {
 				slave.origSkin = jsEither(["fair", "light olive", "light", "tan"]);
 				slave.origHColor = "black";
 				slave.hStyle = "neat";
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
-				}
+				eyeColor(["blue", "brown", "green"], true);
 				break;
 			default:
 				slave.lips = jsRandom(5, 25);
 				slave.origSkin = jsEither(["dark", "light", "pale"]);
 				slave.origHColor = jsEither(["black", "black", "black", "black", "blonde", "brown", "brown", "red"]);
 				slave.hStyle = "neat";
-				if (slave.geneticQuirks.heterochromia === 2) {
-					slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
-				}
+				eyeColor(["blue", "brown", "green"], true);
 		}
 		if ((skinToneLevel(slave.origSkin) > 5) && (skinToneLevel(slave.origSkin) < 10)) {
 			if (jsRandom(1, 4) === 1) {
@@ -1501,6 +1475,19 @@ window.GenerateNewSlave = (function() {
 		} else if (jsRandom(1, 8) === 1) {
 			slave.markings = jsEither(["beauty mark", "birthmark"]);
 		}
+
+		/**
+		 * @param {string[]} colors
+		 * @param {boolean} [heteroOnly]
+		 */
+		function eyeColor(colors, heteroOnly = false) {
+			if (!heteroOnly) {
+				setGeneticEyeColor(slave, jsEither(colors));
+			}
+			if (slave.geneticQuirks.heterochromia === 2) {
+				setGeneticEyeColor(slave, jsEither(colors), true);
+			}
+		}
 	}
 
 	function generateBoobTweaks() {
@@ -1563,7 +1550,7 @@ window.GenerateNewSlave = (function() {
 
 	function generateDisabilities() {
 		if (slave.physicalAge >= jsRandom(0, 100)) {
-			slave.eyes = -1;
+			eyeSurgery(slave, "both", "blur");
 		}
 		if (slave.physicalAge >= jsRandom(30, 100)) {
 			slave.hears = -1;
@@ -1589,7 +1576,7 @@ window.GenerateNewSlave = (function() {
 							break;
 						case "seeNot":
 							if ((jsRandom(1, 100) - (disableCount * 2)) > 90) {
-								slave.eyes = -2;
+								eyeSurgery(slave, "both", "blind");
 							}
 							disList.delete("seeNot");
 							disableCount++;
diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js
index 40bf8d2bd25f19c7c4b59170c678940ce4e548c3..916df5c9f959b1d80740cb74c1562b8fe4cae6d0 100644
--- a/src/js/rulesAutosurgery.js
+++ b/src/js/rulesAutosurgery.js
@@ -200,10 +200,22 @@ window.rulesAutosurgery = (function() {
 		// Hence they have to be first conditions in the '&&' chains to avoid type errors
 		// (reading properties of the 'null' object)
 		if (slave.health > 20 && surgeries.length < 3) {
-			if (slave.eyes === -1 && thisSurgery.eyes === 1) {
-				commitProcedure(`surgery to correct ${his} vision`, s => { s.eyes = 1; });
-			} else if (slave.eyes === 1 && thisSurgery.eyes === -1) {
-				commitProcedure(`surgery to blur ${his} vision`, s => { s.eyes = -1; });
+			if (thisSurgery.eyes === 1 && anyVisionEquals(slave, 1)) {
+				// possibly two surgeries at once, in turn health cost is halved
+				if (getLeftEyeVision(slave) === 1) {
+					commitProcedure(`surgery to correct ${his} left vision`, s => { eyeSurgery(s, "left", "fix"); }, 5);
+				}
+				if (getRightEyeVision(slave) === 1) {
+					commitProcedure(`surgery to correct ${his} right vision`, s => { eyeSurgery(s, "right", "fix"); }, 5);
+				}
+			} else if (thisSurgery.eyes === -1 && anyVisionEquals(slave, 2)) {
+				// possibly two surgeries at once, in turn health cost is halved
+				if (getLeftEyeVision(slave) === 2) {
+					commitProcedure(`surgery to blur ${his} left vision`, s => { eyeSurgery(s, "left", "blur"); }, 5);
+				}
+				if (getRightEyeVision(slave) === 2) {
+					commitProcedure(`surgery to blur ${his} right vision`, s => { eyeSurgery(s, "right", "blur"); }, 5);
+				}
 			} else if (slave.hears === -1 && thisSurgery.hears === 0) {
 				commitProcedure(`surgery to correct ${his} hearing`, s => { s.hears = 0; });
 			} else if (slave.hears === 0 && thisSurgery.hears === -1) {
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 7c78afebe6e5a0f591b5b766fab47597f5921b47..eb76d2dc85388c163892c7adb9cae2d63d68f561 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1800,11 +1800,7 @@ window.FResult = (function() {
 	function calcSight(slave) {
 		if (!canSee(slave)) {
 			result -= 3;
-		} else if (slave.eyes <= -1) {
-			if (slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts") {
-				result -= 1;
-			}
-		} else if (slave.eyewear === "blurring glasses" || slave.eyewear === "blurring contacts") {
+		} else if (!canSeePerfectly(slave)) {
 			result -= 1;
 		}
 	}
@@ -1899,7 +1895,10 @@ window.FResult = (function() {
 			calcHearing(slave);
 		} else {
 			result += slave.hears;
-			result += Math.clamp(slave.eyes * 2 + 1, -3, 0);
+			// see: 0
+			// impaired: -1
+			// blind: -3
+			result += Math.clamp(getBestVision(slave) * 2 - 3, -3, 0);
 		}
 		if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
 			calcEgyptianBonus(slave);
@@ -2370,7 +2369,7 @@ window.slaveCost = (function() {
 			multiplier -= 0.1*(Object.getOwnPropertyNames(slave.brand).length);
 		}
 		multiplier -= getLimbCount(slave, 0) * 0.05;
-		if (slave.eyes <= -2) {
+		if (!canSee(slave)) {
 			multiplier -= 0.2;
 		}
 	}
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 4707f0b6d1e3f70c4f1c68a7f511f40886b2a5a0..0ba6735a9560c08d2ae4924c512d0bddb5c48f3e 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -1852,9 +1852,9 @@ window.SlaveSummaryUncached = (function() {
 	 * @returns {void}
 	 */
 	function short_eyes(slave, c) {
-		if (slave.eyes === -2) {
+		if (!canSee(slave)) {
 			makeSpan(c, "Blind", "red");
-		} else if (((slave.eyes === -1) && (slave.eyewear !== "corrective glasses") && (slave.eyewear !== "corrective contacts")) || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			makeSpan(c, "Sight-", "yellow");
 		}
 	}
@@ -2206,9 +2206,9 @@ window.SlaveSummaryUncached = (function() {
 	 * @returns {void}
 	 */
 	function long_eyes(slave, c) {
-		if (slave.eyes <= -2) {
+		if (!canSee(slave)) {
 			makeSpan(c, "Blind.", "red");
-		} else if (((slave.eyes === -1) && (slave.eyewear !== "corrective glasses") && (slave.eyewear !== "corrective contacts")) || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
+		} else if (!canSeePerfectly(slave)) {
 			makeSpan(c, "Nearsighted.", "yellow");
 		}
 	}
diff --git a/src/js/statsChecker/eyeChecker.js b/src/js/statsChecker/eyeChecker.js
new file mode 100644
index 0000000000000000000000000000000000000000..058e3c1016904d72a7900d94480c5603734035b7
--- /dev/null
+++ b/src/js/statsChecker/eyeChecker.js
@@ -0,0 +1,273 @@
+/**
+ * True if slave has at least one eye
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasAnyEyes = function(slave) {
+	return !!slave.eye.right || !!slave.eye.left;
+};
+
+/**
+ * True if slave has at least one eye that is natural
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasAnyNaturalEyes = function(slave) {
+	return getLeftEyeType(slave) === 1 || getRightEyeType(slave) === 1;
+};
+
+/**
+ * True if slave has at least one eye that is prosthetic (cyber or glass)
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasAnyProstheticEyes = function(slave) {
+	return getLeftEyeType(slave) > 1 || getRightEyeType(slave) > 1;
+};
+
+/**
+ * True if slave has at least one eye that is cybernetic
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasAnyCyberneticEyes = function(slave) {
+	return getLeftEyeType(slave) === 3 || getRightEyeType(slave) === 3;
+};
+
+/**
+ * True if slave has both eyes
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasBothEyes = function(slave) {
+	return !!slave.eye.right && !!slave.eye.left;
+};
+
+/**
+ * True if slave has both eyes and they are natural
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasBothNaturalEyes = function(slave) {
+	return getLeftEyeType(slave) === 1 && getRightEyeType(slave) === 1;
+};
+
+/**
+ * True if slave has both eyes and they are prosthetic (cyber or glass)
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasBothProstheticEyes = function(slave) {
+	return getLeftEyeType(slave) > 1 && getRightEyeType(slave) > 1;
+};
+
+/**
+ * True if slave has both eyes and they are cybernetic
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasBothCyberneticEyes = function(slave) {
+	return getLeftEyeType(slave) === 3 && getRightEyeType(slave) === 3;
+};
+
+/**
+ * True if slave has left eye
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasLeftEye = function(slave) {
+	return !!slave.eye.left;
+};
+/**
+ * True if slave has right eye
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasRightEye = function(slave) {
+	return !!slave.eye.right;
+};
+
+/**
+ * Returns type of the left eye.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getLeftEyeType = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.left.type;
+	} else {
+		return 0;
+	}
+};
+
+/**
+ * Returns type of the right eye.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getRightEyeType = function(slave) {
+	if (hasRightEye(slave)) {
+		return slave.eye.right.type;
+	} else {
+		return 0;
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getLeftEyeVision = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.left.vision;
+	} else {
+		return 0;
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getRightEyeVision = function(slave) {
+	if (hasRightEye(slave)) {
+		return slave.eye.right.vision;
+	} else {
+		return 0;
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getBestVision = function(slave) {
+	return Math.max(getRightEyeVision(slave), getLeftEyeVision(slave));
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getWorstVision = function(slave) {
+	return Math.min(getRightEyeVision(slave), getLeftEyeVision(slave));
+};
+
+/**
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {number} vision
+ * @returns {boolean}
+ */
+window.anyVisionEquals = function(slave, vision) {
+	return getRightEyeVision(slave) === vision || getLeftEyeVision(slave) === vision;
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+window.getLeftEyeColor = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.left.iris;
+	} else {
+		return "empty";
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+window.getRightEyeColor = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.right.iris;
+	} else {
+		return "empty";
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+window.getLeftEyePupil = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.left.pupil;
+	} else {
+		return "circular";
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+window.getRightEyePupil = function(slave) {
+	if (hasLeftEye(slave)) {
+		return slave.eye.right.pupil;
+	} else {
+		return "circular";
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.hasVisibleHeterochromia = function(slave) {
+	return hasAnyEyes(slave) && getLeftEyeColor(slave) !== getRightEyeColor(slave);
+};
+
+/**
+ * Gives the genetic color of the specified eye.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} side
+ * @returns {string}
+ */
+window.getGeneticEyeColor = function(slave, side) {
+	if (side !== "left" && side !== "right") { return "ERROR:" + side; }
+
+	if (slave.geneticQuirks.albinism === 2) {
+		return "red";
+	} else {
+		if (side === "left" && typeof slave.geneticQuirks.heterochromia === "string") {
+			return slave.geneticQuirks.heterochromia;
+		} else {
+			return slave.eye.origColor;
+		}
+	}
+};
+
+/**
+ * Counts the number of eyes that are not the genetic color
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {number}
+ */
+window.getLenseCount = function(slave) {
+	let count = 0;
+
+	if (hasRightEye(slave) && getRightEyeColor(slave) !== getGeneticEyeColor(slave, "right")) {
+		count++;
+	}
+
+	if (hasLeftEye(slave) && getLeftEyeColor(slave) !== getGeneticEyeColor(slave, "left")) {
+		count++;
+	}
+
+	return count;
+};
diff --git a/src/js/statsChecker/statsChecker.js b/src/js/statsChecker/statsChecker.js
index 64e24245bd858054e16ed8a4d0c060c267f08ad6..c9cae99729ea06bb2f13c0d5f86ea7e217fc48f5 100644
--- a/src/js/statsChecker/statsChecker.js
+++ b/src/js/statsChecker/statsChecker.js
@@ -625,7 +625,27 @@ window.canSee = function(slave) {
 	if (!slave) {
 		return null;
 	}
-	return (slave.eyes > -2);
+	return (getBestVision(slave)) > 0;
+};
+
+/**
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.canSeePerfectly = function(slave) {
+	if (!canSee(slave)) {
+		return false;
+	}
+
+	if (getBestVision(slave) === 2 && (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
+		// could see perfectly, but being blurred
+		return false;
+	} else if (getBestVision(slave) < 2 && !(slave.eyewear === "corrective glasses" || slave.eyewear === "corrective contacts")) {
+		// can't see perfectly and not corrected
+		return false;
+	}
+	return true;
 };
 
 /**
@@ -870,129 +890,6 @@ window.isVegetable = function(slave) {
 	return (slave.fetish === "mindbroken");
 };
 
-/**
- * True if slave has at least one eye
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasAnyEyes = function(slave) {
-	return !!slave.eyeball.right || !!slave.eyeball.left;
-};
-
-/**
- * True if slave has at least one eye that is natural
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasAnyNaturalEyes = function(slave) {
-	return getLeftEyeID(slave) === 1 || getRightEyeID(slave) === 1;
-};
-
-/**
- * True if slave has at least one eye that is prosthetic
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasAnyProstheticEyes = function(slave) {
-	return getLeftEyeID(slave) > 1 || getRightEyeID(slave) > 1;
-};
-
-/**
- * True if slave has both eyes
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasBothEyes = function(slave) {
-	return !!slave.eyeball.right && !!slave.eyeball.left;
-};
-
-/**
- * True if slave has both eyes and they are natural
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasBothNaturalEyes = function(slave) {
-	return getLeftEyeID(slave) === 1 && getRightEyeID(slave) === 1;
-};
-
-/**
- * True if slave has both eyes and they are prosthetic
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasBothProstheticEyes = function(slave) {
-	return getLeftEyeID(slave) > 1 && getRightEyeID(slave) > 1;
-};
-
-/**
- * True if slave has left eye
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasLeftEye = function(slave) {
-	return !!slave.eyeball.left;
-};
-/**
- * True if slave has right eye
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {boolean}
- */
-window.hasRightEye = function(slave) {
-	return !!slave.eyeball.right;
-};
-
-/**
- * Returns limb ID of the left eye. Uses new IDs.
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {number}
- */
-window.getLeftEyeID = function(slave) {
-	if (hasLeftEye(slave)) {
-		return slave.eyeball.left.type;
-	} else {
-		return 0;
-	}
-};
-
-/**
- * Returns limb ID of the right eye. Uses new IDs.
- *
- * @param {App.Entity.SlaveState} slave
- * @returns {number}
- */
-window.getRightEyeID = function(slave) {
-	if (hasRightEye(slave)) {
-		return slave.eyeball.right.type;
-	} else {
-		return 0;
-	}
-};
-
-/**
- * Returns the eye color the slave was (or would be) born with.
- *
- * @param {App.Entity.SlaveState} slave
- * @param {string} side
- * @returns {string}
- */
-window.getGeneticEyeColor = function(slave, side = "right") {
-	if (slave.geneticQuirks.albinism === 2) {
-		return slave.albinismOverride.eyeColor;
-	}
-	if (side === "left" && typeof slave.geneticQuirks.heterochromia === "string") {
-		return slave.geneticQuirks.heterochromia;
-	}
-	return slave.origEye;
-};
 
 /**
  * Returns the hair color the slave was (or would be) born with.
diff --git a/src/js/surgery.js b/src/js/surgery.js
index 8dac4988d7c688e0cec3a8dd679e0bf97e1c6f3d..27a6159e36926dbd70f283e03e343bf9c58e30d9 100644
--- a/src/js/surgery.js
+++ b/src/js/surgery.js
@@ -510,20 +510,157 @@ window.surgeryAmp = function(slave, part) {
 				slave.skill.oral -= 10;
 			}
 			break;
-		case "left eye":
-			slave.eyes = -4;
-			slave.health -= 20;
+		default:
+			// eslint-disable-next-line no-console
+			console.log(`ERROR: Unknown amputation type: ` + part);
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} side
+ * @param {string} action
+ */
+window.eyeSurgery = function(slave, side, action) {
+	if (side === "both") {
+		eyeSurgery(slave, "left", action);
+		eyeSurgery(slave, "right", action);
+		return;
+	}
+
+	if (side !== "left" && side !== "right") { return; } // make sure side can be used to access the object
+	let eyeExists = slave.eye[side] !== null;
+
+	/* actions that don't need an eye */
+	switch (action) {
+		case "normal":
+			addEye(slave); // color overwritten by genetics
+			return;
+		case "glass":
+			if (!eyeExists) { // color stays the same if possible
+				addEye(slave);
+			}
+			slave.eye[side].type = 2;
+			slave.eye[side].vision = 0;
+			return;
+		case "cybernetic":
+			if (!eyeExists) { // color stays the same if possible
+				addEye(slave);
+			}
+			slave.eye[side].type = 3;
+			slave.eye[side].vision = 2;
+			return;
+	}
+
+	function addEye(slave) {
+		slave.eye[side] = new App.Entity.EyeState();
+		resetEyeColor(slave, side);
+	}
+
+	/* actions that need an eye */
+	if (!eyeExists) { return; } // make sure the eye exists
+
+	switch (action) {
+		case "remove":
+			slave.eye[side] = null;
 			break;
-		case "right eye":
-			slave.eyes = -4;
-			slave.health -= 20;
+		case "blind":
+			slave.eye[side].vision = 0;
+			break;
+		case "blur":
+			slave.eye[side].vision = 1;
+			break;
+		case "fix":
+			slave.eye[side].vision = 2;
 			break;
 		default:
 			// eslint-disable-next-line no-console
-			console.log(`ERROR: Unknown amputation type: ` + part);
+			console.log(`ERROR: Unknown surgery action: ` + action);
+	}
+};
+
+/**
+ * To be used during slave generation or slave styling (auto salon)
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} color to set eye to
+ * @param {string} [side] "left", "right", "both"
+ */
+window.setEyeColor = function setEyeColor(slave, color, side = "both") {
+	if (side === "both") {
+		setEyeColor(slave, color, "left");
+		setEyeColor(slave, color, "right");
+		return;
+	}
+
+	if (side !== "left" && side !== "right") { return; }
+
+	slave.eye[side].iris = color;
+};
+
+/**
+ * Set all colors of the eye.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} iris
+ * @param {string} pupil
+ * @param {string} sclera
+ * @param {string} side
+ */
+window.setEyeColorFull = function setEyeColorFull(slave, iris, pupil, sclera, side) {
+	if (side === "both") {
+		setEyeColorFull(slave, iris, pupil, sclera, "left");
+		setEyeColorFull(slave, iris, pupil, sclera, "right");
+		return;
+	}
+
+	if (side !== "left" && side !== "right") { return; }
+
+	if (iris !== "") {
+		slave.eye[side].iris = iris;
+	}
+	if (pupil !== "") {
+		slave.eye[side].pupil = pupil;
+	}
+	if (sclera !== "") {
+		slave.eye[side].sclera = sclera;
 	}
 };
 
+/**
+ * Set genetic eye color
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} color
+ * @param {boolean} heterochromia
+ */
+window.setGeneticEyeColor = function(slave, color, heterochromia = false) {
+	if (heterochromia) {
+		slave.geneticQuirks.heterochromia = color;
+	} else {
+		slave.eye.origColor = color;
+	}
+};
+
+/**
+ * Sets the eye color to the genetic color.
+ * Takes heterochromia and albinism into account.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} side
+ */
+window.resetEyeColor = function(slave, side) {
+	if (side === "both") {
+		resetEyeColor(slave, "left");
+		resetEyeColor(slave, "right");
+		return;
+	}
+
+	if (side !== "left" && side !== "right") { return; }
+
+	slave.eye[side].iris = getGeneticEyeColor(slave, side);
+};
+
 /**
  * Allowed values for limb:
  * left arm, right arm, left leg, right leg, all
diff --git a/src/npc/databases/cheatmodeDatabase.tw b/src/npc/databases/cheatmodeDatabase.tw
index bf6e2ccdd74c68d203ab247142b87a6570de0c75..f9e358068f4c49ad81d3229bec0cacd9d0b40c2b 100644
--- a/src/npc/databases/cheatmodeDatabase.tw
+++ b/src/npc/databases/cheatmodeDatabase.tw
@@ -2,7 +2,7 @@
 
 <<set $activeSlave = BaseSlave()>>
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, _HS.health = 50, _HS.devotion = 100, _HS.height = 175, _HS.origEye = "green", _HS.origHColor = "honey blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He speaks with the rich accent of the Old South.">>
+<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, _HS.health = 50, _HS.devotion = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.origHColor = "honey blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He speaks with the rich accent of the Old South.">>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.vagina = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.pubertyXX = 1>>
 <<else>>
@@ -43,7 +43,7 @@
 //_HS.slaveName,//
 
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Miss Lily", _HS.birthName = "Lillian", _HS.ID = 990004, _HS.relation = "daughter", _HS.relationTarget = 990000, _HS.assignment = "guard you", _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 30, _HS.muscles = 50, _HS.height = 175, _HS.origEye = "green", _HS.origHColor = "straw blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "in a short ponytail", _HS.waist = -55, _HS.boobs = 600, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.preg = -2, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.energy = 65, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Lily' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He once spoke with the rich accent of the Old South.", _HS.mother = 990000>>
+<<set _HS.slaveName = "Miss Lily", _HS.birthName = "Lillian", _HS.ID = 990004, _HS.relation = "daughter", _HS.relationTarget = 990000, _HS.assignment = "guard you", _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 30, _HS.muscles = 50, _HS.height = 175, _HS.eye.origColor = "green", _HS.origHColor = "straw blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "in a short ponytail", _HS.waist = -55, _HS.boobs = 600, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.preg = -2, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.energy = 65, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Lily' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He once spoke with the rich accent of the Old South.", _HS.mother = 990000>>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.ovaries = 1, _HS.pubertyXX = 1>>
 <<else>>
diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw
index 1bec633fc12c7e660ade6810f0cb3cc764cda59a..170d82a3094a42eb34e4f9f2fc139c47f079af91 100644
--- a/src/npc/databases/dSlavesDatabase.tw
+++ b/src/npc/databases/dSlavesDatabase.tw
@@ -2,13 +2,14 @@
 
 <<set _i = 900000>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Rose", _HS.birthName = "Rose", _HS.origin = "$He is a former maid with an unsettling obsessive streak.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 40, _HS.devotion = 100, _HS.weight = 25, _HS.origHColor = "chestnut", _HS.pubicHColor = "chestnut", _HS.hLength = 30, _HS.hStyle = "shoulder-length and in a bun", _HS.boobs = 700, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.entertainment = 1, _HS.clothes = "a nice maid outfit", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.career = "a maid", _HS.eyes = -1, _HS.eyewear = "corrective glasses">>
+<<set _HS.slaveName = "Rose", _HS.birthName = "Rose", _HS.origin = "$He is a former maid with an unsettling obsessive streak.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 40, _HS.devotion = 100, _HS.weight = 25, _HS.origHColor = "chestnut", _HS.pubicHColor = "chestnut", _HS.hLength = 30, _HS.hStyle = "shoulder-length and in a bun", _HS.boobs = 700, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.entertainment = 1, _HS.clothes = "a nice maid outfit", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.career = "a maid", _HS.eyewear = "corrective glasses">>
+<<run eyeSurgery(_HS, "both", "blur")>>
 <<set $heroSlaves.push(_HS)>>
 /*maid dress, Excellent house slave, Will return if sold*/
 /*Added origin, tweaked stats, made $him Submissive -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Red", _HS.birthName = "Red", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, _HS.health = 20, _HS.devotion = 100, _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "light", _HS.hStyle = "long and tied back", _HS.boobs = 400, _HS.butt = 2, _HS.vaginaLube = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Red", _HS.birthName = "Red", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, _HS.health = 20, _HS.devotion = 100, _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "light", _HS.hStyle = "long and tied back", _HS.boobs = 400, _HS.butt = 2, _HS.vaginaLube = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*changed eyes to blue, skin to light, double checked other stats*/
 
@@ -35,12 +36,12 @@
 /*Corrected piercings, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Piggy", _HS.birthName = "Chloë", _HS.origin = "$He was once a celebrity that protested the existence of slavery, but has now become a slave $himself.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -75, _HS.weight = -20, _HS.origEye = "green", _HS.origHColor = "dirty blonde", _HS.pubicHColor = "dirty blonde", _HS.origSkin = "white", _HS.hLength = 10, _HS.boobs = 300, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.oral = 100, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishStrength = 100, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy">>
+<<set _HS.slaveName = "Piggy", _HS.birthName = "Chloë", _HS.origin = "$He was once a celebrity that protested the existence of slavery, but has now become a slave $himself.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -75, _HS.weight = -20, _HS.eye.origColor = "green", _HS.origHColor = "dirty blonde", _HS.pubicHColor = "dirty blonde", _HS.origSkin = "white", _HS.hLength = 10, _HS.boobs = 300, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.oral = 100, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishStrength = 100, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy">>
 <<set $heroSlaves.push(_HS)>>
 /*Added origin, added bitchy, corrected eye color -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sarah", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 20, _HS.devotion = 20, _HS.height = 175, _HS.origEye = "grey", _HS.origHColor = "dirty blonde", _HS.pubicHColor = "dirty blonde", _HS.origSkin = "white", _HS.hLength = 10, _HS.boobs = 400, _HS.butt = 2, _HS.face = 15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.attrXX = 80, _HS.attrXY = 40, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "$He has an abstract tattoo of flowers and vines extending from $his left knee to $his pelvis to cover up a surgery scar. $His full name, blood type, and medical allergies are printed in matrix barcodes on each wrist.">>
+<<set _HS.slaveName = "Sarah", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 20, _HS.devotion = 20, _HS.height = 175, _HS.eye.origColor = "grey", _HS.origHColor = "dirty blonde", _HS.pubicHColor = "dirty blonde", _HS.origSkin = "white", _HS.hLength = 10, _HS.boobs = 400, _HS.butt = 2, _HS.face = 15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.attrXX = 80, _HS.attrXY = 40, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "$He has an abstract tattoo of flowers and vines extending from $his left knee to $his pelvis to cover up a surgery scar. $His full name, blood type, and medical allergies are printed in matrix barcodes on each wrist.">>
 <<set $heroSlaves.push(_HS)>>
 /*Pretty face, barcodes on wrists, fighter*/
 /*Corrected eyes, added combat skill, bisexual and odd, tweaked face -BoneyM*/
@@ -51,16 +52,17 @@
 /*Set birth name to 'unknown', tweaked obedience downwards, corrected tattoo's, added combat skill, clothes and shoes, arrogant -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Catherine", _HS.birthName = "Catherine", _HS.origin = "$He came from a wealthy background, but $he sold $himself into slavery to slake $his desire to submit to men and dominate women.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 40, _HS.devotion = 20, _HS.nationality = "American", _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.race = "white", _HS.hLength = 25, _HS.hStyle = "short and in a ponytail", _HS.boobs = 800, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.makeup = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 100, _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXX = 55, _HS.attrXY = 60, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.eyes = -1, _HS.eyewear = "corrective glasses">>
+<<set _HS.slaveName = "Catherine", _HS.birthName = "Catherine", _HS.origin = "$He came from a wealthy background, but $he sold $himself into slavery to slake $his desire to submit to men and dominate women.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 40, _HS.devotion = 20, _HS.nationality = "American", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.race = "white", _HS.hLength = 25, _HS.hStyle = "short and in a ponytail", _HS.boobs = 800, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.makeup = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 100, _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXX = 55, _HS.attrXY = 60, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.eyewear = "corrective glasses">>
+<<run eyeSurgery(_HS, "both", "blur")>>
 <<set $heroSlaves.push(_HS)>>
 /*corrected eye color, makeup, tweaked entertainskill, added 'arrogant' -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lilly", _HS.birthName = "Lilly", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.origEye = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "extremely pale", _HS.hStyle = "long", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.vaginaTat = "degradation", _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.hips = 2>>
+<<set _HS.slaveName = "Lilly", _HS.birthName = "Lilly", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.eye.origColor = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "extremely pale", _HS.hStyle = "long", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.vaginaTat = "degradation", _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.hips = 2>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Erica", _HS.birthName = "Erica", _HS.origin = "$He was sold into slavery after $his father was killed by political rivals.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = -10, _HS.devotion = 15, _HS.weight = -20, _HS.height = 152, _HS.markings = "freckled", _HS.eyes = 1, _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "fair", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clit = 4, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Erica", _HS.birthName = "Erica", _HS.origin = "$He was sold into slavery after $his father was killed by political rivals.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = -10, _HS.devotion = 15, _HS.weight = -20, _HS.height = 152, _HS.markings = "freckled", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "fair", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clit = 4, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*corrected eyes, changed skin to 'freckled', tweaked height downward, added pseudophallus clit, added origin -BoneyM*/
 /% corrected skin to fair?, changed markings to 'freckled' Bane70 %/
@@ -71,13 +73,13 @@
 /*Added origin, tweaked skills, added smart piercing set to submissive, removed buttslut -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Eryma", _HS.birthName = "Eryma", _HS.origin = "$He is a former gladiator that wagered $his freedom and lost.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 100, _HS.devotion = -30, _HS.height = 175, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 2, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.combat = 1, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant">>
+<<set _HS.slaveName = "Eryma", _HS.birthName = "Eryma", _HS.origin = "$He is a former gladiator that wagered $his freedom and lost.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 100, _HS.devotion = -30, _HS.height = 175, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 2, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.combat = 1, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant">>
 <<set $heroSlaves.push(_HS)>>
 /*fighter*/
 /*Added combat skill, changed eye color and rules, added origin, added arrogant -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Amber", _HS.birthName = "Amber", _HS.origin = "$He is a former shut-in who built up enough debt to be sold into slavery after the death of $his parents.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -100, _HS.weight = 40, _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 800, _HS.face = 15, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.behavioralFlaw = "hates men", _HS.career = "a shut-in">>
+<<set _HS.slaveName = "Amber", _HS.birthName = "Amber", _HS.origin = "$He is a former shut-in who built up enough debt to be sold into slavery after the death of $his parents.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -100, _HS.weight = 40, _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 800, _HS.face = 15, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.behavioralFlaw = "hates men", _HS.career = "a shut-in">>
 <<set $heroSlaves.push(_HS)>>
 /*SJW*/
 /*Tweaked obedience downwards, increased weight and face, added origin, changed eye color, changed fetish to bisexual and added 'hates men' flaw -BoneyM*/
@@ -95,12 +97,12 @@
 /% added combat skill 'Shinobi' means ninja so $he would have combat skill by default %/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lily", _HS.birthName = "Lily", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 10, _HS.weight = -20, _HS.height = 163, _HS.race = "white", _HS.origEye = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 400, _HS.butt = 2, _HS.face = 55, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40>>
+<<set _HS.slaveName = "Lily", _HS.birthName = "Lily", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 10, _HS.weight = -20, _HS.height = 163, _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 400, _HS.butt = 2, _HS.face = 55, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40>>
 <<set $heroSlaves.push(_HS)>>
 /*Added green eyes, increased face, changed waist -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Terra", _HS.birthName = "Terra", _HS.ID = _i++, _HS.assignment = "be a servant", _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -50, _HS.weight = -20, _HS.origEye = "amber", _HS.origHColor = "brown", _HS.override_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "purple", _HS.pubicHColor = "purple", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.clothes = "a nice maid outfit", _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "hates men">>
+<<set _HS.slaveName = "Terra", _HS.birthName = "Terra", _HS.ID = _i++, _HS.assignment = "be a servant", _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -50, _HS.weight = -20, _HS.eye.origColor = "amber", _HS.origHColor = "brown", _HS.override_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "purple", _HS.pubicHColor = "purple", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.clothes = "a nice maid outfit", _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "hates men">>
 <<set $heroSlaves.push(_HS)>>
 /*Maid*/
 /*Added 'hates men', changed eyes to amber, made $him a servant -BoneyM*/
@@ -112,7 +114,7 @@
 /*Added 'submissive' and 'bitchy' -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Valentina", _HS.birthName = "Valentina", _HS.origin = "$He was once the bodyguard to a Russian drug lord, and was sold into slavery after his death by cocaine overdose.", _HS.ID = _i++, _HS.nationality = "Russian", _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 175, _HS.origEye = "green", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.butt = 2, _HS.lips = 25, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a red star tattoo on $his back, and a hammer and sickle on $his right buttock.", _HS.custom.desc = "$He has a Slavic face with high cheekbones and a strong, pointed jaw. $He is a skilled martial artist.", _HS.faceShape = "masculine", _HS.career = "a bodyguard">>
+<<set _HS.slaveName = "Valentina", _HS.birthName = "Valentina", _HS.origin = "$He was once the bodyguard to a Russian drug lord, and was sold into slavery after his death by cocaine overdose.", _HS.ID = _i++, _HS.nationality = "Russian", _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.butt = 2, _HS.lips = 25, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a red star tattoo on $his back, and a hammer and sickle on $his right buttock.", _HS.custom.desc = "$He has a Slavic face with high cheekbones and a strong, pointed jaw. $He is a skilled martial artist.", _HS.faceShape = "masculine", _HS.career = "a bodyguard">>
 <<set $heroSlaves.push(_HS)>>
 /*Tweaked devotion up, changed eyes to green, corrected tattoo syntax, added combat skill -BoneyM*/
 
@@ -128,18 +130,18 @@
 /*Tweaked devotion up, added arrogant -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Elise", _HS.birthName = "Elise", _HS.origin = "$He is a spoiled former rich $girl who has been discarded by several former owners for $his attitude.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -40, _HS.height = 155, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hLength = 10, _HS.boobs = 400, _HS.butt = 2, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates penetration">>
+<<set _HS.slaveName = "Elise", _HS.birthName = "Elise", _HS.origin = "$He is a spoiled former rich $girl who has been discarded by several former owners for $his attitude.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -40, _HS.height = 155, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hLength = 10, _HS.boobs = 400, _HS.butt = 2, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates penetration">>
 <<set $heroSlaves.push(_HS)>>
 /*hates sex*/
 /*Changed eye color, hard to pick between 'hates penetration' and 'arrogant', chose the latter because it seems more central to the character. -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Santa", _HS.birthName = "Santa", _HS.origin = "$He claims that $he actually is Santa Claus.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 10, _HS.height = 155, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.intelligence = -50, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.sexualFlaw = "hates penetration", _HS.custom.desc = "$He has a verbal tic that causes $him to say 'ho, ho, ho' frequently.", _HS.weight = 35, _HS.clothes = "a Santa dress">>
+<<set _HS.slaveName = "Santa", _HS.birthName = "Santa", _HS.origin = "$He claims that $he actually is Santa Claus.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 10, _HS.height = 155, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.intelligence = -50, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.sexualFlaw = "hates penetration", _HS.custom.desc = "$He has a verbal tic that causes $him to say 'ho, ho, ho' frequently.", _HS.weight = 35, _HS.clothes = "a Santa dress">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eye color, added odd, tweaked vaginalSkill, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Joan", _HS.birthName = "Joan", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 20, _HS.devotion = 15, _HS.height = 175, _HS.origEye = "blue", _HS.origHColor = "brown", _HS.pubicHColor = "brown", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.butt = 4, _HS.face = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 30, _HS.attrXX = 80, _HS.attrXY = 80, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Joan", _HS.birthName = "Joan", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 20, _HS.devotion = 15, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "brown", _HS.pubicHColor = "brown", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.butt = 4, _HS.face = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 30, _HS.attrXX = 80, _HS.attrXY = 80, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*heterochromia*/
 /*Tweaked face upwards, changed eye color, changed health from 20 to 6 -BoneyM*/
@@ -169,13 +171,13 @@
 /*Tweaked health upwards, corrected tattoo syntax, added combat skill -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Slave", _HS.birthName = "Vanessa", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = -75, _HS.height = 157, _HS.origEye = "blue", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1200, _HS.butt = 3, _HS.lipsTat = "permanent makeup", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a barcode tattooed on $his abdomen, and 'cut here' lines on $his arms and legs.", _HS.sexualFlaw = "self hating">>
+<<set _HS.slaveName = "Slave", _HS.birthName = "Vanessa", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = -75, _HS.height = 157, _HS.eye.origColor = "blue", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1200, _HS.butt = 3, _HS.lipsTat = "permanent makeup", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a barcode tattooed on $his abdomen, and 'cut here' lines on $his arms and legs.", _HS.sexualFlaw = "self hating">>
 <<set $heroSlaves.push(_HS)>>
 /*permashackles*/
 /*Changed eyes to blue, added tattoos -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Carol", _HS.birthName = "Carol", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 60, _HS.weight = -20, _HS.height = 155, _HS.origEye = "blue", _HS.origSkin = "pale", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 400, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a cherry blossom tattooed on $his forearm.", _HS.custom.desc = "$He is unnaturally flexible.">>
+<<set _HS.slaveName = "Carol", _HS.birthName = "Carol", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 60, _HS.weight = -20, _HS.height = 155, _HS.eye.origColor = "blue", _HS.origSkin = "pale", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 400, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a cherry blossom tattooed on $his forearm.", _HS.custom.desc = "$He is unnaturally flexible.">>
 <<set $heroSlaves.push(_HS)>>
 /*red contacts*/
 /*Reduced weight, changed eyes to blue, corrected tattoo syntax, added flexibility in customdesc, changed skin to pale -BoneyM*/
@@ -191,7 +193,7 @@
 /*Changed $him to Arabic, corrected tattoo syntax, added entertain skill -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Riya", _HS.birthName = "Riya", _HS.origin = "$He grew up in a well-to-do family and discovered $his fetish for servitude in college, and $he decided to become the world's best slave and slave trainer in one.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.weight = -20, _HS.height = 155, _HS.race = "indo-aryan", _HS.origEye = "grey", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a barcode of $his identifying information tattooed on $his left shoulder.", _HS.career = "a slaver">>
+<<set _HS.slaveName = "Riya", _HS.birthName = "Riya", _HS.origin = "$He grew up in a well-to-do family and discovered $his fetish for servitude in college, and $he decided to become the world's best slave and slave trainer in one.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.weight = -20, _HS.height = 155, _HS.race = "indo-aryan", _HS.eye.origColor = "grey", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a barcode of $his identifying information tattooed on $his left shoulder.", _HS.career = "a slaver">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eyes to grey, reduced height and weight, added origin, smart piercing, entertain and whore skill (representing theoretical knowledge from being a trainer), added ear piercings -BoneyM*/
 
@@ -202,25 +204,26 @@
 /*Changed eyes, added scar -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Raven", _HS.birthName = "Raven", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 20, _HS.weight = -20, _HS.race = "white", _HS.origEye = "green", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "black with blue highlights", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.nails = 2, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Raven", _HS.birthName = "Raven", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 20, _HS.weight = -20, _HS.race = "white", _HS.eye.origColor = "green", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "black with blue highlights", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.nails = 2, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*likes toys*/
 /*Reduced weight, changed eyes, added nail polish -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Kino", _HS.birthName = "Kino", _HS.origin = "$He was formerly owned by someone who fancied themselves a geneticist, where $he acquired permanently discolored hair and odd fetishes.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = -75, _HS.height = 155, _HS.race = "white", _HS.origEye = "blue-green", _HS.override_H_Color = 1, _HS.origHColor = "blue", _HS.pubicHColor = "blue", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 30, _HS.hStyle = "short, spiky, with a long shoulder-length lock leading from $his temples down, one on each side", _HS.boobs = 650, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a vertical scar through $his right eye, is a dabbling artist, and is an oviposition fetishist.", _HS.eyes = -2>>
+<<set _HS.slaveName = "Kino", _HS.birthName = "Kino", _HS.origin = "$He was formerly owned by someone who fancied themselves a geneticist, where $he acquired permanently discolored hair and odd fetishes.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = -75, _HS.height = 155, _HS.race = "white", _HS.eye.origColor = "blue-green", _HS.override_H_Color = 1, _HS.origHColor = "blue", _HS.pubicHColor = "blue", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 30, _HS.hStyle = "short, spiky, with a long shoulder-length lock leading from $his temples down, one on each side", _HS.boobs = 650, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a vertical scar through $his right eye, is a dabbling artist, and is an oviposition fetishist.">>
+<<run eyeSurgery(_HS, "both", "blind")>>
 <<set $heroSlaves.push(_HS)>>
 /*Added combat skill, increased health, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Vivienne", _HS.birthName = "Vivienne", _HS.origin = "$He is a former soldier who was sold into slavery after losing $his leg to an IED.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 39, _HS.physicalAge = 39, _HS.visualAge = 39, _HS.ovaryAge = 39, _HS.health = 20, _HS.devotion = 90, _HS.race = "white", _HS.origEye = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXY = 1, _HS.fetishKnown = 1, _HS.backTat = "$He has a military tattoo on $his back.", _HS.custom.desc = "$His left leg is artificial, and $he has a number of scars on $his thigh and shoulder and a burn near $his temple.", _HS.career = "a soldier">>
+<<set _HS.slaveName = "Vivienne", _HS.birthName = "Vivienne", _HS.origin = "$He is a former soldier who was sold into slavery after losing $his leg to an IED.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 39, _HS.physicalAge = 39, _HS.visualAge = 39, _HS.ovaryAge = 39, _HS.health = 20, _HS.devotion = 90, _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXY = 1, _HS.fetishKnown = 1, _HS.backTat = "$He has a military tattoo on $his back.", _HS.custom.desc = "$His left leg is artificial, and $he has a number of scars on $his thigh and shoulder and a burn near $his temple.", _HS.career = "a soldier">>
 <<run configureLimbs(_HS, "left leg", 2)>>
 <<set $heroSlaves.push(_HS)>>
 /*missing left leg, burn scar, low sex drive, fighter*/
 /*Added customdesc, fixed tattoo syntax, added combat skill, eye color and origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lexi", _HS.birthName = "Lexi", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 25, _HS.weight = -20, _HS.height = 157, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "bleached blonde", _HS.pubicHColor = "bleached blonde", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 35, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Lexi", _HS.birthName = "Lexi", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 25, _HS.weight = -20, _HS.height = 157, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "bleached blonde", _HS.pubicHColor = "bleached blonde", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 35, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eyes to blue -BoneyM*/
 
@@ -230,19 +233,19 @@
 /*Fixed tattoo syntax -BoneyM "$He has hairy, unshaven armpits, bush and asscrack."*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Maya", _HS.birthName = "Maya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 40, _HS.devotion = 100, _HS.height = 190, _HS.markings = "freckled", _HS.race = "white", _HS.origEye = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "light", _HS.hLength = 10, _HS.boobs = 800, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.legsTat = "$His right thigh reads 'Fuck Me' in flowery script.", _HS.stampTat = "$He has a fairly generic tramp stamp.">>
+<<set _HS.slaveName = "Maya", _HS.birthName = "Maya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 40, _HS.devotion = 100, _HS.height = 190, _HS.markings = "freckled", _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "light", _HS.hLength = 10, _HS.boobs = 800, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.legsTat = "$His right thigh reads 'Fuck Me' in flowery script.", _HS.stampTat = "$He has a fairly generic tramp stamp.">>
 <<set $heroSlaves.push(_HS)>>
 /*Corrected tattoo syntax, changed skin to freckled, eyes to green, increased height -BoneyM*/
 /% Corrected skin to light?, and changed markings to freckled Bane70 %/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Alexis", _HS.birthName = "Alexis", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 150, _HS.race = "mixed race", _HS.origEye = "hazel", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "ebony", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.clit = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -20, _HS.energy = 100, _HS.attrXY = 75, _HS.attrXX = 75, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a feminine personality despite $his high testosterone.", _HS.areolae = 2, _HS.nipples = "huge", _HS.voice = 1, _HS.navelPiercing = 1, _HS.tonguePiercing = 1>>
+<<set _HS.slaveName = "Alexis", _HS.birthName = "Alexis", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 150, _HS.race = "mixed race", _HS.eye.origColor = "hazel", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "ebony", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.clit = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -20, _HS.energy = 100, _HS.attrXY = 75, _HS.attrXX = 75, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a feminine personality despite $his high testosterone.", _HS.areolae = 2, _HS.nipples = "huge", _HS.voice = 1, _HS.navelPiercing = 1, _HS.tonguePiercing = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*big clit*/
 /*Changed eyes to hazel, increased clit, added a lot of piercings, changed fetish to nympho, fixed customdesc syntax -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Anneliese", _HS.birthName = "Anneliese", _HS.origin = "$He is a former Head Girl that fetishizes $his own degradation.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 31, _HS.physicalAge = 31, _HS.visualAge = 31, _HS.ovaryAge = 31, _HS.health = 20, _HS.devotion = 100, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "golden", _HS.pubicHColor = "golden", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.anus = 2, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.custom.desc = "$He has the air of a princess.">>
+<<set _HS.slaveName = "Anneliese", _HS.birthName = "Anneliese", _HS.origin = "$He is a former Head Girl that fetishizes $his own degradation.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 31, _HS.physicalAge = 31, _HS.visualAge = 31, _HS.ovaryAge = 31, _HS.health = 20, _HS.devotion = 100, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "golden", _HS.pubicHColor = "golden", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.anus = 2, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.custom.desc = "$He has the air of a princess.">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eyes to blue, added origin, pierced ears, fixed customdesc syntax -BoneyM*/
 
@@ -263,7 +266,7 @@
 /*Added barcode tattoo and origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Emm", _HS.birthName = "Emm", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 40, _HS.weight = 20, _HS.race = "white", _HS.origEye = "green", _HS.origHColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 5, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is friendly, clever, and quick.">>
+<<set _HS.slaveName = "Emm", _HS.birthName = "Emm", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 40, _HS.weight = 20, _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 5, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is friendly, clever, and quick.">>
 <<set $heroSlaves.push(_HS)>>
 /*fluctuating weight*/
 /*Increased weight, added entertain and whore skill, added ear piercing, changed eyes -BoneyM*/
@@ -284,18 +287,18 @@
 /*Added nose piercing, reduced height, changed fetish to bisexual -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sammy", _HS.birthName = "Sammy", _HS.origin = "$He chose to be a slave because the romanticized view of it $he had turns $him on.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 25, _HS.weight = 20, _HS.height = 155, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 80, _HS.hStyle = "ass-length", _HS.boobs = 300, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He has fetishes for wedgies, spanking and herms.">>
+<<set _HS.slaveName = "Sammy", _HS.birthName = "Sammy", _HS.origin = "$He chose to be a slave because the romanticized view of it $he had turns $him on.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = 25, _HS.weight = 20, _HS.height = 155, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 80, _HS.hStyle = "ass-length", _HS.boobs = 300, _HS.butt = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He has fetishes for wedgies, spanking and herms.">>
 <<set $heroSlaves.push(_HS)>>
 /*laid back*/
 /*Added origin, increased weight, pierced ears, added customdesc -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Klara", _HS.birthName = "Klara", _HS.origin = "$He was forced into slavery and rather brutally broken in.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -75, _HS.height = 175, _HS.race = "white", _HS.origEye = "blue", _HS.origSkin = "fair", _HS.hStyle = "long and braided", _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["right buttock"] = "Cum slut", _HS.custom.tattoo = "'bitch whore' is tattooed on $his inner left thigh.">>
+<<set _HS.slaveName = "Klara", _HS.birthName = "Klara", _HS.origin = "$He was forced into slavery and rather brutally broken in.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -75, _HS.height = 175, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origSkin = "fair", _HS.hStyle = "long and braided", _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["right buttock"] = "Cum slut", _HS.custom.tattoo = "'bitch whore' is tattooed on $his inner left thigh.">>
 <<set $heroSlaves.push(_HS)>>
 /*Fixed typo in customdesc, increased whore and entertainskill, changed eye color -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lucy", _HS.birthName = "Lucy", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.race = "white", _HS.origSkin = "white", _HS.origEye = "blue", _HS.override_H_Color = 1, _HS.origHColor = "brown", _HS.hColor = "pale blonde", _HS.hLength = 95, _HS.hStyle = "ass length", _HS.boobs = 300, _HS.butt = 3, _HS.buttTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "degradation", _HS.ovaries = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.height = 165>>
+<<set _HS.slaveName = "Lucy", _HS.birthName = "Lucy", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.race = "white", _HS.origSkin = "white", _HS.eye.origColor = "blue", _HS.override_H_Color = 1, _HS.origHColor = "brown", _HS.hColor = "pale blonde", _HS.hLength = 95, _HS.hStyle = "ass length", _HS.boobs = 300, _HS.butt = 3, _HS.buttTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "degradation", _HS.ovaries = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.height = 165>>
 <<set $heroSlaves.push(_HS)>>
 /*innuendo*/
 /*Added odd, changed eye color -BoneyM*/
@@ -306,7 +309,7 @@
 /*Couldn't find this slave in the thread or the submission page on the blog -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Dharma", _HS.birthName = "Dharma", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, _HS.health = 20, _HS.devotion = -100, _HS.height = 175, _HS.race = "white", _HS.origEye = "green", _HS.origHColor = "dark brown", _HS.pubicHColor = "dark brown", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.analArea = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a henna tattoo on $his left forearm, and a butterfly tattoo on $his right calf.", _HS.custom.desc = "$He has high cheekbones on a heart shaped face.", _HS.faceShape = "cute", _HS.sexualQuirk = "size queen">>
+<<set _HS.slaveName = "Dharma", _HS.birthName = "Dharma", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, _HS.health = 20, _HS.devotion = -100, _HS.height = 175, _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "dark brown", _HS.pubicHColor = "dark brown", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.analArea = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a henna tattoo on $his left forearm, and a butterfly tattoo on $his right calf.", _HS.custom.desc = "$He has high cheekbones on a heart shaped face.", _HS.faceShape = "cute", _HS.sexualQuirk = "size queen">>
 <<set $heroSlaves.push(_HS)>>
 /*Fetish was set to 'arrogant' instead of quirk, corrected tattoo syntax -BoneyM*/
 
@@ -323,7 +326,8 @@
 /*Fixed customdesc syntax, added pierced ears, corrected hair color, added origin and arrogant -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Xendra", _HS.birthName = "Xendra", _HS.origin = "$He was a hermit until $he became a slave, and went along with it out of boredom.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = 75, _HS.height = 175, _HS.race = "black", _HS.origEye = "brown", _HS.override_Eye_Color = 1, _HS.override_H_Color = 1, _HS.eyeColor = "purple", _HS.origHColor = "white", _HS.origSkin = "dark", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.custom.tattoo = "$He has a pair of full sleeve tattoos.", _HS.custom.desc = "$He has many scars, and is skilled with plants.", _HS.career = "a shut-in">>
+<<set _HS.slaveName = "Xendra", _HS.birthName = "Xendra", _HS.origin = "$He was a hermit until $he became a slave, and went along with it out of boredom.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = 75, _HS.height = 175, _HS.race = "black", _HS.eye.origColor = "brown", _HS.override_Eye_Color = 1, _HS.override_H_Color = 1, _HS.origHColor = "white", _HS.origSkin = "dark", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.combat = 1, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.custom.tattoo = "$He has a pair of full sleeve tattoos.", _HS.custom.desc = "$He has many scars, and is skilled with plants.", _HS.career = "a shut-in">>
+<<run setEyeColor(_HS, "purple")>>
 <<set $heroSlaves.push(_HS)>>
 /*toned, snuff, fighter*/
 /*Increased health, added combatskill, bitchy and pierced ears, fixed tattoo and customdesc syntax, corrected skin color from 'white' to 'dark' -BoneyM*/
@@ -344,7 +348,8 @@
 /*Added origin, reduced age, fetish was 'arrogant', changed it to quirk, fixed customdesc syntax. -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Bitch", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = -20, _HS.devotion = -75, _HS.height = 155, _HS.origEye = "dark", _HS.pupil = "almond-shaped", _HS.origHColor = "dark", _HS.origSkin = "pale", _HS.waist = -55, _HS.boobs = 300, _HS.butt = 5, _HS.lips = 35, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.oral = 35, _HS.intelligence = -60, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a heart shaped face and many scars.", _HS.faceShape = "cute", _HS.hips = 3, _HS.markings = "beauty">>
+<<set _HS.slaveName = "Bitch", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = -20, _HS.devotion = -75, _HS.height = 155, _HS.eye.origColor = "dark", _HS.origHColor = "dark", _HS.origSkin = "pale", _HS.waist = -55, _HS.boobs = 300, _HS.butt = 5, _HS.lips = 35, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.oral = 35, _HS.intelligence = -60, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has a heart shaped face and many scars.", _HS.faceShape = "cute", _HS.hips = 3, _HS.markings = "beauty">>
+<<run setEyeColorFull(_HS, "", "almond-shaped", "", "both")>>
 <<set $heroSlaves.push(_HS)>>
 /*Fixed customdesc syntax, changed eye color, added piercings, increased waist -BoneyM*/
 
@@ -366,7 +371,7 @@
 /*Pierced ears, added origin, corrected customdesc syntax. -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Jasmine", _HS.birthName = "Jasmine", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 25, _HS.height = 175, _HS.origRace = "white", _HS.race = "black", _HS.origEye = "blue-green", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.override_Skin = 1, _HS.origHColor = "fair blonde", _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.attrXY = 40, _HS.fetish = "humiliation">>
+<<set _HS.slaveName = "Jasmine", _HS.birthName = "Jasmine", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 25, _HS.height = 175, _HS.origRace = "white", _HS.race = "black", _HS.eye.origColor = "blue-green", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.override_Skin = 1, _HS.origHColor = "fair blonde", _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.attrXY = 40, _HS.fetish = "humiliation">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eyes -BoneyM*/
 
@@ -377,12 +382,13 @@
 /*Corrected hair color, added piercings, added 'hates penetration' -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fatiah", _HS.birthName = "Fatiah", _HS.origin = "$He was taken as a slave by a Sultan, who presented $him as a gift to a surveyor.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 80, _HS.devotion = 45, _HS.weight = 20, _HS.height = 257, _HS.race = "middle eastern", _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black and oily", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long, but shaved on the left side", _HS.boobs = 1200, _HS.butt = 4, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.intelligence = -30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.attrKnown = 0, _HS.eyes = -1, _HS.eyewear = "corrective glasses", _HS.clothes = "a niqab and abaya", _HS.hips = 2>>
+<<set _HS.slaveName = "Fatiah", _HS.birthName = "Fatiah", _HS.origin = "$He was taken as a slave by a Sultan, who presented $him as a gift to a surveyor.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 80, _HS.devotion = 45, _HS.weight = 20, _HS.height = 257, _HS.race = "middle eastern", _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black and oily", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long, but shaved on the left side", _HS.boobs = 1200, _HS.butt = 4, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.intelligence = -30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.attrKnown = 0, _HS.eyewear = "corrective glasses", _HS.clothes = "a niqab and abaya", _HS.hips = 2>>
+<<run eyeSurgery(_HS, "both", "blur")>>
 <<set $heroSlaves.push(_HS)>>
 /*Increased height, reduced weight, reduced butt, fixed customdesc syntax -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "No Name", _HS.birthName = "No Name", _HS.origin = "A previous owner cultivated $his desire to escape slavery for his own amusement.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 50, _HS.devotion = -100, _HS.height = 165, _HS.weight = -20, _HS.muscles = 20, _HS.race = "mixed race", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.pubicHStyle = "neat", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is fit and athletic.", _HS.behavioralFlaw = "arrogant", _HS.hips = 1>>
+<<set _HS.slaveName = "No Name", _HS.birthName = "No Name", _HS.origin = "A previous owner cultivated $his desire to escape slavery for his own amusement.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 50, _HS.devotion = -100, _HS.height = 165, _HS.weight = -20, _HS.muscles = 20, _HS.race = "mixed race", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.pubicHStyle = "neat", _HS.boobs = 300, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is fit and athletic.", _HS.behavioralFlaw = "arrogant", _HS.hips = 1>>
 <<set $heroSlaves.push(_HS)>>
 *//*hypno-anal/cum*/
 /*Reduced weight, changed eyes, corrected customdesc syntax, added origin, increased rebelliousness, changed clitsetting to oral. -BoneyM*/
@@ -394,31 +400,31 @@
 /*Corrected tattoo syntax, added origin and customdesc, increased health -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Falcon", _HS.birthName = "Jamie", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 25, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has an implanted GPS tracker to find $him in case $his habit of stalking pretty girls gets the better of $him.">>
+<<set _HS.slaveName = "Falcon", _HS.birthName = "Jamie", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 25, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has an implanted GPS tracker to find $him in case $his habit of stalking pretty girls gets the better of $him.">>
 <<set $heroSlaves.push(_HS)>>
 /*proactive stalker hypnosis masseuse*/
 /*Corrected birthname (was 'Jasmine'), changed eye color, added customdesc -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Beatrice (No. 525)", _HS.birthName = "Beatrice", _HS.origin = "$He comes from old money and sold $himself into slavery to satisfy $his obsession with the practice, believing $his family would buy $him back out of slavery later.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.race = "white", _HS.origEye = "blue-green", _HS.override_H_Color = 1, _HS.origHColor = "red", _HS.hColor = "bright red", _HS.origSkin = "pure white", _HS.hLength = 80, _HS.hStyle = "long and wavy, and down past $his ass", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a fine, intricate vine-like tattoo around $his right ankle.">>
+<<set _HS.slaveName = "Beatrice (No. 525)", _HS.birthName = "Beatrice", _HS.origin = "$He comes from old money and sold $himself into slavery to satisfy $his obsession with the practice, believing $his family would buy $him back out of slavery later.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.race = "white", _HS.eye.origColor = "blue-green", _HS.override_H_Color = 1, _HS.origHColor = "red", _HS.hColor = "bright red", _HS.origSkin = "pure white", _HS.hLength = 80, _HS.hStyle = "long and wavy, and down past $his ass", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a fine, intricate vine-like tattoo around $his right ankle.">>
 <<set $heroSlaves.push(_HS)>>
 /*contraception but breeder naturally, well trained*/
 /*Fetish was 'arrogant', changed it to flaw. Added origin, whore and entertainskill. Changed eye color, corrected tattoo syntax, pierced ears, reduced weight -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Yuuki", _HS.birthName = "Yuuki", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 45, _HS.height = 145, _HS.race = "asian", _HS.override_Eye_Color = 1, _HS.override_H_Color = 1, _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "fair", _HS.hStyle = "long and curly", _HS.waist = -55, _HS.boobs = 1000, _HS.butt = 5, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.oral = 100, _HS.skill.entertainment = 35, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.sexualFlaw = "crude ">>
+<<set _HS.slaveName = "Yuuki", _HS.birthName = "Yuuki", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 45, _HS.height = 145, _HS.race = "asian", _HS.override_Eye_Color = 1, _HS.override_H_Color = 1, _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "fair", _HS.hStyle = "long and curly", _HS.waist = -55, _HS.boobs = 1000, _HS.butt = 5, _HS.vaginaLube = 1, _HS.ovaries = 1, _HS.skill.oral = 100, _HS.skill.entertainment = 35, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.sexualFlaw = "crude ">>
 <<set $heroSlaves.push(_HS)>>
 /*mischievous tease*/
 /*Reduced height, added entertainskill, added bitchy, changed eyes -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Elisa", _HS.birthName = "Elisa", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -55, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.origEye = "bright blue", _HS.origHColor = "white-blonde", _HS.pubicHColor = "white-blonde", _HS.origSkin = "extremely pale", _HS.hStyle = "in a long braid", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.face = 55, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates penetration", _HS.custom.desc = "An iron-willed, recently captured figure of a prominent anti-Free City guerrilla party, $he still clings strongly to traditional beliefs on Man's natural good, economic restriction, and monogamy. Excitable, girly, and sweet in comparison to $his natural brother, Martin, $he has a lovely singing voice. $He prays quite often, if allowed to.", _HS.mother = -9997, _HS.father = -9996>>
+<<set _HS.slaveName = "Elisa", _HS.birthName = "Elisa", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -55, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.eye.origColor = "bright blue", _HS.origHColor = "white-blonde", _HS.pubicHColor = "white-blonde", _HS.origSkin = "extremely pale", _HS.hStyle = "in a long braid", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.face = 55, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates penetration", _HS.custom.desc = "An iron-willed, recently captured figure of a prominent anti-Free City guerrilla party, $he still clings strongly to traditional beliefs on Man's natural good, economic restriction, and monogamy. Excitable, girly, and sweet in comparison to $his natural brother, Martin, $he has a lovely singing voice. $He prays quite often, if allowed to.", _HS.mother = -9997, _HS.father = -9996>>
 <<set $heroSlaves.push(_HS)>>
 /*also hates pen*/
 /*martin's sibling*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Yvonne", _HS.birthName = "Yvonne", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 100, _HS.height = 190, _HS.origEye = "hazel", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "light", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 700, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.face = 55, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.attrXY = 40, _HS.fetish = "pregnancy">>
+<<set _HS.slaveName = "Yvonne", _HS.birthName = "Yvonne", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 100, _HS.height = 190, _HS.eye.origColor = "hazel", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "light", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 700, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.face = 55, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.attrXY = 40, _HS.fetish = "pregnancy">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -426,29 +432,30 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lilliana", _HS.birthName = "Zuzanna", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 13, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 190, _HS.origEye = "white", _HS.eyes = -2, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "white with red stripes", _HS.eyebrowHColor = "white", _HS.pubicHColor = "white", _HS.underArmHColor = "white", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 100, _HS.hStyle = "back in a large ass length braid", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.face = 15, _HS.faceImplant = 65, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Lilliana", _HS.birthName = "Zuzanna", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 13, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 190, _HS.eye.origColor = "white", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "white with red stripes", _HS.eyebrowHColor = "white", _HS.pubicHColor = "white", _HS.underArmHColor = "white", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 100, _HS.hStyle = "back in a large ass length braid", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.face = 15, _HS.faceImplant = 65, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<run eyeSurgery(_HS, "both", "blind")>>
 <<set $heroSlaves.push(_HS)>>
 /*Blind*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Jenna", _HS.birthName = "Jenna", _HS.ID = _i++, _HS.assignment = "please you", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 30, _HS.devotion = 60, _HS.height = 145, _HS.origSkin = "pale", _HS.origEye = "violet", _HS.origHColor = "red-blonde", _HS.pubicHColor = "red-blonde", _HS.hStyle = "waist-length", _HS.waist = -55, _HS.boobs = 650, _HS.butt = 6, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "submissive", _HS.ovaries = 1, _HS.skill.oral = 100, _HS.clothes = "a string bikini", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.tattoo = "$His name is tattooed in flowing cursive script across $his upper back. ">>
+<<set _HS.slaveName = "Jenna", _HS.birthName = "Jenna", _HS.ID = _i++, _HS.assignment = "please you", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 30, _HS.devotion = 60, _HS.height = 145, _HS.origSkin = "pale", _HS.eye.origColor = "violet", _HS.origHColor = "red-blonde", _HS.pubicHColor = "red-blonde", _HS.hStyle = "waist-length", _HS.waist = -55, _HS.boobs = 650, _HS.butt = 6, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "submissive", _HS.ovaries = 1, _HS.skill.oral = 100, _HS.clothes = "a string bikini", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.tattoo = "$His name is tattooed in flowing cursive script across $his upper back. ">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Asspussy' Miss Julie O", _HS.birthName = "Leah", _HS.origin = "$He was sentenced to enslavement as a punishment for fraud and theft.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 70, _HS.devotion = 100, _HS.height = 155, _HS.markings = "none", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "fashionable for a Free Cities 3rd Grade Teacher, up in a tight bun", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipples = "huge", _HS.butt = 3, _HS.face = 15, _HS.faceImplant = 65, _HS.anus = 1, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$His pale skin is lightly freckled, and $his nipples are dark tan. $He used to be sexually repressed, and used to hate anal sex.">>
+<<set _HS.slaveName = "'Asspussy' Miss Julie O", _HS.birthName = "Leah", _HS.origin = "$He was sentenced to enslavement as a punishment for fraud and theft.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 70, _HS.devotion = 100, _HS.height = 155, _HS.markings = "none", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "fashionable for a Free Cities 3rd Grade Teacher, up in a tight bun", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipples = "huge", _HS.butt = 3, _HS.face = 15, _HS.faceImplant = 65, _HS.anus = 1, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$His pale skin is lightly freckled, and $his nipples are dark tan. $He used to be sexually repressed, and used to hate anal sex.">>
 <<set $heroSlaves.push(_HS)>>
 /*huge nips*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Golden Cobra", _HS.birthName = "Auyala", _HS.origin = "$He was captured from West Central Africa.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 30, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Central African", _HS.race = "black", _HS.eyes = 1, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origEye = "green", _HS.origHColor = "golden blonde with copper streaks", _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "brown", _HS.hLength = 35, _HS.hStyle = "shoulder-length, plaited in cornrow braids; a single thin braid adorned with several colorful feathers and fearsome fang of unknown origin is hanging aside $his left eye", _HS.pubicHStyle = "in a strip", _HS.waist = -55, _HS.boobs = 1450, _HS.nipplesPiercing = 2, _HS.butt = 5, _HS.lips = 55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 2, _HS.clitPiercing = 2, _HS.clitSetting = "lesbian", _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.clothes = "slutty jewelry", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has tattoo of cobra wrapping around $his neck, which head with wide open maw and inflated hood tattooed right at $his throat.", _HS.custom.desc = "$He has a streak of ritual scars resembling some very complex snake skin pattern running down $his spine from nape to tail-bone.">>
+<<set _HS.slaveName = "Golden Cobra", _HS.birthName = "Auyala", _HS.origin = "$He was captured from West Central Africa.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 30, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Central African", _HS.race = "black", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.eye.origColor = "green", _HS.origHColor = "golden blonde with copper streaks", _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "brown", _HS.hLength = 35, _HS.hStyle = "shoulder-length, plaited in cornrow braids; a single thin braid adorned with several colorful feathers and fearsome fang of unknown origin is hanging aside $his left eye", _HS.pubicHStyle = "in a strip", _HS.waist = -55, _HS.boobs = 1450, _HS.nipplesPiercing = 2, _HS.butt = 5, _HS.lips = 55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 2, _HS.clitPiercing = 2, _HS.clitSetting = "lesbian", _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.clothes = "slutty jewelry", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has tattoo of cobra wrapping around $his neck, which head with wide open maw and inflated hood tattooed right at $his throat.", _HS.custom.desc = "$He has a streak of ritual scars resembling some very complex snake skin pattern running down $his spine from nape to tail-bone.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Top' Lillium", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 90, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.origEye = "green", _HS.origHColor = "red", _HS.override_H_Color = 1, _HS.hColor = "deep red", _HS.origSkin = "fair", _HS.hLength = 20, _HS.hStyle = "short and pleasantly frames $his face", _HS.waist = -55, _HS.boobs = 900, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a small, grinning harlequin tattoo on $his inner thigh.", _HS.custom.desc = "In place of $his left hand's pinkie finger is a large pink scar that crosses the entire back of $his hand.">>
+<<set _HS.slaveName = "'Top' Lillium", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 90, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.override_H_Color = 1, _HS.hColor = "deep red", _HS.origSkin = "fair", _HS.hLength = 20, _HS.hStyle = "short and pleasantly frames $his face", _HS.waist = -55, _HS.boobs = 900, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a small, grinning harlequin tattoo on $his inner thigh.", _HS.custom.desc = "In place of $his left hand's pinkie finger is a large pink scar that crosses the entire back of $his hand.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Cammy", _HS.birthName = "Viktoriya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 80, _HS.devotion = 70, _HS.muscles = 75, _HS.height = 145, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hStyle = "tied back into two long braids", _HS.boobs = 800, _HS.butt = 2.5, _HS.face = 15, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.custom.desc = "$He has a long horizontal scar on $his left cheek.">>
+<<set _HS.slaveName = "Cammy", _HS.birthName = "Viktoriya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 80, _HS.devotion = 70, _HS.muscles = 75, _HS.height = 145, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hStyle = "tied back into two long braids", _HS.boobs = 800, _HS.butt = 2.5, _HS.face = 15, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.custom.desc = "$He has a long horizontal scar on $his left cheek.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -464,11 +471,11 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Miss Maree", _HS.birthName = "Tina", _HS.origin = "A former headmistress, $he was sentenced to slavery after $he was caught training $his students to be lesbian trophy slaves.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = -50, _HS.weight = 20, _HS.height = 155, _HS.nationality = "American", _HS.origEye = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "in a large bun", _HS.pubicHStyle = "in a strip", _HS.waist = -55, _HS.boobs = 1500, _HS.areolae = 3, _HS.boobsTat = "advertisements", _HS.butt = 6, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vaginaLube = 1, _HS.bellyAccessory = "a corset", _HS.ovaries = 1, _HS.anusTat = "flowers", _HS.earPiercing = 1, _HS.stampTat = "scenes", _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 0, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He absolutely detests men.", _HS.career = "a principal">>
+<<set _HS.slaveName = "Miss Maree", _HS.birthName = "Tina", _HS.origin = "A former headmistress, $he was sentenced to slavery after $he was caught training $his students to be lesbian trophy slaves.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = -50, _HS.weight = 20, _HS.height = 155, _HS.nationality = "American", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "in a large bun", _HS.pubicHStyle = "in a strip", _HS.waist = -55, _HS.boobs = 1500, _HS.areolae = 3, _HS.boobsTat = "advertisements", _HS.butt = 6, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vaginaLube = 1, _HS.bellyAccessory = "a corset", _HS.ovaries = 1, _HS.anusTat = "flowers", _HS.earPiercing = 1, _HS.stampTat = "scenes", _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 0, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He absolutely detests men.", _HS.career = "a principal">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He was once a rising Free Cities politician who argued for compulsory female enslavement, but $he became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, _HS.health = 60, _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave $he has been turned into a little bimbo.">>
+<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He was once a rising Free Cities politician who argued for compulsory female enslavement, but $he became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, _HS.health = 60, _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave $he has been turned into a little bimbo.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<if $seePreg != 0>>
@@ -478,7 +485,7 @@
 <</if>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Horsepussy", _HS.birthName = "Amber", _HS.origin = "$He was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 35, _HS.physicalAge = 35, _HS.visualAge = 35, _HS.ovaryAge = 35, _HS.health = 80, _HS.devotion = 55.7, _HS.height = 170, _HS.race = "white", _HS.nationality = "American", _HS.origEye = "blue", _HS.origSkin = "pale", _HS.hLength = 10, _HS.boobs = 500, _HS.butt = 5, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 3, _HS.clitSetting = "vanilla", _HS.anus = 3, _HS.ovaries = 1, _HS.anusPiercing = 1, _HS.makeup = 1, _HS.brand["right buttock"] = "SLAVE", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 35, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 96, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$His nickname, 'Horsepussy,' is tattooed on $his forehead.", _HS.custom.desc = "$His pussy has been extensively surgically altered. $His labia are large and puffy, sticking out nearly an inch from $his crotch. $His cunt is exquisitely pink at the center, but $his large labia are dark at the edges, almost black.", _HS.labia = 3>>
+<<set _HS.slaveName = "Horsepussy", _HS.birthName = "Amber", _HS.origin = "$He was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 35, _HS.physicalAge = 35, _HS.visualAge = 35, _HS.ovaryAge = 35, _HS.health = 80, _HS.devotion = 55.7, _HS.height = 170, _HS.race = "white", _HS.nationality = "American", _HS.eye.origColor = "blue", _HS.origSkin = "pale", _HS.hLength = 10, _HS.boobs = 500, _HS.butt = 5, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 3, _HS.clitSetting = "vanilla", _HS.anus = 3, _HS.ovaries = 1, _HS.anusPiercing = 1, _HS.makeup = 1, _HS.brand["right buttock"] = "SLAVE", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 35, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 96, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$His nickname, 'Horsepussy,' is tattooed on $his forehead.", _HS.custom.desc = "$His pussy has been extensively surgically altered. $His labia are large and puffy, sticking out nearly an inch from $his crotch. $His cunt is exquisitely pink at the center, but $his large labia are dark at the edges, almost black.", _HS.labia = 3>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -490,19 +497,19 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for $his kind, $he has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.origEye = "pale grey", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 100, _HS.skill.combat = 3, _HS.rules.living = "luxurious", _HS.rules.speech = "permissive", _HS.rules.release = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.geneticQuirks = {albinism: 2}, _HS.custom.tattoo = "$His entire body is tattooed with a detailed map of $his arteries which, combined with $his albinism, gives $him a quasi-translucent quality.", _HS.custom.desc = "$His eyes are unsettling; though $his irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
+<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for $his kind, $he has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.eye.origColor = "pale grey", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 100, _HS.skill.combat = 3, _HS.rules.living = "luxurious", _HS.rules.speech = "permissive", _HS.rules.release = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.geneticQuirks = {albinism: 2}, _HS.custom.tattoo = "$His entire body is tattooed with a detailed map of $his arteries which, combined with $his albinism, gives $him a quasi-translucent quality.", _HS.custom.desc = "$His eyes are unsettling; though $his irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Annabelle", _HS.birthName = "Annabelle", _HS.origin = "$He came to be a slave not long after fleeing farm life for the Free Cities.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -65, _HS.height = 155, _HS.nationality = "American", _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "braided into pigtails", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.attrXY = 40, _HS.behavioralFlaw = "hates women", _HS.custom.desc = "The pale skin within $his tan lines is lightly freckled.", _HS.markings = "freckles", _HS.career = "a farmer">>
+<<set _HS.slaveName = "Annabelle", _HS.birthName = "Annabelle", _HS.origin = "$He came to be a slave not long after fleeing farm life for the Free Cities.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -65, _HS.height = 155, _HS.nationality = "American", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "braided into pigtails", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.attrXY = 40, _HS.behavioralFlaw = "hates women", _HS.custom.desc = "The pale skin within $his tan lines is lightly freckled.", _HS.markings = "freckles", _HS.career = "a farmer">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 90, _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand["right buttock"] = "your initials", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 15, _HS.rules.living = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 90, _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand["right buttock"] = "your initials", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 15, _HS.rules.living = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Creamy' Mayu", _HS.birthName = "Mayu", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.weight = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.origEye = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 7500, _HS.nipples = "huge", _HS.areolae = 3, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 7, _HS.buttTat = "bovine patterns", _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsTat = "bovine patterns", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaTat = "bovine patterns", _HS.counter.births = 1, _HS.counter.birthsTotal = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bovine patterns", _HS.earPiercing = 1, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.rules.living = "luxurious", _HS.rules.speech = "permissive", _HS.rules.release = "permissive", _HS.rules.relationship = "permissive", _HS.clothes = "a nice maid outfit", _HS.collar = "leather with cowbell", _HS.shoes = "flats", _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.desc = "$He is quite sweaty, often soaking though any clothing $he is wearing.">>
+<<set _HS.slaveName = "'Creamy' Mayu", _HS.birthName = "Mayu", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.weight = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 7500, _HS.nipples = "huge", _HS.areolae = 3, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 7, _HS.buttTat = "bovine patterns", _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsTat = "bovine patterns", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaTat = "bovine patterns", _HS.counter.births = 1, _HS.counter.birthsTotal = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bovine patterns", _HS.earPiercing = 1, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.rules.living = "luxurious", _HS.rules.speech = "permissive", _HS.rules.release = "permissive", _HS.rules.relationship = "permissive", _HS.clothes = "a nice maid outfit", _HS.collar = "leather with cowbell", _HS.shoes = "flats", _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.desc = "$He is quite sweaty, often soaking though any clothing $he is wearing.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -517,14 +524,14 @@
 <<if $seeExtreme == 1>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Mouse", _HS.birthName = "Mouse", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -50, _HS.weight = 20, _HS.height = 152, _HS.override_H_Color = 1, _HS.pubicHColor = "purple", _HS.origSkin = "pale", _HS.origEye = "blue", _HS.origHColor = "purple", _HS.hLength = 10, _HS.boobs = 1000, _HS.areolae = 1, _HS.butt = 5, _HS.lipsTat = "permanent makeup", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.analArea = 1, _HS.ovaries = 1, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.voice = 0, _HS.nipples = "puffy">>
+<<set _HS.slaveName = "Mouse", _HS.birthName = "Mouse", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -50, _HS.weight = 20, _HS.height = 152, _HS.override_H_Color = 1, _HS.pubicHColor = "purple", _HS.origSkin = "pale", _HS.eye.origColor = "blue", _HS.origHColor = "purple", _HS.hLength = 10, _HS.boobs = 1000, _HS.areolae = 1, _HS.butt = 5, _HS.lipsTat = "permanent makeup", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.analArea = 1, _HS.ovaries = 1, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.voice = 0, _HS.nipples = "puffy">>
 <<run App.Utils.removeHeroLimbs(_HS, "all")>>
 <<set $heroSlaves.push(_HS)>>
 /*Increased nipples and areolae, changed eye color, added mute -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
 <<set _HS.slaveName = "Box", _HS.birthName = "Box", _HS.origin = "When you took $him from $his previous owner, $he was locked into a beautiful rosewood box lined with red velvet, crying.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.devotion = -75, _HS.weight = 20, _HS.eyes = -2, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "pale", _HS.origHColor = "golden blonde", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -50, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$His amputation sites have titanium rings that go through to the bone. $He has been chemically blinded.">>
-<<run App.Utils.removeHeroLimbs(_HS, "all")>>
+<<run App.Utils.removeHeroLimbs(_HS, "all"), eyeSurgery(_HS, "both", "blind")>>
 <<set $heroSlaves.push(_HS)>>
 /* put some of $his custom description in $his origin (box stuff), tagged as amp, lowered obedience, increased weight but lowered health, changed skin color from white to pale */
 
@@ -536,7 +543,7 @@
 
 <<if $seePreg != 0>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "$He sold $himself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, _HS.health = 80, _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "$He sold $himself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, _HS.health = 80, _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
 <<run App.Utils.removeHeroLimbs(_HS, "all")>>
 <<set $heroSlaves.push(_HS)>>
 <</if>>
@@ -568,7 +575,7 @@
 /*Tweaked smart piercing setting, corrected piercings -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fleshlight", _HS.birthName = "Fleshlight", _HS.origin = "Nothing remains of the person $he originally was, either mentally or physically.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 60, _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.makeup = 3, _HS.nails = 3, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "mindbroken", _HS.fetishKnown = 1, _HS.custom.desc = "$He has many surgical scars and something seems off about $him.">>
+<<set _HS.slaveName = "Fleshlight", _HS.birthName = "Fleshlight", _HS.origin = "Nothing remains of the person $he originally was, either mentally or physically.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 60, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.makeup = 3, _HS.nails = 3, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "mindbroken", _HS.fetishKnown = 1, _HS.custom.desc = "$He has many surgical scars and something seems off about $him.">>
 <<run App.Medicine.Modification.addScar(_HS, "left breast", "surgical", 2)>>
 <<run App.Medicine.Modification.addScar(_HS, "right breast", "surgical", 2)>>
 <<run App.Medicine.Modification.addScar(_HS, "left buttock", "surgical", 2)>>
@@ -587,11 +594,11 @@
 <<if $familyTesting == 1>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Camille", _HS.birthName = "Camille", _HS.ID = _i++, _HS.origin = "$He is half of a famous musical duo, along with $his twin sister. They fled to the Free Cities.", _HS.career = "an aspiring pop star", _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed singer; citizens would pay top prices to feel $his mouth around their dicks.", _HS.birthWeek = 16, _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 40, _HS.weight = -10, _HS.muscles = 10, _HS.height = 170, _HS.nationality = "American", _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "neat, with thick luxurious bangs.", _HS.waist = -55, _HS.voice = 2, _HS.boobs = 300, _HS.boobShape = "perky", _HS.butt = 2, _HS.face = 100, _HS.lips = 25, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.entertainment = 100, _HS.energy = 50, _HS.attrXX = 80, _HS.fetish = "boobs", _HS.fetishStrength = 70, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He has an identical twin sister named Kennerly, from whom $he hates to be parted. They're from the former United States.", _HS.mother = -9999, _HS.father = -9998>>
+<<set _HS.slaveName = "Camille", _HS.birthName = "Camille", _HS.ID = _i++, _HS.origin = "$He is half of a famous musical duo, along with $his twin sister. They fled to the Free Cities.", _HS.career = "an aspiring pop star", _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed singer; citizens would pay top prices to feel $his mouth around their dicks.", _HS.birthWeek = 16, _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 40, _HS.weight = -10, _HS.muscles = 10, _HS.height = 170, _HS.nationality = "American", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "neat, with thick luxurious bangs.", _HS.waist = -55, _HS.voice = 2, _HS.boobs = 300, _HS.boobShape = "perky", _HS.butt = 2, _HS.face = 100, _HS.lips = 25, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.entertainment = 100, _HS.energy = 50, _HS.attrXX = 80, _HS.fetish = "boobs", _HS.fetishStrength = 70, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He has an identical twin sister named Kennerly, from whom $he hates to be parted. They're from the former United States.", _HS.mother = -9999, _HS.father = -9998>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Kennerly", _HS.birthName = "Kennerly", _HS.ID = _i++, _HS.origin = "$He is half of a famous musical duo, along with $his twin sister. They fled to the Free Cities.", _HS.career = "an aspiring pop star", _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed singer; citizens would pay top prices to feel $his mouth around their dicks.", _HS.birthWeek = 16, _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 40, _HS.weight = 10, _HS.height = 167, _HS.nationality = "American", _HS.race = "white", _HS.markings = "beauty mark", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "neat, with thick luxurious bangs.", _HS.waist = -55, _HS.voice = 2, _HS.boobs = 500, _HS.boobShape = "perky", _HS.butt = 2, _HS.face = 100, _HS.lips = 15, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.oral = 15, _HS.skill.entertainment = 100, _HS.energy = 50, _HS.attrXX = 80, _HS.fetish = "boobs", _HS.fetishStrength = 70, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He has an identical twin sister named Camille, from whom $he hates to be parted. They're from the former United States.", _HS.mother = -9999, _HS.father = -9998>>
+<<set _HS.slaveName = "Kennerly", _HS.birthName = "Kennerly", _HS.ID = _i++, _HS.origin = "$He is half of a famous musical duo, along with $his twin sister. They fled to the Free Cities.", _HS.career = "an aspiring pop star", _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed singer; citizens would pay top prices to feel $his mouth around their dicks.", _HS.birthWeek = 16, _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 40, _HS.weight = 10, _HS.height = 167, _HS.nationality = "American", _HS.race = "white", _HS.markings = "beauty mark", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "neat, with thick luxurious bangs.", _HS.waist = -55, _HS.voice = 2, _HS.boobs = 500, _HS.boobShape = "perky", _HS.butt = 2, _HS.face = 100, _HS.lips = 15, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.oral = 15, _HS.skill.entertainment = 100, _HS.energy = 50, _HS.attrXX = 80, _HS.fetish = "boobs", _HS.fetishStrength = 70, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He has an identical twin sister named Camille, from whom $he hates to be parted. They're from the former United States.", _HS.mother = -9999, _HS.father = -9998>>
 <<set $heroSlaves.push(_HS)>>
 
 <</if>>
diff --git a/src/npc/databases/ddSlavesDatabase.tw b/src/npc/databases/ddSlavesDatabase.tw
index e49cbbbb9e9e9950421d64cad2277f78151e660a..f8fe5db05176dd153c0202953fc59b81c249f371 100644
--- a/src/npc/databases/ddSlavesDatabase.tw
+++ b/src/npc/databases/ddSlavesDatabase.tw
@@ -34,7 +34,7 @@
 /*Added brand to customtat, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sugar", _HS.birthName = "Sugar", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.height = 175, _HS.origEye = "blue", _HS.origHColor = "platinum blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1400, _HS.boobsImplant = 1200, _HS.butt = 5, _HS.buttImplant = 4, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is as dumb as a bag of hammers.">>
+<<set _HS.slaveName = "Sugar", _HS.birthName = "Sugar", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "platinum blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1400, _HS.boobsImplant = 1200, _HS.butt = 5, _HS.buttImplant = 4, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is as dumb as a bag of hammers.">>
 <<set $heroSlaves.push(_HS)>>
 /*also buttslut*/
 /*Added customdesc, changed eye color -BoneyM*/
@@ -57,7 +57,7 @@
 /*Added bitchy, increased cock and balls size to average -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Harry", _HS.birthName = "Harry", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 20, _HS.devotion = 25, _HS.height = 175, _HS.heightImplant = 1, _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "a medium length", _HS.boobs = 300, _HS.butt = 5, _HS.face = 15, _HS.faceImplant = 15, _HS.lipsTat = "permanent makeup", _HS.vagina = -1, _HS.preg = -2, _HS.dick = 2, _HS.anus = 2, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.clothes = "attractive lingerie", _HS.intelligence = -20, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Harry", _HS.birthName = "Harry", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 20, _HS.devotion = 25, _HS.height = 175, _HS.heightImplant = 1, _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hStyle = "a medium length", _HS.boobs = 300, _HS.butt = 5, _HS.face = 15, _HS.faceImplant = 15, _HS.lipsTat = "permanent makeup", _HS.vagina = -1, _HS.preg = -2, _HS.dick = 2, _HS.anus = 2, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.clothes = "attractive lingerie", _HS.intelligence = -20, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*light makeup tats*/
 /*Added makeup tattoos, added facial surgery, changed eye color, added height and heightimplant -BoneyM*/
@@ -74,7 +74,7 @@
 /*Increased height and balls size -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Mackenzie", _HS.birthName = "Mackenzie", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = 60, _HS.markings = "freckled", _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 1800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a slim and perfectly feminine frame except for $his big feet and ears. $He's very intelligent and well learned.">>
+<<set _HS.slaveName = "Mackenzie", _HS.birthName = "Mackenzie", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 40, _HS.devotion = 60, _HS.markings = "freckled", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.boobs = 1800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = random(96,99), _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a slim and perfectly feminine frame except for $his big feet and ears. $He's very intelligent and well learned.">>
 <<set $heroSlaves.push(_HS)>>
 /*intelligent, classy, devoted to Master*/
 /*Increased ball size, changed eye color, changed skin to freckled, increased health, corrected customdesc syntax -BoneyM*/
@@ -85,18 +85,18 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Nikole", _HS.birthName = "Nikole", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 80, _HS.devotion = 100, _HS.race = "white", _HS.markings = "freckled", _HS.origEye = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "long and in a ponytail", _HS.boobs = 200, _HS.butt = 5, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a tattoo of a black widow's hourglass pattern on $his ballsack.">>
+<<set _HS.slaveName = "Nikole", _HS.birthName = "Nikole", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 80, _HS.devotion = 100, _HS.race = "white", _HS.markings = "freckled", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hLength = 60, _HS.hStyle = "long and in a ponytail", _HS.boobs = 200, _HS.butt = 5, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a tattoo of a black widow's hourglass pattern on $his ballsack.">>
 <<set $heroSlaves.push(_HS)>>
 /% Put the freckles from custDesc to markings Bane70 %/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Exta", _HS.birthName = "Exta", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 190, _HS.origEye = "brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 15, _HS.hStyle = "short, and in a boyish cut", _HS.boobs = 300, _HS.butt = 1, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 1, _HS.anusTat = "bleached", _HS.skill.oral = 15, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a raised circuitry pattern on the nape of $his neck.", _HS.sexualFlaw = "shamefast", _HS.career = "a businessman">>
+<<set _HS.slaveName = "Exta", _HS.birthName = "Exta", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 190, _HS.eye.origColor = "brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 15, _HS.hStyle = "short, and in a boyish cut", _HS.boobs = 300, _HS.butt = 1, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 1, _HS.anusTat = "bleached", _HS.skill.oral = 15, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a raised circuitry pattern on the nape of $his neck.", _HS.sexualFlaw = "shamefast", _HS.career = "a businessman">>
 <<set $heroSlaves.push(_HS)>>
 /*business skill*/
 /*likes mods - gave internal testicles as such PM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Martin", _HS.birthName = "Martin", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = -55, _HS.muscles = 20, _HS.height = 190, _HS.origEye = "bright blue", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "extremely pale", _HS.hLength = 15, _HS.hStyle = "short and in a boyish cut", _HS.waist = -55, _HS.boobs = 100, _HS.butt = 4, _HS.face = 55, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.behavioralFlaw = "arrogant", _HS.custom.desc = "An iron-willed, recently captured figure of a prominent anti-Free City guerrilla party, $he still clings strongly to traditional beliefs on Man's natural good, economic restriction, and monogamy. Excitable, girly, and sweet in comparison to $his natural sister, Elisa, $he has a lovely singing voice. $He prays quite often, if allowed to.", _HS.mother = -9997, _HS.father = -9996, _HS.sexualFlaw = "hates penetration">>
+<<set _HS.slaveName = "Martin", _HS.birthName = "Martin", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 20, _HS.devotion = -55, _HS.muscles = 20, _HS.height = 190, _HS.eye.origColor = "bright blue", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "extremely pale", _HS.hLength = 15, _HS.hStyle = "short and in a boyish cut", _HS.waist = -55, _HS.boobs = 100, _HS.butt = 4, _HS.face = 55, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.behavioralFlaw = "arrogant", _HS.custom.desc = "An iron-willed, recently captured figure of a prominent anti-Free City guerrilla party, $he still clings strongly to traditional beliefs on Man's natural good, economic restriction, and monogamy. Excitable, girly, and sweet in comparison to $his natural sister, Elisa, $he has a lovely singing voice. $He prays quite often, if allowed to.", _HS.mother = -9997, _HS.father = -9996, _HS.sexualFlaw = "hates penetration">>
 <<set $heroSlaves.push(_HS)>>
 /*also hates pen*/
 /*elisa's sibling*/
@@ -108,7 +108,7 @@
 /*wide dick*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Selene", _HS.birthName = "Selene", _HS.genes = "XY", _HS.origin = "Once $he was an arcology security officer, lured to aphrodisiacs addiction and feminized by $his boss (and former wife), to whom $he was sold as a slave to satisfy her spousal maintenance after divorce.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 32, _HS.physicalAge = 32, _HS.visualAge = 32, _HS.ovaryAge = 32, _HS.health = 20, _HS.devotion = 40, _HS.muscles = 20, _HS.height = 175, _HS.race = "latina", _HS.origEye = "ice blue", _HS.origHColor = "ashen with black streaks", _HS.pubicHColor = "ashen", _HS.origSkin = "brown", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.waist = -55, _HS.boobs = 1400, _HS.butt = 1, _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 2, _HS.dickPiercing = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.addict = 50, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.custom.desc = "$He has a large police badge made of polished silver pinned right to the skin with several barbell piercings just above $his left nipple. $He wears two pairs of handcuffs as bracelets (one pair on each wrist); the handcuff keyholes are welded, so they cannot be unlocked and removed in any normal way.", _HS.career = "a security guard">>
+<<set _HS.slaveName = "Selene", _HS.birthName = "Selene", _HS.genes = "XY", _HS.origin = "Once $he was an arcology security officer, lured to aphrodisiacs addiction and feminized by $his boss (and former wife), to whom $he was sold as a slave to satisfy her spousal maintenance after divorce.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 32, _HS.physicalAge = 32, _HS.visualAge = 32, _HS.ovaryAge = 32, _HS.health = 20, _HS.devotion = 40, _HS.muscles = 20, _HS.height = 175, _HS.race = "latina", _HS.eye.origColor = "ice blue", _HS.origHColor = "ashen with black streaks", _HS.pubicHColor = "ashen", _HS.origSkin = "brown", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.waist = -55, _HS.boobs = 1400, _HS.butt = 1, _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 2, _HS.dickPiercing = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.addict = 50, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.custom.desc = "$He has a large police badge made of polished silver pinned right to the skin with several barbell piercings just above $his left nipple. $He wears two pairs of handcuffs as bracelets (one pair on each wrist); the handcuff keyholes are welded, so they cannot be unlocked and removed in any normal way.", _HS.career = "a security guard">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -116,7 +116,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 70, _HS.devotion = 100, _HS.origEye = "black", _HS.origHColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand["right buttock"] = "SLUT",_HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has tattoos of teasing, enticing messages begging others to come taste $his addictive milk.", _HS.custom.desc = "$His musky milky aura drives men and women around $him giggly and dumb with lust.", _HS.horn = "cow horns">>
+<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 70, _HS.devotion = 100, _HS.eye.origColor = "black", _HS.origHColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand["right buttock"] = "SLUT",_HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has tattoos of teasing, enticing messages begging others to come taste $his addictive milk.", _HS.custom.desc = "$His musky milky aura drives men and women around $him giggly and dumb with lust.", _HS.horn = "cow horns">>
 <<set $heroSlaves.push(_HS)>>
 /*Dropped desc = $He has two cute horns protruding from $his forehead. A few addicted milkslaves of $his own tag along behind $him. */
 
@@ -125,11 +125,11 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Aisha", _HS.birthName = "Aicha", _HS.genes = "XY", _HS.origin = "$He sold $himself into slavery to escape a life of boredom.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = -20, _HS.devotion = 45, _HS.height = 155, _HS.heightImplant = -1, _HS.race = "middle eastern", _HS.override_Eye_Color = 1, _HS.origEye = "blue", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "peachy fading into a red ombre at the bottom", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.origSkin = "light", _HS.hLength = 30, _HS.hStyle = "shoulder-length in a hime cut", _HS.waist = -55, _HS.boobs = 250, _HS.butt = 3.5, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = -1, _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 1, _HS.dick = 5, _HS.dickTat = "flowers", _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.anusPiercing = 1, _HS.anusTat = "flowers", _HS.brand["back"] = "your initials",_HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.custom.tattoo = "$He has tattooed petals trailing from the nape of $his neck down $his back, ending between $his butt cheeks.", _HS.custom.desc = "$His red pubic hair is waxed into the shape of a heart. $He has bright blue eyeshadow on $his bottom lids.", _HS.pubicHStyle = "waxed">>
+<<set _HS.slaveName = "Aisha", _HS.birthName = "Aicha", _HS.genes = "XY", _HS.origin = "$He sold $himself into slavery to escape a life of boredom.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = -20, _HS.devotion = 45, _HS.height = 155, _HS.heightImplant = -1, _HS.race = "middle eastern", _HS.override_Eye_Color = 1, _HS.eye.origColor = "blue", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "peachy fading into a red ombre at the bottom", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.origSkin = "light", _HS.hLength = 30, _HS.hStyle = "shoulder-length in a hime cut", _HS.waist = -55, _HS.boobs = 250, _HS.butt = 3.5, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = -1, _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 1, _HS.dick = 5, _HS.dickTat = "flowers", _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.anusPiercing = 1, _HS.anusTat = "flowers", _HS.brand["back"] = "your initials",_HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.custom.tattoo = "$He has tattooed petals trailing from the nape of $his neck down $his back, ending between $his butt cheeks.", _HS.custom.desc = "$His red pubic hair is waxed into the shape of a heart. $He has bright blue eyeshadow on $his bottom lids.", _HS.pubicHStyle = "waxed">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Laura", _HS.birthName = "Rolan", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a high-ranking spy who was captured while trying to obtain secrets about the defenses of one the Free Cities.", _HS.birthWeek = random(0,51), _HS.health = -10, _HS.devotion = 5, _HS.height = 155, _HS.race = "middle eastern", _HS.override_H_Color = 1, _HS.override_Eye_Color = 1, _HS.origEye = "blue", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "dark", _HS.hLength = 60, _HS.hStyle = "long and tied in a bun using a pearl chain", _HS.heels = 1, _HS.boobs = 200, _HS.butt = 2, _HS.vagina = -1, _HS.preg = -2, _HS.bellyAccessory = "a corset", _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.oral = 15, _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.career = "a spy">>
+<<set _HS.slaveName = "Laura", _HS.birthName = "Rolan", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a high-ranking spy who was captured while trying to obtain secrets about the defenses of one the Free Cities.", _HS.birthWeek = random(0,51), _HS.health = -10, _HS.devotion = 5, _HS.height = 155, _HS.race = "middle eastern", _HS.override_H_Color = 1, _HS.override_Eye_Color = 1, _HS.eye.origColor = "blue", _HS.origHColor = "white", _HS.pubicHColor = "white", _HS.origSkin = "dark", _HS.hLength = 60, _HS.hStyle = "long and tied in a bun using a pearl chain", _HS.heels = 1, _HS.boobs = 200, _HS.butt = 2, _HS.vagina = -1, _HS.preg = -2, _HS.bellyAccessory = "a corset", _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.skill.oral = 15, _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.career = "a spy">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -137,25 +137,26 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Bailey", _HS.birthName = "Bryan", _HS.genes = "XY", _HS.origin = "$He was sold to your predecessor by $his husband to pay off his extreme debt.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, _HS.health = 50, _HS.devotion = -50, _HS.nationality = "American", _HS.race = "white", _HS.origEye = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "fair", _HS.hLength = 50, _HS.hStyle = "chest-length, styled up in schoolgirl pigtails with bangs", _HS.boobs = 700, _HS.boobsImplant = 400, _HS.butt = 2, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.clothes = "a slutty maid outfit", _HS.shoes = "heels", _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Bailey", _HS.birthName = "Bryan", _HS.genes = "XY", _HS.origin = "$He was sold to your predecessor by $his husband to pay off his extreme debt.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, _HS.health = 50, _HS.devotion = -50, _HS.nationality = "American", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "fair", _HS.hLength = 50, _HS.hStyle = "chest-length, styled up in schoolgirl pigtails with bangs", _HS.boobs = 700, _HS.boobsImplant = 400, _HS.butt = 2, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.clothes = "a slutty maid outfit", _HS.shoes = "heels", _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Mistress' Ingrid", _HS.birthName = "Ingrid", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "white", _HS.nationality = "Norwegian", _HS.origEye = "blue", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black", _HS.origSkin = "pale", _HS.hLength = 90, _HS.hStyle = "ass-length with Nordic braids throughout", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 5, _HS.face = 55, _HS.lips = 35, _HS.preg = -2, _HS.clitPiercing = 3, _HS.dick = 4, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has the style of Gothic royalty, and the demeanor to match.">>
+<<set _HS.slaveName = "'Mistress' Ingrid", _HS.birthName = "Ingrid", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "white", _HS.nationality = "Norwegian", _HS.eye.origColor = "blue", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black", _HS.origSkin = "pale", _HS.hLength = 90, _HS.hStyle = "ass-length with Nordic braids throughout", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 5, _HS.face = 55, _HS.lips = 35, _HS.preg = -2, _HS.clitPiercing = 3, _HS.dick = 4, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$He has the style of Gothic royalty, and the demeanor to match.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "$His origins are unknown, but rumor has it that $he is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 60, _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.origEye = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.pupil = "demonic">>
+<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "$His origins are unknown, but rumor has it that $he is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 60, _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eye.origColor = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1>>
+<<run setEyeColorFull(_HS, "", "demonic", "", "both")>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fuckmeat", _HS.birthName = "Alva", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed Free Cities slut, and can please anyone.", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.nationality = "Swedish", _HS.origEye = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "bushy", _HS.boobs = 1700, _HS.boobsTat = "rude words", _HS.butt = 8, _HS.buttTat = "rude words", _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.vaginaTat = "rude words", _HS.preg = -2, _HS.anus = 3, _HS.dick = 2, _HS.dickTat = "rude words", _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 2, _HS.anusTat = "rude words", _HS.makeup = 3, _HS.nails = 3, _HS.brand["cheek"] = "a penis symbol",_HS.shouldersTat = "rude words", _HS.armsTat = "rude words", _HS.legsTat = "rude words", _HS.stampTat = "rude words", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.diet = "muscle building", _HS.clothes = "harem gauze", _HS.collar = "heavy gold", _HS.shoes = "boots", _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishStrength = 0, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a swastika tattooed on $his ballsack.">>
+<<set _HS.slaveName = "Fuckmeat", _HS.birthName = "Alva", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed Free Cities slut, and can please anyone.", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.nationality = "Swedish", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "bushy", _HS.boobs = 1700, _HS.boobsTat = "rude words", _HS.butt = 8, _HS.buttTat = "rude words", _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.vaginaTat = "rude words", _HS.preg = -2, _HS.anus = 3, _HS.dick = 2, _HS.dickTat = "rude words", _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 2, _HS.anusTat = "rude words", _HS.makeup = 3, _HS.nails = 3, _HS.brand["cheek"] = "a penis symbol",_HS.shouldersTat = "rude words", _HS.armsTat = "rude words", _HS.legsTat = "rude words", _HS.stampTat = "rude words", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.diet = "muscle building", _HS.clothes = "harem gauze", _HS.collar = "heavy gold", _HS.shoes = "boots", _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishStrength = 0, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a swastika tattooed on $his ballsack.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<if $seeExtreme == 1>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fjola", _HS.birthName = "Fjola", _HS.genes = "XY", _HS.origin = "$He was born into a slave ring that practiced heavy hormone manipulation to alter slaves from a very young age.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 10, _HS.weight = 20, _HS.height = 160, _HS.origEye = "grey", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 30, _HS.hStyle = "curly and shoulder length", _HS.boobs = 1000, _HS.butt = 3, _HS.vagina = 1, _HS.preg = -2, _HS.dick = 2, _HS.anus = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -40, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a small scar on $his cheek, and many larger ones on $his back.">>
+<<set _HS.slaveName = "Fjola", _HS.birthName = "Fjola", _HS.genes = "XY", _HS.origin = "$He was born into a slave ring that practiced heavy hormone manipulation to alter slaves from a very young age.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 10, _HS.weight = 20, _HS.height = 160, _HS.eye.origColor = "grey", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 30, _HS.hStyle = "curly and shoulder length", _HS.boobs = 1000, _HS.butt = 3, _HS.vagina = 1, _HS.preg = -2, _HS.dick = 2, _HS.anus = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -40, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a small scar on $his cheek, and many larger ones on $his back.">>
 <<set $heroSlaves.push(_HS)>>
 /*tsundere, grey eyes, unhappy to be herm*/
 /*Changed eye color, added customdesc and origin -BoneyM*/
@@ -167,20 +168,20 @@
 /*Made a post-op to match the bio as closely as possible in-universe, added origin, added hates penetration. -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Janine", _HS.birthName = "Janine", _HS.genes = "XY", _HS.origin = "$He was enslaved after $he fell into debt to you.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 90, _HS.devotion = 100, _HS.nationality = "German", _HS.origEye = "blue", _HS.origHColor = "golden blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 10, _HS.hStyle = "flowing gently just past $his cheek, framing $his face beautifully", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 3.5, _HS.face = 15, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.clothes = "a penitent nuns habit", _HS.collar = "tight steel", _HS.shoes = "heels", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a beauty mark just above $his lip, on an otherwise flawless face.">>
+<<set _HS.slaveName = "Janine", _HS.birthName = "Janine", _HS.genes = "XY", _HS.origin = "$He was enslaved after $he fell into debt to you.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 90, _HS.devotion = 100, _HS.nationality = "German", _HS.eye.origColor = "blue", _HS.origHColor = "golden blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 10, _HS.hStyle = "flowing gently just past $his cheek, framing $his face beautifully", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 3.5, _HS.face = 15, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.clothes = "a penitent nuns habit", _HS.collar = "tight steel", _HS.shoes = "heels", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.desc = "$He has a beauty mark just above $his lip, on an otherwise flawless face.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Buck", _HS.birthName = "Buck", _HS.genes = "XY", _HS.origin = "$He was a soldier before being enslaved.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 90, _HS.devotion = -100, _HS.muscles = 50, _HS.height = 190, _HS.origEye = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 0, _HS.prostate = 1, _HS.hStyle = "shaved", _HS.waist = -55, _HS.boobs = 100, _HS.nipplesPiercing = 1, _HS.butt = 1, _HS.face = 15, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.analArea = 1, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.navelPiercing = 1, _HS.skill.combat = 1, _HS.intelligence = -40, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.behavioralFlaw = "bitchy", _HS.career = "a soldier">>
+<<set _HS.slaveName = "Buck", _HS.birthName = "Buck", _HS.genes = "XY", _HS.origin = "$He was a soldier before being enslaved.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 90, _HS.devotion = -100, _HS.muscles = 50, _HS.height = 190, _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 0, _HS.prostate = 1, _HS.hStyle = "shaved", _HS.waist = -55, _HS.boobs = 100, _HS.nipplesPiercing = 1, _HS.butt = 1, _HS.face = 15, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.analArea = 1, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 3, _HS.anusTat = "bleached", _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.navelPiercing = 1, _HS.skill.combat = 1, _HS.intelligence = -40, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.behavioralFlaw = "bitchy", _HS.career = "a soldier">>
 <<set $heroSlaves.push(_HS)>>
 /*dickskilled*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Udders' Erika", _HS.birthName = "Erika", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = -10, _HS.devotion = 55, _HS.height = 145, _HS.origEye = "blue", _HS.origSkin = "fair", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.boobs = 1250, _HS.areolae = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 2, _HS.buttTat = "bovine patterns", _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsTat = "bovine patterns", _HS.vagina = -1, _HS.vaginaTat = "bovine patterns", _HS.preg = -3, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.dick = 1, _HS.dickTat = "bovine patterns", _HS.prostate = 1, _HS.anusTat = "bovine patterns", _HS.nosePiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.desc = "Though $his vocal cords have been altered to keep $him from speaking, $he is still capable of the occasional moo.">>
+<<set _HS.slaveName = "'Udders' Erika", _HS.birthName = "Erika", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = -10, _HS.devotion = 55, _HS.height = 145, _HS.eye.origColor = "blue", _HS.origSkin = "fair", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.boobs = 1250, _HS.areolae = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 2, _HS.buttTat = "bovine patterns", _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsTat = "bovine patterns", _HS.vagina = -1, _HS.vaginaTat = "bovine patterns", _HS.preg = -3, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.dick = 1, _HS.dickTat = "bovine patterns", _HS.prostate = 1, _HS.anusTat = "bovine patterns", _HS.nosePiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.desc = "Though $his vocal cords have been altered to keep $him from speaking, $he is still capable of the occasional moo.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Danny 'The D'", _HS.slaveSurname = "Ildoe", _HS.birthName = "Danny 'The D'", _HS.birthSurname = "Ildoe", _HS.origin = "Born without limbs and abandoned by $his parents, $he was taken in by a posh family, given a massive cock, and trained to be the wealthy lady's perfect living sex toy.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.visualAge = 28, _HS.physicalAge = 28, _HS.ovaryAge = 28, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 94, _HS.origEye = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.waist = 55, _HS.boobs = 50, _HS.hips = -1, _HS.butt = 0, _HS.face = 45, _HS.vagina = -1, _HS.preg = 0, _HS.dick = 6, _HS.balls = 10, _HS.scrotum = 7, _HS.prostate = 2, _HS.anusTat = "bleached", _HS.energy = 95, _HS.intelligenceImplant = 30, _HS.attrXX = 100, _HS.attrXY = 0, _HS.skill.oral = 95, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.behavioralQuirk = "advocate">>
+<<set _HS.slaveName = "Danny 'The D'", _HS.slaveSurname = "Ildoe", _HS.birthName = "Danny 'The D'", _HS.birthSurname = "Ildoe", _HS.origin = "Born without limbs and abandoned by $his parents, $he was taken in by a posh family, given a massive cock, and trained to be the wealthy lady's perfect living sex toy.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.visualAge = 28, _HS.physicalAge = 28, _HS.ovaryAge = 28, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 94, _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.waist = 55, _HS.boobs = 50, _HS.hips = -1, _HS.butt = 0, _HS.face = 45, _HS.vagina = -1, _HS.preg = 0, _HS.dick = 6, _HS.balls = 10, _HS.scrotum = 7, _HS.prostate = 2, _HS.anusTat = "bleached", _HS.energy = 95, _HS.intelligenceImplant = 30, _HS.attrXX = 100, _HS.attrXY = 0, _HS.skill.oral = 95, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.behavioralQuirk = "advocate">>
 <<run App.Utils.removeHeroLimbs(_HS, "all")>>
 <<set $heroSlaves.push(_HS)>>
 /* needed an amputated slave for debug reasons -prndev */
diff --git a/src/npc/databases/dfSlavesDatabase.tw b/src/npc/databases/dfSlavesDatabase.tw
index 4dd5f79e2db8cbecd5c2337c93f67890abe7f156..041dd3614a4743b08493f9b60a75c6086eafefd2 100644
--- a/src/npc/databases/dfSlavesDatabase.tw
+++ b/src/npc/databases/dfSlavesDatabase.tw
@@ -2,22 +2,22 @@
 
 <<set _i = 700000>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Cherry", _HS.birthName = "Cherry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 75, _HS.actualAge = 18, _HS.physicalAge = 18, _HS.visualAge = 18, _HS.ovaryAge = 18, _HS.origEye = "light brown", _HS.pubicHColor = "black", _HS.origSkin = "white", _HS.origHColor = "black", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Two cherries are tattooed on $his left cheek.", _HS.buttTat = "Two cherries are tattooed on $his right butt cheek.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 1>>
+<<set _HS.slaveName = "Cherry", _HS.birthName = "Cherry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 75, _HS.actualAge = 18, _HS.physicalAge = 18, _HS.visualAge = 18, _HS.ovaryAge = 18, _HS.eye.origColor = "light brown", _HS.pubicHColor = "black", _HS.origSkin = "white", _HS.origHColor = "black", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Two cherries are tattooed on $his left cheek.", _HS.buttTat = "Two cherries are tattooed on $his right butt cheek.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 1>>
 /*vag implant, vibe nips*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Strawberry", _HS.birthName = "Strawberry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 30, _HS.physicalAge = 30, _HS.visualAge = 30, _HS.ovaryAge = 30, _HS.health = 20, _HS.devotion = 40, _HS.height = 175, _HS.origEye = "dark brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.lipsTat = "Strawberries are tattooed on $his left cheek.", _HS.buttTat = "Strawberries are tattooed on $his right buttock.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 2>>
+<<set _HS.slaveName = "Strawberry", _HS.birthName = "Strawberry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 30, _HS.physicalAge = 30, _HS.visualAge = 30, _HS.ovaryAge = 30, _HS.health = 20, _HS.devotion = 40, _HS.height = 175, _HS.eye.origColor = "dark brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.lipsTat = "Strawberries are tattooed on $his left cheek.", _HS.buttTat = "Strawberries are tattooed on $his right buttock.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 2>>
 /*vibe nips, muscles*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Melon", _HS.birthName = "Melon", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 50, _HS.height = 175, _HS.origEye = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.pubicHStyle = "waxed", _HS.boobs = 1800, _HS.boobsImplant = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Watermelons are tattooed on $his face.", _HS.buttTat = "Watermelons are tattooed on $his buttocks.", _HS.teeth = "removable", _HS.clitPiercing = 2, _HS.lipsPiercing = 2, _HS.counter.birthsTotal = 1>>
+<<set _HS.slaveName = "Melon", _HS.birthName = "Melon", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 50, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.pubicHStyle = "waxed", _HS.boobs = 1800, _HS.boobsImplant = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Watermelons are tattooed on $his face.", _HS.buttTat = "Watermelons are tattooed on $his buttocks.", _HS.teeth = "removable", _HS.clitPiercing = 2, _HS.lipsPiercing = 2, _HS.counter.birthsTotal = 1>>
 /*vibe nips, saliva implant*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Carambola", _HS.birthName = "Carambola", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 90, _HS.height = 175, _HS.origEye = "light green", _HS.origHColor = "dark blonde", _HS.pubicHColor = "dark blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "curly and long, and in pigtails", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 8, _HS.buttImplant = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.lipsTat = "Carambolas — starfruits — are tattooed on $his face.", _HS.buttTat = "Carambolas — starfruits — are tattooed on $his buttocks.", _HS.clitPiercing = 2, _HS.tonguePiercing = 1, _HS.clothes = "no clothing", _HS.collar = "bell collar", _HS.heels = 1>>
+<<set _HS.slaveName = "Carambola", _HS.birthName = "Carambola", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 90, _HS.height = 175, _HS.eye.origColor = "light green", _HS.origHColor = "dark blonde", _HS.pubicHColor = "dark blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "curly and long, and in pigtails", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 8, _HS.buttImplant = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.lipsTat = "Carambolas — starfruits — are tattooed on $his face.", _HS.buttTat = "Carambolas — starfruits — are tattooed on $his buttocks.", _HS.clitPiercing = 2, _HS.tonguePiercing = 1, _HS.clothes = "no clothing", _HS.collar = "bell collar", _HS.heels = 1>>
 /*vibe nips, saliva implant lube*/
 <<set $heroSlaves.push(_HS)>>
 
@@ -27,23 +27,23 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Green Grape", _HS.birthName = "Green Grape", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 40, _HS.actualAge = 18, _HS.physicalAge = 18, _HS.visualAge = 18, _HS.ovaryAge = 18, _HS.race = "mixed race", _HS.origEye = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Green grapes are tattooed on $his face.", _HS.buttTat = "Green grapes are tattooed on $his buttocks.", _HS.mother = -9995, _HS.father = -9994, _HS.clitPiercing = 2, _HS.intelligence = -60>>
+<<set _HS.slaveName = "Green Grape", _HS.birthName = "Green Grape", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = 40, _HS.actualAge = 18, _HS.physicalAge = 18, _HS.visualAge = 18, _HS.ovaryAge = 18, _HS.race = "mixed race", _HS.eye.origColor = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Green grapes are tattooed on $his face.", _HS.buttTat = "Green grapes are tattooed on $his buttocks.", _HS.mother = -9995, _HS.father = -9994, _HS.clitPiercing = 2, _HS.intelligence = -60>>
 /*vibe nips, implant link to sister*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Purple Grape", _HS.birthName = "Purple Grape", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 40, _HS.race = "mixed race", _HS.origEye = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 60, _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Purple grapes are tattooed on $his face.", _HS.buttTat = "Purple grapes are tattooed on $his buttocks.", _HS.mother = -9995, _HS.father = -9994, _HS.clitPiercing = 2, _HS.intelligence = -60>>
+<<set _HS.slaveName = "Purple Grape", _HS.birthName = "Purple Grape", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 40, _HS.race = "mixed race", _HS.eye.origColor = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 60, _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Purple grapes are tattooed on $his face.", _HS.buttTat = "Purple grapes are tattooed on $his buttocks.", _HS.mother = -9995, _HS.father = -9994, _HS.clitPiercing = 2, _HS.intelligence = -60>>
 /*vibe nips, implant link to sister
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Apple", _HS.birthName = "Apple", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 20, _HS.origEye = "dark brown", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.origHColor = "black", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lips = 55, _HS.lipsTat = "permanent makeup", _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Cored apples are tattooed on $his face.", _HS.buttTat = "Cored apples are tattooed $his on buttocks.", _HS.intelligence = -60, _HS.clitPiercing = 2>>
+<<set _HS.slaveName = "Apple", _HS.birthName = "Apple", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 20, _HS.eye.origColor = "dark brown", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.origHColor = "black", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lips = 55, _HS.lipsTat = "permanent makeup", _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Cored apples are tattooed on $his face.", _HS.buttTat = "Cored apples are tattooed $his on buttocks.", _HS.intelligence = -60, _HS.clitPiercing = 2>>
 /*vibe nips, stupid, sensitive, no masturb implant*/
 <<set $heroSlaves.push(_HS)>>
 
 <<if $seeExtreme == 1>>
 	<<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-	<<set _HS.slaveName = "Plum", _HS.birthName = "Plum", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 30, _HS.weight = 20, _HS.origEye = "brown", _HS.origHColor = "brown", _HS.origSkin = "pale", _HS.hLength = 20, _HS.hStyle = "short and wavy", _HS.pubicHStyle = "waxed", _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.lips = 35, _HS.vagina = 4, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Cored plums are tattooed on $his face.", _HS.buttTat = "Cored plums are tattooed on $his buttocks.", _HS.custom.desc = "$He has massive C-clamp piercings in $his back that allow $him to act as furniture, and a truly enormous vagina.", _HS.clitPiercing = 2, _HS.corsetPiercing = 1, _HS.sexualFlaw = "self hating", _HS.clothes = "no clothing", _HS.vaginalAccessory = "long, huge dildo">>
+	<<set _HS.slaveName = "Plum", _HS.birthName = "Plum", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 30, _HS.weight = 20, _HS.eye.origColor = "brown", _HS.origHColor = "brown", _HS.origSkin = "pale", _HS.hLength = 20, _HS.hStyle = "short and wavy", _HS.pubicHStyle = "waxed", _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.lips = 35, _HS.vagina = 4, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.lipsTat = "Cored plums are tattooed on $his face.", _HS.buttTat = "Cored plums are tattooed on $his buttocks.", _HS.custom.desc = "$He has massive C-clamp piercings in $his back that allow $him to act as furniture, and a truly enormous vagina.", _HS.clitPiercing = 2, _HS.corsetPiercing = 1, _HS.sexualFlaw = "self hating", _HS.clothes = "no clothing", _HS.vaginalAccessory = "long, huge dildo">>
 	/*vibe nips, can act as furniture*/
 	<<set $heroSlaves.push(_HS)>>
 <</if>>
diff --git a/src/npc/descriptions/eyes.js b/src/npc/descriptions/eyes.js
new file mode 100644
index 0000000000000000000000000000000000000000..564f0f08def476ac990a7962b24faa9252ebcddb
--- /dev/null
+++ b/src/npc/descriptions/eyes.js
@@ -0,0 +1,151 @@
+/**
+ * returned string fits in a sentence like this:
+ * She has {return}.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+App.Desc.eyesType = function(slave) {
+	let r = "";
+	if (hasBothEyes(slave)) {
+		if (getLeftEyeType(slave) !== getRightEyeType(slave)) {
+			r = `a ${App.Desc.eyeTypeToString(getRightEyeType(slave))} and a ${App.Desc.eyeTypeToString(getLeftEyeType(slave))} eye`;
+		} else {
+			r = `${App.Desc.eyeTypeToString(getRightEyeType(slave))} eyes`;
+		}
+	} else if (hasAnyEyes(slave)) {
+		if (hasRightEye(slave)) {
+			r = `a ${App.Desc.eyeTypeToString(getRightEyeType(slave))} eye`;
+		} else if (hasLeftEye(slave)) {
+			r = `a ${App.Desc.eyeTypeToString(getLeftEyeType(slave))} eye`;
+		}
+	} else {
+		r = "no eyes";
+	}
+
+	return r;
+};
+
+/**
+ * converts an eye type to a string
+ * @param {number} type
+ * @returns {string}
+ */
+App.Desc.eyeTypeToString = function(type) {
+	switch (type) {
+		case 1:
+			return "natural";
+		case 2:
+			return "glass";
+		case 3:
+			return "artificial";
+		default:
+			return "unknown eye type: " + type;
+	}
+};
+
+/**
+ * Fits in a sentence like this:
+ * She has {return}.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} [adj]
+ * @param {string} [eye]
+ * @param {string} [eyes]
+ * @returns {string}
+ */
+App.Desc.eyesColor = function(slave, adj = "", eye = "eye", eyes = "eyes") {
+	let r = "";
+	if (hasBothEyes(slave)) {
+		if (getLeftEyeColor(slave) !== getRightEyeColor(slave)) {
+			r = `${getRightEyeColor(slave)} and ${getLeftEyeColor(slave)} ${adj} ${eyes}`;
+		} else {
+			r = `${getRightEyeColor(slave)} ${adj} ${eyes}`;
+		}
+	} else if (hasAnyEyes(slave)) {
+		if (hasRightEye(slave)) {
+			r = `a ${getRightEyeColor(slave)} ${adj} ${eye}`;
+		} else if (hasLeftEye(slave)) {
+			r = `a ${getLeftEyeColor(slave)} ${adj} ${eye}`;
+		}
+	} else {
+		r = "no eyes";
+	}
+
+	return r;
+};
+
+/**
+ * Fits in a sentence like this:
+ * She has {return} eyes.
+ * Prefer App.Desc.eyesColor if possible as it works reliably with only one eye.
+ * Example where this is better: {return}-eyed gaze
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string} Slave's eye color
+ */
+App.Desc.eyeColor = function(slave) {
+	"use strict";
+	let r;
+
+	if (!hasAnyEyes(slave)) {
+		r = "empty";
+	} else if (hasBothEyes(slave)) {
+		if (hasVisibleHeterochromia(slave)) {
+			r = `heterochromatic ${getRightEyeColor(slave)} and ${getLeftEyeColor(slave)}`;
+		} else {
+			r = getLeftEyeColor(slave);
+		}
+	} else if (hasLeftEye(slave)) {
+		r = getLeftEyeColor(slave);
+	} else {
+		r = getRightEyeColor(slave);
+	}
+	return r;
+};
+
+/**
+ * returned string fits in a sentence like this:
+ * She has {return}.
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+App.Desc.eyesVision = function(slave) {
+	let r = "";
+	if (hasBothEyes(slave)) {
+		if (getLeftEyeVision(slave) !== getRightEyeVision(slave)) {
+			r = `a ${App.Desc.eyeVisionToString(getRightEyeVision(slave))} and a ${App.Desc.eyeVisionToString(getLeftEyeVision(slave))} eye`;
+		} else {
+			r = `${App.Desc.eyeVisionToString(getRightEyeVision(slave))} eyes`;
+		}
+	} else if (hasAnyEyes(slave)) {
+		if (hasRightEye(slave)) {
+			r = `a ${App.Desc.eyeVisionToString(getRightEyeVision(slave))} eye`;
+		} else if (hasLeftEye(slave)) {
+			r = `a ${App.Desc.eyeVisionToString(getLeftEyeVision(slave))} eye`;
+		}
+	} else {
+		r = "no eyes";
+	}
+
+	return r;
+};
+
+/**
+ * converts an eye vision to a string
+ * @param {number} type
+ * @returns {string}
+ */
+App.Desc.eyeVisionToString = function(type) {
+	switch (type) {
+		case 0:
+			return "blind";
+		case 1:
+			return "nearsighted";
+		case 2:
+			return "normal";
+		default:
+			return "unknown eye vision: " + type;
+	}
+};
diff --git a/src/npc/slaveStats.tw b/src/npc/slaveStats.tw
index 697fa3a58dc13d5122264600a24dddc1d899e598..14cce3d7f2886760418437f9d94171f698026337 100644
--- a/src/npc/slaveStats.tw
+++ b/src/npc/slaveStats.tw
@@ -202,13 +202,9 @@ Income: <<= num($activeSlave.lastWeeksRepIncome)>>
 		Override: $activeSlave.override_Pubic_H_Color
 
 		<br><br>Eyes:
-		<br>Eyes: $activeSlave.eyes,
-		Color: $activeSlave.eyeColor,
-		Orig: $activeSlave.origEye,
-		Override: $activeSlave.override_Eye_Color
+		<br>Eyes: <<print JSON.stringify($activeSlave.eyes)>>
+		<br>Override: $activeSlave.override_Eye_Color
 		<br>eyewear: $activeSlave.eyewear
-		<br>pupil: $activeSlave.pupil
-		<br>sclerae: $activeSlave.sclerae
 
 		<br><br>Ears:
 		Hearing: $activeSlave.hears,
diff --git a/src/npc/startingGirls/moreCustomOptions.tw b/src/npc/startingGirls/moreCustomOptions.tw
index c6fe0e642d37ca5a112303cdb35fc0542eda8600..d4c2c5715ae8b81aa00fc199a9a84f10480754f3 100644
--- a/src/npc/startingGirls/moreCustomOptions.tw
+++ b/src/npc/startingGirls/moreCustomOptions.tw
@@ -1,7 +1,7 @@
 :: More customization options [nobr]
 
 <<set $activeSlave.hColor = $activeSlave.origHColor>>
-<<set $activeSlave.eyeColor = $activeSlave.origEye>>
+<<run resetEyeColor($activeSlave)>>
 <<set $activeSlave.origRace = $activeSlave.race>>
 <<set $activeSlave.eyebrowHColor = $activeSlave.hColor>>
 <<set $activeSlave.pubicHColor = $activeSlave.hColor>>
@@ -22,9 +22,15 @@
 <br>''Nationality:'' <<textbox "$activeSlave.nationality" $activeSlave.nationality "More customization options">> //This will not alter name or race.//
 <br>''Ethnicity:'' <<textbox "$activeSlave.race" $activeSlave.race "More customization options">> //This will not apply phenotypes.//
 <br>''Hair color:'' <<textbox "$activeSlave.origHColor" $activeSlave.origHColor "More customization options">> //This will also set eyebrow, pubic, and underarm hair color.//
-<br>''Eye color:'' <<textbox "$activeSlave.origEye" $activeSlave.origEye "More customization options">>
-<br>''Pupil shape:'' <<textbox "$activeSlave.pupil" $activeSlave.pupil "More customization options">>
-<br>''Sclera color:'' <<textbox "$activeSlave.sclerae" $activeSlave.sclerae "More customization options">>
+<br>''Eye color:'' <<textbox "$activeSlave.eye.origColor" $activeSlave.eye.origColor "More customization options">>
+<<if def $pupil_temp>>
+	<<set $activeSlave.eye.left.pupil = $pupil_temp, $activeSlave.eye.right.pupil = $pupil_temp, delete $pupil_temp>>
+<</if>>
+<br>''Pupil shape:'' <<textbox "$pupil_temp" $activeSlave.eye.left.pupil "More customization options">>
+<<if def $sclerae_temp>>
+	<<set $activeSlave.eye.left.sclera = $sclerae_temp, $activeSlave.eye.right.sclera = $sclerae_temp, delete $sclerae_temp>>
+<</if>>
+<br>''Sclera color:'' <<textbox "$sclerae_temp" $activeSlave.eye.left.sclera "More customization options">>
 <br>Custom tattoo: <<textbox "$activeSlave.custom.tattoo" $activeSlave.custom.tattoo "More customization options">> //Use complete, capitalized and punctuated sentences.//
 <br>Custom origin story: <<textbox "$activeSlave.origin" $activeSlave.origin "More customization options">> //Use complete, capitalized and punctuated sentences.//
 <br>
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 6afdf4dfb26eb38bc969aea1586b5b014953fbfe..fe0be4eb769be113a222cb03d074d8565519a003 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -141,7 +141,7 @@ __You are customizing this slave:__
 	<<StartingGirlsWorkaround>>
 <</if>>
 
-<<set $activeSlave.eyeColor = $activeSlave.origEye, $activeSlave.hColor = $activeSlave.origHColor, $activeSlave.skin = $activeSlave.origSkin>>
+<<set resetEyeColor($activeSlave, "both"), $activeSlave.hColor = $activeSlave.origHColor, $activeSlave.skin = $activeSlave.origSkin>>
 <<if ($activeSlave.balls == 0)>>
 	<<set $activeSlave.scrotum = 0>>
 <</if>>
@@ -930,17 +930,30 @@ __You are customizing this slave:__
 <</if>>
 <br>
 <<if $seeExtreme == 1>>
-	<<options $activeSlave.eyes>>
-		''Vision:''
-		<<option -2 "Blind">> Blind
-		<<option -1 "Nearsighted">> Nearsighted
-		<<optiondefault 0 "Normal">> Normal
+	''Vision''<br>
+	<<options $activeSlave.eye.left.vision>>
+		''Left:''
+		<<option 0 "Blind">> Blind
+		<<option 1 "Nearsighted">> Nearsighted
+		<<optiondefault 2 "Normal">> Normal
+	<</options>><br>
+	<<options $activeSlave.eye.right.vision>>
+		''Right:''
+		<<option 0 "Blind">> Blind
+		<<option 1 "Nearsighted">> Nearsighted
+		<<optiondefault 2 "Normal">> Normal
 	<</options>>
 <<else>>
-	<<options $activeSlave.eyes>>
-		''Vision:''
-		<<option -1 "Nearsighted">> Nearsighted
-		<<optiondefault 0 "Normal">> Normal
+	''Vision''<br>
+	<<options $activeSlave.eye.left.vision>>
+		''Left:''
+		<<option 1 "Nearsighted">> Nearsighted
+		<<optiondefault 2 "Normal">> Normal
+	<</options>><br>
+	<<options $activeSlave.eye.right.vision>>
+		''Right:''
+		<<option 1 "Nearsighted">> Nearsighted
+		<<optiondefault 2 "Normal">> Normal
 	<</options>>
 <</if>>
 
@@ -1663,7 +1676,7 @@ __You are customizing this slave:__
 <<link "Irish Rose">>
 	<<set $archetyped = 1, $activeSlave.nationality = "Irish", $fixedNationality = "Irish">>
 	<<StartingGirlsWorkaround>>
-	<<set $activeSlave.race = "white", $activeSlave.origEye = "green", $activeSlave.origSkin = "fair", $activeSlave.origHColor = "red", $activeSlave.markings = "heavily freckled">>
+	<<set $activeSlave.race = "white", $activeSlave.eye.origColor = "green", $activeSlave.origSkin = "fair", $activeSlave.origHColor = "red", $activeSlave.markings = "heavily freckled">>
 	<<goto "Starting Girls">>
 <</link>>
 //A beautiful flower from the Emerald Isle//
@@ -1671,7 +1684,7 @@ __You are customizing this slave:__
 <<link "Cali Girl">>
 	<<set $archetyped = 1, $activeSlave.nationality = "American", $fixedNationality = "American">>
 	<<StartingGirlsWorkaround>>
-	<<set $activeSlave.origEye = "blue", $activeSlave.skin = "sun tanned", $activeSlave.override_Skin = 1, $activeSlave.origHColor = "blonde", $activeSlave.markings = "none", $activeSlave.face = 95, $activeSlave.muscles = 20, $activeSlave.weight = -20, $activeSlave.height = Math.round(Height.forAge(190, $activeSlave))>>
+	<<set $activeSlave.eye.origColor = "blue", $activeSlave.skin = "sun tanned", $activeSlave.override_Skin = 1, $activeSlave.origHColor = "blonde", $activeSlave.markings = "none", $activeSlave.face = 95, $activeSlave.muscles = 20, $activeSlave.weight = -20, $activeSlave.height = Math.round(Height.forAge(190, $activeSlave))>>
 	<<goto "Starting Girls">>
 <</link>>
 //Tall, taut, and tan//
@@ -1700,8 +1713,8 @@ __You are customizing this slave:__
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Onahole">>
 		<<StartingGirlsWorkaround>>
-		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whoring = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.fetish = "mindbroken", $activeSlave.voice = 0, $activeSlave.eyes = 1, $activeSlave.hears = 0>>
-		<<run removeLimbs($activeSlave, "all")>>
+		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whoring = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.fetish = "mindbroken", $activeSlave.voice = 0, $activeSlave.hears = 0>>
+		<<run removeLimbs($activeSlave, "all"), eyeSurgery($activeSlave, "both", "normal")>>
 		<<goto "Starting Girls">>
 	<</link>>
 	//A living cocksleeve//
diff --git a/src/pregmod/editGenetics.tw b/src/pregmod/editGenetics.tw
index 0e769b45a9e6ea0911a76fab9524b21e774629a7..20d3c162903144a333911f2a11ba3b6006d88767 100644
--- a/src/pregmod/editGenetics.tw
+++ b/src/pregmod/editGenetics.tw
@@ -51,7 +51,7 @@
 		<tr>
 			<th>Skin</th><td class="editor string-editor" data-param="origSkin"><%- s.origSkin %></td>
 			<th>Skin markings</th><td class="editor choice-editor" data-param="markings" data-choices="none, beauty mark, birthmark, freckles, heavily freckled"><%- s.markings %></td>
-			<th>Eyes</th><td class="editor string-editor" data-param="origEye"><%- s.origEye %></td>
+			<th>Eyes</th><td class="editor string-editor" data-param="eye.origColor"><%- s.eye.origColor %></td>
 			<th>Hair</th><td class="editor string-editor" data-param="origHColor"><%- s.origHColor %></td>
 		</tr>
 		<tr>
diff --git a/src/pregmod/eliteSlave.tw b/src/pregmod/eliteSlave.tw
index 04204962c9b09db8ed2494bfe6e0023d832cddaf..aa53801c3ee2dabe65e5babfe7de91efd29405ab 100644
--- a/src/pregmod/eliteSlave.tw
+++ b/src/pregmod/eliteSlave.tw
@@ -93,7 +93,7 @@ You check to see if any potential breeding slaves are on auction. <<if $eliteAuc
 <<if $arcologies[0].FSPhysicalIdealist > 20>>
 	<<set $activeSlave.height += 5>>
 <</if>>
-<<set $activeSlave.eyes = 1>>
+<<run eyeSurgery($activeSlave, "both", "normal")>>
 <<set $activeSlave.hears = 0>>
 <<if ($activeSlave.weight < -30)>>
 	<<set $activeSlave.waist = random(-55,0)>>
diff --git a/src/pregmod/fSlaveSelfImpreg.tw b/src/pregmod/fSlaveSelfImpreg.tw
index b443255910b4679128ccea6a61789f8295c270ce..1d5c632e77c30404419f04cf5df818ec3e77872f 100644
--- a/src/pregmod/fSlaveSelfImpreg.tw
+++ b/src/pregmod/fSlaveSelfImpreg.tw
@@ -82,7 +82,7 @@
 	<<elseif (_coop)>>
 		$activeSlave.slaveName is calm and docile as you place $him on a bench, and produce a sample container and syringe. With no other option, $he throws back $his head and enjoys the stimulation as your personal assistant, at your instruction, begins stimulating $him to orgasm. When $he ejaculates, you carefully catch every drop in the sample cup, load the syringe, and inject the contents directly against $his cervix.
 	<<else>>
-		Although $activeSlave.slaveName frantically squirms in a futile attempt to resist as you place $him on a bench, and produce a sample cup and syringe. Without limbs to aid $his escape, $he can only <<if ($activeSlave.eyes <= -2)>>blindly wait<<else>>watch<</if>> in helpless horror as the vasodilators you inject bring $his manhood to complete erectness and your personal assistant, at your instruction, begins stimulating $him. $He sobs in helpless despair as $his rigid shaft begins to throb, filling the cup with a terribly potent load of $his seed; $he frantically shakes $his head, face streaked with tears, as you dip the syringe into the cup, withdraw the plunger, insert it into $his exposed <<if $activeSlave.mpreg == 1>>ass<<else>>vagina<</if>>, and shoot the contents directly against the opening to $his womb.
+		Although $activeSlave.slaveName frantically squirms in a futile attempt to resist as you place $him on a bench, and produce a sample cup and syringe. Without limbs to aid $his escape, $he can only <<if !canSee($activeSlave)>>blindly wait<<else>>watch<</if>> in helpless horror as the vasodilators you inject bring $his manhood to complete erectness and your personal assistant, at your instruction, begins stimulating $him. $He sobs in helpless despair as $his rigid shaft begins to throb, filling the cup with a terribly potent load of $his seed; $he frantically shakes $his head, face streaked with tears, as you dip the syringe into the cup, withdraw the plunger, insert it into $his exposed <<if $activeSlave.mpreg == 1>>ass<<else>>vagina<</if>>, and shoot the contents directly against the opening to $his womb.
 	<</if>>
 <<elseif (_coop)>>
 	<<if (_enjoy)>>
diff --git a/src/pregmod/huskSlaveSwap.tw b/src/pregmod/huskSlaveSwap.tw
index 7f39b22c635c9f3bcb318701f168fd2087a81539..6acde5a79280105abb8e38a2962302b3464409a0 100644
--- a/src/pregmod/huskSlaveSwap.tw
+++ b/src/pregmod/huskSlaveSwap.tw
@@ -8,7 +8,7 @@
 You strap $slaves[_m].slaveName, and the body to which $he will be transferred, into the remote surgery and stand back as it goes to work.
 <<BodySwap $slaves[_m] $activeSlave>>
 <<set _gps = $genePool.findIndex(function(s) { return s.ID == $slaves[_m].ID; })>>
-<<set $genePool[_gps].race = $slaves[_m].race, $genePool[_gps].origRace = $slaves[_m].origRace, $genePool[_gps].skin = $slaves[_m].skin, $genePool[_gps].markings = $slaves[_m].markings, $genePool[_gps].origEye = $slaves[_m].origEye, $genePool[_gps].origHColor = $slaves[_m].origHColor, $genePool[_gps].origSkin = $slaves[_m].origSkin, $genePool[_gps].face = $slaves[_m].face, $genePool[_gps].pubicHStyle = $slaves[_m].pubicHStyle, $genePool[_gps].underArmHStyle = $slaves[_m].underArmHStyle, $genePool[_gps].eyebrowHStyle = $slaves[_m].eyebrowHStyle>> /* special exception to swap genePool since the temporary body lacks an entry. Otherwise we could just call the widget using the genePool entries */
+<<set $genePool[_gps].race = $slaves[_m].race, $genePool[_gps].origRace = $slaves[_m].origRace, $genePool[_gps].skin = $slaves[_m].skin, $genePool[_gps].markings = $slaves[_m].markings, $genePool[_gps].eye.origColor = $slaves[_m].eye.origColor, $genePool[_gps].origHColor = $slaves[_m].origHColor, $genePool[_gps].origSkin = $slaves[_m].origSkin, $genePool[_gps].face = $slaves[_m].face, $genePool[_gps].pubicHStyle = $slaves[_m].pubicHStyle, $genePool[_gps].underArmHStyle = $slaves[_m].underArmHStyle, $genePool[_gps].eyebrowHStyle = $slaves[_m].eyebrowHStyle>> /* special exception to swap genePool since the temporary body lacks an entry. Otherwise we could just call the widget using the genePool entries */
 
 <br><br>
 After an honestly impressive procedure, $slaves[_m].slaveName is recovering nicely.
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 1734d8746103ee7102709e538e58623f3af9d41f..1246f3eadb1c592d45ea3efb89134ea77186a43f 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -338,9 +338,9 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 		<<setLocalPronouns $tanks[$i]>>
 		<br><br>@@.pink;$tanks[$i].slaveName@@ occupies this tank.
 		<<if $geneticMappingUpgrade >= 1>>
-			$He is a <<if $tanks[$i].genes == "XX">>female<<else>>male<</if>> of $tanks[$i].race descent with $tanks[$i].eyeColor eyes, $tanks[$i].hColor hair and $tanks[$i].skin skin. Given $his parentage, $he is considered $tanks[$i].nationality.
+			$He is a <<if $tanks[$i].genes == "XX">>female<<else>>male<</if>> of $tanks[$i].race descent with <<print App.Desc.eyesColor($tanks[$i])>>, $tanks[$i].hColor hair and $tanks[$i].skin skin. Given $his parentage, $he is considered $tanks[$i].nationality.
 		<<else>>
-			$He appears to be <<if $tanks[$i].genes == "XX">>a natural girl<<else>>a natural boy<</if>>, with $tanks[$i].hColor hair<<if $tanks[$i].eyes != -2>> and $tanks[$i].eyeColor eyes.<<else>>. $He most likely will be blind.<</if>>
+			$He appears to be <<if $tanks[$i].genes == "XX">>a natural girl<<else>>a natural boy<</if>>, with $tanks[$i].hColor hair<<if getBestVision($tanks[$i]) === 0>> and <<print App.Desc.eyesColor($tanks[$i])>>.<<else>>. $He most likely will be blind.<</if>>
 		<</if>>
 		Statistical projections indicates that once released $he will be around <<= heightToEitherUnit($tanks[$i].height + random(-5,5))>> tall. Most likely $he will be
 			<<if $tanks[$i].weight <= 30 && $tanks[$i].weight >= -30>>
@@ -549,7 +549,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 					<<goto "Incubator">>
 				<</link>>
 			<</if>>
-			<<if $tanks[$i].eyes <= -2 && $tankOrgans.eyes != 1>>
+			<<if getBestVision($tanks[$i]) === 0 && $tankOrgans.eyes != 1>>
 				<br>$He appears to be blind:
 				<<link "Prepare eyes">>
 					<<run cashX(-10000, "incubator", $tanks[$i])>>
diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw
index 201ca748aa308d61e59ad406d14a8093dd67c4c2..6769847984529e211a1f641d1d7cc9bb58076333 100644
--- a/src/pregmod/managePersonalAffairs.tw
+++ b/src/pregmod/managePersonalAffairs.tw
@@ -10,7 +10,7 @@
 <</if>>
 
 You pause for a moment from your busy day to day life to return to <<if $masterSuite != 0>>$masterSuiteName<<else>>your room<</if>> to consider some things about yourself.
-<br>You take yourself in a full length mirror. You are <<if $PC.race == "amerindian" || $PC.race == "asian" || $PC.race == "indo-aryan">>an<<else>>a<</if>> $PC.race <<if $PC.dick != 0 && $PC.vagina != -1>>futanari<<elseif $PC.dick != 0>>man<<else>>woman<</if>> with<<if $PC.markings == "freckles">> freckled<<elseif $PC.markings == "heavily freckled">> heavily freckled<</if>> <<print $PC.skin>> skin, $PC.hColor hair, $PC.eye.right.iris eyes and a perfect $PC.faceShape face.
+<br>You take yourself in a full length mirror. You are <<if $PC.race == "amerindian" || $PC.race == "asian" || $PC.race == "indo-aryan">>an<<else>>a<</if>> $PC.race <<if $PC.dick != 0 && $PC.vagina != -1>>futanari<<elseif $PC.dick != 0>>man<<else>>woman<</if>> with<<if $PC.markings == "freckles">> freckled<<elseif $PC.markings == "heavily freckled">> heavily freckled<</if>> <<print $PC.skin>> skin, $PC.hColor hair, <<print App.Desc.eyesColor($PC)>> and a perfect $PC.faceShape face.
 <<if $PC.actualAge >= 65>>
 	You're @@.orange;$PC.actualAge@@ and definitely feeling it.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@.lime;look an older $PC.visualAge,@@ though perhaps it might be time to undo it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@.lime;look a younger $PC.visualAge,@@ now if only your body agreed with your looks.<</if>>
 <<elseif $PC.actualAge >= 50>>
@@ -32,52 +32,121 @@ Around back,
 
 <br><<if $playerSurgery == 0>>[[Visit your plastic surgeon.|Elective Surgery][$playerSurgery = 4]]<<elseif $playerSurgery == 1>>Your favorite plastic surgeon is booked solid for the next week.<<else>>Your favorite plastic surgeon is booked solid for the next $playerSurgery weeks.<</if>>
 <br>You have a number of contact lenses in various colors available.
-<br>&nbsp;&nbsp;&nbsp;
-	<<if $PC.eye.origColor == $PC.eye.right.iris>>You aren't wearing contacts to change the color of your eyes.<<else>>[[Remove lenses|Manage Personal Affairs][$PC.eye.left.iris = $PC.eye.origColor, $PC.eye.right.iris = $PC.eye.origColor]]<</if>>
-	<<if $PC.eye.right.iris != "blue">>| [[Blue|Manage Personal Affairs][$PC.eye.left.iris = "blue", $PC.eye.right.iris = "blue"]]<</if>>
-	<<if $PC.eye.right.iris != "black">>| [[Black|Manage Personal Affairs][$PC.eye.left.iris = "black", $PC.eye.right.iris = "black"]]<</if>>
-	<<if $PC.eye.right.iris != "brown">>| [[Brown|Manage Personal Affairs][$PC.eye.left.iris = "brown", $PC.eye.right.iris = "brown"]]<</if>>
-	<<if $PC.eye.right.iris != "green">>| [[Green|Manage Personal Affairs][$PC.eye.left.iris = "green", $PC.eye.right.iris = "green"]]<</if>>
-	<<if $PC.eye.right.iris != "turquoise">>| [[Turquoise|Manage Personal Affairs][$PC.eye.left.iris = "turquoise", $PC.eye.right.iris = "turquoise"]]<</if>>
-	<<if $PC.eye.right.iris != "sky-blue">>| [[Sky-Blue|Manage Personal Affairs][$PC.eye.left.iris = "sky-blue", $PC.eye.right.iris = "sky-blue"]]<</if>>
-	<<if $PC.eye.right.iris != "hazel">>| [[Hazel|Manage Personal Affairs][$PC.eye.left.iris = "hazel", $PC.eye.right.iris = "hazel"]]<</if>>
-	<<if $PC.eye.right.iris != "pale-grey">>| [[Pale-Grey|Manage Personal Affairs][$PC.eye.left.iris = "pale-grey", $PC.eye.right.iris = "pale-grey"]]<</if>>
-	<<if $PC.eye.right.iris != "white">>| [[White|Manage Personal Affairs][$PC.eye.left.iris = "white", $PC.eye.right.iris = "white"]]<</if>>
-	<<if $PC.eye.right.iris != "pink">>| [[Pink|Manage Personal Affairs][$PC.eye.left.iris = "pink", $PC.eye.right.iris = "pink"]]<</if>>
-	<<if $PC.eye.right.iris != "amber">>| [[Amber|Manage Personal Affairs][$PC.eye.left.iris = "amber", $PC.eye.right.iris = "amber"]]<</if>>
-	<<if $PC.eye.right.iris != "red">>| [[Red|Manage Personal Affairs][$PC.eye.left.iris = "red", $PC.eye.right.iris = "red"]]<</if>>
-	<<if $PC.eye.right.iris != "yellow">>| [[Yellow|Manage Personal Affairs][$PC.eye.left.iris = "yellow", $PC.eye.right.iris = "yellow"]]<</if>>
-	<<if $PC.eye.right.iris != "orange">>| [[Orange|Manage Personal Affairs][$PC.eye.left.iris = "orange", $PC.eye.right.iris = "orange"]]<</if>>
-	<br>
-	<<if $PC.eye.right.pupil == "circular">>You aren't wearing contacts to change the shape of your pupils.<<else>>[[Remove lenses|Manage Personal Affairs][$PC.eye.left.pupil = "circular, $PC.eye.right.pupil != "circular"<</if>>
-	<<if $PC.eye.right.pupil != "catlike">>| [[Catlike|Manage Personal Affairs][$PC.eye.left.pupil = "catlike", $PC.eye.right.pupil != "catlike"]]<</if>>
-	<<if $PC.eye.right.pupil != "serpent-like">>| [[Serpent-Like|Manage Personal Affairs][$PC.eye.left.pupil = "serpent-like", $PC.eye.right.pupil != "serpent-like"]]<</if>>
-	<<if $PC.eye.right.pupil != "devilish">>| [[Devilish|Manage Personal Affairs][$PC.eye.left.pupil = "devilish", $PC.eye.right.pupil != "devilish"]]<</if>>
-	<<if $PC.eye.right.pupil != "demonic">>| [[Demonic|Manage Personal Affairs][$PC.eye.left.pupil = "demonic", $PC.eye.right.pupil != "demonic"]]<</if>>
-	<<if $PC.eye.right.pupil != "hypnotic">>| [[Hypnotic|Manage Personal Affairs][$PC.eye.left.pupil = "hypnotic", $PC.eye.right.pupil != "hypnotic"]]<</if>>
-	<<if $PC.eye.right.pupil != "heart-shaped">>| [[Heart-Shaped|Manage Personal Affairs][$PC.eye.left.pupil = "heart-shaped", $PC.eye.right.pupil != "heart-shaped"]]<</if>>
-	<<if $PC.eye.right.pupil != "wide-eyed">>| [[Wide-Eyed|Manage Personal Affairs][$PC.eye.left.pupil = "wide-eyed", $PC.eye.right.pupil != "wide-eyed"]]<</if>>
-	<<if $PC.eye.right.pupil != "almond-shaped">>| [[Almond-Shaped|Manage Personal Affairs][$PC.eye.left.pupil = "almond-shaped", $PC.eye.right.pupil != "almond-shaped"]]<</if>>
-	<<if $PC.eye.right.pupil != "bright">>| [[Bright|Manage Personal Affairs][$PC.eye.left.pupil = "bright", $PC.eye.right.pupil != "bright"]]<</if>>
-	<<if $PC.eye.right.pupil != "teary">>| [[Teary|Manage Personal Affairs][$PC.eye.left.pupil = "teary", $PC.eye.right.pupil != "teary"]]<</if>>
-	<<if $PC.eye.right.pupil != "vacant">>| [[Vacant|Manage Personal Affairs][$PC.eye.left.pupil = "vacant", $PC.eye.right.pupil != "vacant"]]<</if>>
-	<<if $PC.eye.right.pupil != "star-shaped">>| [[Star-Shaped|Manage Personal Affairs][$PC.eye.left.pupil = "star-shaped", $PC.eye.right.pupil != "star-shaped"]]<</if>>
-	<<if $PC.eye.right.pupil != "goat-like">>| [[Goat-Like|Manage Personal Affairs][$PC.eye.left.pupil = "goat-like", $PC.eye.right.pupil != "goat-like"]]<</if>>
-	<br>
-	<<if $PC.eye.right.sclerae == "white">>You aren't wearing contacts to change the color of your sclerae.<<else>>[[Remove lenses|Manage Personal Affairs][$PC.eye.left.sclerae = "white", $PC.eye.right.sclerae == "white"]]<</if>>
-	<<if $PC.eye.right.sclerae != "blue">>| [[Blue|Manage Personal Affairs][$PC.eye.left.sclerae = "blue", $PC.eye.right.sclerae == "blue"]]<</if>>
-	<<if $PC.eye.right.sclerae != "black">>| [[Black|Manage Personal Affairs][$PC.eye.left.sclerae = "black", $PC.eye.right.sclerae == "black"]]<</if>>
-	<<if $PC.eye.right.sclerae != "brown">>| [[Brown|Manage Personal Affairs][$PC.eye.left.sclerae = "brown", $PC.eye.right.sclerae == "brown"]]<</if>>
-	<<if $PC.eye.right.sclerae != "green">>| [[Green|Manage Personal Affairs][$PC.eye.left.sclerae = "green", $PC.eye.right.sclerae == "green"]]<</if>>
-	<<if $PC.eye.right.sclerae != "turquoise">>| [[Turquoise|Manage Personal Affairs][$PC.eye.left.sclerae = "turquoise", $PC.eye.right.sclerae == "turquoise"]]<</if>>
-	<<if $PC.eye.right.sclerae != "sky-blue">>| [[Sky-Blue|Manage Personal Affairs][$PC.eye.left.sclerae = "sky-blue", $PC.eye.right.sclerae == "sky-blue"]]<</if>>
-	<<if $PC.eye.right.sclerae != "hazel">>| [[Hazel|Manage Personal Affairs][$PC.eye.left.sclerae = "hazel", $PC.eye.right.sclerae == "hazel"]]<</if>>
-	<<if $PC.eye.right.sclerae != "pale-grey">>| [[Pale-Grey|Manage Personal Affairs][$PC.eye.left.sclerae = "pale-grey", $PC.eye.right.sclerae == "pale-grey"]]<</if>>
-	<<if $PC.eye.right.sclerae != "pink">>| [[Pink|Manage Personal Affairs][$PC.eye.left.sclerae = "pink", $PC.eye.right.sclerae == "pink"]]<</if>>
-	<<if $PC.eye.right.sclerae != "amber">>| [[Amber|Manage Personal Affairs][$PC.eye.left.sclerae = "amber", $PC.eye.right.sclerae == "amber"]]<</if>>
-	<<if $PC.eye.right.sclerae != "red">>| [[Red|Manage Personal Affairs][$PC.eye.left.sclerae = "red", $PC.eye.right.sclerae == "red"]]<</if>>
-	<<if $PC.eye.right.sclerae != "yellow">>| [[Yellow|Manage Personal Affairs][$PC.eye.left.sclerae = "yellow", $PC.eye.right.sclerae == "yellow"]]<</if>>
-	<<if $PC.eye.right.sclerae != "orange">>| [[Orange|Manage Personal Affairs][$PC.eye.left.sclerae = "orange", $PC.eye.right.sclerae == "orange"]]<</if>>
+You current eye color is <<print App.Desc.eyeColor($PC)>>.
+
+/* This a simplified version of the slave code in salon.tw, when adding missing/glass eyes, copy the code from there */
+/* remove lenses */
+<<set _n = 0>>
+<<if getLeftEyeColor($PC) !== getGeneticEyeColor($PC, "left")>>
+	<<set _n++>>
+	[[Remove left lens|Manage Personal Affairs][resetEyeColor($PC, "left")]]
+<</if>>
+<<if getRightEyeColor($PC) !== getGeneticEyeColor($PC, "right")>>
+	<<set _n++>>
+	<<if _n > 0>>|<</if>>
+	[[Remove right lens|Manage Personal Affairs][resetEyeColor($PC, "right")]]
+<</if>>
+<<if _n === 2>>
+	| [[Remove both lenses|Manage Personal Affairs][resetEyeColor($PC, "both")]]
+<</if>>
+
+//Change what your eyes look like://
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Side:
+[[Left|Salon][$artificialEyeSide = "left"]]
+| [[Right|Salon][$artificialEyeSide = "right"]]
+| [[Both|Salon][$artificialEyeSide = "both"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Iris:
+[[Amber|Salon][$artificialEyeColor = "amber"]]
+| [[Black|Salon][$artificialEyeColor = "black"]]
+| [[Blue|Salon][$artificialEyeColor = "blue"]]
+| [[Brown|Salon][$artificialEyeColor = "brown"]]
+| [[Green|Salon][$artificialEyeColor = "green"]]
+| [[Hazel|Salon][$artificialEyeColor = "hazel"]]
+| [[Orange|Salon][$artificialEyeColor = "orange"]]
+| [[Pale-Grey|Salon][$artificialEyeColor = "pale-grey"]]
+| [[Pink|Salon][$artificialEyeColor = "pink"]]
+| [[Red|Salon][$artificialEyeColor = "red"]]
+| [[Sky-Blue|Salon][$artificialEyeColor = "sky-blue"]]
+| [[Turquoise|Salon][$artificialEyeColor = "turquoise"]]
+| [[White|Salon][$artificialEyeColor = "white"]]
+| [[Yellow|Salon][$artificialEyeColor = "yellow"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pupil:
+[[Circular|Salon][$artificialEyeShape = "circular"]]
+| [[Almond-Shaped|Salon][$artificialEyeShape = "almond-shaped"]]
+| [[Bright|Salon][$artificialEyeShape = "bright"]]
+| [[Catlike|Salon][$artificialEyeShape = "catlike"]]
+| [[Demonic|Salon][$artificialEyeShape = "demonic"]]
+| [[Devilish|Salon][$artificialEyeShape = "devilish"]]
+| [[Goat-Like|Salon][$artificialEyeShape = "goat-like"]]
+| [[Heart-Shaped|Salon][$artificialEyeShape = "heart-shaped"]]
+| [[Hypnotic|Salon][$artificialEyeShape = "hypnotic"]]
+| [[Serpent-Like|Salon][$artificialEyeShape = "serpent-like"]]
+| [[Star-Shaped|Salon][$artificialEyeShape = "star-shaped"]]
+| [[Teary|Salon][$artificialEyeShape = "teary"]]
+| [[Vacant|Salon][$artificialEyeShape = "vacant"]]
+| [[Wide-Eyed|Salon][$artificialEyeShape = "wide-eyed"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Sclera:
+[[White|Salon][$artificialEyeFill = "white"]]
+| [[Amber|Salon][$artificialEyeFill = "amber"]]
+| [[Black|Salon][$artificialEyeFill = "black"]]
+| [[Blue|Salon][$artificialEyeFill = "blue"]]
+| [[Brown|Salon][$artificialEyeFill = "brown"]]
+| [[Green|Salon][$artificialEyeFill = "green"]]
+| [[Hazel|Salon][$artificialEyeFill = "hazel"]]
+| [[Orange|Salon][$artificialEyeFill = "orange"]]
+| [[Pale-Grey|Salon][$artificialEyeFill = "pale-grey"]]
+| [[Pink|Salon][$artificialEyeFill = "pink"]]
+| [[Red|Salon][$artificialEyeFill = "red"]]
+| [[Sky-Blue|Salon][$artificialEyeFill = "sky-blue"]]
+| [[Turquoise|Salon][$artificialEyeFill = "turquoise"]]
+| [[Yellow|Salon][$artificialEyeFill = "yellow"]]
+
+<<if ndef $artificialEyeColor>>
+	<<set $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = "">>
+<</if>>
+
+<<if $artificialEyeSide != "" && $artificialEyeColor != "">>
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<<link "Take" "Manage Personal Affairs">>
+		/* apply modifications */
+		<<run setEyeColorFull($PC, $artificialEyeColor, $artificialEyeShape, $artificialEyeFill, $artificialEyeSide)>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $PC)>>
+
+		/* reset variables */
+		<<set $artificialEyeSide = "", $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = "">>
+	<</link>>
+
+	/* make the following easier to read */
+	<<set _both = $artificialEyeSide === "both">>
+
+	$him $artificialEyeColor
+	<<if _both>>
+		lenses
+	<<else>>
+		a lens
+	<</if>>
+	<<if $artificialEyeShape != "" || $artificialEyeFill != "">>
+		with
+		<<if $artificialEyeShape != "" >>
+			$artificialEyeShape <<if _both>> pupils <<else>> pupil <</if>>
+		<</if>>
+		<<if $artificialEyeShape != "" && $artificialEyeFill != "">>
+			and
+		<</if>>
+		<<if $artificialEyeFill != "" >>
+			$artificialEyeFill <<if _both>> sclerae <<else>> sclera <</if>>
+		<</if>>
+	<</if>>?
+<</if>>
+
 <br>You have a selection of hair dyes available.
 <br>&nbsp;&nbsp;&nbsp;
 	<<if $PC.origHColor == $PC.hColor>>Your hair is its natural color.<<else>>[[Remove dye|Manage Personal Affairs][$PC.hColor = $PC.origHColor]]<</if>>
diff --git a/src/pregmod/organFarmOptions.tw b/src/pregmod/organFarmOptions.tw
index 935efd9b5153eeb750df8627db1bdfe639cc75bd..93e569fa714402ec571e0304bb5dfb478bf1ebf0 100644
--- a/src/pregmod/organFarmOptions.tw
+++ b/src/pregmod/organFarmOptions.tw
@@ -266,7 +266,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<set _newOrgan.ID = $activeSlave.ID>>
 		<<set $organs.push(_newOrgan)>>
 		<<goto "Remote Surgery">>
-	<</link>> //Costs <<print cashFormat(10000)>> and is imperfect — eyes will lack natural color//
+	<</link>> //Costs <<print cashFormat(10000)>>, currently eyes can only be implanted in pairs.//
 <</if>>
 <<if $slaveOrgans.ears != 1>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1941,18 +1941,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 				<</if>>
 			<<case "eyes">>
-				<<if $activeSlave.eyes > -2 && $activeSlave.eyesImplant == 0>>
-					<br>&nbsp;&nbsp;&nbsp;&nbsp;
-					ERROR: this slave has working eyes.
-					<<link "Discard" "Remote Surgery">>
-						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "eyes"; })>>
-						<<if _ofo != -1>>
-							<<set $completedOrgans.deleteAt(_ofo)>>
-						<<else>>
-							@@.red;Organ not found for deletion!@@
-						<</if>>
-					<</link>>
-				<<elseif $activeSlave.eyesImplant == 1>>
+				<<if hasBothCyberneticEyes($activeSlave)>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Remove ocular implants and implant" "Surgery Degradation">>
 						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
@@ -1962,8 +1951,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 						<<else>>
 							@@.red;Organ not found for deletion!@@
 						<</if>>
-						<<set $activeSlave.eyes = 1>>
-						<<set $activeSlave.eyeColor = $activeSlave.origEye>>
+						<<run eyeSurgery($activeSlave, "both", "normal")>>
 						<<set $activeSlave.health -= 20>>
 						<<if $organFarmUpgrade == 2>>
 							<<set $activeSlave.chem += 20>>
@@ -1979,7 +1967,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 							@@.red;Organ not found for deletion!@@
 						<</if>>
 					<</link>>
-				<<else>>
+				<<elseif getBestVision($activeSlave) === 0>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
 						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
@@ -1989,9 +1977,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 						<<else>>
 							@@.red;Organ not found for deletion!@@
 						<</if>>
-						<<set $activeSlave.eyes = 1>>
-						<<set $activeSlave.eyeColor = $activeSlave.origEye>>
-						/* no way to salvage original eye color */
+						<<run eyeSurgery($activeSlave, "both", "normal")>>
 						<<set $activeSlave.health -= 20>>
 						<<if $organFarmUpgrade == 2>>
 							<<set $activeSlave.chem += 20>>
@@ -2007,6 +1993,18 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 							@@.red;Organ not found for deletion!@@
 						<</if>>
 					<</link>>
+				<<else>>
+					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					ERROR: this slave has working eyes.
+					<<link "Discard" "Remote Surgery">>
+						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "eyes"; })>>
+						<<if _ofo != -1>>
+							<<set $completedOrgans.deleteAt(_ofo)>>
+						<<else>>
+							@@.red;Organ not found for deletion!@@
+						<</if>>
+					<</link>>
+
 				<</if>>
 			<<case "ears">>
 				<<if $activeSlave.earShape == "normal" && $activeSlave.earT != "none">>
diff --git a/src/pregmod/pcAppearanceIntro.tw b/src/pregmod/pcAppearanceIntro.tw
index d14482e98a56e75908468e8b272393b89fa61ad2..72e1d46e9c0d423cc33e6a3cb7b85cc2784eb5b0 100644
--- a/src/pregmod/pcAppearanceIntro.tw
+++ b/src/pregmod/pcAppearanceIntro.tw
@@ -244,9 +244,8 @@ You have $PC.origSkin skin.
 
 @@.orange;What color are your eyes?@@
 <br>
-<<set $PC.eye.left.iris = $PC.eye.right.iris>>
-You have $PC.eye.right.iris eyes.
-<br><<textbox "$PC.eye.right.iris" $PC.eye.right.iris "PC Appearance Intro">>
+You have $PC.eye.origColor eyes.
+<br><<textbox "$PC.eye.origColor" $PC.eye.origColor "PC Appearance Intro">>
 
 <br><br>
 
@@ -256,5 +255,4 @@ You have $PC.hColor hair.
 <br><<textbox "$PC.hColor" $PC.hColor "PC Appearance Intro">>
 
 <br><br>
-[[Finish player character customization|PC Experience Intro]]
-
+[[Finish player character customization|PC Experience Intro][resetEyeColor($PC)]]
diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw
index ad7f2aa81166e6b1ca7caa6f7ac0cc29d63e9def..8a0b83ddf11c09d26e1ee17be43459569e50a18c 100644
--- a/src/pregmod/rePregInventor.tw
+++ b/src/pregmod/rePregInventor.tw
@@ -121,10 +121,10 @@
 				<</if>>
 			<</if>>
 			<br><br>
-			<<if $activeSlave.eyesImplant == 1>>
-				$His pretty $activeSlave.eyeColor bionic eyes flash a shade cooler than normal and you can tell $he's struggling to accept your decision.
+			<<if hasAnyCyberneticEyes($activeSlave)>>
+				$His pretty <<print App.Desc.eyesColor($activeSlave, "bionic")>> flash a shade cooler than normal and you can tell $he's struggling to accept your decision.
 			<<else>>
-				You can see tears brimming in $his <<= App.Desc.eyesColor($activeSlave)>>.
+				You can see tears brimming in $his <<print App.Desc.eyesColor($activeSlave)>>.
 			<</if>>
 			You kiss $him on the head, make sweet love to $him to improve $his mood, then have $him escorted out of your office.
 			<<= VCheck.Vaginal()>>
@@ -697,10 +697,10 @@
 		<</if>>
 		<br><br>
 		Your arousal gives you an idea, and you push back on your hyperbroodmother's colossal belly. $He steps away from you until $he is in the center of the pool, a look of confusion on $his face. You take control of the remote and then manipulate the reticulating frame supporting the pool such that it lifts the floor, slowly rendering both you and your colossal-bellied breeder knee deep in the warm gel. You hunker down into an aggressive, combative stance and
-		<<if $activeSlave.eyesImplant == 1>>
-			$his synthetic eyes flash white for a moment as a look of understanding dawns on $his face.
+		<<if hasAnyCyberneticEyes($activeSlave)>>
+			$his <<print App.Desc.eyesColor($activeSlave, "synthetic")>> flash white for a moment as a look of understanding dawns on $his face.
 		<<else>>
-			a look of understanding lights up in $his eyes.
+			a look of understanding lights up in $his <<print App.Desc.eyesColor($activeSlave)>>.
 		<</if>>
 		<<if !canTalk($activeSlave)>>
 			<<if hasAnyArms($activeSlave)>>
diff --git a/src/pregmod/seFCTVremote.tw b/src/pregmod/seFCTVremote.tw
index acd3ab1e9594f02560c51c50be9168d534b3627c..71828667c7962c3e0a22a22c044a0441a040584f 100644
--- a/src/pregmod/seFCTVremote.tw
+++ b/src/pregmod/seFCTVremote.tw
@@ -133,13 +133,8 @@ $He unboxes the new remote and turns $his back to you, eagerly demonstrating how
 	At the touch of a button, $his drone whirs to a stop and begins to fall to the floor. Before it hits, you touch a second and a dart hits $him in the neck. $He collapses into darkness.
 	<br><br>
 	As the tech wakes up $he finds $himself resting on your couch, with you looking
-	/*<<if hasAnyEyes($activeSlave)>>
+	<<if hasAnyEyes($activeSlave)>>
 		into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>
-	<<else>>
-		at $him @Arkerthan
-	<</if>>*/
-	<<if $activeSlave.eyes > -2>>
-		into $his eyes
 	<<else>>
 		at $him
 	<</if>>
diff --git a/src/pregmod/testGenetics.tw b/src/pregmod/testGenetics.tw
index aa29f07550ca72e59a06a1f3fd50b4ba89129ca3..772a5bf26760754e04fbe1bf124a8e487ba674bf 100644
--- a/src/pregmod/testGenetics.tw
+++ b/src/pregmod/testGenetics.tw
@@ -16,7 +16,7 @@ All slave array slaves MUST be present in genePool or else there is a malfunctio
 <</for>>
 </table>
 
-<<set _neededProperties = ['genes', 'origSkin', 'origEye', 'origHColor', 'nationality', 'origRace', 'face', 'faceShape', 'markings', 'intelligence', 'underArmHStyle', 'pubicHStyle']>>
+<<set _neededProperties = ['genes', 'origSkin', 'eye.origColor', 'origHColor', 'nationality', 'origRace', 'face', 'faceShape', 'markings', 'intelligence', 'underArmHStyle', 'pubicHStyle']>>
 <table><caption style="background-color: rgba(127, 127, 127, 0.2)">slaves</caption>
 <tr><th>index</th><th>name</th><th>ID</th><th>origin</th><th>assignment</th></tr>
 <<for _i = 0; _i < $slaves.length; _i++>>
@@ -24,7 +24,17 @@ All slave array slaves MUST be present in genePool or else there is a malfunctio
 	<<set _error = $genePool.every(function(g) { return $slaves[_i].ID !== g.ID; })>>
 	<<if _error>><<set _errorCause = "Doesn't exist in the gene pool">><</if>>
 	<<if !_error>>
-		<<set _missingProperties = _neededProperties.filter(function(p) { return !(p in _s);})>>
+		<<set _missingProperties = _neededProperties.filter(function(p) {
+			p = p.split(".");
+			let c = _s;
+			for (const r of p) {
+				if (!(r in c)) {
+					return true;
+				}
+				c = c[r];
+			}
+			return false;
+		})>>
 		<<if _missingProperties.length > 0>>
 			<<set _error = true, _errorCause = "Missing properties: " + _missingProperties.join(", ")>>
 		<</if>>
diff --git a/src/pregmod/widgets/bodySwapReaction.tw b/src/pregmod/widgets/bodySwapReaction.tw
index 736ccefd8bba9de3d696d5d00d3598ec0b8c6da5..e9e1a91cdabafc08b89495d2958bd5bdb2f90b2a 100644
--- a/src/pregmod/widgets/bodySwapReaction.tw
+++ b/src/pregmod/widgets/bodySwapReaction.tw
@@ -2,13 +2,13 @@
 
 <<widget "BodySwapReaction">>
 
-<<if $args[0].eyes <= -2 && $args[1].eyes > -2>>
+<<if getBestVision($args[0]) === 0 && getBestVision($args[1]) > 0>>
 	<<set _sight = -2>> /* now blind */
-<<elseif $args[0].eyes == -1 && $args[1].eyes > -1>>
+<<elseif getBestVision($args[0]) === 1 && getBestVision($args[1]) > 1>>
 	<<set _sight = -1>> /* now nearsighted */
-<<elseif $args[0].eyes > -2 && $args[1].eyes <= -2>>
+<<elseif getBestVision($args[0]) > 0 && getBestVision($args[1]) === 0>>
 	<<set _sight = 2>>	/* now not blind */
-<<elseif $args[0].eyes > -1 && $args[1].eyes == -1>>
+<<elseif getBestVision($args[0]) > 1 && getBestVision($args[1]) === 1>>
 	<<set _sight = 1>> /* now not nearsighted */
 <<else>>
 	<<set _sight = 0>> /* no change */
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 21fbb7f7aa655203880be27a8d0d5aef05ff7347..c7b50b6ccc27d802ed71d96c77a651e24b23001a 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -21,10 +21,7 @@
 <<set $args[0].skin = $args[1].skin>>
 <<set $args[0].origSkin = $args[1].origSkin>>
 <<set $args[0].markings = $args[1].markings>>
-<<set $args[0].eyes = $args[1].eyes>>
-<<set $args[0].eyesImplant = $args[1].eyesImplant>>
-<<set $args[0].origEye = $args[1].origEye>>
-<<set $args[0].eyeColor = $args[1].eyeColor>>
+<<set $args[0].eye = $args[1].eye>>
 <<set $args[0].hears = $args[1].hears>>
 <<set $args[0].earImplant = $args[1].earImplant>>
 <<set $args[0].earShape = $args[1].earShape>>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 250ad8fe4bbc4f7dc8aa4326e8649ab627ac0dd2..45130d592787a078291e7ccb5c66fb7b8af87a86 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -596,6 +596,27 @@
 	<</if>>
 <</if>>
 
+<<if $releaseID < 1059>>
+	<<set $args[0].eye = new App.Entity.EyeState()>>
+	<<run setGeneticEyeColor($args[0], $args[0].origEye)>>
+	<<if $args[0].eyes === -4>>
+		<<run eyeSurgery($args[0], "both", "remove")>>
+	<<else>>
+		<<if $args[0].eyesImplant === 1>>
+			<<run eyeSurgery($args[0], "both", "cybernetic")>>
+		<</if>>
+		<<if $args[0].eyes === -3>><<run eyeSurgery($args[0], "both", "glass")>>
+		<<elseif $args[0].eyes === -2>><<run eyeSurgery($args[0], "both", "blind")>>
+		<<elseif $args[0].eyes === -1>><<run eyeSurgery($args[0], "both", "blur")>>
+		<</if>>
+		<<run setEyeColorFull($args[0], $args[0].eyeColor, $args[0].pupil, $args[0].sclerae, "both")>>
+		<<if typeof $args[0].geneticQuirks.heterochromia === "string">>
+			<<run setEyeColor($args[0].geneticQuirks.heterochromia, "left")>>
+		<</if>>
+	<</if>>
+	<<run delete $args[0].eyes, delete $args[0].eyesImplant, delete $args[0].eyeColor, delete $args[0].origEye, delete $args[0].pupil, delete $args[0].sclerae>>
+<</if>>
+
 <</widget>>
 
 <<widget "setLocalPronouns">>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 347f56a35c37871d76375b82a0e5fbf3a8912b25..9afd11140694ed64abbf942682e6879b4b1383c5 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -144,6 +144,11 @@
 	<<run delete $customSlave.combatSkills>>
 <</if>>
 
+<<if $releaseID < 1059>>
+	<<set $customSlave.eye = new App.Entity.SlaveState()>>
+	<<run delete $customSlave.eyes>>
+<</if>>
+
 <<if def $servantMilkersJobs>>
 	<<unset $servantMilkersJobs>>
 <</if>>
@@ -3363,50 +3368,52 @@ Setting missing slave variables:
 	<</if>>
 <</if>>
 
-<<if ndef _Slave.eyeColor>>
-	<<set _Slave.eyeColor = _Slave.eyes>>
-	<<set _Slave.eyes = 1>>
+<<if $releaseID < 1059>>
 	<<if ndef _Slave.eyeColor>>
-		<<set _Slave.eyeColor = "brown">>
+		<<set _Slave.eyeColor = _Slave.eyes>>
+		<<set _Slave.eyes = 1>>
+		<<if ndef _Slave.eyeColor>>
+			<<set _Slave.eyeColor = "brown">>
+		<</if>>
 	<</if>>
-<</if>>
 
-<<if ndef _Slave.pupil>>
-	<<if _Slave.eyeColor == "catlike">>
-		<<set _Slave.pupil = "catlike">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "serpent-like">>
-		<<set _Slave.pupil = "serpent-like">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "devilish">>
-		<<set _Slave.pupil = "devilish">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "demonic">>
-		<<set _Slave.pupil = "demonic">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "hypnotic">>
-		<<set _Slave.pupil = "hypnotic">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "heart-shaped">>
-		<<set _Slave.pupil = "heart-shaped">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "wide-eyed">>
-		<<set _Slave.pupil = "wide-eyed">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "almond-shaped">>
-		<<set _Slave.pupil = "almond-shaped">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "bright">>
-		<<set _Slave.pupil = "bright">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "teary">>
-		<<set _Slave.pupil = "teary">>
-		<<set _Slave.eyeColor = "brown">>
-	<<elseif _Slave.eyeColor == "vacant">>
-		<<set _Slave.pupil = "vacant">>
-		<<set _Slave.eyeColor = "brown">>
-	<<else>>
-		<<set _Slave.pupil = "circular">>
+	<<if ndef _Slave.pupil>>
+		<<if _Slave.eyeColor == "catlike">>
+			<<set _Slave.pupil = "catlike">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "serpent-like">>
+			<<set _Slave.pupil = "serpent-like">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "devilish">>
+			<<set _Slave.pupil = "devilish">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "demonic">>
+			<<set _Slave.pupil = "demonic">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "hypnotic">>
+			<<set _Slave.pupil = "hypnotic">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "heart-shaped">>
+			<<set _Slave.pupil = "heart-shaped">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "wide-eyed">>
+			<<set _Slave.pupil = "wide-eyed">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "almond-shaped">>
+			<<set _Slave.pupil = "almond-shaped">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "bright">>
+			<<set _Slave.pupil = "bright">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "teary">>
+			<<set _Slave.pupil = "teary">>
+			<<set _Slave.eyeColor = "brown">>
+		<<elseif _Slave.eyeColor == "vacant">>
+			<<set _Slave.pupil = "vacant">>
+			<<set _Slave.eyeColor = "brown">>
+		<<else>>
+			<<set _Slave.pupil = "circular">>
+		<</if>>
 	<</if>>
 <</if>>
 
@@ -3757,8 +3764,10 @@ Setting missing slave variables:
 	<<set _Slave.height = random(185,200)>>
 <</if>>
 
-<<if _Slave.eyeColor == "no default value">>
-	<<set _Slave.eyeColor = _Slave.origEye>>
+<<if $releaseID < 1059>>
+	<<if _Slave.eyeColor == "no default value">>
+		<<set _Slave.eyeColor = _Slave.origEye>>
+	<</if>>
 <</if>>
 
 <<if ndef _Slave.birthSurname>>
@@ -3952,22 +3961,24 @@ Updating gene pool records:
 		<</if>>
 	<</if>>
 
-	<<if ndef _Slave.eyesImplant>>
-		<<set _Slave.eyesImplant = 0>>
-	<</if>>
-	<<if _Slave.origEye == "implant">>
-		<<set _Slave.eyesImplant = 1>>
-		<<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>>
-		<<set _Slave.origEye = _oldEyes.origEye>>
-	<</if>>
-	<<if _Slave.origEye == "none">>
-		<<set _Slave.eyes = -3>>
-		<<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>>
-		<<set _Slave.origEye = _oldEyes.origEye>>
-	<</if>>
-	<<if _Slave.eyeColor == "empty">>
-		<<set _Slave.eyeColor = _Slave.origEye>>
-		<<set _Slave.eyes = -4>>
+	<<if $releaseID < 1059>>
+		<<if ndef _Slave.eyesImplant>>
+			<<set _Slave.eyesImplant = 0>>
+		<</if>>
+		<<if _Slave.origEye == "implant">>
+			<<set _Slave.eyesImplant = 1>>
+			<<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>>
+			<<set _Slave.origEye = _oldEyes.origEye>>
+		<</if>>
+		<<if _Slave.origEye == "none">>
+			<<set _Slave.eyes = -3>>
+			<<set _oldEyes = $genePool.find(function(s) { return s.ID = _Slave.ID; })>>
+			<<set _Slave.origEye = _oldEyes.origEye>>
+		<</if>>
+		<<if _Slave.eyeColor == "empty">>
+			<<set _Slave.eyeColor = _Slave.origEye>>
+			<<set _Slave.eyes = -4>>
+		<</if>>
 	<</if>>
 
 	<<if ndef _Slave.custom>> <<set _Slave.custom = {}>> <</if>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 508f26adfa9972a972b528cbd222b54fcb515572..c92d6167d25fbc310b25fd2f9f035b99ad3bd45b 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -7919,12 +7919,13 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<<set $slaves.forEach(function(s) { if (s.devotion <= 20) { s.trust -= 10; } })>>
 		<</replace>>
 	<</link>>
-	<<if $activeSlave.eyes != -2>>
+	<<if getBestVision($activeSlave) > 0>>
 		<br><<link "Blind the would-be escapee">>
 			<<EventNameDelink $activeSlave>>
 			<<replace "#result">>
 				The simple thing to do would be to sedate $activeSlave.slaveName and haul $him to the remote surgery for $his punishment. That would deny $him the added weight of terror, however, and would stop your other slaves from learning by the sight of it. So, you restrain $him, pronounce judgment, and drag $his struggling, weeping form through the penthouse to the surgery. You make sure to point out all the things $he'll never get to see again. $activeSlave.slaveName is @@.mediumorchid;filled with implacable hatred@@ by this terrible punishment, and $his @@.red;health is slightly damaged@@ by the surgery. However, every single one of your other slaves not already obedient to you is @@.gold;utterly terrified@@ by the example set.
-				<<set $activeSlave.devotion -= 50, $activeSlave.trust -= 50, $activeSlave.health -= 20, $activeSlave.eyes = -2, $activeSlave.eyeColor = "dulled " + $activeSlave.eyeColor>>
+				<<set $activeSlave.devotion -= 50, $activeSlave.trust -= 50, $activeSlave.health -= 20>>
+				<<run eyeSurgery($activeSlave, "both", "blind")>>
 				<<set $slaves.forEach(function(s) { if (s.devotion <= 20) { s.trust -= 10; } })>>
 			<</replace>>
 		<</link>>
@@ -9782,12 +9783,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 <<link "Make an example by forcing $him to take a massive dose">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-		You take $him by the shoulders<<if $activeSlave.eyes > -2>>,
-			look into $his eyes,
+		You take $him by the shoulders<<if hasAnyEyes($activeSlave)>>,
+			look into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>,
 		<</if>>
-		/*<<if hasAnyEyes($activeSlave)>>,
-			look into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>, @Arkerthan
-		<</if>>*/
 		and tell $him you'll fix things so $he doesn't mind so much. $He looks hopeful, even when you tell $him to take $his pill. $He does, and you hand $him another. And another. $He's crying with dread by the fourth pill, knowing that this is $his punishment for complaining. $His pupils dilate, $he begins to breathe hard, and $his $activeSlave.skin skin flushes badly. $He tries to beg you to fuck $him but can't seem to find the words. $He begins to masturbate compulsively, so hard that $he collapses to the kitchen floor with $his first spastic orgasm.
 		<<if ($activeSlave.chastityPenis == 1)>>
 			$His cock is painfully compressed by $his chastity cage, but it does nothing to stop $his frantic efforts to come.
@@ -12392,7 +12390,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 	<<EventNameDelink $activeSlave>>
 		<<replace "#result">>
 		You stand up from your desk and approach $him very closely without touching $him. Looking straight
-		/*<<if hasAnyEyes($activeSlave)>>
+		<<if hasAnyEyes($activeSlave)>>
 			into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>,
 			which are
 			<<if canSee($activeSlave)>>
@@ -12400,10 +12398,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<<else>>
 				gazing in your general direction
 			<</if>>
-		<<else>> @Arkerthan
+		<<else>>
 			at $him
 		<</if>>,
-		*/
 		into $his eyes, which are fixed helplessly on you,
 		you tell $him that you'll let $him say whatever it is $he needs to say to you, but only if $he's very quiet. $He <<if canSee($activeSlave)>>looks at you with huge eyes but<</if>> nods vigorously. $He waits until you lean into $him, making $him shiver at your proximity, before putting $his
 		<<if $activeSlave.lips > 70>>
@@ -15637,8 +15634,11 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 				sphincter,
 			<</if>>
 			a gasp of air into $his lungs, and a slight shiver. There is a flaw at the corner of $his mouth that might be transitory pleasure, but a look
-			/*<<if canSee($activeSlave)>>into $his eye<<if hasBothEyes($activeSlave)>>s<</if>><<else>>at $his face<</if>> @Arkerthan*/
-			into $his eyes
+			<<if canSee($activeSlave)>>
+				into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>
+			<<else>>
+				at $his face
+			<</if>>
 			confirms that it is not so.
 		<</replace>>
 	<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>>//This option will take $his virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take $his anal virginity//<</if>>
@@ -17529,14 +17529,15 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<</if>>
 		<</if>>
 		<br><br>
-		There's a momentary flaw in $his rhythm, a catch in $his breath as $he realizes what you're doing, but $he gets right back into it, displaying $his pleasure with nothing more than a ghost of a smile/*<<if canSee($activeSlave) || canHear($activeSlave)>>
+		There's a momentary flaw in $his rhythm, a catch in $his breath as $he realizes what you're doing, but $he gets right back into it, displaying $his pleasure with nothing more than a ghost of a smile
+		<<if canSee($activeSlave) || canHear($activeSlave)>>
 			and a
 			<<if canSee($activeSlave)>>
-				widening of $his eye<<if hasBothEyes($activeSlave)>>s<</if>>as $he looks you up and down @Arkerthan
+				widening of $his eye<<if hasBothEyes($activeSlave)>>s<</if>>as $he looks you up and down
 			<<else>>
 				slight perk of $his ears as $he tracks your motion
 			<</if>>
-		<</if>>*/.
+		<</if>>.
 		$He doesn't shove $himself against you; that would be coarse. Instead $he dances alluringly, just out of your grasp. Taking the dominant role, you encircle $him in your arms and draw $him in close, $his heat perceptible against your skin before the very first graze of $his $activeSlave.skin body against yours. $He continues to dance gorgeously as $he helps you out of your clothes.
 		<br><br>
 		When you're nude, $he turns $his back to you and starts to grind, letting you feel $his
@@ -18002,8 +18003,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 		<<set $activeSlave.health -= 20>>
 		<<set $activeSlave.race = $arcologies[0].FSSubjugationistRace>>
 		<<set $activeSlave.skin = randomRaceSkin($arcologies[0].FSSubjugationistRace)>>
-		<<set $activeSlave.eyeColor = randomRaceEye($arcologies[0].FSSubjugationistRace)>>
+		<<run setEyeColor($activeSlave, randomRaceEye($arcologies[0].FSSubjugationistRace))>>
 		<<set $activeSlave.hColor = randomRaceHair($arcologies[0].FSSubjugationistRace)>>
+		<<set $activeSlave.override_Skin = 1, $activeSlave.override_Eye_Color = 1, $activeSlave.override_H_Color = 1>>
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0) || ($activeSlave.vagina == 0)>> //This option will take $his virginity and ignore $his chastity//<</if>>
 <br><<link "No surgery today, but give $him something to think about">>
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 24b8934053dfc121e9bd271f85bc5e44db446c58..70eeceeefb8d4f3d53447b98898b812c8c33b691 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -599,7 +599,7 @@ You look in on your slaves as a group of them heads for bed. $subSlave.slaveName
 <<else>>
 	skinny
 <</if>>
-waist to cup _his2 <<if $subSlave.dick > 0>>cock<<elseif $subSlave.vagina == -1>>asshole<<else>>pussy<</if>> possessively with one hand.<<if $subSlave.eyes != -4>> $subSlave.slaveName closes _his2 <<= App.Desc.eyesColor($subSlave)>>.<</if>>
+waist to cup _his2 <<if $subSlave.dick > 0>>cock<<elseif $subSlave.vagina == -1>>asshole<<else>>pussy<</if>> possessively with one hand.<<if hasAnyEyes($activeSlave)>> $subSlave.slaveName closes _his2 <<= App.Desc.eyesColor($subSlave)>>.<</if>>
 <br><br>
 $activeSlave.slaveName chuckles into $subSlave.slaveName's ear, crooning,
 <<if $subSlave.bellyPreg >= 120000>>
diff --git a/src/uncategorized/addCustomDescriptors.tw b/src/uncategorized/addCustomDescriptors.tw
index 8f90521a1d598bcb9d5f2850b38cc6b8f32066e1..31cb869d385e453ff42349e27d2c13808141ed54 100644
--- a/src/uncategorized/addCustomDescriptors.tw
+++ b/src/uncategorized/addCustomDescriptors.tw
@@ -127,13 +127,18 @@ Custom hair color: <<textbox "$activeSlave.hColor" $activeSlave.hColor "Add cust
 <br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short, uncapitalized and unpunctuated description; for example: 'black with purple highlights'//
 
 <br><br>
-<<if $activeSlave.eyeColor != $activeSlave.origEye>>
-	$He is wearing $activeSlave.eyeColor lenses.
+<<if getLenseCount($activeSlave) > 0>>
+	$He is wearing <<print App.Desc.eyesColor($activeSlave, "", "lense", "lenses")>>.
 <<else>>
-	$He has $activeSlave.eyeColor eyes.
+	$He has <<print App.Desc.eyesColor($activeSlave)>>.
+<</if>><br>
+<<if hasLeftEye($activeSlave)>>
+	Custom left eye color: <<textbox "$activeSlave.eye.left.iris" $activeSlave.eye.left.iris "Add custom descriptors">><br>
 <</if>>
-Custom eye color: <<textbox "$activeSlave.eyeColor" $activeSlave.eyeColor "Add custom descriptors">>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short, uncapitalized and unpunctuated description; for example: 'blue'//
+<<if hasRightEye($activeSlave)>>
+	Custom right eye color: <<textbox "$activeSlave.eye.right.iris" $activeSlave.eye.right.iris "Add custom descriptors">><br>
+<</if>>
+&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short, uncapitalized and unpunctuated description; for example: 'blue'//
 
 <br><br>
 Change $his custom tattoo: <<textbox "$activeSlave.custom.tattoo" $activeSlave.custom.tattoo "Add custom descriptors">> <br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use complete sentences; for example: '$He has blue stars tattooed along $his cheekbones.'//
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index 9a93171e6667fed8c948bd1238ce507cff4d0d94..5035045e066ad674f5c97214fd42df4f13d98ada 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -56,7 +56,7 @@
 	<<elseif (_FLsFetish == 2)>>
 		Every day $he gets to enjoy hundreds of stares on $his skin, and @@.lightsalmon;becomes more of an exhibitionist.@@
 	<</if>>
-	<<if $DJ.eyes <= -2>>
+	<<if getBestVision($DJ) === 0>>
 		$His lack of eyesight doesn't slow $him down; rather, it strengthens $his other senses. $His tracks have a distinct sound, since $he experiences noise as $his sight.
 	<</if>>
 	<<if ($DJ.skill.entertainment <= 10)>>
diff --git a/src/uncategorized/completeCatalog.tw b/src/uncategorized/completeCatalog.tw
index 7a3cd0054a03b7ba9e973c1287be7cf876776606..f5b325328aa404888476c6f4b8850179529d4528 100644
--- a/src/uncategorized/completeCatalog.tw
+++ b/src/uncategorized/completeCatalog.tw
@@ -25,7 +25,7 @@
 	<<set $activeSlave.origRace = $activeSlave.race>>
 <</if>>
 <<if $activeSlave.override_Eye_Color != 1>>
-	<<set $activeSlave.eyeColor = getGeneticEyeColor($activeSlave)>>
+	<<run resetEyeColor($activeSlave, "both")>>
 <</if>>
 <<if $activeSlave.override_H_Color != 1>>
 	<<set $activeSlave.hColor = getGeneticHairColor($activeSlave)>>
diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw
index 8294ebf8ef4ed74bf707977f1c03f6315aaff89e..a0429d5e60b72489e94ce9ac39285835cdbceee3 100644
--- a/src/uncategorized/costsWidgets.tw
+++ b/src/uncategorized/costsWidgets.tw
@@ -228,12 +228,12 @@
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to lack of sight:</i>
 		@@.yellowgreen;<<print cashFormat(50)>>@@
 		<<set _individualCosts += 50>>
-	<<elseif $args[0].eyes <= -1 && $args[0].eyewear != "corrective glasses" && $args[0].eyewear != "corrective contacts">>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to poor vision:</i>
-		@@.yellowgreen;<<print cashFormat(25)>>@@
-		<<set _individualCosts += 25>>
-	<<elseif ($args[0].eyewear == "blurring glasses") || ($args[0].eyewear == "blurring contacts")>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to blurred vision:</i>
+	<<elseif !canSeePerfectly($args[0])>>
+		<<if getBestVision($args[0] < 2)>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to poor vision:</i>
+		<<else>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to blurred vision:</i>
+		<</if>>
 		@@.yellowgreen;<<print cashFormat(25)>>@@
 		<<set _individualCosts += 25>>
 	<</if>>
diff --git a/src/uncategorized/customSlave.tw b/src/uncategorized/customSlave.tw
index 5cc040be217bc9db0d02c02ba1f1a893db0d26fb..153a0f39d139578d5b06fbddae5b4ce09bc95682 100644
--- a/src/uncategorized/customSlave.tw
+++ b/src/uncategorized/customSlave.tw
@@ -1141,30 +1141,24 @@ Skin tone: <span id = "skin">
 <br>
 
 <span id = "eyes">
-<<if $seeExtreme == 1>>
-	<<if $customSlave.eyes == 1>>Normal vision.
-	<<elseif $customSlave.eyes == -1>>Nearsighted.
-	<<else>>Blind.
-	<</if>>
-<<else>>
-	<<if $customSlave.eyes == 1>>Normal vision.
-	<<else>>Nearsighted.
-	<</if>>
+<<if getBestVision($customSlave) === 2>>Normal vision.
+<<elseif getBestVision($customSlave) === 1>>Nearsighted.
+<<else>>Blind.
 <</if>>
 </span>
 <<link "Normal Vision">>
-	<<set $customSlave.eyes = 1>>
+	<<run eyeSurgery($customSlave, "both", "fix")>>
 	<<CustomSlaveEyes>>
 <</link>>
 |
 <<link "Nearsighted">>
-	<<set $customSlave.eyes = -1>>
+	<<run eyeSurgery($customSlave, "both", "blur")>>
 	<<CustomSlaveEyes>>
 <</link>>
 <<if $seeExtreme == 1>>
 	|
 	<<link "Blind">>
-		<<set $customSlave.eyes = -2>>
+		<<run eyeSurgery($customSlave, "both", "blind")>>
 		<<CustomSlaveEyes>>
 	<</link>>
 <</if>>
@@ -1351,7 +1345,7 @@ Nationality: $customSlave.nationality.
 <br><br>
 
 <<link "Reset custom order form">>
-	<<set $customSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eyes: 1, hears: 0}>>
+	<<set $customSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eye: new App.Entity.EyeState(), hears: 0}>>
 	<<goto "Custom Slave">>
 <</link>>
 
diff --git a/src/uncategorized/freeRangeDairyAssignmentScene.tw b/src/uncategorized/freeRangeDairyAssignmentScene.tw
index acfe4ef9b68ea9b54bba7f44a84bdb14147e6a5b..a9194244ee13df7d11ba407c73460f911dd68e11 100644
--- a/src/uncategorized/freeRangeDairyAssignmentScene.tw
+++ b/src/uncategorized/freeRangeDairyAssignmentScene.tw
@@ -42,15 +42,15 @@ While <<if canWalk($activeSlave) >>walking<<else>>being carried<</if>> to $his d
 			<<setLocalPronouns $slaves[_frdas] 2>>
 			<<set _aroused = true>>
 			<br> The hyper-endowed cum-cow $slaves[_frdas].slaveName is the pride of $dairyName. _He2 is limply hanging on _his2 milking chair, panting heavily because of the constant suction on _his2 dick. _He2 is obviously nearing climax. Soon,
-			/*<<if hasAnyNaturalEyes($slaves[_frdas])>>
+			<<if hasAnyNaturalEyes($slaves[_frdas])>>
 				_his2
 				<<if hasBothNaturalEyes($slaves[_frdas])>>
 					eyes bulge
 				<<else>>
 					eye bulges
 				<</if>>
-				and	@Arkerthan
-			<</if>>*/
+				and
+			<</if>>
 			_his2 muscles tense.
 			<<if $dairyStimulatorsSetting == 1>>
 				<<if $slaves[_frdas].prostate != 0>>
diff --git a/src/uncategorized/multiImplant.tw b/src/uncategorized/multiImplant.tw
index 54953383c66a93dcc62b0be20d5dd791cd298d1c..853b25a7d4b19d247e7f81197553e29befb38b8e 100644
--- a/src/uncategorized/multiImplant.tw
+++ b/src/uncategorized/multiImplant.tw
@@ -140,11 +140,9 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* order here is important, do not change it without good reason */
 	/* eyes */
 	<<if _slaveOrgans.eyes != 0>>
-		<<if ($activeSlave.eyes <= -2) && $activeSlave.eyesImplant == 0>>
+		<<if !hasAnyCyberneticEyes($activeSlave) && getBestVision($activeSlave) === 0>>
 			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
-			<<set $activeSlave.eyes = 1>>
-			<<set $activeSlave.eyeColor = $activeSlave.origEye>>
-			/* no way to salvage original eye color */
+			<<run eyeSurgery($activeSlave, "both", "normal")>>
 			<<set $activeSlave.health -= 20>>
 			<<if $organFarmUpgrade == 2>>
 				<<set $activeSlave.chem += 20>>
@@ -152,16 +150,10 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 			<<set $surgeryType = "unblind">>
 			<br><hr>
 			<<include "Surgery Degradation">>
-		<<elseif $activeSlave.eyesImplant == 1>>
-			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
-			<<set $activeSlave.eyes = 1>>
-			<<set $activeSlave.eyeColor = $activeSlave.origEye>>
-			<<set $activeSlave.health -= 20>>
-			<<if $organFarmUpgrade == 2>>
-				<<set $activeSlave.chem += 20>>
-			<</if>>
-			<<set $surgeryType = "newEyes">>
-			<<include "Surgery Degradation">>
+		<<elseif hasBothCyberneticEyes($activeSlave)>>
+			<br><hr>
+			@@.red;Could not implant eyes on $activeSlave.slaveName: $he has ocular implants installed, visit the remote surgery to install manually.@@
+			<<set $completedOrgans.push(_slaveOrgans.eyes)>>
 		<<else>>
 			<br><hr>
 			@@.red;Could not implant eyes on $activeSlave.slaveName: $he is not blind.@@
@@ -1015,8 +1007,9 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 				<br><hr>
 				<<switch _p.id>>
 				<<case "ocular">>
-					<<if $activeSlave.eyes < -1>>
-						<<set $activeSlave.eyesImplant = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "ocular implant">>
+					<<if getBestVision($activeSlave) === 0>>
+						<<run eyeSurgery($activeSlave, "both", "cybernetic"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
+						<<set $activeSlave.health -= 20, $surgeryType = "ocular implant">>
 						<<include "Surgery Degradation">>
 					<<else>>
 						//Since $he has working eyes the <<= setup.prosthetics.ocular.name>> will be put into storage.//
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 3b00882385983d3e0047d7d9bfd25d2f03382ba3..2b5642e5e0163c9cc11ac106e74bf535e3b5b291 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -852,7 +852,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<<if canDoAnal($activeSlave)>>
 		| <<link "Put $him in $his place">>
 			<<replace "#introResult">>
-				You stand up and tell $him to strip. $He hesitates, staring at you in dawning apprehension, until $he <<if canSee($activeSlave)>>sees<<else>>realizes<</if>> that you're stepping into a strap-on. $He unconsciously takes a step backward, but that's as far as $he gets before you cover the ground between you, grab $him by the throat, and push $his back until $he falls onto the couch. You drag the head of the fake phallus down over $his pussylips, and $he shivers, but you keep going, telling $him that you'll only be fucking $him there when $he's good. When $he's bad, you'll assfuck $him. $His eyes fly open and $he tries to struggle, but you give $him a warning slap and then push yourself home. $He starts to cry, more from hopelessness than anal pain, knowing that @@.mediumorchid;you're a slaveowner like any other,@@ more likely to @@.gold;abuse $him@@ than be sympathetic.
+				You stand up and tell $him to strip. $He hesitates, staring at you in dawning apprehension, until $he <<if canSee($activeSlave)>>sees<<else>>realizes<</if>> that you're stepping into a strap-on. $He unconsciously takes a step backward, but that's as far as $he gets before you cover the ground between you, grab $him by the throat, and push $his back until $he falls onto the couch. You drag the head of the fake phallus down over $his pussylips, and $he shivers, but you keep going, telling $him that you'll only be fucking $him there when $he's good. When $he's bad, you'll assfuck $him. <<if hasBothEyes($activeSlave)>>$His eyes fly open and $he <<else>> $He <</if>> tries to struggle, but you give $him a warning slap and then push yourself home. $He starts to cry, more from hopelessness than anal pain, knowing that @@.mediumorchid;you're a slaveowner like any other,@@ more likely to @@.gold;abuse $him@@ than be sympathetic.
 			<</replace>>
 			<<set $activeSlave.devotion -= 5>>
 			<<set $activeSlave.trust -= 5>>
@@ -1351,7 +1351,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Sterilize $him">>
 		<<replace "#introResult">>
-			You drag $him to the remote surgery and strap $him face-up with $his<<if $activeSlave.bellyPreg >= 1500>> pregnant<</if>> stomach bare. $He doesn't understand what's coming for a while, even as $his belly is carefully cleaned and disinfected. $He begins to panic at the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sound<<else>>touch<</if>> of the approaching surgical manipulators, cringing as they cut into $his<<if $activeSlave.bellyPreg >= 1500>> rounded<</if>> abdomen. $He squeals in horror as $his<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.33>> swollen womb, still moving with life,<<elseif $activeSlave.bellyPreg >= 1500>> pregnant womb<<else>> womb<</if>> and ovaries are extracted before $his eyes.
+			You drag $him to the remote surgery and strap $him face-up with $his<<if $activeSlave.bellyPreg >= 1500>> pregnant<</if>> stomach bare. $He doesn't understand what's coming for a while, even as $his belly is carefully cleaned and disinfected. $He begins to panic at the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sound<<else>>touch<</if>> of the approaching surgical manipulators, cringing as they cut into $his<<if $activeSlave.bellyPreg >= 1500>> rounded<</if>> abdomen. $He squeals in horror as $his<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.33>> swollen womb, still moving with life,<<elseif $activeSlave.bellyPreg >= 1500>> pregnant womb<<else>> womb<</if>> and ovaries are extracted<<if canSee($activeSlave)>> before $his eyes<</if>>.
 			<<if $activeSlave.fetish == "pregnancy" && $activeSlave.pregKnown == 1>>
 				<<if ($activeSlave.preg > $activeSlave.pregData.normalBirth/1.6) && (canSee($activeSlave))>>
 					$He watches $his exposed womb with absolute terror in $his eyes. A small handprint bulges against the organ; $he sobs once before $his mind @@.red;shatters at the sight.@@
@@ -2131,13 +2131,13 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 					As you release $him $he swings up with difficulty, but @@.hotpink;$he seems very pleased@@ to stay plugged for now.
 					<<set $activeSlave.devotion += 5>>
 				<<else>>
-					<<if $activeSlave.eyes <= -2>>$His face swells<<else>>$His eyes swell<</if>> with shock, but $he does not flinch or make a sound. When $he seems full enough, you shut off the valve, deciding to leave $him plugged for now. $He waddles off @@.hotpink;without apparent resentment@@ of this treatment.
+					<<if !hasBothEyes($activeSlave)>>$His face swells<<else>>$His eyes swell<</if>> with shock, but $he does not flinch or make a sound. When $he seems full enough, you shut off the valve, deciding to leave $him plugged for now. $He waddles off @@.hotpink;without apparent resentment@@ of this treatment.
 					<<set $activeSlave.devotion += 4>>
 				<</if>>
 			<<else>>
 				<<if $activeSlave.fetish == "cumslut">>
 					<<if $activeSlave.fetishKnown == 0>>
-						<<if $activeSlave.eyes <= -2>>$His face swells<<else>>$His eyes swell<</if>> with profound horror at the realization of what is happening, and begin to leak tears as $he realizes that having $his body swell with semen is getting $him horny. @@.green;$He's a cum fetishist!@@
+						<<if !hasBothEyes($activeSlave)>>$His face swells<<else>>$His eyes swell<</if>> with profound horror at the realization of what is happening, and begin to leak tears as $he realizes that having $his body swell with semen is getting $him horny. @@.green;$He's a cum fetishist!@@
 						<<set $activeSlave.fetishKnown = 1>>
 					<<else>>
 						$He groans with guilty pleasure, feeling $his muscles ache and $his torso swell. $He does not orgasm from $his "meal," but feels much more pleasure than $he's willing to admit.
@@ -2236,7 +2236,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Give $him all the cum $he can drink">>
 			<<replace "#introResult">>
-				You securely restrain your new slave; for both $his own safety and so $he can't object to $his meal. You reassure $him and order $him to close $his eyes and open wide for a treat. <<if $activeSlave.eyes <= -2>>Blind as $he is<<else>>Since $his eyes are contentedly closed<</if>>, $he doesn't see you reach for one of the phallus-tipped feeding tubes located throughout your penthouse. Before $he knows what's happening, you've forced the cocktube firmly into $his gaping maw and anchored it to $his head, causing $his entire body to tense up <<if $activeSlave.devotion <= 20>>in panic <</if>>once more.
+				You securely restrain your new slave; for both $his own safety and so $he can't object to $his meal. You reassure $him <<if hasAnyEyes($activeSlave)>> and order $him to close $his eyes <</if>> and open wide for a treat. <<if canSee($activeSlave)>>Since $his eyes are contentedly closed<<else>>Blind as $he is<</if>>, $he doesn't see you reach for one of the phallus-tipped feeding tubes located throughout your penthouse. Before $he knows what's happening, you've forced the cocktube firmly into $his gaping maw and anchored it to $his head, causing $his entire body to tense up <<if $activeSlave.devotion <= 20>>in panic <</if>>once more.
 				<br><br>
 				You pause to examine the tap, making sure it is set to cum, before releasing the valve and unleashing a steady flow. The feeder bucks against $his face as thick, white liquid rushes downward towards the helpless slave.
 				<<if $activeSlave.devotion > 20>>
@@ -2250,13 +2250,13 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 						You stroke $his gurgling stomach slowly, before turning off the valve, unfastening $his binds and leaving your @@.hotpink;very pleased@@ cum balloon to savor $his meal. You'll make sure to set aside enough cum from your cumslaves for $him to drink $himself stupid with, and, glancing over your shoulder, find $him eagerly masturbating to $his cum filled gut. $He'll probably intend to keep $himself filled to the brim, which is fine by you.
 						<<set $activeSlave.devotion += 5>>
 					<<else>>
-						<<if $activeSlave.eyes <= -2>>$His face swells<<else>>$His eyes swell<</if>> with horror, but $he does not flinch or make a sound. $His belly also swells, from a few months of apparent pregnancy, to 'spent too much time at the buffet', till it finally stops wobbling, grows taut and forces $his belly button into an outie. Satisfied, you shut off the valve, deciding to leave $him to consider $his cum filled middle. Time passes. $His <<if $activeSlave.eyes <= -2>>blind face is distant<<else>>eyes are glazed over<</if>>, but $he tolerates you slowly stroking $his stomach @@.hotpink;without apparent resentment.@@ You'll make sure to keep $him like this for the time being.
+						<<if !hasBothEyes($activeSlave)>>$His face swells<<else>>$His eyes swell<</if>> with horror, but $he does not flinch or make a sound. $His belly also swells, from a few months of apparent pregnancy, to 'spent too much time at the buffet', till it finally stops wobbling, grows taut and forces $his belly button into an outie. Satisfied, you shut off the valve, deciding to leave $him to consider $his cum filled middle. Time passes. $His <<if canSee($activeSlave)>>eyes are glazed over<<else>>blind face is distant<</if>>, but $he tolerates you slowly stroking $his stomach @@.hotpink;without apparent resentment.@@ You'll make sure to keep $him like this for the time being.
 						<<set $activeSlave.devotion += 4>>
 					<</if>>
 				<<else>>
 					<<if $activeSlave.fetish == "cumslut">>
 						<<if $activeSlave.fetishKnown == 0>>
-							<<if $activeSlave.eyes <= -2>>$His face tenses<<else>>$His eyes swell<</if>> with profound horror at the realization of what is filling $him with a constant irresistible pressure, and $he begins to leak tears as $he realizes that $his rapidly swelling body is getting $him horny. @@.green;$He's a cum fetishist!@@
+							<<if !hasBothEyes($activeSlave)>>$His face tenses<<else>>$His eyes swell<</if>> with profound horror at the realization of what is filling $him with a constant irresistible pressure, and $he begins to leak tears as $he realizes that $his rapidly swelling body is getting $him horny. @@.green;$He's a cum fetishist!@@
 							<<set $activeSlave.fetishKnown = 1>>
 						<<else>>
 							$His belly steadily swells from a few months of apparent pregnancy, to "spent too much time at the buffet", till it finally stops wobbling, grows taut and forces $his belly button into an outie. Your cow groans not only with the weight and quickly mounting pressure, but with guilt as well. $He does not orgasm from $his gluttonous "meal," but feels much more pleasure than $he's willing to admit.
@@ -2277,11 +2277,11 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Give $him all the milk $he can drink">>
 			<<replace "#introResult">>
-				You securely restrain your new slave; for both $his own safety and so $he can't object to $his meal. You reassure $him and order $him to close $his eyes and open wide for a treat. <<if $activeSlave.eyes <= -2>>Blind as $he is<<else>>Since $his eyes are contentedly closed<</if>>, $he doesn't see you reach for one of the phallus-tipped feeding tubes located throughout your penthouse. Before $he knows what's happening, you've forced the cocktube firmly into $his gaping maw and anchored it to $his head, causing $his entire body to tense up <<if $activeSlave.devotion <= 20>>in panic <</if>>once more.
+				You securely restrain your new slave; for both $his own safety and so $he can't object to $his meal. You reassure $him <<if hasAnyEyes($activeSlave)>> and order $him to close $his eyes <</if>> and open wide for a treat. <<if canSee($activeSlave)>>Since $his eyes are contentedly closed<<else>>Blind as $he is<</if>>, $he doesn't see you reach for one of the phallus-tipped feeding tubes located throughout your penthouse. Before $he knows what's happening, you've forced the cocktube firmly into $his gaping maw and anchored it to $his head, causing $his entire body to tense up <<if $activeSlave.devotion <= 20>>in panic <</if>>once more.
 				<br><br>
 				You pause to examine the tap, making sure it is set to milk, before releasing the valve and unleashing a steady flow. The feeder bucks against $his face as creamy, white liquid rushes downward towards the helpless slave.
 				<<if $activeSlave.behavioralFlaw == "gluttonous">>
-					<<if $activeSlave.eyes <= -2>>$His face swells<<else>>$His eyes swell<</if>> with horror, but $he does not flinch or make a sound. $His belly also swells, from a few months of apparent pregnancy, to 'spent too much time at the buffet', till it finally stops wobbling, grows taut and forces $his belly button into an outie. Satisfied, you shut off the valve, deciding to leave $him to consider $his milk filled middle. Time passes. $His<<if $activeSlave.eyes <= -2>> blind face is distant<<else>> eyes are glazed over<</if>>, but $he tolerates you slowly stroking $his stomach @@.hotpink;without apparent resentment.@@ You'll make sure to keep $him like this for the time being.
+					<<if !hasBothEyes($activeSlave)>>$His face swells<<else>>$His eyes swell<</if>> with horror, but $he does not flinch or make a sound. $His belly also swells, from a few months of apparent pregnancy, to "spent too much time at the buffet", till it finally stops wobbling, grows taut and forces $his belly button into an outie. Satisfied, you shut off the valve, deciding to leave $him to consider $his milk filled middle. Time passes. $His<<if canSee($activeSlave)>> eyes are glazed over<<else>> blind face is distant<</if>>, but $he tolerates you slowly stroking $his stomach @@.hotpink;without apparent resentment.@@ You'll make sure to keep $him like this for the time being.
 					<<set $activeSlave.devotion += 5>>
 				<<else>>
 					$He gasps in horror, and starts to struggle frantically against $his bonds, <<if $activeSlave.voice != 0>>struggling to scream in panic.<<else>>$his whole body begging to scream.<</if>> However, as the fluid reaches $him, $he seems to despair and resigns $himself to $his fate. As $his belly swells, you find yourself comparing $him first to a binge eater, then some of the chubbier citizens you've seen, a large pregnancy, and finally a water balloon ready to burst. You stop the flow, and rest a hand on $his heaving stomach. $His @@.gold;terrified@@ breathing and distant expression are clearly due to the pain, not lust, but it's also now quite clear to $him who is in charge here. You have little intent on letting $his stomach empty and will be setting aside enough milk to keep $him bloated into submission.
diff --git a/src/uncategorized/pRivalryActions.tw b/src/uncategorized/pRivalryActions.tw
index e7e0be82389a7e727685fbe6d3036d87e1438d89..8a4ce82adf268f8d9b482d734a579677b8c841cc 100644
--- a/src/uncategorized/pRivalryActions.tw
+++ b/src/uncategorized/pRivalryActions.tw
@@ -1144,7 +1144,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<set $hostage.counter.vaginal += 50>>
 		<<set $hostage.counter.anal += 50>>
 		<<set $hostage.counter.mammary += 50>>
-		<<set $hostage.eyes = -2>>
+		<<run eyeSurgery($hostage, "both", "blind")>>
 		<<set $hostage.earPiercing = 2>>
 		<<set $hostage.nosePiercing = 2>>
 		<<set $hostage.nipplesPiercing = 2>>
diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw
index 007a173b650129b3060b36618074853e69128f55..e0d4f4b1f88c9fa6f2b7b7a9295d64729874d137 100644
--- a/src/uncategorized/pePitFight.tw
+++ b/src/uncategorized/pePitFight.tw
@@ -132,7 +132,7 @@ Across the ring, $his opponent's owner nods civilly to you and examines $activeS
 
 <<if !canSee($slaves[$i])>>
 	$His lack of eyesight means certain death.
-<<elseif (($slaves[$i].eyes == -1) && ($slaves[$i].eyewear != "corrective glasses") && ($slaves[$i].eyewear != "corrective contacts")) || ($slaves[$i].eyes == 1 && ($slaves[$i].eyewear == "blurring glasses" || $slaves[$i].eyewear == "blurring contacts"))>>
+<<elseif !canSeePerfectly($slaves[$i])>>
 	$His poor eyesight makes $him a weaker fighter.
 <</if>>
 
diff --git a/src/uncategorized/prestigiousSlave.tw b/src/uncategorized/prestigiousSlave.tw
index c0db336893e2f52cc20d1d4fb031bc750ac2399e..4a838c57bad7050dceb6b90c8d1d3bb294bdc0b7 100644
--- a/src/uncategorized/prestigiousSlave.tw
+++ b/src/uncategorized/prestigiousSlave.tw
@@ -200,7 +200,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.devotion = random(-90,-80)>>
 	<<set $activeSlave.trust = random(-45,-25)>>
 	<<set $activeSlave.health = random(40,60)>>
-	<<set $activeSlave.eyes = -1>>
+	<<run eyeSurgery($activeSlave, "both", "blur")>>
 	<<set $activeSlave.custom.desc = "$His eyes are unsettling; though $his irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
 
 <<case "old-timer">>
@@ -669,7 +669,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.devotion = random(-90,-80)>>
 	<<set $activeSlave.trust = random(-45,-25)>>
 	<<set $activeSlave.health = random(40,60)>>
-	<<set $activeSlave.eyes = -1>>
+	<<run eyeSurgery($activeSlave, "both", "blur")>>
 	<<set $activeSlave.custom.desc = "$His eyes are unsettling; though $his irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
 
 <<case "d old-timer">>
diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw
index 8be35ca1d2174440fa9a170b59fb78c14a97c54b..70a21fbc1f5a6662836276476e195b2b21837478 100644
--- a/src/uncategorized/reAWOL.tw
+++ b/src/uncategorized/reAWOL.tw
@@ -28,7 +28,7 @@
 <<set $activeSlave.health = random(60,80)>>
 <<set $activeSlave.muscles = 50>>
 <<set $activeSlave.weight = random(-10,10)>>
-<<set $activeSlave.eyes = 1>>
+<<run eyeSurgery($activeSlave, "both", "normal")>>
 <<set $activeSlave.hears = 0>>
 <<set $activeSlave.anus = 0>>
 <<set $activeSlave.skill.anal = 0>>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index b029be5062ed722c04dde13ae03d396ca06810aa..080e2b1a6ff9772a06169ee9b1ba45a022c1b86f 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -1623,7 +1623,7 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	<<case "Edo Revivalist">>
 		$He arrives with doubt already clouding $his eyes. It seems $he passed one of the arcology's seedier bars on $his way up to your penthouse; the sight of roaring patrons swilling cheap sake and manhandling whores in loose kimonos does not seem to have been part of $his expectations. As the enslavement process winds on, $he reflexively begins to look around for a means of escape, and slowly collapses into $himself as $he realizes there is none.
 	<<case "Arabian Revivalist">>
-		Your estimation of $him rises through the enslavement process: $he doffs and discards $his conservative business wear without complaint, and stands nude before you, obeying instructions without fuss. There is an indecipherable glint in $his $activeSlave.eyeColor eyes: nerves? Excitement? Challenge, even? Perhaps $he even feels this is an adventure. And that, it will certainly be.
+		Your estimation of $him rises through the enslavement process: $he doffs and discards $his conservative business wear without complaint, and stands nude before you, obeying instructions without fuss. There is an indecipherable glint in $his <<print App.Desc.eyesColor($activeSlave)>>: nerves? Excitement? Challenge, even? Perhaps $he even feels this is an adventure. And that, it will certainly be.
 	<<case "Chinese Revivalist">>
 		$He arrives in a simple, sturdy suit, which $he obviously wore in the correct anticipation of immediately removing and never seeing again. $He cooperates with the enslavement process as best $he can, $his glance confident and watchful. $He's obviously calculating how to get ahead within this new place, and $he pays particularly close attention as the ebb and flow of business through your office brings your various slaves into $his view for the first time.
 	<</switch>>
@@ -1750,4 +1750,4 @@ The call comes in from an office, and you suppress the urge to check whether $as
 
 </span>
 
-<</if>>
\ No newline at end of file
+<</if>>
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index aac45fc372e911b7c795b44b6c391d8095d39f89..5889d4ccc9f87472fc823e4fca387c69e09a1fb8 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -315,7 +315,7 @@
 <</if>>
 <<set $activeSlave.race = _fakeRace>>
 <<set $activeSlave.skin = randomRaceSkin(_fakeRace)>>
-<<set $activeSlave.eyeColor = randomRaceEye(_fakeRace)>>
+<<run setEyeColor($activeSlave, randomRaceEye(_fakeRace))>>
 <<set $activeSlave.hColor = randomRaceHair(_fakeRace)>>
 <<set $activeSlave.override_Race = 1, $activeSlave.override_Skin = 1, $activeSlave.override_H_Color = 1, $activeSlave.override_Eye_Color = 1>>
 
diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw
index fc0921fb9c029aad3fbac2751a1e25e10a5a33a2..0a661e97003476be98dbe114c6692de24554ee4f 100644
--- a/src/uncategorized/reNickname.tw
+++ b/src/uncategorized/reNickname.tw
@@ -194,7 +194,7 @@
 <<if ($activeSlave.intelligence+$activeSlave.intelligenceImplant > 50)>>
 	<<set $qualifiedNicknames.push("smart")>>
 <</if>>
-<<if ($activeSlave.eyes <= -2)>>
+<<if getBestVision($activeSlave) === 0>>
 	<<set $qualifiedNicknames.push("blind")>>
 <</if>>
 <<if ($activeSlave.hears <= -2)>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index aeaf5aa3bc223394885c8a150c44cbbd150229d0..c7cd0d3a5cc7f96849dac2736e9d662ee71a41ae 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -234,7 +234,7 @@
 <<set $activeSlave.pregWeek = $activeSlave.preg>>
 <<set $activeSlave.pregKnown = 1>>
 <<run SetBellySize($activeSlave)>>
-<<set $activeSlave.eyes = -2>>
+<<run eyeSurgery($activeSlave, "both", "blind")>>
 <<set $activeSlave.weight = -100>>
 <<set $activeSlave.fetish = "none">>
 <<set $activeSlave.fetishKnown = 0>>
@@ -939,7 +939,7 @@
 <<set $activeSlave.sexualFlaw = "idealistic">>
 <<set $activeSlave.custom.tattoo = "$He has beautifully detailed set of angel wings tattooed on $his back.">>
 <<set $activeSlave.voice = 3>>
-<<set $activeSlave.origEye = "blue">>
+<<set $activeSlave.eye.origColor = "blue">>
 <<set $activeSlave.origHColor = "blonde">>
 <<set $activeSlave.origSkin = "pale">>
 <<run applyGeneticColor($activeSlave)>>
@@ -984,7 +984,7 @@
 <<set $activeSlave.sexualFlaw = "judgemental">>
 <<set $activeSlave.custom.tattoo = "$He has beautifully detailed set of angel wings tattooed on $his back.">>
 <<set $activeSlave.voice = random(2,3)>>
-<<set $activeSlave.origEye = "amber">>
+<<set $activeSlave.eye.origColor = "amber">>
 <<set $activeSlave.origHColor = "black">>
 <<set $activeSlave.origSkin = "pale">>
 <<run applyGeneticColor($activeSlave)>>
@@ -1442,7 +1442,7 @@
 <<set $activeSlave.voice = 3>>
 <<set $activeSlave.boobShape = "perky">>
 <<set $activeSlave.origSkin = "light">>
-<<set $activeSlave.origEye = "blue">>
+<<set $activeSlave.eye.origColor = "blue">>
 <<set $activeSlave.origHColor = "blonde">>
 <<run applyGeneticColor($activeSlave)>>
 <<set $activeSlave.teeth = "normal">>
@@ -1603,7 +1603,7 @@
 <<set $activeSlave.weight = -70>>
 <<set $activeSlave.boobs = 100>>
 <<set $activeSlave.origHColor = "silver">>
-<<set $activeSlave.origEye = "blue">>
+<<set $activeSlave.eye.origColor = "blue">>
 <<set $activeSlave.origSkin = "dark">>
 <<run applyGeneticColor($activeSlave)>>
 <<if $activeSlave.actualAge < 13>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 3d9e8a53d76c95f72a1dea8bc6934addeedabd17..0cd8d6f7f82b8f77a57cccb050ab6ae91ab3c16e 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -127,37 +127,78 @@ $His $activeSlave.faceShape face is
 <</if>>
 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $activeSlave.eyesImplant == 1>>
-	$He has artificial eyes.
-<<elseif $activeSlave.eyes < -2>>
-	$He has no eyes.
-<<elseif $activeSlave.eyes == -2>>
-	$He is blind.
-<<else>>
-	$He has working
-	<<if $activeSlave.eyes == -1>>
-		eyes, but is nearsighted.
-		[[Correct eyesight|Surgery Degradation][$activeSlave.eyes = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeFix"]]
-	<<elseif $activeSlave.eyes == 1>>
-		eyes and good vision.
-		<<if ($seeExtreme == 1) && $activeSlave.indentureRestrictions < 1>>
-			[[Blur vision|Surgery Degradation][$activeSlave.eyes = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeBlur"]]
-		<</if>>
+$He has <<print App.Desc.eyesType($activeSlave)>><<if hasAnyEyes($activeSlave)>>,
+they are <<print App.Desc.eyesVision($activeSlave)>>
+<</if>>.
+/* eye blur and fix */
+<<if hasAnyEyes($activeSlave)>>
+	<<set _n = 0>>
+	<<if getLeftEyeVision($activeSlave) === 2 && getLeftEyeType($activeSlave) === 1>>
+		<<set _n++>>
+		[[Blur left eye|Surgery Degradation][eyeSurgery($activeSlave, "left", "blur"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "eyeBlur"]]
+	<</if>>
+	<<if getRightEyeVision($activeSlave) === 2 && getRightEyeType($activeSlave) === 1>>
+		<<set _n++>>
+		[[Blur right eye|Surgery Degradation][eyeSurgery($activeSlave, "right", "blur"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "eyeBlur"]]
+	<</if>>
+	<<if _n === 2>>
+		[[Blur both eyes|Surgery Degradation][eyeSurgery($activeSlave, "both", "blur"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeBlur"]]
+	<</if>>
+	<<set _n = 0>>
+	<<if getLeftEyeVision($activeSlave) === 1 && getLeftEyeType($activeSlave) === 1>>
+		<<set _n++>>
+		[[Fix left eye|Surgery Degradation][eyeSurgery($activeSlave, "left", "fix"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "eyeFix"]]
+	<</if>>
+	<<if getRightEyeVision($activeSlave) === 1 && getRightEyeType($activeSlave) === 1>>
+		<<set _n++>>
+		[[Fix right eye|Surgery Degradation][eyeSurgery($activeSlave, "right", "fix"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "eyeFix"]]
+	<</if>>
+	<<if _n === 2>>
+		[[Fix both eyes|Surgery Degradation][eyeSurgery($activeSlave, "both", "fix"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeFix"]]
 	<</if>>
 <</if>>
 
 <<if ($seeExtreme == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-		<<if $activeSlave.eyes > -3>>
-			<<if $activeSlave.eyes > -2>>
-				| [[Blind|Surgery Degradation][$activeSlave.eyes = -2,$activeSlave.eyeColor = "dulled " + $activeSlave.origEye,$activeSlave.eyeColor = $activeSlave.origEye,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "blind"]]
+		/* blind */
+		<<set _n = 0>>
+		<<if getLeftEyeVision($activeSlave) > 0 && getLeftEyeType($activeSlave) === 1>>
+			<<set _n++>>
+			| [[Blind left eye|Surgery Degradation][eyeSurgery($activeSlave, "left", "blind"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "blind"]]
+		<</if>>
+		<<if getRightEyeVision($activeSlave) > 0 && getRightEyeType($activeSlave) === 1>>
+			<<set _n++>>
+			| [[Blind right eye|Surgery Degradation][eyeSurgery($activeSlave, "right", "blind"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "blind"]]
+		<</if>>
+		<<if _n === 2>>
+			| [[Blind both eyes|Surgery Degradation][eyeSurgery($activeSlave, "both", "blind"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "blind"]]
+		<</if>>
+		/* remove */
+		<<set _n = 0>>
+		<<if hasLeftEye($activeSlave)>>
+			<<set _n++>>
+			| [[Remove left eye|Surgery Degradation][eyeSurgery($activeSlave, "left", "remove"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "remove eyes"]]
+		<</if>>
+		<<if hasRightEye($activeSlave)>>
+			<<set _n++>>
+			| [[Remove right eye|Surgery Degradation][eyeSurgery($activeSlave, "right", "remove"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "remove eyes"]]
+		<</if>>
+		<<if _n === 2>>
+			| [[Remove both eyes|Surgery Degradation][eyeSurgery($activeSlave, "both", "remove"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "remove eyes"]]
+		<</if>>
+		/* implant */
+		<<if isProstheticAvailable($activeSlave, "ocular")>>
+			<<set _n = 0>>
+			<<if !hasLeftEye($activeSlave)>>
+				<<set _n++>>
+				| [[Give left eye ocular implant|Surgery Degradation][eyeSurgery($activeSlave, "left", "cybernetic"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "ocular implant"]]
 			<</if>>
-			| [[Remove eyes|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "remove eyes", surgeryAmp($activeSlave, "right eye"), surgeryAmp($activeSlave, "left eye")]]
-			/* eyes are set in Surgery Degradation */
-			<<if (canSee($activeSlave))>>//This will greatly restrict $him//<</if>>
-		<<else>>
-			<<if isProstheticAvailable($activeSlave, "ocular")>>
-				| [["Give " + $him + " ocular implants"|Surgery Degradation][$activeSlave.eyesImplant = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "ocular implant"]]
+			<<if !hasRightEye($activeSlave)>>
+				<<set _n++>>
+				| [[Give right eye ocular implant|Surgery Degradation][eyeSurgery($activeSlave, "right", "cybernetic"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "ocular implant"]]
+			<</if>>
+			<<if _n === 2>>
+				| [[Give ocular implants|Surgery Degradation][eyeSurgery($activeSlave, "both", "cybernetic"), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "ocular implant"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -1513,40 +1554,40 @@ Alter $his race:
 <<if $activeSlave.indentureRestrictions < 1>>
 	$He is $activeSlave.race<<if $activeSlave.race != $activeSlave.origRace>>, but was originally $activeSlave.origRace<</if>>. Surgically alter $him to look more:
 	<<if $activeSlave.race != "white">>
-		[[White|Surgery Degradation][$activeSlave.race = "white", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[White|Surgery Degradation][$activeSlave.race = "white", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "latina">>
-		[[Latina|Surgery Degradation][$activeSlave.race = "latina", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Latina|Surgery Degradation][$activeSlave.race = "latina", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "black">>
-		[[Black|Surgery Degradation][$activeSlave.race = "black", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Black|Surgery Degradation][$activeSlave.race = "black", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "asian">>
-		[[Asian|Surgery Degradation][$activeSlave.race = "asian", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Asian|Surgery Degradation][$activeSlave.race = "asian", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "middle eastern">>
-		[[Middle Eastern|Surgery Degradation][$activeSlave.race = "middle eastern", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Middle Eastern|Surgery Degradation][$activeSlave.race = "middle eastern", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "indo-aryan">>
-		[[Indo-Aryan|Surgery Degradation][$activeSlave.race = "indo-aryan", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Indo-Aryan|Surgery Degradation][$activeSlave.race = "indo-aryan", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "pacific islander">>
-		[[Pacific Islander|Surgery Degradation][$activeSlave.race = "pacific islander", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Pacific Islander|Surgery Degradation][$activeSlave.race = "pacific islander", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "malay">>
-		[[Malay|Surgery Degradation][$activeSlave.race = "malay", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Malay|Surgery Degradation][$activeSlave.race = "malay", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "amerindian">>
-		[[Amerindian|Surgery Degradation][$activeSlave.race = "amerindian", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Amerindian|Surgery Degradation][$activeSlave.race = "amerindian", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "southern european">>
-		[[Southern European|Surgery Degradation][$activeSlave.race = "southern european", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Southern European|Surgery Degradation][$activeSlave.race = "southern european", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "semitic">>
-		[[Semitic|Surgery Degradation][$activeSlave.race = "semitic", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Semitic|Surgery Degradation][$activeSlave.race = "semitic", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "mixed race">>
-		[[Mixed Race|Surgery Degradation][$activeSlave.race = "mixed race", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), $activeSlave.eyeColor = randomRaceEye($activeSlave.race), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]]
+		[[Mixed Race|Surgery Degradation][$activeSlave.race = "mixed race", $activeSlave.skin = randomRaceSkin($activeSlave.race), $activeSlave.hColor = randomRaceHair($activeSlave.race), setEyeColor($activeSlave, randomRaceEye($activeSlave.race)), cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]]
 	<</if>>
 <<else>>
 	//$His indenture forbids elective surgery//
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index b898eb3af00aa1128c0ff7425dfe4b4fab689e37..5b24622594fefecc4cb348b886bcdacaeb541f9a 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -764,27 +764,30 @@
 			<</if>>
 		<</if>>
 	<</if>>
-	<<if $slaves[$i].eyes <= -3>>
-		<<if !hasEyeColorRule($slaves[$i],$defaultRules)>>
-			<<if ($slaves[$i].eyeColor != $HeadGirl.eyeColor, $slaves[$i].eyes == -3)>>
-				<<set $slaves[$i].eyeColor = $HeadGirl.eyeColor>>
-				$HeadGirl.slaveName gives $slaves[$i].slaveName $slaves[$i].eyeColor glass eyes, to match _his2 own eyes, since with nymphomania comes narcissism.
-			<</if>>
-		<</if>>
-	<<elseif $slaves[$i].eyesImplant == 1>>
-		<<if !hasEyeColorRule($slaves[$i],$defaultRules)>>
-			<<if ($slaves[$i].eyeColor != $HeadGirl.eyeColor)>>
-				<<set $slaves[$i].eyeColor = $HeadGirl.eyeColor>>
-				$HeadGirl.slaveName changes $slaves[$i].slaveName $slaves[$i].eyeColor eye lenses, to match _his2 own eyes, since with nymphomania comes narcissism.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if !hasEyeColorRule($slaves[$i],$defaultRules)>>
-			<<if ($slaves[$i].eyeColor != $HeadGirl.eyeColor)>>
-				<<set $slaves[$i].eyeColor = $HeadGirl.eyeColor>>
-				$HeadGirl.slaveName gives $slaves[$i].slaveName $slaves[$i].eyeColor contact lenses, to match _his2 own eyes, since with nymphomania comes narcissism.
-			<</if>>
-		<</if>>
+
+	<<if !hasEyeColorRule($slaves[$i], $defaultRules)>>
+	/* HG wants sub slave to have same eye color as her */
+	/* make sure the sub slave has both eyes, missing ones are replaced with glass */
+	<<if !hasLeftEye($slaves[$i])>>
+		<<run eyeSurgery($slaves[$i], "left", "glass")>>
+	<</if>>
+	<<if !hasRightEye($slaves[$i])>>
+		<<run eyeSurgery($slaves[$i]), "right", "glass">>
+	<</if>>
+
+	/* get eye colors, HG can be expected to have at least one working eye due to job requirements */
+	<<set _left = hasLeftEye($HeadGirl) ? getLeftEyeColor($HeadGirl) : getRightEyeColor($HeadGirl)>>
+	<<set _right = hasRightEye($HeadGirl) ? getRightEyeColor($HeadGirl) : _left>>
+
+	/* make sure the slave has the same eye color as the HG */
+	<<if getLeftEyeColor($slaves[$i]) !== _left>>
+		<<run setEyeColor($slaves[$i], _left, "left")>>
+		$HeadGirl.slaveName <<if getLeftEyeType($slaves[$i] === 3)>> changes <<else>> gives <</if>> $slaves[$i].slaveName _left <<if getLeftEyeType($slaves[$i]) === 3>> eye lenses <<elseif getLeftEyeType($slaves[$i]) === 2>> glass eyes <<else>> contact lenses <</if>>, to match _his2 own left eye, since with nymphomania comes narcissism.
+	<</if>>
+	<<if getRightEyeColor($slaves[$i]) !== _right>>
+		<<run setEyeColor($slaves[$i], _right, "right")>>
+		$HeadGirl.slaveName <<if getRightEyeType($slaves[$i] === 3)>> changes <<else>> gives <</if>> $slaves[$i].slaveName _right <<if getLeftRightType($slaves[$i]) === 3>> eye lenses <<elseif getLeftRightType($slaves[$i]) === 2>> glass eyes <<else>> contact lenses <</if>>, to match _his2 own right eye, since with nymphomania comes narcissism.
+	<</if>>
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 4efa182534b205ceda41ef2d1a1a06e86c7a46ad..69ddc3c8570217c76c7c5f42c99e200618a7e611 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -6032,7 +6032,7 @@
 
 <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">>
 	<<set _visionFlag = 0>>
-	<<if $slaves[$i].eyes <= -2>>
+	<<if getBestVision($slaves[$i]) === 0>>
 		<<if $slaves[$i].hears <= -2>>
 			<<if $slaves[$i].devotion > 50>>
 				Even though $he is blind and deaf, $he is devoted enough to you to allow $himself to lower $his guard. $He becomes @@.mediumaquamarine;trusting@@ of your ability to keep $him safe.
@@ -6086,8 +6086,8 @@
 			<</if>>
 		<</if>>
 		<<set _visionFlag = -2>>
-	<<elseif $slaves[$i].eyes == -1>>
-		<<if ($slaves[$i].eyewear != "corrective glasses") && ($slaves[$i].eyewear != "corrective contacts")>>
+	<<elseif getBestVision($slaves[$i]) === 1>>
+		<<if !canSeePerfectly($slaves[$i])>>
 			<<if $slaves[$i].devotion > 50>>
 				$His vision may be clouded but it doesn't get in the way of $his devotion to you.
 			<<elseif $slaves[$i].devotion > 20>>
@@ -6102,8 +6102,8 @@
 			<</if>>
 			<<set _visionFlag = -1>>
 		<</if>>
-	<<elseif $slaves[$i].eyes == 1>>
-		<<if ($slaves[$i].eyewear == "blurring glasses") || ($slaves[$i].eyewear == "blurring contacts")>>
+	<<elseif getBestVision($slaves[$i]) === 2>>
+		<<if !canSeePerfectly($slaves[$i])>>
 			<<if $slaves[$i].devotion > 50>>
 				$He tolerates the annoyance of blurred vision induced by $his eyewear.
 			<<elseif $slaves[$i].devotion > 20>>
@@ -7683,10 +7683,10 @@
 	<</if>>
 
 <<else>> /* FUCKDOLL PHYSICAL EFFECTS */
-	<<if $slaves[$i].eyes > 0>>
+	<<if getBestVision($slaves[$i]) > 0>>
 		<<if $slaves[$i].fuckdoll > random(20,100)>>
 			$His suit blinds $him, and $his @@.mediumorchid;vision worsens@@ from long disuse.
-			<<set $slaves[$i].eyes = -1>>
+			<<run eyeSurgery($slaves[$i], "both", "blind")>>
 		<</if>>
 	<</if>>
 	<<if $slaves[$i].hears >= 0>>
diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw
index c460b2846a383a5f297231e8394dfdffc008bb09..fc540e02f2386bb1b15cfb8859ca87d944492f8a 100644
--- a/src/uncategorized/salon.tw
+++ b/src/uncategorized/salon.tw
@@ -26,33 +26,29 @@
 /* EYES */
 
 <br><br>
-<<if $activeSlave.pupil == "">>
-	<<set $activeSlave.pupil = "circular">>
-<</if>>
-<<if $activeSlave.sclerae == "">>
-	<<set $activeSlave.sclerae = "white">>
-<</if>>
-<<if $activeSlave.eyesImplant == 1>>
-	$He has artificial eyes, and $he
+<<if getBestVision($activeSlave) === 0>>
+	$He is blind, and
 	<<if $activeSlave.eyewear == "none">>
 		has no eyewear.
 	<<else>>
 		is wearing $activeSlave.eyewear. [[Remove|Salon][$activeSlave.eyewear = "none"]]
 	<</if>>
-	//Blurring options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	<br>
-<<elseif $activeSlave.eyes < -1>>
-	$He is blind, and
+<<elseif anyVisionEquals($activeSlave, 1)>>
+	$He is nearsighted, and $he
 	<<if $activeSlave.eyewear == "none">>
 		has no eyewear.
 	<<else>>
 		is wearing $activeSlave.eyewear. [[Remove|Salon][$activeSlave.eyewear = "none"]]
 	<</if>>
+	//Nearsightedness will impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-<<elseif $activeSlave.eyes > -1>>
+	| [[Corrective glasses|Salon][$activeSlave.eyewear = "corrective glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Corrective contacts|Salon][$activeSlave.eyewear = "corrective contacts",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;
+<<else>>
 	$His vision is normal, and $he
 	<<if $activeSlave.eyewear == "none">>
 		has no eyewear.
@@ -64,121 +60,159 @@
 	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	| [[Blurring glasses|Salon][$activeSlave.eyewear = "blurring glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	| [[Blurring contacts|Salon][$activeSlave.eyewear = "blurring contacts",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+<</if>>
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;
+Custom glass eyes and cosmetic lenses:
+$He has <<print App.Desc.eyesType($activeSlave)>><<if hasAnyEyes($activeSlave)>>, they are <<print App.Desc.eyeColor($activeSlave)>><</if>>.
+
+/* remove lenses */
+<<set _n = 0>>
+<<if hasLeftEye($activeSlave) && getLeftEyeColor($activeSlave) !== getGeneticEyeColor($activeSlave, "left")>>
+	<<set _n++>>
+	[[Remove left lens|Salon][resetEyeColor($activeSlave, "left")]]
+<</if>>
+<<if hasRightEye($activeSlave) && getRightEyeColor($activeSlave) !== getGeneticEyeColor($activeSlave, "right")>>
+	<<set _n++>>
+	<<if _n > 0>>|<</if>>
+	[[Remove right lens|Salon][resetEyeColor($activeSlave, "right")]]
+<</if>>
+<<if _n === 2>>
+	| [[Remove both lenses|Salon][resetEyeColor($activeSlave, "both")]]
+<</if>>
+/* remove glass eyes */
+<<set _n = 0>>
+<<if getLeftEyeType($activeSlave) === 2>>
+	<<set _n++>>
+	[[Remove left glass eye|Salon][eyeSurgery($activeSlave, "left", "remove")]]
+<</if>>
+<<if getRightEyeType($activeSlave) === 2>>
+	<<set _n++>>
+	<<if _n > 0>>|<</if>>
+	[[Remove right glass eye|Salon][eyeSurgery($activeSlave, "right", "remove")]]
+<</if>>
+<<if _n === 2>>
+	| [[Remove both glass eyes|Salon][eyeSurgery($activeSlave, "both", "remove")]]
+<</if>>
+
+<<if hasBothEyes($activeSlave)>>
+	//Change what $his eyes look like://
+<<elseif hasAnyEyes($activeSlave)>>
+	//Change what $his eye looks like or give $him a new glass eye://
 <<else>>
-	$He is nearsighted, and $he
-	<<if $activeSlave.eyewear == "none">>
-		has no eyewear.
-	<<else>>
-		is wearing $activeSlave.eyewear. [[Remove|Salon][$activeSlave.eyewear = "none"]]
-	<</if>>
-	//Nearsightedness will impede performance on some assignments.//
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Corrective glasses|Salon][$activeSlave.eyewear = "corrective glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	| [[Corrective contacts|Salon][$activeSlave.eyewear = "corrective contacts",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	//Choose what kind of glass eyes you want $him to have://
 <</if>>
 
-<<if $activeSlave.eyesImplant == 0>>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Side:
+[[Left|Salon][$artificialEyeSide = "left"]]
+| [[Right|Salon][$artificialEyeSide = "right"]]
+| [[Both|Salon][$artificialEyeSide = "both"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Iris:
+[[Amber|Salon][$artificialEyeColor = "amber"]]
+| [[Black|Salon][$artificialEyeColor = "black"]]
+| [[Blue|Salon][$artificialEyeColor = "blue"]]
+| [[Brown|Salon][$artificialEyeColor = "brown"]]
+| [[Green|Salon][$artificialEyeColor = "green"]]
+| [[Hazel|Salon][$artificialEyeColor = "hazel"]]
+| [[Orange|Salon][$artificialEyeColor = "orange"]]
+| [[Pale-Grey|Salon][$artificialEyeColor = "pale-grey"]]
+| [[Pink|Salon][$artificialEyeColor = "pink"]]
+| [[Red|Salon][$artificialEyeColor = "red"]]
+| [[Sky-Blue|Salon][$artificialEyeColor = "sky-blue"]]
+| [[Turquoise|Salon][$artificialEyeColor = "turquoise"]]
+| [[White|Salon][$artificialEyeColor = "white"]]
+| [[Yellow|Salon][$artificialEyeColor = "yellow"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pupil:
+[[Circular|Salon][$artificialEyeShape = "circular"]]
+| [[Almond-Shaped|Salon][$artificialEyeShape = "almond-shaped"]]
+| [[Bright|Salon][$artificialEyeShape = "bright"]]
+| [[Catlike|Salon][$artificialEyeShape = "catlike"]]
+| [[Demonic|Salon][$artificialEyeShape = "demonic"]]
+| [[Devilish|Salon][$artificialEyeShape = "devilish"]]
+| [[Goat-Like|Salon][$artificialEyeShape = "goat-like"]]
+| [[Heart-Shaped|Salon][$artificialEyeShape = "heart-shaped"]]
+| [[Hypnotic|Salon][$artificialEyeShape = "hypnotic"]]
+| [[Serpent-Like|Salon][$artificialEyeShape = "serpent-like"]]
+| [[Star-Shaped|Salon][$artificialEyeShape = "star-shaped"]]
+| [[Teary|Salon][$artificialEyeShape = "teary"]]
+| [[Vacant|Salon][$artificialEyeShape = "vacant"]]
+| [[Wide-Eyed|Salon][$artificialEyeShape = "wide-eyed"]]
+
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Sclera:
+[[White|Salon][$artificialEyeFill = "white"]]
+| [[Amber|Salon][$artificialEyeFill = "amber"]]
+| [[Black|Salon][$artificialEyeFill = "black"]]
+| [[Blue|Salon][$artificialEyeFill = "blue"]]
+| [[Brown|Salon][$artificialEyeFill = "brown"]]
+| [[Green|Salon][$artificialEyeFill = "green"]]
+| [[Hazel|Salon][$artificialEyeFill = "hazel"]]
+| [[Orange|Salon][$artificialEyeFill = "orange"]]
+| [[Pale-Grey|Salon][$artificialEyeFill = "pale-grey"]]
+| [[Pink|Salon][$artificialEyeFill = "pink"]]
+| [[Red|Salon][$artificialEyeFill = "red"]]
+| [[Sky-Blue|Salon][$artificialEyeFill = "sky-blue"]]
+| [[Turquoise|Salon][$artificialEyeFill = "turquoise"]]
+| [[Yellow|Salon][$artificialEyeFill = "yellow"]]
+
+<<if $artificialEyeSide != "" && $artificialEyeColor != "">>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Custom cosmetic lenses:
-	<<if $activeSlave.eyes > -3>>
-		<<if $activeSlave.geneticQuirks.heterochromia != 0 && $activeSlave.geneticQuirks.heterochromia != 1 && $activeSlave.geneticQuirks.heterochromia != $activeSlave.origEye>>
-			$He has one $activeSlave.eyeColor eye and one $activeSlave.geneticQuirks.heterochromia eye.
-		<<else>>
-			$His eyes are $activeSlave.eyeColor.
+	<<link "Give" "Salon">>
+		/* make sure the eye(s) exists: give glass eye if there is none */
+		<<if ($artificialEyeSide === "left" || $artificialEyeSide === "both") && getLeftEyeType($activeSlave) === 0>>
+			<<run eyeSurgery($activeSlave, "left", "glass")>>
 		<</if>>
-		<<if $activeSlave.origEye != $activeSlave.eyeColor>>
-			[[Remove lenses|Salon][$activeSlave.eyeColor = $activeSlave.origEye]] or //choose new ones://
-		<<else>>
-			//Choose $his cosmetic lenses://
+		<<if ($artificialEyeSide === "right" || $artificialEyeSide === "both") && getRightEyeType($activeSlave) === 0>>
+			<<run eyeSurgery($activeSlave, "right", "glass")>>
 		<</if>>
-	<<elseif $activeSlave.eyes == -3>>
-		$His glass eyes are $activeSlave.eyeColor. [[Remove glass eyes|Salon][$activeSlave.eyes = -4]] or //choose new ones://
-	<<else>>
-		$He has no eyes. //Choose what kind of glass eyes you want $him to have://
-	<</if>>
 
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	Iris:
-	[[Amber|Salon][$artificialEyeColor = "amber"]]
-	| [[Black|Salon][$artificialEyeColor = "black"]]
-	| [[Blue|Salon][$artificialEyeColor = "blue"]]
-	| [[Brown|Salon][$artificialEyeColor = "brown"]]
-	| [[Green|Salon][$artificialEyeColor = "green"]]
-	| [[Hazel|Salon][$artificialEyeColor = "hazel"]]
-	| [[Orange|Salon][$artificialEyeColor = "orange"]]
-	| [[Pale-Grey|Salon][$artificialEyeColor = "pale-grey"]]
-	| [[Pink|Salon][$artificialEyeColor = "pink"]]
-	| [[Red|Salon][$artificialEyeColor = "red"]]
-	| [[Sky-Blue|Salon][$artificialEyeColor = "sky-blue"]]
-	| [[Turquoise|Salon][$artificialEyeColor = "turquoise"]]
-	| [[White|Salon][$artificialEyeColor = "white"]]
-	| [[Yellow|Salon][$artificialEyeColor = "yellow"]]
+		/* apply modifications */
+		<<run setEyeColorFull($activeSlave, $artificialEyeColor, $artificialEyeShape, $artificialEyeFill, $artificialEyeSide)>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	Pupil:
-	[[Circular|Salon][$artificialEyeShape = "circular"]]
-	| [[Almond-Shaped|Salon][$artificialEyeShape = "almond-shaped"]]
-	| [[Bright|Salon][$artificialEyeShape = "bright"]]
-	| [[Catlike|Salon][$artificialEyeShape = "catlike"]]
-	| [[Demonic|Salon][$artificialEyeShape = "demonic"]]
-	| [[Devilish|Salon][$artificialEyeShape = "devilish"]]
-	| [[Goat-Like|Salon][$artificialEyeShape = "goat-like"]]
-	| [[Heart-Shaped|Salon][$artificialEyeShape = "heart-shaped"]]
-	| [[Hypnotic|Salon][$artificialEyeShape = "hypnotic"]]
-	| [[Serpent-Like|Salon][$artificialEyeShape = "serpent-like"]]
-	| [[Star-Shaped|Salon][$artificialEyeShape = "star-shaped"]]
-	| [[Teary|Salon][$artificialEyeShape = "teary"]]
-	| [[Vacant|Salon][$artificialEyeShape = "vacant"]]
-	| [[Wide-Eyed|Salon][$artificialEyeShape = "wide-eyed"]]
+		/* reset variables */
+		<<set $artificialEyeSide = "", $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = "">>
+	<</link>>
 
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	Sclera:
-	[[White|Salon][$artificialEyeFill = "white"]]
-	| [[Amber|Salon][$artificialEyeFill = "amber"]]
-	| [[Black|Salon][$artificialEyeFill = "black"]]
-	| [[Blue|Salon][$artificialEyeFill = "blue"]]
-	| [[Brown|Salon][$artificialEyeFill = "brown"]]
-	| [[Green|Salon][$artificialEyeFill = "green"]]
-	| [[Hazel|Salon][$artificialEyeFill = "hazel"]]
-	| [[Orange|Salon][$artificialEyeFill = "orange"]]
-	| [[Pale-Grey|Salon][$artificialEyeFill = "pale-grey"]]
-	| [[Pink|Salon][$artificialEyeFill = "pink"]]
-	| [[Red|Salon][$artificialEyeFill = "red"]]
-	| [[Sky-Blue|Salon][$artificialEyeFill = "sky-blue"]]
-	| [[Turquoise|Salon][$artificialEyeFill = "turquoise"]]
-	| [[Yellow|Salon][$artificialEyeFill = "yellow"]]
-
-	<<if $artificialEyeColor != "">>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $activeSlave.eyes == -4>>
-			[[Give|Salon][$activeSlave.eyes = -3, $activeSlave.eyeColor = ($artificialEyeColor), $activeSlave.pupil = ($artificialEyeShape), $activeSlave.sclerae = ($artificialEyeFill), cashX(forceNeg($modCost), "slaveMod", $activeSlave), $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = ""]]
-		<<else>>
-			[[Give|Salon][$activeSlave.eyeColor = ($artificialEyeColor), $activeSlave.pupil = ($artificialEyeShape), $activeSlave.sclerae = ($artificialEyeFill), cashX(forceNeg($modCost), "slaveMod", $activeSlave), $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = ""]]
-		<</if>>
-		$him $artificialEyeColor
-		<<if $activeSlave.eyes <= -3>>
+	/* make the following easier to read */
+	<<set _both = $artificialEyeSide === "both",
+	_leftGlass = !hasLeftEye($activeSlave) || getLeftEyeType($activeSlave) === 2,
+	_rightGlass = !hasRightEye($activeSlave) || getRightEyeType($activeSlave) === 2>>
+
+	$him $artificialEyeColor
+	<<if _both>>
+		<<if _leftGlass && _rightGlass>>
 			glass eyes
+		<<elseif _leftGlass || _rightGlass>>
+			a glass eye and a $artificialEyeColor lens
 		<<else>>
 			lenses
 		<</if>>
-		<<if $artificialEyeShape != "" || $artificialEyeFill != "">>
-			with
-			<<if $artificialEyeShape != "" >>
-				$artificialEyeShape pupils
-			<</if>>
-			<<if $artificialEyeShape != "" && $artificialEyeFill != "">>
-				and
-			<</if>>
-			<<if $artificialEyeFill != "" >>
-				$artificialEyeFill sclera
-			<</if>>
-		<</if>>? //This will be applied in addition to eyewear choices.//
+	<<else>>
+		a
+		<<if ($artificialEyeSide === "left" && _leftGlass) || ($artificialEyeSide === "right" && _rightGlass)>>
+			glass eye
+		<<else>>
+			lens
+		<</if>>
 	<</if>>
-
-<<else>>
-	$His eyes are artificial and can't be set here.
+	<<if $artificialEyeShape != "" || $artificialEyeFill != "">>
+		with
+		<<if $artificialEyeShape != "" >>
+			$artificialEyeShape <<if _both>> pupils <<else>> pupil <</if>>
+		<</if>>
+		<<if $artificialEyeShape != "" && $artificialEyeFill != "">>
+			and
+		<</if>>
+		<<if $artificialEyeFill != "" >>
+			$artificialEyeFill <<if _both>> sclerae <<else>> sclera <</if>>
+		<</if>>
+	<</if>>? //This is independent from eyewear choices.//
 <</if>>
 
 /* EARS */
diff --git a/src/uncategorized/seCustomSlaveDelivery.tw b/src/uncategorized/seCustomSlaveDelivery.tw
index 3d61716ff903e659439f622e345e3bb5212a86fe..5561998ab01218d884d02aaf18022b68e4cfd9dc 100644
--- a/src/uncategorized/seCustomSlaveDelivery.tw
+++ b/src/uncategorized/seCustomSlaveDelivery.tw
@@ -192,7 +192,8 @@
 <<set $activeSlave.skill.entertainment = $customSlave.skill.whore>>
 <<set $activeSlave.skill.whoring = $customSlave.skill.whore>>
 <<set $activeSlave.skill.combat = $customSlave.skill.combat>>
-<<set $activeSlave.eyes = $customSlave.eyes>>
+<<set $activeSlave.eye.left.vision = $customSlave.eye.left.vision>>
+<<set $activeSlave.eye.right.vision = $customSlave.eye.right.vision>>
 <<set $activeSlave.hears = $customSlave.hears>>
 <<set $activeSlave.smells = $customSlave.smells>>
 <<set $activeSlave.tastes = $customSlave.tastes>>
diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw
index 13bc72a4159765bd5249c60b78c919b70a0489ec..eb3775fb2f37c6994f70f864b9894946e7e614b3 100644
--- a/src/uncategorized/seExpiration.tw
+++ b/src/uncategorized/seExpiration.tw
@@ -84,8 +84,14 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that
 		<<link "Enslave $him">>
 			<<replace "#result">>
 				$He's beside $himself with joy when you accept $his plea and enslave $him. $He's given you the finest proof of loyalty a slave possibly can, having tasted a moment of freedom under the law, and thrown it away with utter contempt.
-				<<if $activeSlave.eyes > -4>>
-					$His <<= App.Desc.eyesColor($activeSlave)>> <<if canSee($activeSlave)>>watch you<<else>>are wide<</if>> with
+				<<if hasAnyEyes($activeSlave)>>
+					$His <<= App.Desc.eyesColor($activeSlave)>>
+					<<if hasBothEyes($activeSlave)>>
+					<<if canSee($activeSlave)>>watch you<<else>>are wide<</if>>
+					<<else>>
+					<<if canSee($activeSlave)>>watches you<<else>>is wide<</if>>
+					<</if>>
+					with
 				<<else>>
 					$His face shows
 				<</if>>
diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw
index 2921e2e5b8a19c1ddddd901fe5cdf05c401720ce..41a99af4f302eac19a6d2c7af0cd346fe345f26a 100644
--- a/src/uncategorized/seLethalPit.tw
+++ b/src/uncategorized/seLethalPit.tw
@@ -214,7 +214,7 @@ You review the rules — the <<if $pitAnimal == 0>>combatants<<else>>slave<</if>
 
 <<if !canSee(_fighterOne)>>
 	$His lack of eyesight is certain death.
-<<elseif ((_fighterOne.eyes == -1) && (_fighterOne.eyewear != "corrective glasses") && (_fighterOne.eyewear != "corrective contacts")) || (_fighterOne.eyes == 1 && (_fighterOne.eyewear == "blurring glasses" || _fighterOne.eyewear == "blurring contacts"))>>
+<<elseif !canSeePerfectly(_fighterOne)>>
 	$His poor eyesight makes $him a weaker combatant.
 <</if>>
 
@@ -366,7 +366,7 @@ You review the rules — the <<if $pitAnimal == 0>>combatants<<else>>slave<</if>
 
 	<<if !canSee(_fighterTwo)>>
 		_His2 lack of eyesight is certain death.
-	<<elseif ((_fighterTwo.eyes == -1) && (_fighterTwo.eyewear != "corrective glasses") && (_fighterTwo.eyewear != "corrective contacts")) || (_fighterTwo.eyes == 1 && (_fighterTwo.eyewear == "blurring glasses" || _fighterTwo.eyewear == "blurring contacts"))>>
+	<<elseif !canSeePerfectly(_fighterOne)>>
 		_His2 poor eyesight makes _him2 a weaker combatant.
 	<</if>>
 
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index d11777e4fbaecf71a0c1639d4522cf36af6a3f11..1e6e26a5b5e8085d50ee0fa4f7778d84562c0547 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -198,7 +198,7 @@
 
 	<<if !canSee(_fighterOne)>>
 		$His lack of eyesight means certain defeat.
-	<<elseif ((_fighterOne.eyes == -1) && (_fighterOne.eyewear != "corrective glasses") && (_fighterOne.eyewear != "corrective contacts")) || (_fighterOne.eyes == 1 && (_fighterOne.eyewear == "blurring glasses" || _fighterOne.eyewear == "blurring contacts"))>>
+	<<elseif !canSeePerfectly($activeSlave)>>
 		$His poor eyesight makes $him a weaker fighter.
 	<</if>>
 
@@ -338,7 +338,7 @@
 
 	<<if !canSee(_fighterTwo)>>
 		_His2 lack of eyesight means certain defeat.
-	<<elseif ((_fighterTwo.eyes == -1) && (_fighterTwo.eyewear != "corrective glasses") && (_fighterTwo.eyewear != "corrective contacts")) || (_fighterTwo.eyes == 1 && (_fighterTwo.eyewear == "blurring glasses" || _fighterTwo.eyewear == "blurring contacts"))>>
+	<<elseif !canSeePerfectly(_fighterTwo)>>
 		_His2 poor eyesight makes _him2 a weaker fighter.
 	<</if>>
 
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index 504441cbd58905442ad94cf328efc2fcffc0c6ac..8e08fa6306de5edcfa4b010368698d447bbfe10b 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -226,7 +226,7 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu
 	<</if>>
 <</if>>
 
-<<if $activeSlave.eyes <= -2>>
+<<if getBestVision($activeSlave) === 0>>
 	$His blindness is an obvious issue.
 <</if>>
 
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index 591948d4a1efd127ea02a82c48bf765a10b9a465..31046f5dee4ac6a201aea8b226dc34b4aae4807c 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -78,8 +78,8 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave = $activeSlave>>
 	<<set $shelterSlave.origin = "$His owner purposely blinded $him by dumping boiling water into $his eyes.">>
 	<<set $shelterSlave.career = "a slave">>
-	<<set $shelterSlave.eyes = -2>>
-	<<set $shelterSlave.eyeColor = "milky white">>
+	<<run eyeSurgery($shelterSlave, "both", "blind")>>
+	<<run setEyeColor($shelterSlave, "milky white")>>
 	<<set $shelterSlave.custom.desc = "$He has an obvious burn across $his eyes.">>
 	<<set $shelterSlave.devotion = random(-100,-90)>>
 	<<set $shelterSlave.trust = random(-100,-90)>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 089f93be4e74d0e52e71925b81a69a1718efb2cb..db829ce050884a0b370a8807ef36c397afe2675e 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -56,7 +56,7 @@
 	<<else>>
 		<<set $slaves[_FLs].skill.attendant += random(1,Math.ceil(($Attendant.intelligence+$Attendant.intelligenceImplant)/15) + 8)>>
 	<</if>>
-	<<if ($Attendant.eyes <= -2)>>
+	<<if !canSee($Attendant)>>
 		$His blindness allows $him to deeply connect with $his charges.
 		<<set _idleBonus++>>
 	<</if>>
diff --git a/src/uncategorized/specialSlave.tw b/src/uncategorized/specialSlave.tw
index 45591207dcb24e855c0740730f37fae52061a1e3..3c1c4e606643d9b5839aaed5e9e1d8bb75794ac4 100644
--- a/src/uncategorized/specialSlave.tw
+++ b/src/uncategorized/specialSlave.tw
@@ -21,7 +21,7 @@
 	<</if>>
 
 	<<if $activeSlave.override_Eye_Color != 1>>
-		<<set $activeSlave.eyeColor = getGeneticEyeColor($activeSlave)>>
+		<<run resetEyeColor($activeSlave, "both")>>
 	<</if>>
 	<<if $activeSlave.override_H_Color != 1>>
 		<<set $activeSlave.hColor = getGeneticHairColor($activeSlave)>>
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index 378ebcc8f686d10a333ad6a98b1b8caf00272324..16d65537251b741fbb0f43fbdb46556238f0b426 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -232,7 +232,7 @@ As the remote surgery's long recovery cycle completes,
 
 	<br><br>The Fuckdoll suit's systems connect to the arcology and run a full systems check. The reports waterfall down the nearest wallscreen, moving from the top of the Fuckdoll down. The simple brain activity sensor is showing elevated readings as $activeSlave.slaveName desperately tries to find $his bearings.
 	<<if $activeSlave.hLength > 20>>The twin tails of hair sticking out of the suit material that covers $his scalp are waving from side to side slightly as $he struggles.<</if>>
-	<<if $activeSlave.eyes != 0>>The suit does not have holes for vision, worsening the disorientation.<</if>>
+	<<if getBestVision($activeSlave) > 0>>The suit does not have holes for vision, worsening the disorientation.<</if>>
 	<<if $activeSlave.voice == 0>>$His breath rushes in and<<else>>Incoherent moans are coming<</if>> out of $his <<if $activeSlave.lips > 95>>facepussy<<else>>mouth insert<</if>>.
 	The suit can stimulate every intimate area that it covers with vibration, electrostimulation, warmth, and cold, and $activeSlave.slaveName must be in agony as it tests these systems.
 
@@ -264,7 +264,7 @@ As the remote surgery's long recovery cycle completes,
 	<<run generatePronouns($activeSlave)>>
 	<<setLocalPronouns $activeSlave>>
 	If you were expecting a great return to humanity after extracting $him from $his Fuckdoll suit, you're to be disappointed.
-	<<if $activeSlave.eyes != 0>>
+	<<if getBestVision($activeSlave) > 0>>
 		You're denied any reaction from $him to the sight of $himself in the mirror outside the recovery area, as $he's wearing a pair of very dark glasses $he'll have to keep on for a few hours yet. $He's been denied almost all vision for a long time, and though $his recovery included light therapy, $he's still very sensitive to it.
 	<</if>>
 	<<if $activeSlave.fetish == "mindbroken">>
@@ -310,7 +310,7 @@ As the remote surgery's long recovery cycle completes,
 <<case "remove eyes">>
 	Surgery doesn't take long, but since it was invasive there are @@.red;moderate health consequences.@@ As anesthesia wears off $he tries to open $his eyes and finds $he is unable to.
 	<<if $activeSlave.fetish != "mindbroken" && $activeSlave.fuckdoll == 0>>
-		<<if $activeSlave.eyes > -2>>
+		<<if getBestVision($activeSlave) > 0>>
 			<<if ($activeSlave.devotion > 50)>>
 				When $he realizes why, $he begins to weep, not understanding what $he did to deserve this. After a short cry that trails off into a few sniffles, $he carries on.
 			<<elseif ($activeSlave.devotion > 20)>>
@@ -330,10 +330,10 @@ As the remote surgery's long recovery cycle completes,
 			<</if>>
 		<</if>>
 	<</if>>
-	<<set $activeSlave.eyes = -4>>
+	/*<<run eyeSurgery($activeSlave, "both", "remove")>>*/
 
 <<case "ocular implant">>
-	<<if $activeSlave.eyes <= -2>>
+	<<if getBestVision($activeSlave) > 0>>
 		The implant surgery is @@.red;invasive@@ and $he spends some time in the autosurgery recovering. As soon as $he is allowed to open $his eyes and look around, $his gaze flicks from object to object with manic speed as $his new eyes deliver nearly overwhelming amount of visual information. Seeing the world as it is is a gift that those who do not need it cannot properly understand.
 		<<if $activeSlave.fetish != "mindbroken" && $activeSlave.fuckdoll == 0>>
 			<<set $activeSlave.devotion += 25, $activeSlave.trust += 25>>
@@ -361,7 +361,7 @@ As the remote surgery's long recovery cycle completes,
 			<</if>>
 		<</if>>
 	<</if>>
-	<<set $activeSlave.eyes = 1>>
+	/*<<run eyeSurgery($activeSlave, "both", "cybernetic")*/
 
 <<case "newEyes">>
 	The implant surgery is @@.red;invasive@@ and $he spends some time in the autosurgery recovering. As soon as $he is allowed to open $his eyes and look around, $he notices nothing has changed; though the next time $he looks in the mirror, $he'll see a pair of familiar <<= App.Desc.eyesColor($activeSlave)>> peering back at $him.
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 811c519d6dade645b205588e6f7a47a1b786225a..c31adf7081a0f3701bcc59becc044875706b0e98 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -3661,8 +3661,8 @@ $His
 		<<case "a bunny outfit">>
 			A pair of bunny ears sprout from a headband atop $his head.
 		<</switch>>
-		<<if $activeSlave.eyesImplant == 1>>
-			$He has artificial eyes.
+		<<if hasAnyCyberneticEyes($activeSlave)>>
+			$He has artificial <<if hasBothCyberneticEyes($activeSlave)>>eyes<<else>>an eye<</if>>.
 		<</if>>
 		<<if ($activeSlave.eyewear == "corrective glasses") || ($activeSlave.eyewear == "blurring glasses") || ($activeSlave.eyewear == "glasses")>>
 			$He's wearing a pair of
@@ -3714,34 +3714,38 @@ $His
 			<<default>>
 				simple wire-frame glasses,
 			<</switch>>
-			<<if $activeSlave.eyes > -1>>
+			<<if getBestVision($activeSlave) === 0>>
+				which, since $he is @@.red;blind,@@ are just for show. $He moves carefully as to not bump into things.
+			<<else>>
 				<<if $activeSlave.eyewear == "blurring glasses">>
-					which are designed to blur $his vision, making $him clumsy.
+					<<if anyVisionEquals($activeSlave, 2)>>
+						which are designed to blur $his vision, making $him clumsy.
+					<<else>>
+						which do nothing to help $his @@.yellow;nearsightedness@@ and consequent clumsiness.
+					<</if>>
+				<<elseif $activeSlave.eyewear == "corrective glasses">>
+					<<if anyVisionEquals($activeSlave, 1)>>
+						which correct $his vision.
+					<<else>>
+						which are just for show.
+					<</if>>
 				<<else>>
 					which are just for show.
 				<</if>>
-			<<elseif $activeSlave.eyes == -1>>
-				<<if $activeSlave.eyewear == "corrective glasses">>
-					which correct $his vision.
-				<<else>>
-					which do nothing to help $his @@.yellow;nearsightedness@@ and consequent clumsiness.
-				<</if>>
-			<<elseif $activeSlave.eyes < -1>>
-				which, since $he is @@.red;blind,@@ are just for show. $He moves carefully as to not bump into things.
 			<</if>>
 		<<else>>
-			<<if $activeSlave.eyes > -1>>
+			<<if !canSee($activeSlave)>>
+				$He is @@.red;blind,@@ and moves very carefully as a result.
+			<<elseif !canSeePerfectly($activeSlave)>>
 				<<if $activeSlave.eyewear == "blurring contacts">>
 					$He's wearing contacts designed to blur $his vision, making $him clumsy.
+				<<else>>
+					$He's @@.yellow;nearsighted,@@ and a bit clumsy as a result.
 				<</if>>
-			<<elseif $activeSlave.eyes == -1>>
+			<<else>>
 				<<if $activeSlave.eyewear == "corrective contacts">>
 					$He's wearing contact lenses to correct $his @@.yellow;nearsightedness.@@
-				<<else>>
-					$He's @@.yellow;nearsighted,@@ and a bit clumsy as a result.
 				<</if>>
-			<<elseif $activeSlave.eyes < -1>>
-					$He is @@.red;blind,@@ and moves very carefully as a result.
 			<</if>>
 		<</if>> /* CLOSES EYEWEAR */
 		<<if ($activeSlave.earwear == "hearing aids") || ($activeSlave.earwear == "muffling ear plugs") || ($activeSlave.earwear == "deafening ear plugs")>>
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index e991469dab8ee3acd882f3f2fc6338583b476ee9..4a89c04dc660d1273707dec9a526de2b3877b70a 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -588,15 +588,9 @@
 %/
 <<widget "CustomSlaveEyes">>
 	<<replace #eyes>>
-		<<if $seeExtreme == 1>>
-			<<if $customSlave.eyes <= -2>>Blind.
-			<<elseif $customSlave.eyes == -1>>Nearsighted.
-			<<else>>Normal.
-			<</if>>
-		<<else>>
-			<<if $customSlave.eyes == -1>>Nearsighted.
-			<<else>>Normal.
-			<</if>>
+		<<if getBestVision($customSlave) === 2>>Normal vision.
+		<<elseif getBestVision($customSlave) === 1>>Nearsighted.
+		<<else>>Blind.
 		<</if>>
 	<</replace>>
 <</widget>>
@@ -787,7 +781,8 @@
 	<<if $activeSlave.boobShape == "saggy" || $activeSlave.boobShape == "downward-facing">>
 		<<set $activeSlave.boobShape = "perky">>
 	<</if>>
-	<<set $activeSlave.eyes = 1, $activeSlave.hears = 0, $activeSlave.voice = 2>>
+	<<run eyeSurgery($activeSlave, "both", "normal")>>
+	<<set $activeSlave.hears = 0, $activeSlave.voice = 2>>
 	<<set $activeSlave.intelligenceImplant = 30, $activeSlave.intelligence = random(20,100)>>
 	<<set $activeSlave.trust = 80, $activeSlave.devotion = 80>>
 	<<set $activeSlave.health = random(80,95)>>
@@ -843,11 +838,13 @@
 			<<set $activeSlave.vagina = random(3,4)>>
 			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
 		<<case "Attendant">>
-			<<set $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 100, $activeSlave.eyes = either(-2, 1, 1), $activeSlave.preg = 0, $activeSlave.face = random(60,90), $activeSlave.career = either("a counselor", "a masseuse", "a therapist")>>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 100, $activeSlave.preg = 0, $activeSlave.face = random(60,90), $activeSlave.career = either("a counselor", "a masseuse", "a therapist")>>
+			<<run eyeSurgery($activeSlave, "both", either(0, 2, 2) === 2 ? "normal" : "blind")>>
 			<<set $activeSlave.actualAge = random(26,$retirementAge-3)>>
 			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
 		<<case "Matron">>
-			<<set $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.sexualQuirk = "caring", $activeSlave.eyes = 1, $activeSlave.counter.birthsTotal = random(2,4), $activeSlave.vagina = 3, $activeSlave.face = random(60,90), $activeSlave.career = either( "a nanny", "a practitioner")>>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.sexualQuirk = "caring", $activeSlave.counter.birthsTotal = random(2,4), $activeSlave.vagina = 3, $activeSlave.face = random(60,90), $activeSlave.career = either( "a nanny", "a practitioner")>>
+			<<run eyeSurgery($activeSlave, "both", "normal")>>
 			<<set $activeSlave.actualAge = random(24,$retirementAge-3)>>
 			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
 		<<case "Stewardess">>