diff --git a/devTools/javaSanityCheck/excluded b/devTools/javaSanityCheck/excluded index 53fd6b74eacad1588376bb0894ca956fb78e7d8d..bb71504fbe1cf3161608ba9515703eb87cdc1cc1 100644 --- a/devTools/javaSanityCheck/excluded +++ b/devTools/javaSanityCheck/excluded @@ -8,4 +8,3 @@ src/pregmod/editGenetics.tw src/001-lib/Jquery/Jquery.js src/001-lib/mousetrap/mousetrap.js src/002-config/sugarCubeConfig.js -#src/debugging/debugJS.js diff --git a/src/init/dummy.tw b/src/init/dummy.tw index 5e12dfa938f8b325599ce1f9fd5279a6eef2b357..27a2874651327b2afea997305f25d8eeaf1fb8b2 100644 --- a/src/init/dummy.tw +++ b/src/init/dummy.tw @@ -136,5 +136,17 @@ $defaultColorMap /* delete when light/normal colormodes are finished */ $maleSurnamePoolSelector $mixedraceNationalities $nationalityPoolSelector +$version, $release +$Him +$anCup +$linkHandlers +$caption +$op +$unborn + +/* ...foo variables - maybe fixed later */ +$otherChoices +$State +$pair %/ diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index c1d9f6386bcaf2b13462d3275162dea6320c93c7..b82fddd74ec0194db4a878896fd1060685cc27fe 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1356,15 +1356,15 @@ window.DefaultRules = (function() { }; if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) { - shrinkDrugs.lip = "lip atrophiers"; + shrinkDrugs.lips = "lip atrophiers"; if (slave.dick > 0) { shrinkDrugs.penis = "penis atrophiers"; } if (slave.balls > 0) { - shrinkDrugs.testicle = "testicle atrophiers"; + shrinkDrugs.balls = "testicle atrophiers"; } if (slave.weight < 100) { - shrinkDrugs.breast = "breast redistributors"; + shrinkDrugs.boobs = "breast redistributors"; shrinkDrugs.butt = "butt redistributors"; } } diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 52c52af71f3ec0034457733a0e8f63b20a89dcb8..eddab7de4fa316637178a194d09a95da8a87dd00 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 469eb6a68221cf519ea4d116848bbcdf13d61e03..c781796185f1950722cdd2a2e4dba4c6dca0511f 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() { @@ -1686,9 +1698,15 @@ window.GenerateNewSlave = (function() { } if (slave.geneticQuirks.wLoss === 2) { slave.weight -= jsRandom(10, 50); - slave.weight = Math.clamp(slave.muscles, -100, 200); + slave.weight = Math.clamp(slave.weight, -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 3c716196f815521be8fb742483e42bbb504e87ae..92fcf5e2aede9b0a439aed090307cce0691586fc 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/js/utilJS.js b/src/js/utilJS.js index ab37f95abb38107d51c2d86151dbf0b0d2b894d0..5f66ee8b4a470c3bb8dbb79061fbdc777904dfa8 100644 --- a/src/js/utilJS.js +++ b/src/js/utilJS.js @@ -2319,7 +2319,8 @@ App.Utils.escapeHtml = function(text) { * @see https://www.motoslave.net/sugarcube/2/docs/#markup-html-attribute * @param {string} linkText link text * @param {string} passage the passage name to link to - * @param {string} [setter=''] setter tet (optional) + * @param {string} [setter=''] setter text (optional) + * @param {string} [tooltip=''] tooltip text (optional) * @param {string} [elementType='a'] element type (optional) default is 'a'. * Could be any of 'a', 'audio', img', 'source', 'video' * @returns {string} element text @@ -2328,11 +2329,14 @@ App.Utils.escapeHtml = function(text) { * // equal to [[Go to town|Town]] * App.UI.passageLink("Go to town", "Town") */ -App.UI.passageLink = function(linkText, passage, setter, elementType = 'a') { +App.UI.passageLink = function(linkText, passage, setter, tooltip = '', elementType = 'a') { let res = `<${elementType} data-passage="${passage}"`; if (setter) { res += ` data-setter="${App.Utils.escapeHtml(setter)}"`; } + if (tooltip) { + res += ` title="${tooltip}"`; + } res += `>${linkText}</${elementType}>`; return res; }; @@ -2356,21 +2360,24 @@ App.UI.link = function() { * @param {string} [passage] the passage name to link to * @returns {string} link in SC markup */ - function makeLink(linkText, handler, args = [], passage = '') { + function makeLink(linkText, handler, args = [], passage = '', tooltip = '') { // pack handler and data State.temporary.linkHandlers[counter] = { f: handler, args: Array.isArray(args) ? args : [args] }; - // can't say _linkHandlers here becasue SC does not recognize its own notation in "..._varName" + // can't say _linkHandlers here because SC does not recognize its own notation in "..._varName" let SCHandlerText = `State.temporary.linkHandlers[${counter}].f(...State.temporary.linkHandlers[${counter}].args);`; ++counter; if (passage) { - return App.UI.passageLink(linkText, passage, SCHandlerText); + return App.UI.passageLink(linkText, passage, SCHandlerText, tooltip); } else { + if (tooltip) { + throw "Tooltips are not supported by the <<link>> markup."; + } // data-passage scheme does not work with empty passage name return `<<link "${linkText}">><<run ${SCHandlerText}>><</link>>`; } diff --git a/src/uncategorized/reFSNonconformist.tw b/src/uncategorized/reFSNonconformist.tw index 5b7dcdc22da1858d712034d23fa22ed683fccd47..a998892b4c7d7e6d549afbc3e2943a788645f85d 100644 --- a/src/uncategorized/reFSNonconformist.tw +++ b/src/uncategorized/reFSNonconformist.tw @@ -270,7 +270,7 @@ The nonconformist is far too prominent and prosperous to make this an easy dilem offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival. <</if>> The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem. - <</replace>> + <</nobr>><</replace>> <</link>> //This will cost <<print cashFormat(10000)>>// <<else>> //You lack the necessary ready cash to manage a nuanced solution// diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw index 71fc552cd4fa899b75ad3a7e81033c470f849d1a..5da234a6d333f135c86f5bd11052adcac801cddf 100644 --- a/src/uncategorized/reNickname.tw +++ b/src/uncategorized/reNickname.tw @@ -257,6 +257,9 @@ <<if ($activeSlave.anus == 1) && ($activeSlave.skill.anal <= 10)>> <<set $qualifiedNicknames.push("analWhiner")>> <</if>> +<<if $(activeSlave.vagina == -1) && ($activeSlave.dick == 0) && ($activeSlave.balls == 0)>> + <<set $qualifiedNicknames.push("null")>> +<</if>> <<if ($qualifiedNicknames.length == 0)>> <<goto "RIE Eligibility Check">> @@ -1229,6 +1232,11 @@ <<set $applyDesc = "understands that it's $his fate to remain unspoiled a while longer, and redoubles $his efforts to do better with $his other parts.">> <<set $notApplyDesc = "dreads and anticipates the day when $he'll lose $his pearl of great price and gain another way to please a man.">> +<<case "null">> + <<set $nickname = either("'Agender'", "'Androgynous'", "'Angelic'", "'Asexual'", "'Barbie Doll'", "'Censored'", "'Cherub'", "'Devoid'", "'Featureless'", "'Genderless'", "'Groinless'", "'Hole-Less'", "'Mannequin'", "'Mutilated'", "'Netherless'", "'Nondescript'", "'Null'", "'Sewn'", "'Sexless'", "'Smooth'", "'Soft Groin'", "'Two-Hole'", "'Uniform'", "'Unproductive'")>> + <<set $situationDesc = "has neither a penis nor a vagina; $he is a null, with nothing but soft skin on $his groin. Since $he is a Free Cities sex slave, that makes $him female, despite the androgyny of $his genitals. This sometimes makes $his life more difficult, as it only draws more attention to the availability of $his mouth or ass.">> + <<set $applyDesc = "finds some perverse pride in $his genital makeup, which defies traditional notions of gender.">> + <<set $notApplyDesc = "will try $his best to keep up with what's demanded of a sex slave, despite the annoyance of lacking genitals.">> <</switch>> <span id="artFrame"> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 1c556368106e3b2458fb1dbd9c7bbcf4ebd489f1..ebad809e16c8e49649b844cd4bc4d4a3356cba45 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 12fa979cdfc484c3ddfc7a59949800b45a1c6631..9c674725164599c805cd9e2b61676022e68476b1 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 3d5e992144f6d556d62030635f395dc74e2aa7e2..95c5a7ec0dd268eaf7ad13241185d12e5a21afea 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 44f94175dff7a52c1d911b4225daf69b58220ecf..23e88ca41812ab9d227f361f6061502f2c3f6990 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].geneticQuirks.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].geneticQuirks.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/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw index 18ca6fd48ccc8e11edd9252d66bc2a685d7cecbc..3a4b6b95581b5a40551ccdf70b6a746a0fd85042 100644 --- a/src/uncategorized/saRecruitGirls.tw +++ b/src/uncategorized/saRecruitGirls.tw @@ -166,10 +166,28 @@ <</if>> <<if $arcologies[0].FSPhysicalIdealist != "unset">> <<if $arcologies[_j].FSPhysicalIdealist != "unset">> - $He advances Physical Idealism there by working out in public<<if $slaves[$i].muscles > 30>>, having physically challenging sex in public, and improving $his already impressive musculature in a publicly documented journey of self-improvement<<set $arcologies[_j].FSPhysicalIdealist++>><<else>>and having physically challenging sex in public<</if>>. + $He advances Physical Idealism there by working out in + <<if $slaves[$i].muscles >= 50 && $arcology[0].FSPhysicalIdealistLaw == 0>> + public, having physically challenging sex in public, and improving $his already impressive musculature in a publicly documented journey of self-improvement. + <<set $arcologies[_j].FSPhysicalIdealist++>> + <<elseif $slaves[$i].muscles >= 20 && $slaves[$i].muscles < 50 && $arcology[0].FSPhysicalIdealistLaw == 1>> + public, having physically exhausting sex marathons in public, and improving $his already impressive stamina in a publicly documented journey of self-improvement. + <<set $arcologies[_j].FSPhysicalIdealist++>> + <<else>> + public and having physically <<if $arcology[0].FSPhysicalIdealistLaw == 1>>exhausting<<else>>challenging<</if>> sex in public. + <</if>> <<set $arcologies[_j].FSPhysicalIdealist += _influence>> <<elseif $arcologies[_j].FSHedonisticDecadence != "unset">> - $He challenges Hedonistic Decadence there by working out in public<<if $slaves[$i].muscles > 30>>, having physically challenging sex in public, and improving $his already impressive musculature in a publicly documented journey of self-improvement<<set $arcologies[_j].FSHedonisticDecadence-->><<else>>and having physically challenging sex in public<</if>>. + $He challenges Hedonistic Decadence there by working out in + <<if $slaves[$i].muscles >= 50 && $arcology[0].FSPhysicalIdealistLaw == 0>> + public, having physically challenging sex in public, and improving $his already impressive musculature in a publicly documented journey of self-improvement. + <<set $arcologies[_j].FSHedonisticDecadence-->> + <<elseif $slaves[$i].muscles >= 20 && $slaves[$i].muscles < 50 && $arcology[0].FSPhysicalIdealistLaw == 1>> + public, having physically exhausting sex marathons in public, and improving $his already impressive stamina in a publicly documented journey of self-improvement. + <<set $arcologies[_j].FSHedonisticDecadence-->> + <<else>> + public and having physically <<if $arcology[0].FSPhysicalIdealistLaw == 1>>exhausting<<else>>challenging<</if>> sex in public. + <</if>> <<set $arcologies[_j].FSHedonisticDecadence -= _influence>> <</if>> <<elseif $arcologies[0].FSHedonisticDecadence != "unset">> @@ -591,7 +609,7 @@ <</if>> <</if>> <<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<if $slaves[$i].muscles > 95 || ($slaves[$i].muscles > 45 && $slaves[$i].health > 80)>> + <<if ($slaves[$i].muscles >= 50 && $arcology[0].FSPhysicalIdealistLaw == 0) || ($slaves[$i].muscles >= 20 && $slaves[$i].muscles < 50 && $arcology[0].FSPhysicalIdealistLaw == 1) || ($slaves[$i].muscles > 40 && $slaves[$i].health > 80)>> <<set _seed += 4, _FSmatch++, $arcologies[0].FSPhysicalIdealist += 0.01*$FSSingleSlaveRep>> <</if>> <<elseif $arcologies[0].FSHedonisticDecadence != "unset">> @@ -898,8 +916,12 @@ <</if>> <</if>> <<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<if $slaves[$i].muscles > 95 || ($slaves[$i].muscles > 45 && $slaves[$i].health > 80)>> + <<if ($slaves[$i].muscles >= 50 && $arcology[0].FSPhysicalIdealistLaw == 0)>> $He asks another slave to photo-document $his time in the gym this week: naked, of course, to show off $his impressive muscle definition, and in certain poses $he nearly seems to be making love to the equipment. + <<elseif ($slaves[$i].muscles >= 20 && $slaves[$i].muscles < 50 && $arcology[0].FSPhysicalIdealistLaw == 1)>> + $He asks another slave to photo-document $his time on the track this week: naked, of course, to show off how perfectly toned body in motion. + <<elseif ($slaves[$i].muscles > 40 && $slaves[$i].health > 80)>> + $He asks another slave to photo-document $his time in the gym this week: naked, of course, to show off how $he keeps in such fine shape, and in certain poses $he nearly seems to be making love to the equipment. <<else>> $He tries documenting $his exercise routine, but it's a snooze fest because $he doesn't have the guns to show for it. <</if>> diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw index 6130b384b41e94faf2c1f58e7fd2c17f770db689..ff2b1165d129f7c51cd415b07e006641f022987d 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.