From 6a90a8132ae43e6a9cea3d62cb24f963377090c2 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Thu, 18 Feb 2021 21:15:53 -0800
Subject: [PATCH] 1. Don't fail to get genetic eye color if albinismOverride
 isn't set. 2. Use makeAlbinismOverride instead of duplicating it. 3. JSDoc
 type fix for induceAlbinism.

---
 src/js/statsChecker/eyeChecker.js      |  5 ++---
 src/npc/generate/generateNewSlaveJS.js | 27 +-----------------------
 src/npc/surgery/surgery.js             | 29 ++------------------------
 3 files changed, 5 insertions(+), 56 deletions(-)

diff --git a/src/js/statsChecker/eyeChecker.js b/src/js/statsChecker/eyeChecker.js
index 7014da62b77..d7d8ed835d6 100644
--- a/src/js/statsChecker/eyeChecker.js
+++ b/src/js/statsChecker/eyeChecker.js
@@ -265,9 +265,8 @@ globalThis.hasVisibleHeterochromia = function(slave) {
 globalThis.getGeneticEyeColor = function(playerOrSlave, side) {
 	if (side !== "left" && side !== "right") { return "ERROR:" + side; }
 
-	if (playerOrSlave.geneticQuirks.albinism === 2) {
-		const slave = (/** @type {App.Entity.SlaveState} */(playerOrSlave));
-		return slave.albinismOverride && slave.albinismOverride.eyeColor;
+	if (playerOrSlave.geneticQuirks.albinism === 2 && "albinismOverride" in playerOrSlave) {
+		return playerOrSlave.albinismOverride.eyeColor;
 	} else {
 		if (side === "left" && typeof playerOrSlave.geneticQuirks.heterochromia === "string") {
 			return playerOrSlave.geneticQuirks.heterochromia;
diff --git a/src/npc/generate/generateNewSlaveJS.js b/src/npc/generate/generateNewSlaveJS.js
index 6c995b5c639..8210cb6adef 100644
--- a/src/npc/generate/generateNewSlaveJS.js
+++ b/src/npc/generate/generateNewSlaveJS.js
@@ -1711,32 +1711,7 @@ globalThis.GenerateNewSlave = (function() {
 
 	function generateGeneticQuirkTweaks() {
 		if (slave.geneticQuirks.albinism === 2) {
-			slave.albinismOverride = {
-				skin: 0,
-				eyeColor: "red",
-				hColor: "white"
-			};
-			switch (slave.race) {
-				case "black":
-				case "indo-aryan":
-				case "malay":
-				case "pacific islander":
-				case "amerindian":
-					slave.albinismOverride.skin = "very fair";
-					break;
-				case "latina":
-					slave.albinismOverride.skin = "extremely fair";
-					break;
-				case "asian":
-				case "middle eastern":
-				case "semitic":
-				case "southern european":
-				case "white":
-					slave.albinismOverride.skin = "pure white";
-					break;
-				default:
-					slave.albinismOverride.skin = "pure white";
-			}
+			slave.albinismOverride = makeAlbinismOverride(slave.race);
 		}
 		if (slave.geneticQuirks.rearLipedema === 2) {
 			slave.butt += jsRandom(0.2 * slave.physicalAge, 0.5 * slave.physicalAge);
diff --git a/src/npc/surgery/surgery.js b/src/npc/surgery/surgery.js
index d2a0f56ce70..a9343bd4d42 100644
--- a/src/npc/surgery/surgery.js
+++ b/src/npc/surgery/surgery.js
@@ -790,7 +790,7 @@ globalThis.resetEyeColor = function(slave, side = "both") {
 
 /**
  * @param {App.Entity.SlaveState} slave
- * @param {number} level
+ * @param {FC.GeneticQuirk} level
  */
 globalThis.induceAlbinism = function(slave, level) {
 	slave.geneticQuirks.albinism = level;
@@ -798,32 +798,7 @@ globalThis.induceAlbinism = function(slave, level) {
 		slave.albinismOverride = null;
 		return;
 	}
-	slave.albinismOverride = {
-		skin: 0,
-		eyeColor: "red",
-		hColor: "white"
-	};
-	switch (slave.race) {
-		case "black":
-		case "indo-aryan":
-		case "malay":
-		case "pacific islander":
-		case "amerindian":
-			slave.albinismOverride.skin = "very fair";
-			break;
-		case "latina":
-			slave.albinismOverride.skin = "extremely fair";
-			break;
-		case "asian":
-		case "middle eastern":
-		case "semitic":
-		case "southern european":
-		case "white":
-			slave.albinismOverride.skin = "pure white";
-			break;
-		default:
-			slave.albinismOverride.skin = "pure white";
-	}
+	slave.albinismOverride = makeAlbinismOverride(slave.race);
 };
 
 /**
-- 
GitLab