From d4250f8034d852867f32070060eceefd20be9cf4 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Thu, 30 May 2019 10:24:04 -0400 Subject: [PATCH] genetic quirk androgyny --- src/js/generateGenetics.js | 47 +++++++++++++++++++++----- src/js/generateNewSlaveJS.js | 18 ++++++++++ src/js/physicalDevelopment.js | 29 +++++++++++++++- src/uncategorized/remoteSurgery.tw | 2 -- src/uncategorized/saDiet.tw | 1 - src/uncategorized/saHormoneEffects.tw | 36 +++++++++++--------- src/uncategorized/saLongTermEffects.tw | 28 ++++++++++----- src/utility/descriptionWidgets.tw | 4 +-- 8 files changed, 127 insertions(+), 38 deletions(-) diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 52c52af71f3..eddab7de4fa 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -92,7 +92,7 @@ window.generateGenetics = (function() { genes.race = setRace(father, mother, actor2); genes.intelligence = setIntelligence(father, mother, activeMother, actor2); genes.face = setFace(father, mother, activeMother, actor2, genes.geneticQuirks); - genes.faceShape = setFaceShape(father, mother); + genes.faceShape = setFaceShape(father, mother, genes.geneticQuirks); genes.eyeColor = setEyeColor(father, mother, actor2); if (genes.geneticQuirks.heterochromia === 2) { genes.geneticQuirks.heterochromia = setHeterochromaticEyeColor(father, mother, actor2); @@ -664,9 +664,11 @@ window.generateGenetics = (function() { } // face shape - function setFaceShape(father, mother) { + function setFaceShape(father, mother, genes) { let shape; - if (father !== 0) { + if (genes.androgyny === 2) { + shape = "androgynous"; + } else if (father !== 0) { if (mother.faceShape === father.faceShape) { shape = mother.faceShape; } else { @@ -988,7 +990,7 @@ window.generateGenetics = (function() { } else { quirks.rearLipedema = 1; } - } else if (mother.geneticQuirks.rearLipedema === 1 + father.geneticQuirks.rearLipedema >= 3) { + } else if (mother.geneticQuirks.rearLipedema + father.geneticQuirks.rearLipedema >= 3) { chance = jsRandom(1, 4); if (chance <= 2) { quirks.rearLipedema = 2; @@ -1083,7 +1085,7 @@ window.generateGenetics = (function() { } else { quirks.mGain = 1; } - } else if (mother.geneticQuirks.mGain === 1 + father.geneticQuirks.mGain >= 3) { + } else if (mother.geneticQuirks.mGain + father.geneticQuirks.mGain >= 3) { chance = jsRandom(1, 4); if (chance <= 2) { quirks.mGain = 2; @@ -1116,7 +1118,7 @@ window.generateGenetics = (function() { } else { quirks.mLoss = 1; } - } else if (mother.geneticQuirks.mLoss === 1 + father.geneticQuirks.mLoss >= 3) { + } else if (mother.geneticQuirks.mLoss + father.geneticQuirks.mLoss >= 3) { chance = jsRandom(1, 4); if (chance <= 2) { quirks.mLoss = 2; @@ -1149,7 +1151,7 @@ window.generateGenetics = (function() { } else { quirks.wGain = 1; } - } else if (mother.geneticQuirks.wGain === 1 + father.geneticQuirks.wGain >= 3) { + } else if (mother.geneticQuirks.wGain + father.geneticQuirks.wGain >= 3) { chance = jsRandom(1, 4); if (chance <= 2) { quirks.wGain = 2; @@ -1182,7 +1184,7 @@ window.generateGenetics = (function() { } else { quirks.wLoss = 1; } - } else if (mother.geneticQuirks.wLoss === 1 + father.geneticQuirks.wLoss >= 3) { + } else if (mother.geneticQuirks.wLoss + father.geneticQuirks.wLoss >= 3) { chance = jsRandom(1, 4); if (chance <= 2) { quirks.wLoss = 2; @@ -1207,6 +1209,35 @@ window.generateGenetics = (function() { } } + // androgyny + if (father !== 0) { + if (mother.geneticQuirks.androgyny === 2 && father.geneticQuirks.androgyny === 2) { + quirks.androgyny = 2; + } else if (mother.geneticQuirks.androgyny + father.geneticQuirks.androgyny >= 3) { + chance = jsRandom(1, 4); + if (chance <= 2) { + quirks.androgyny = 2; + } else if (chance === 4) { + quirks.androgyny = 1; + } + } else if (mother.geneticQuirks.androgyny + father.geneticQuirks.androgyny >= 1) { + if (jsRandom(1, 4) === 1) { + quirks.androgyny = 2; + } else if (chance === 4) { + quirks.androgyny = 1; + } + } + } else if (mother.geneticQuirks.androgyny >= 1) { + if (jsRandom(0, 40000) >= 35000) { + chance = jsRandom(1, 4); + if (chance <= 2) { + quirks.androgyny = 1; + } else if (chance === 4) { + quirks.androgyny = 2; + } + } + } + return clone(quirks); } diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js index 469eb6a6822..df9f911a42d 100644 --- a/src/js/generateNewSlaveJS.js +++ b/src/js/generateNewSlaveJS.js @@ -1186,6 +1186,12 @@ window.GenerateNewSlave = (function() { } else if (chance >= 18500) { slave.geneticQuirks.wLoss = 1; } + chance = jsRandom(1, 20000); + if (chance >= 19500) { + slave.geneticQuirks.androgyny = 2; + } else if (chance >= 19000) { + slave.geneticQuirks.androgyny = 1; + } } function generateXYGeneticQuirks() { @@ -1264,6 +1270,12 @@ window.GenerateNewSlave = (function() { } else if (chance >= 18500) { slave.geneticQuirks.wLoss = 1; } + chance = jsRandom(1, 20000); + if (chance >= 19200) { + slave.geneticQuirks.androgyny = 2; + } else if (chance >= 18500) { + slave.geneticQuirks.androgyny = 1; + } } function generateAge() { @@ -1689,6 +1701,12 @@ window.GenerateNewSlave = (function() { slave.weight = Math.clamp(slave.muscles, -100, 200); slave.weightDirection = -1; } + if (slave.geneticQuirks.androgyny === 2) { + slave.faceShape = "androgynous"; + if (slave.face < 60) { + slave.face += 15; + } + } } return GenerateNewSlave; diff --git a/src/js/physicalDevelopment.js b/src/js/physicalDevelopment.js index 3c716196f81..92fcf5e2aed 100644 --- a/src/js/physicalDevelopment.js +++ b/src/js/physicalDevelopment.js @@ -15,7 +15,34 @@ window.physicalDevelopment = (function physicalDevelopment() { if (slave.geneMods.NCS !== 1) { /* NCS completely blocks all natural physical growth: no height increases. It also blocks all hormonal secondary sexual * characteristics. So, on the female side: no boobs, no butt, no hips, and no labia. And on the male side: no dick, no clit, no balls, no scrotum, no shoulders. */ /* so this is a big old NO-OP to skip the physical development. */ - if (slave.genes === "XX") { /* loli becoming a woman */ + if (slave.geneticQuirks.androgyny === 2) { /* takes a mix of both to create a very androgynous slave */ + if (slave.geneticQuirks.dwarfism === 2 && slave.geneticQuirks.gigantism !== 2) { + increaseHeightDwarf(slave); + } else if (slave.geneticQuirks.gigantism === 2) { + increaseHeightGiant(slave); + } else { + increaseHeightXX(slave); + } + if (slave.boobs - slave.boobsImplant <= 300) { + increaseBoobsXX(slave); + } + if (slave.dick > 0 && (slave.dick < 3 || slave.geneticQuirks.wellHung === 2)) { + increaseDick(slave); + } + if (slave.balls > 0 && slave.balls < 3) { + increaseBalls(slave); + } + if (slave.waist < 10) { + increaseWaistXY(slave); + } + if (slave.hips - slave.hipsImplant < 0) { + increaseHipsXX(slave); + } + if (slave.butt - slave.buttImplant < 3) { + increaseButtXX(slave); + } + increasePregAdpatationXX(slave); + } else if (slave.genes === "XX") { /* loli becoming a woman */ if (slave.geneticQuirks.dwarfism === 2 && slave.geneticQuirks.gigantism !== 2) { increaseHeightDwarf(slave); } else if (slave.geneticQuirks.gigantism === 2) { diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 318e7dac8c4..2a0d5d99598 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -1419,7 +1419,6 @@ $He has <br> [[Induced albinism treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;albinism@@ in $his genetic code// <</if>> - /* <<if $activeSlave.geneticQuirks.androgyny == 2>> <br> [[Androgyny correction treatment|Surgery Degradation][$activeSlave.geneticQuirks.androgyny = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] @@ -1430,7 +1429,6 @@ $He has <br> [[Induced androgyny treatment|Surgery Degradation][$activeSlave.geneticQuirks.androgyny = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;natural androgyny@@ in $his genetic code// <</if>> - */ <<if $activeSlave.geneticQuirks.dwarfism == 2>> <br> [[Dwarfism correction treatment|Surgery Degradation][$activeSlave.geneticQuirks.dwarfism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw index 06208b5284e..8b2803275b6 100644 --- a/src/uncategorized/saDiet.tw +++ b/src/uncategorized/saDiet.tw @@ -888,7 +888,6 @@ <</if>> <<else>> $He doesn't really notice that @@.lime;$his body is being prepared to carry multiples,@@ other than the slight tingle in $his lower belly. - <<set $slaves[$i].devotion -= 2, $slaves[$i].trust++, $slaves[$i].health += 2>> <<if $slaves[$i].attrXY < 70>> $He certainly notices @@.green;how much more attractive men are,@@ however. <<set $slaves[$i].attrXY += 2>> diff --git a/src/uncategorized/saHormoneEffects.tw b/src/uncategorized/saHormoneEffects.tw index 3d5e992144f..95c5a7ec0dd 100644 --- a/src/uncategorized/saHormoneEffects.tw +++ b/src/uncategorized/saHormoneEffects.tw @@ -100,7 +100,7 @@ <<if ($slaves[$i].faceShape == "masculine")>> Hormonal effects cause @@.orange;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike <</if>>androgyny.@@ <<set $slaves[$i].faceShape = "androgynous">> - <<elseif ($slaves[$i].faceShape == "androgynous")>> + <<elseif ($slaves[$i].faceShape == "androgynous" && $slaves[$i].geneticQuirks.androgyny != 2)>> Hormonal effects cause @@.lime;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike normalcy<<else>>femininity<</if>>.@@ <<set $slaves[$i].faceShape = "normal">> <<elseif (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].faceShape == "normal"))>> @@ -203,7 +203,7 @@ <<if ($slaves[$i].faceShape == "masculine")>> Hormonal effects cause @@.orange;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike <</if>>androgyny.@@ <<set $slaves[$i].faceShape = "androgynous">> - <<elseif ($slaves[$i].faceShape == "androgynous")>> + <<elseif ($slaves[$i].faceShape == "androgynous" && $slaves[$i].geneticQuirks.androgyny != 2)>> Hormonal effects cause @@.lime;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike normalcy<<else>>femininity<</if>>.@@ <<set $slaves[$i].faceShape = "normal">> <<elseif (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].faceShape == "normal"))>> @@ -305,7 +305,7 @@ <<if ($slaves[$i].faceShape == "masculine")>> Hormonal effects cause @@.orange;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike <</if>>androgyny.@@ <<set $slaves[$i].faceShape = "androgynous">> - <<elseif ($slaves[$i].faceShape == "androgynous")>> + <<elseif ($slaves[$i].faceShape == "androgynous" && $slaves[$i].geneticQuirks.androgyny != 2)>> Hormonal effects cause @@.lime;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike normalcy<<else>>femininity<</if>>.@@ <<set $slaves[$i].faceShape = "normal">> <<elseif ($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].faceShape == "normal")>> @@ -407,7 +407,7 @@ <<if ($slaves[$i].faceShape == "masculine")>> Hormonal effects cause @@.orange;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike <</if>>androgyny.@@ <<set $slaves[$i].faceShape = "androgynous">> - <<elseif ($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].faceShape == "androgynous")>> + <<elseif ($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].faceShape == "androgynous" && $slaves[$i].geneticQuirks.androgyny != 2)>> Hormonal effects cause @@.lime;$his face to soften into <<if $slaves[$i].geneMods.NCS == 1>>childlike normalcy<<else>>femininity<</if>>.@@ <<set $slaves[$i].faceShape = "normal">> <</if>> @@ -554,12 +554,14 @@ <<if ($slaves[$i].geneMods.NCS == 0)>> <<if $slaves[$i].faceImplant < 5>> - <<if ($slaves[$i].faceShape == "androgynous")>> - Hormonal effects cause @@.orange;$his face to harden into masculinity.@@ - <<set $slaves[$i].faceShape = "masculine">> - <<elseif ($slaves[$i].faceShape != "masculine")>> - Hormonal effects cause @@.orange;$his face to harden into androgyny.@@ - <<set $slaves[$i].faceShape = "androgynous">> + <<if $slaves[$i].geneticQuirks.androgyny != 2>> + <<if ($slaves[$i].faceShape == "androgynous")>> + Hormonal effects cause @@.orange;$his face to harden into masculinity.@@ + <<set $slaves[$i].faceShape = "masculine">> + <<elseif ($slaves[$i].faceShape != "masculine")>> + Hormonal effects cause @@.orange;$his face to harden into androgyny.@@ + <<set $slaves[$i].faceShape = "androgynous">> + <</if>> <</if>> <</if>> <<if ($slaves[$i].face-$slaves[$i].faceImplant > 0)>> @@ -642,12 +644,14 @@ <<elseif $slaves[$i].hormoneBalance <= -300>> <<if ($slaves[$i].geneMods.NCS == 0)>> <<if $slaves[$i].faceImplant < 5>> - <<if ($slaves[$i].faceShape == "androgynous")>> - Hormonal effects cause @@.orange;$his face to harden into masculinity.@@ - <<set $slaves[$i].faceShape = "masculine">> - <<elseif ($slaves[$i].faceShape != "masculine")>> - Hormonal effects cause @@.orange;$his face to harden into androgyny.@@ - <<set $slaves[$i].faceShape = "androgynous">> + <<if $slaves[$i].geneticQuirks.androgyny != 2>> + <<if ($slaves[$i].faceShape == "androgynous")>> + Hormonal effects cause @@.orange;$his face to harden into masculinity.@@ + <<set $slaves[$i].faceShape = "masculine">> + <<elseif ($slaves[$i].faceShape != "masculine")>> + Hormonal effects cause @@.orange;$his face to harden into androgyny.@@ + <<set $slaves[$i].faceShape = "androgynous">> + <</if>> <</if>> <</if>> <<if ($slaves[$i].face-$slaves[$i].faceImplant > 0)>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 0b2d34ac880..65ea38589f9 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -3324,7 +3324,7 @@ <</if>> <<if ($slaves[$i].faceShape == "masculine")>> <<set _Effects.push("FaceSofterAndrogynous")>> - <<elseif ($slaves[$i].faceShape == "androgynous")>> + <<elseif ($slaves[$i].faceShape == "androgynous" && $slaves[$i].geneitcQuirk.androgyny != 2)>> <<set _Effects.push("FaceNormal")>> <</if>> <</if>> @@ -3482,6 +3482,14 @@ <<else>> <<set $slaves[$i].hormoneBalance = Math.clamp($slaves[$i].hormoneBalance * 1.5, -400, 400)>> <</if>> +/* androgny really wants to sit around 0 and will fight changes to do so */ +<<if $slaves[$i].geneitcQuirk.androgyny == 2>> + <<if $slaves[$i].hormoneBalance > 6>> + <<set $slaves[$i].hormoneBalance -= 10>> + <<elseif $slaves[$i].hormoneBalance < -6>> + <<set $slaves[$i].hormoneBalance += 10>> + <</if>> +<</if>> <<if $slaves[$i].drugs != "hormone blockers">> <<include "SA hormone effects">> <<elseif $slaves[$i].drugs == "hormone blockers">> @@ -4114,6 +4122,8 @@ <<if $slaves[$i].geneMods.NCS == 1>> /* NCS: always working against secondary sexual characteristics even in pregnancies. */ <<set _boobTarget = 0>> + <<elseif $slaves[$i].geneticQuirks.androgyny == 2>> + <<set _boobTarget = 400>> <<elseif $slaves[$i].physicalAge >= 18>> <<if $slaves[$i].pregType >= 50>> <<set _boobTarget = 10000>> @@ -4177,13 +4187,15 @@ <<set $slaves[$i].boobShape = "saggy">> <</if>> <</if>> - <<if ($slaves[$i].hips < 2)>> - $His hips @@.lime;widen@@ for $his upcoming birth. - <<set $slaves[$i].hips += 1>> - <</if>> - <<if ($slaves[$i].butt < 14)>> - $His butt @@.lime;swells with added fat@@ from $his changing body. - <<set $slaves[$i].butt += 1>> + <<if $slaves[$i].geneticQuirks.androgyny != 2>> + <<if ($slaves[$i].hips < 2)>> + $His hips @@.lime;widen@@ for $his upcoming birth. + <<set $slaves[$i].hips += 1>> + <</if>> + <<if ($slaves[$i].butt < 14)>> + $His butt @@.lime;swells with added fat@@ from $his changing body. + <<set $slaves[$i].butt += 1>> + <</if>> <</if>> <</if>> <<elseif ($slaves[$i].pregType >= 10)>> diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw index 6130b384b41..ff2b1165d12 100644 --- a/src/utility/descriptionWidgets.tw +++ b/src/utility/descriptionWidgets.tw @@ -77,9 +77,9 @@ $He is a carrier of the heterochromia gene. <</if>> <<if $activeSlave.geneticQuirks.androgyny == 2>> - $His is naturally androgynous. + $His has a hormonal condition resulting in androgyny. <<elseif $activeSlave.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>> - $He is a carrier of a series of genes that result in androgyny. + $He is a carrier of a gene that result in androgyny. <</if>> <<if $activeSlave.geneticQuirks.pFace == 2>> $He has an exceedingly rare trait associated with perfect facial beauty. -- GitLab