diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 07ff17b8655aaf964fe9fce8b2c01195fd84de47..7850e884018067cb31d84d652c8d58dce62ba28d 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 dda6d8d217e51e0f0522a793a909ad58cb7b5741..66c7e332feac5d7d6ce229354b185a7ca431e959 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 cbf4286770b170923761ae50ab8bc1b1c24504b5..433961d34f97b388c43ac6bc20581ce12c9976b2 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 8237e9b77f48ee02174666f039ca595933032338..4267a695385a64229828212380f0dff7d1aeee9b 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 7537f1e26d42c9013d5ded3853d5fab81da7fd06..895accc6d324d32244816f146327d25e13f4ffd1 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)>>