From 7defcd15ef5e3e18de756c41ce6d8835d80f294f Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Fri, 24 Apr 2020 18:34:10 -0700
Subject: [PATCH] Move albinism override creation into a function, and use the
 parameter object rather than globals to influence GenerateNewSlave.

---
 src/js/generateGenetics.js | 101 +++++++++++++++----------------------
 1 file changed, 41 insertions(+), 60 deletions(-)

diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 343c9a3505d..0499f985f84 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -1063,7 +1063,6 @@ window.generateGenetics = (function() {
  */
 window.generateChild = function(mother, ova, destination) {
 	let genes = ova.genetics; // maybe just argument this? We'll see.
-	let pregUpgrade = V.pregnancyMonitoringUpgrade;
 	let child = {};
 
 	function setSurname() {
@@ -1107,7 +1106,7 @@ window.generateChild = function(mother, ova, destination) {
 
 	function setSlaveName() {
 		const relString = child.genes === "XX" ? "daughter" : "son";
-		if (!pregUpgrade || genes.name.indexOf("ovum") === 0) {
+		if (!(V.pregnancyMonitoringUpgrade) || genes.name.indexOf("ovum") === 0) {
 			if (genes.clone) {
 				if (genes.cloneID === -1) {
 					child.slaveName = `Your clone`;
@@ -1132,6 +1131,36 @@ window.generateChild = function(mother, ova, destination) {
 		}
 	}
 
+	function makeAlbinismOverride(race) {
+		let albinismOverride = {
+			skin: 0,
+			eyeColor: "red",
+			hColor: "white"
+		};
+		switch (race) {
+			case "black":
+			case "indo-aryan":
+			case "malay":
+			case "pacific islander":
+			case "amerindian":
+				albinismOverride.skin = "very fair";
+				break;
+			case "latina":
+				albinismOverride.skin = "extremely fair";
+				break;
+			case "asian":
+			case "middle eastern":
+			case "semitic":
+			case "southern european":
+			case "white":
+				albinismOverride.skin = "pure white";
+				break;
+			default:
+				albinismOverride.skin = "pure white";
+		}
+		return albinismOverride;
+	}
+
 	if (!destination) { // does extra work for the incubator if defined, otherwise builds a simple object
 		child.genes = genes.gender;
 		setSlaveName();
@@ -1157,32 +1186,7 @@ window.generateChild = function(mother, ova, destination) {
 		child.fetish = genes.fetish;
 		child.geneticQuirks = clone(genes.geneticQuirks);
 		if (child.geneticQuirks.albinism === 2) {
-			child.albinismOverride = {
-				skin: 0,
-				eyeColor: "red",
-				hColor: "white"
-			};
-			switch (child.race) {
-				case "black":
-				case "indo-aryan":
-				case "malay":
-				case "pacific islander":
-				case "amerindian":
-					child.albinismOverride.skin = "very fair";
-					break;
-				case "latina":
-					child.albinismOverride.skin = "extremely fair";
-					break;
-				case "asian":
-				case "middle eastern":
-				case "semitic":
-				case "southern european":
-				case "white":
-					child.albinismOverride.skin = "pure white";
-					break;
-				default:
-					child.albinismOverride.skin = "pure white";
-			}
+			child.albinismOverride = makeAlbinismOverride(child.race);
 		}
 		child.origSkin = genes.skin;
 		child.eye.origColor = genes.eyeColor;
@@ -1209,15 +1213,17 @@ window.generateChild = function(mother, ova, destination) {
 			}
 		}
 	} else {
-		V.activeSlaveOneTimeMinAge = V.targetAge;
-		V.activeSlaveOneTimeMaxAge = V.targetAge;
-		// eslint-disable-next-line camelcase
-		V.one_time_age_overrides_pedo_mode = 1;
+		const fixedAge = {
+			minAge: V.targetAge,
+			maxAge: V.targetAge,
+			ageOverridesPedoMode: 1,
+			mature: 0
+		};
 
 		if (genes.gender === "XX") {
-			child = GenerateNewSlave("XX", {mature: 0});
+			child = GenerateNewSlave("XX", fixedAge);
 		} else {
-			child = GenerateNewSlave("XY", {mature: 0});
+			child = GenerateNewSlave("XY", fixedAge);
 		}
 		setSlaveName();
 		setSurname();
@@ -1234,32 +1240,7 @@ window.generateChild = function(mother, ova, destination) {
 		child.origRace = child.race;
 		child.geneticQuirks = clone(genes.geneticQuirks);
 		if (child.geneticQuirks.albinism === 2) {
-			child.albinismOverride = {
-				skin: 0,
-				eyeColor: "red",
-				hColor: "white"
-			};
-			switch (child.race) {
-				case "black":
-				case "indo-aryan":
-				case "malay":
-				case "pacific islander":
-				case "amerindian":
-					child.albinismOverride.skin = "very fair";
-					break;
-				case "latina":
-					child.albinismOverride.skin = "extremely fair";
-					break;
-				case "asian":
-				case "middle eastern":
-				case "semitic":
-				case "southern european":
-				case "white":
-					child.albinismOverride.skin = "pure white";
-					break;
-				default:
-					child.albinismOverride.skin = "pure white";
-			}
+			child.albinismOverride = makeAlbinismOverride(child.race);
 		}
 		child.origSkin = genes.skin;
 		child.eye.origColor = genes.eyeColor;
-- 
GitLab