From 3fec68f1969044c8b12de7da21cba60c9dd25501 Mon Sep 17 00:00:00 2001
From: klorpa <30924131+klorpa@users.noreply.github.com>
Date: Sat, 18 Aug 2018 22:50:23 -0500
Subject: [PATCH] DisabledDisabled

---
 src/init/storyInit.tw                       |  1 +
 src/js/slaveGenerationJS.tw                 | 38 +++++++++++++++++++++
 src/uncategorized/BackwardsCompatibility.tw |  3 ++
 src/uncategorized/generateXXSlave.tw        |  9 ++---
 src/uncategorized/generateXYSlave.tw        | 12 +++----
 5 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 07ff17b8655..7850e884018 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1206,6 +1206,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $one_time_age_overrides_pedo_mode = 0>>
 <<set $activeSlaveOneTimeMinAge = 0>>
 <<set $activeSlaveOneTimeMaxAge = 999>>
+<<set $oneTimeDisableDisability = 0>>
 <<set $targetAge = $minimumSlaveAge>>
 <<set $pubertyLength = 5>>
 <<set $maxGrowthAge = 24>>
diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGenerationJS.tw
index dda6d8d217e..66c7e332fea 100644
--- a/src/js/slaveGenerationJS.tw
+++ b/src/js/slaveGenerationJS.tw
@@ -1262,3 +1262,41 @@ window.randomizeAttraction = function randomizeAttraction(slave) {
 	slave.attrXX = Math.clamp(slave.attrXX + jsRandom(-5, 5), 0, 100);
 	slave.attrXY = Math.clamp(slave.attrXY + jsRandom(-5, 5), 0, 100);
 };
+
+window.disabilityRoll = function disabilityRoll(slave) {
+	const V = State.variables;
+	let disList = [];
+	disList.push("hearNot");
+	disList.push("seeNot");
+	disList.push("speakNot");
+	let disableCount = 0;
+	if (V.oneTimeDisableDisability === 0) {
+		while (disList.length > 0) {
+			let rolled jsEither(disList);
+			switch (rolled) {
+			case "hearNot":
+				if ((jsRandom(1,100)-(disableCount*2)) > 90) {
+					slave.hears = -2;
+				}
+				removeFromArray(disList, hearNot);
+				disableCount++;
+				break;
+			case "seeNot":
+				if ((jsRandom(1,100)-(disableCount*2)) > 90) {
+					slave.eyes = -2;
+				}
+				removeFromArray(disList, seeNot);
+				disableCount++;
+				break;
+			case "speakNot":
+				if ((jsRandom(1,100)-(disableCount*2)) > 90) {
+					slave.voice = 0;
+				}
+				removeFromArray(disList, speakNot);
+				disableCount++;
+				break;
+			}
+		}
+	}
+	V.oneTimeDisableDisability = 0;
+};
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index cbf4286770b..433961d34f9 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -709,6 +709,9 @@
 <<if ndef $activeSlaveOneTimeMaxAge>>
 	<<set $activeSlaveOneTimeMaxAge = 999>>
 <</if>>
+<<if ndef $oneTimeDisableDisability>>
+	<<set $oneTimeDisableDisability = 0>>
+<</if>>
 <<if ndef $AgePenalty>>
 	<<set $AgePenalty = 1>>
 <</if>>
diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw
index 8237e9b77f4..4267a695385 100644
--- a/src/uncategorized/generateXXSlave.tw
+++ b/src/uncategorized/generateXXSlave.tw
@@ -183,13 +183,8 @@
 	<<set $activeSlave.waist = random(50,100)>>
 <</if>>
 
-<<if ($activeSlave.physicalAge > random(0,100))>>
+<<if ($activeSlave.physicalAge > random(30,100))>>
 	<<set $activeSlave.eyes = -1>>
-	<<if random(0,100) > 90>>
-		<<if setup.gratefulCareers.includes($activeSlave.career)>>
-			<<set $activeSlave.eyes = -2>>
-		<</if>>
-	<</if>>
 <</if>>
 <<if ($activeSlave.physicalAge > random(30,100))>>
 	<<set $activeSlave.hears = -1>>
@@ -518,3 +513,5 @@
 	<</if>>
 	<</if>>
 <</if>>
+
+<<run disabilityRoll($activeSlave)>>
diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw
index 7537f1e26d4..895accc6d32 100644
--- a/src/uncategorized/generateXYSlave.tw
+++ b/src/uncategorized/generateXYSlave.tw
@@ -91,19 +91,15 @@
 <<set $activeSlave.devotion = random(-90,-60)>>
 <<set $activeSlave.trust = random(-45,-25)>>
 
-/% Begin height replacement section. %/
-<<if ($activeSlave.physicalAge > random(0,100))>>
+<<if ($activeSlave.physicalAge > random(30,100))>>
 	<<set $activeSlave.eyes = -1>>
-	<<if random(0,100) > 90>>
-		<<if setup.gratefulCareers.includes($activeSlave.career)>>
-			<<set $activeSlave.eyes = -2>>
-		<</if>>
-	<</if>>
 <</if>>
 <<if ($activeSlave.physicalAge > random(30,100))>>
 	<<set $activeSlave.hears = -1>>
 <</if>>
 
+/% Begin height replacement section. %/
+
 /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/
 <<if $fixedRace == 0>>
 	<<if $fixedNationality == 0>>
@@ -680,3 +676,5 @@
 	<</if>>
 	<</if>>
 <</if>>
+
+<<run disabilityRoll($activeSlave)>>
-- 
GitLab