From cf49eba9d9863d0e7474097169aff15416e0ca17 Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@gmail.com>
Date: Fri, 24 Jan 2020 23:20:10 +0100
Subject: [PATCH] fix albinism

---
 .../mod_EditSlaveCheatDatatypeCleanupNew.tw   |  3 ++
 src/js/surgery.js                             | 38 +++++++++++++++++++
 src/uncategorized/remoteSurgery.tw            |  8 ++--
 3 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
index 6102f867389..a7e3cef4812 100644
--- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
+++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
@@ -216,6 +216,9 @@
 	<<set $tempSlave.lactationDuration = 0>>
 <</if>>
 <<run SetBellySize($tempSlave)>>
+<<if $tempSlave.geneticQuirks === 2 && $activeSlave.albinismOverride === null>>
+	<<run induceAlbinism($tempSlave, 2)>>
+<</if>>
 
 <br>
 You perform the dark rituals, pray to the dark gods, and sell your soul for the power to change and mold slaves to your will.
diff --git a/src/js/surgery.js b/src/js/surgery.js
index 053f9d45f17..e80b8a802d2 100644
--- a/src/js/surgery.js
+++ b/src/js/surgery.js
@@ -716,6 +716,44 @@ window.resetEyeColor = function(slave, side = "both") {
 	slave.eye[side].iris = getGeneticEyeColor(slave, side);
 };
 
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @param {number} level
+ */
+window.induceAlbinism = function(slave, level) {
+	slave.geneticQuirks.albinism = level;
+	if (level < 2) {
+		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";
+	}
+};
+
 /**
  * Allowed values for limb:
  * left arm, right arm, left leg, right leg, all
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index feb0de23144..adcb4657963 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1759,12 +1759,12 @@
 
 		<div class="indent">
 			<<if $activeSlave.geneticQuirks.albinism == 2>>
-				[[Albinism prevention treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+				[[Albinism prevention treatment|Surgery Degradation][induceAlbinism($activeSlave, 0), cashX(forceNeg($surgeryCost * 4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave, 40), $activeSlave.chem += 100, $surgeryType = "gene treatment"]]
 			<<elseif $activeSlave.geneticQuirks.albinism == 1 && $geneticMappingUpgrade >= 2>>
-				[[Albinism activation treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 2,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 100,$surgeryType = "gene treatment"]] //Will not have an active effect//
-				| [[Albinism carrier corrective treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+				[[Albinism activation treatment|Surgery Degradation][induceAlbinism($activeSlave, 2), cashX(forceNeg($surgeryCost * 4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave, 40), $activeSlave.chem += 100, $surgeryType = "gene treatment"]] //Will not have an active effect//
+				| [[Albinism carrier corrective treatment|Surgery Degradation][induceAlbinism($activeSlave, 0), cashX(forceNeg($surgeryCost * 4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 			<<elseif $geneticFlawLibrary == 1>>
-				[[Induced albinism treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;albinism@@ in $his genetic code//
+				[[Induced albinism treatment|Surgery Degradation][induceAlbinism($activeSlave, 2), cashX(forceNeg($surgeryCost * 10), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave, 40), $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;albinism@@ in $his genetic code//
 			<</if>>
 		</div>
 
-- 
GitLab