diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index 9d28de2862986324e9ccfc76d65cb7f7e75074b3..7abdece0982c0e665d5e1437fe7edc2fb4e5ef89 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,6 +2,15 @@ 0.10.7.1-1.4.x + 12/21/2018 + + 1 + -enabled first run of cloning in cheatmode (slave cloning has issues) + -fixes + -more economy work + + 12/19/2018 + 0 -dispensary broken down into pharm fabricator, organ farm, implant manufactory and gene lab -lots of SF work diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index 129fbd4ac78e014c85a400c8e6877dcec1fa3fde..e9f6b01d312b451c1ff2ad9119d8e2c9f44b00fc 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -10089,7 +10089,7 @@ window.generateGenetics = (function() { function generateGenetics(actor1, actor2, x) { V = State.variables; - genes = {gender: "XX", name: "blank", surname: 0, mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", geneticQuirks: 0}; + genes = {gender: "XX", name: "blank", surname: 0, mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, faceShape: "cute", eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", clone: 0, cloneID: 0, geneticQuirks: 0}; if (actor1.ID > 0) { mother = V.genePool.find(function(s) { return s.ID == actor1.ID; }); if (mother === undefined) { @@ -11031,6 +11031,11 @@ window.generateChild = function(mother, ova, destination) { } } + if (genes.clone !== undefined) { + child.clone = genes.clone; + child.cloneID = genes.cloneID; + } + child.mother = genes.mother; child.father = genes.father; child.nationality = genes.nationality; @@ -11283,6 +11288,68 @@ window.WombSurrogate = function(actor, fCount, mother, fatherID, age) { WombImpregnate(actor, fCount, fatherID, age, mother); }; +window.WombImpregnateClone = function(actor, fCount, mother, motherOriginal, age) { + var i; + var tf; + for (i=0; i<fCount; i++) { + tf = {}; //new Object + tf.age = age; //initial age + tf.fatherID = mother.ID; //We can store who is father too. + tf.volume = 1; //Initial, to create property. Updated with actual data after WombGetVolume call. + tf.reserve = ""; //Initial, to create property. Used later to mark if this child is to be kept. + tf.identical = 0; //Initial, to create property. Updated with actual data during fetalSplit call. + tf.splitted = 0; //marker for already splitted fetus. + tf.motherID = mother.ID; //Initial biological mother ID setup. + tf.genetics = generateGenetics(mother, mother.ID, i+1); //Stored genetic information. + tf.ID = generateNewID(); + + //Welcome to having to set up common relatives for the slave and her clone + if (mother.father === 0 || (mother.father < -1 && mother.father >= -20 && mother.father !== -3)) { + mother.father = State.variables.missingParentID; + State.variables.missingParentID--; + } + if (mother.mother === 0 || (mother.mother < -1 && mother.mother >= -20 && mother.mother !== -3)) { + mother.father = State.variables.missingParentID; + State.variables.missingParentID--; + } + + //gene corrections + tf.genetics.gender = mother.genes; + tf.genetics.mother = mother.mother; + tf.genetics.father = mother.father; + if (mother.ID == -1) { + tf.genetics.motherName = mother.name; + tf.genetics.fatherName = mother.name; + tf.genetics.clone = PlayerName(mother); + tf.genetics.cloneID = -1; + } else { + tf.genetics.motherName = mother.slaveName; + tf.genetics.fatherName = mother.slaveName; + tf.genetics.clone = SlaveFullName(mother); + tf.genetics.cloneID = mother.ID; + } + tf.genetics.intelligence = motherOriginal.intelligence; + tf.genetics.face = motherOriginal.face; + tf.genetics.faceShape = motherOriginal.faceShape; + tf.genetics.geneticQuirks = clone(motherOriginal.geneticQuirks); + tf.genetics.skin = motherOriginal.skin; + + try { + if (actor.womb.length == 0) { + actor.pregWeek = age; + actor.preg = age; + } + actor.womb.push(tf); + } catch(err){ + WombInit(actor); + actor.womb.push(tf); + alert("WombImpregnate warning - " + actor.slaveName+" "+err); + } + + } + MissingParentIDCorrection(actor); +}; + window.WombProgress = function(actor, ageToAdd) { var i, ft; ageToAdd = Math.ceil(ageToAdd*10)/10; @@ -11687,7 +11754,7 @@ window.WombChangeGene = function(actor, geneName, newValue) window.MissingParentIDCorrection = function(actor) { WombInit(actor); actor.womb - .filter(ft => (ft.genetics.father === 0 || (ft.genetics.father < -1 && ft.genetics.father >= -20))) + .filter(ft => (ft.genetics.father === 0 || (ft.genetics.father < -1 && ft.genetics.father >= -20 && ft.genetics.father !== -3))) .forEach(ft => ft.genetics.father = State.variables.missingParentID); State.variables.missingParentID--; } @@ -33503,6 +33570,7 @@ window.BaseSlave = function BaseSlave() { skillE: 0, skillW: 0, tankBaby: 0, + clone: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, @@ -36827,6 +36895,7 @@ window.slaveRelationDatatypeCleanup = function slaveRelationDatatypeCleanup(slav slave.relationshipTarget = Math.max(+slave.relationshipTarget, 0) || 0; slave.rivalryTarget = Math.max(+slave.rivalryTarget, 0) || 0; slave.rivalry = Math.clamp(+slave.rivalry, 0, 3) || 0; + slave.cloneID = +slave.clone || 0; }; window.slaveSkillsDatatypeCleanup = function slaveSkillsDatatypeCleanup(slave) { diff --git a/player variables documentation - Pregmod.txt b/player variables documentation - Pregmod.txt index 48bfbc48c7a972991ef6b874633af41f0f5010c9..0a50e92112c526d59ab80cdd1f079bbbd0ad6a30 100644 --- a/player variables documentation - Pregmod.txt +++ b/player variables documentation - Pregmod.txt @@ -24,6 +24,12 @@ ID: The player's ID is always -1. +genes: + +Player's gender +"XY" +"XX" + dick: (common in events) diff --git a/src/SecExp/attackOptions.tw b/src/SecExp/attackOptions.tw index ee754659331ad6dc875fb7fec9d03b554ae5d8e4..cb5f39d48b9de1cb6a0020434e3af91956258154 100644 --- a/src/SecExp/attackOptions.tw +++ b/src/SecExp/attackOptions.tw @@ -167,17 +167,17 @@ It seems your troops and your adversary will fight <<else>> Your recon capabilities are almost non-existent. The information collected will be wild guesses at best: <</if>> -approximately <strong><<print $estimatedMen>> men</strong> are coming, they seems to be +approximately <strong><<print $estimatedMen>> men</strong> are coming, they seem to be <<if $expectedEquip <= 0>> <strong>poorly armed</strong>. Old rusty small arms are the norm with just a few barely working civilian vehicles. <<elseif $expectedEquip == 1>> - <strong>lightly armed</strong>. Mostly small arms with some repurposed civilian vehicles and a few scattered machine guns. There's no sign of heavy vehicles, artillery or aircraft. + <strong>lightly armed</strong>, mostly wth small arms and some repurposed civilian vehicles with scattered machine gun support. There's no sign of heavy vehicles, artillery or aircraft. <<elseif $expectedEquip == 2>> - <strong>decently armed</strong>. Good quality small arms, machine guns and a few mortars. There seems to be some heavy military vehicles coming as well. + <strong>decently armed</strong> with good quality small arms, machine guns and a few mortars. There appear to be some heavy military vehicles coming as well. <<elseif $expectedEquip == 3>> - <strong>well armed</strong>. High quality small arms, snipers, demolitions teams, heavy duty machine guns and mortars. Heavy military vehicles are numerous and a few artillery pieces are accompanying the detachment. + <strong>well armed</strong> with high quality small arms, snipers, demolitions teams, heavy duty machine guns and mortars. Heavy military vehicles are numerous and a few artillery pieces are accompanying the detachment. <<elseif $expectedEquip >= 4>> - <strong>extremely well armed</strong>. Excellent small arms and specialized teams with heavy duty infantry support weapons. Heavy presence of armored military vehicles, artillery pieces and even some attack helicopters. + <strong>extremely well armed</strong> with excellent small arms and specialized teams with heavy duty infantry support weapons. Heavy presence of armored military vehicles, artillery pieces and even some attack helicopters. <</if>> <hr> diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw index 3295e62a64f23535eb4d75020fd9ffcb5b0f2fb5..7610ab5bb417d5bdbcada3d783bb83f75d5ca783 100644 --- a/src/events/intro/introSummary.tw +++ b/src/events/intro/introSummary.tw @@ -561,9 +561,9 @@ __''Player Character''__ <br>You are a $PCCreationSex. <br>Change to <<if $PCCreationSex != "masculine ''Master''">> - [[masculine Master|Intro Summary][$PC.title = 1, $PC.pronoun = "he", $PC.possessive = "his", $PC.object = "him", $PCCreationSex = "masculine ''Master''"]] + [[masculine Master|Intro Summary][$PC.title = 1, $PC.genes = "XY", $PC.pronoun = "he", $PC.possessive = "his", $PC.object = "him", $PCCreationSex = "masculine ''Master''"]] <<elseif $PCCreationSex != "feminine ''Mistress''">> - [[feminine Mistress|Intro Summary][$PC.title = 0, $PC.pronoun = "her", $PC.possessive = "her", $PC.object = "her", $PCCreationSex = "feminine ''Mistress''"]] + [[feminine Mistress|Intro Summary][$PC.title = 0, $PC.genes = "XX", $PC.pronoun = "her", $PC.possessive = "her", $PC.object = "her", $PCCreationSex = "feminine ''Mistress''"]] <</if>> <br>Everyone calls you ''<<= PlayerName()>>.'' diff --git a/src/events/intro/pcBodyIntro.tw b/src/events/intro/pcBodyIntro.tw index 7541ec53d2c38340bf863675cfcd1729392e2c79..95f68f16afc88757bfedb08c5086f5a83342183e 100644 --- a/src/events/intro/pcBodyIntro.tw +++ b/src/events/intro/pcBodyIntro.tw @@ -6,10 +6,10 @@ Most slaveowners in the Free Cities are male. The preexisting power structures o <br> <<if $PC.title > 0>> - You have a masculine figure and will be referred to as ''Master.'' + You are a <<if $PC.genes == "XX">>wo<</if>>man with a masculine figure and will be referred to as ''Master.'' [[Switch to a feminine appearance|PC Body Intro][$PC.title = 0, $PC.pronoun = "her", $PC.possessive = "her", $PC.object = "her"]] <<else>> - You have a feminine figure and will be referred to as ''Mistress.'' + You are a <<if $PC.genes == "XX">>wo<</if>>man with a feminine figure and will be referred to as ''Mistress.'' [[Switch to a masculine appearance|PC Body Intro][$PC.title = 1, $PC.pronoun = "he", $PC.possessive = "his", $PC.object = "him"]] <</if>> <br> @@ -41,11 +41,11 @@ Behind the front of my tailored [[Remove the penis|PC Body Intro][$PC.dick = 0]] | [[Remove the vagina|PC Body Intro][$PC.vagina = 0]] <<else>> slacks, a ''penis.'' - [[Switch to vagina|PC Body Intro][$PC.dick = 0, $PC.vagina = 1]] | [[Add a vagina|PC Body Intro][$PC.vagina = 1]] + [[Switch to vagina|PC Body Intro][$PC.dick = 0, $PC.genes = "XX", $PC.vagina = 1]] | [[Add a vagina|PC Body Intro][$PC.vagina = 1]] <</if>> <<else>> skirt, a ''vagina.'' - [[Switch to penis|PC Body Intro][$PC.dick = 1, $PC.vagina = 0]] | [[Add a penis|PC Body Intro][$PC.dick = 1]] + [[Switch to penis|PC Body Intro][$PC.dick = 1, $PC.genes = "XY", $PC.vagina = 0]] | [[Add a penis|PC Body Intro][$PC.dick = 1]] <</if>> <br> //These options will affect sex scenes. Feminine options will increase difficulty.// diff --git a/src/js/datatypeCleanupJS.tw b/src/js/datatypeCleanupJS.tw index 7ee8f3bed3ef9388129a6699c12351144b94008d..ec4e8c772ec10e7252f0f345841e1dcf6b720e82 100644 --- a/src/js/datatypeCleanupJS.tw +++ b/src/js/datatypeCleanupJS.tw @@ -453,6 +453,7 @@ window.slaveRelationDatatypeCleanup = function slaveRelationDatatypeCleanup(slav slave.relationshipTarget = Math.max(+slave.relationshipTarget, 0) || 0; slave.rivalryTarget = Math.max(+slave.rivalryTarget, 0) || 0; slave.rivalry = Math.clamp(+slave.rivalry, 0, 3) || 0; + slave.cloneID = +slave.clone || 0; }; window.slaveSkillsDatatypeCleanup = function slaveSkillsDatatypeCleanup(slave) { diff --git a/src/js/generateGenetics.tw b/src/js/generateGenetics.tw index 7de1243a7b0049d50d69f4a2ea2141229a78a6a5..049d3c07a025d4097d5072b3b63013372a65add0 100644 --- a/src/js/generateGenetics.tw +++ b/src/js/generateGenetics.tw @@ -12,7 +12,7 @@ window.generateGenetics = (function() { function generateGenetics(actor1, actor2, x) { V = State.variables; - genes = {gender: "XX", name: "blank", surname: 0, mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", geneticQuirks: 0}; + genes = {gender: "XX", name: "blank", surname: 0, mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, faceShape: "cute", eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", clone: 0, cloneID: 0, geneticQuirks: 0}; if (actor1.ID > 0) { mother = V.genePool.find(function(s) { return s.ID == actor1.ID; }); if (mother === undefined) { @@ -954,6 +954,11 @@ window.generateChild = function(mother, ova, destination) { } } + if (genes.clone !== undefined) { + child.clone = genes.clone; + child.cloneID = genes.cloneID; + } + child.mother = genes.mother; child.father = genes.father; child.nationality = genes.nationality; diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGenerationJS.tw index 2443056b4c2fabc9064e126fdbe6ec0579b74852..6ec794cb8ec7e72e8028f0e619a07499ebd269cf 100644 --- a/src/js/slaveGenerationJS.tw +++ b/src/js/slaveGenerationJS.tw @@ -1737,6 +1737,7 @@ window.BaseSlave = function BaseSlave() { skillE: 0, skillW: 0, tankBaby: 0, + clone: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, diff --git a/src/js/wombJS.tw b/src/js/wombJS.tw index ef5f378bf9dcd9e607256481c27611f966b7de1a..27f9a4bd00fa5b705eff1871b073710d6ca81656 100644 --- a/src/js/wombJS.tw +++ b/src/js/wombJS.tw @@ -120,6 +120,68 @@ window.WombSurrogate = function(actor, fCount, mother, fatherID, age) { WombImpregnate(actor, fCount, fatherID, age, mother); }; +window.WombImpregnateClone = function(actor, fCount, mother, motherOriginal, age) { + var i; + var tf; + for (i=0; i<fCount; i++) { + tf = {}; //new Object + tf.age = age; //initial age + tf.fatherID = mother.ID; //We can store who is father too. + tf.volume = 1; //Initial, to create property. Updated with actual data after WombGetVolume call. + tf.reserve = ""; //Initial, to create property. Used later to mark if this child is to be kept. + tf.identical = 0; //Initial, to create property. Updated with actual data during fetalSplit call. + tf.splitted = 0; //marker for already splitted fetus. + tf.motherID = mother.ID; //Initial biological mother ID setup. + tf.genetics = generateGenetics(mother, mother.ID, i+1); //Stored genetic information. + tf.ID = generateNewID(); + + //Welcome to having to set up common relatives for the slave and her clone + if (mother.father === 0 || (mother.father < -1 && mother.father >= -20 && mother.father !== -3)) { + mother.father = State.variables.missingParentID; + State.variables.missingParentID--; + } + if (mother.mother === 0 || (mother.mother < -1 && mother.mother >= -20 && mother.mother !== -3)) { + mother.mother = State.variables.missingParentID; + State.variables.missingParentID--; + } + + //gene corrections + tf.genetics.gender = mother.genes; + tf.genetics.mother = mother.mother; + tf.genetics.father = mother.father; + if (mother.ID == -1) { + tf.genetics.motherName = mother.name; + tf.genetics.fatherName = mother.name; + tf.genetics.clone = PlayerName(mother); + tf.genetics.cloneID = -1; + } else { + tf.genetics.motherName = mother.slaveName; + tf.genetics.fatherName = mother.slaveName; + tf.genetics.clone = SlaveFullName(mother); + tf.genetics.cloneID = mother.ID; + } + tf.genetics.intelligence = motherOriginal.intelligence; + tf.genetics.face = motherOriginal.face; + tf.genetics.faceShape = motherOriginal.faceShape; + tf.genetics.geneticQuirks = clone(motherOriginal.geneticQuirks); + tf.genetics.skin = motherOriginal.skin; + + try { + if (actor.womb.length == 0) { + actor.pregWeek = age; + actor.preg = age; + } + actor.womb.push(tf); + } catch(err){ + WombInit(actor); + actor.womb.push(tf); + alert("WombImpregnate warning - " + actor.slaveName+" "+err); + } + + } + MissingParentIDCorrection(actor); +}; + window.WombProgress = function(actor, ageToAdd) { var i, ft; ageToAdd = Math.ceil(ageToAdd*10)/10; @@ -524,7 +586,7 @@ window.WombChangeGene = function(actor, geneName, newValue) window.MissingParentIDCorrection = function(actor) { WombInit(actor); actor.womb - .filter(ft => (ft.genetics.father === 0 || (ft.genetics.father < -1 && ft.genetics.father >= -20))) + .filter(ft => (ft.genetics.father === 0 || (ft.genetics.father < -1 && ft.genetics.father >= -20 && ft.genetics.father !== -3))) .forEach(ft => ft.genetics.father = State.variables.missingParentID); State.variables.missingParentID--; } diff --git a/src/pregmod/cloningWorkaround.tw b/src/pregmod/cloningWorkaround.tw new file mode 100644 index 0000000000000000000000000000000000000000..8fa5af3e7fba9085ade5f343a020cabb7b8aa502 --- /dev/null +++ b/src/pregmod/cloningWorkaround.tw @@ -0,0 +1,29 @@ +:: Cloning Workaround [nobr] + +<<set $nextButton = "Cancel", $receptrix = 0, _eligibility = 0>> + +//You've decided to clone <<if $donatrix.ID == -1>>yourself<<else>>$donatrix.slaveName<</if>>.// + +<br><br> + +__Select a slave to serve as the host for the clone__ + +<br> + +<<for _cw = 0; _cw < $slaves.length; _cw++>> +<<capture _cw>> + <<if ($slaves[_cw].ovaries > 0 || $slaves[_cw].mpreg > 0) && isSlaveAvailable($slaves[_cw]) && $slaves[_cw].preg >= 0 && $slaves[_cw].preg < $slaves[_cw].pregData.normalBirth/10 && $slaves[_cw].pregWeek >= 0 && $slaves[_cw].pubertyXX == 1 && $slaves[_cw].pregType < 12 && $slaves[_cw].bellyImplant == -1 && $slaves[_cw].broodmother == 0 && $slaves[_cw].inflation <= 2 && $slaves[_cw].physicalAge < 70>> + <<set _name = SlaveFullName($slaves[_cw])>> + <br><<print "[[_name|Surrogacy][$receptrix = $slaves[" + _cw + "], $cash -= ($surgeryCost*2), $surgeryType = 'clone']]">> <<if $slaves[_cw].pregType >= 4>>//Using a slave carrying multiples is unadvisable//<</if>> + <<set _eligibility = 1>> + <</if>> +<</capture>> +<</for>> +<<if (_eligibility == 0)>> + <br>//You have no slaves capable of acting as an incubator.// +<</if>> + +<<if $PC.vagina == 1 && $PC.preg >= 0 && $PC.preg < 4 && $PC.pregType < 8 && $PC.physicalAge < 70>> + <br> + [[Use your own womb|Surrogacy][$receptrix = $PC, $cash -= ($surgeryCost*2), $surgeryType = 'clone']] +<</if>> diff --git a/src/pregmod/geneLab.tw b/src/pregmod/geneLab.tw index 62df1dce36729b39206d2fbafbd17b09bb1dd563..c5feb381bffc96af3f304fec35afa92994141c70 100644 --- a/src/pregmod/geneLab.tw +++ b/src/pregmod/geneLab.tw @@ -7,4 +7,28 @@ The Gene Lab <hr> -//The gene lab is fully operational. It can identify genetic traits in slaves. It can be used to modify a slave's genome should you obtain the data necessary to adjust it.// \ No newline at end of file +//The gene lab is fully operational. It can identify genetic traits in slaves. It can be used to modify a slave's genome should you obtain the data necessary to adjust it.// + +<br><br> +Genetic Harvesting +<hr> + +<<if $cheatMode == 1>> +<<if ($cloningSystem != 1) && ($rep <= 18000*_PCSkillCheck)>> + //You lack the reputation needed to access methods for human cloning// + <br> +<<elseif ($cloningSystem != 1) && ($rep > 18000*_PCSkillCheck)>> + <<if $organFarmUpgrade == 0>> + //An organ farm is needed to grow the blank embryo to serve as a clone base// + <br> + <<else>> + [[Purchase methods for human cloning|Gene Lab][$cash -= 100000*_PCSkillCheck, $cloningSystem = 1]] + //Costs <<print cashFormat(100000*_PCSkillCheck)>>// + <br> //Will allow children to be created with indentical base genetics as the source DNA// + <br> + <</if>> +<<elseif ($cloningSystem > 0)>> + The gene lab is capable of implanting a slave's genetic sequence into a blank embryo to produce a basic clone. + <br> +<</if>> +<</if>> \ No newline at end of file diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 3dff3e42120c9ff76b3d7bca43fb776b0894f56f..872215cd269d8b959111b7d042daa3b471a3fefb 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -592,6 +592,9 @@ __Other Personal Business__ <br> You lack the reputation to be invited to the underground Black Market. <</if>> +<<if $cloningSystem == 1>> + <br> [[Clone yourself|Cloning Workaround][$returnTo = "Manage Personal Affairs", $donatrix = $PC]] +<</if>> <<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">> <br><br> diff --git a/src/pregmod/organFarm.tw b/src/pregmod/organFarm.tw index a02800325e7007a08fc2c475eb0395ee8ac05620..549c903794f7158d0c022a5ba65fbcb7efa8732b 100644 --- a/src/pregmod/organFarm.tw +++ b/src/pregmod/organFarm.tw @@ -132,19 +132,17 @@ Organ Production <br> <</if>> -<<if $organFarmUpgrade > 0>> - <<if ($youngerOvaries != 1) && ($rep <= 10000*_PCSkillCheck)>> - //You lack the reputation to access designs for cloning fertile ovaries for menopausal slaves.// - <br> - <<elseif ($youngerOvaries != 1) && ($rep > 10000*_PCSkillCheck)>> - [[Purchase designs for cloning fertile ovaries for menopausal slaves|Organ Farm][$cash -= 30000*_PCSkillCheck, $youngerOvaries = 1]] - //Costs <<print cashFormat(30000*_PCSkillCheck)>>// - <br> //Will allow the growth of younger, fertile ovaries for menopausal slaves. Restored fertility will only last for a couple years at most.// - <br> - <<elseif ($youngerOvaries > 0)>> - The organ farm is capable of growing fertile ovaries for postmenopausal slaves. - <br> - <</if>> +<<if ($youngerOvaries != 1) && ($rep <= 10000*_PCSkillCheck)>> + //You lack the reputation to access designs for cloning fertile ovaries for menopausal slaves.// + <br> +<<elseif ($youngerOvaries != 1) && ($rep > 10000*_PCSkillCheck)>> + [[Purchase designs for cloning fertile ovaries for menopausal slaves|Organ Farm][$cash -= 30000*_PCSkillCheck, $youngerOvaries = 1]] + //Costs <<print cashFormat(30000*_PCSkillCheck)>>// + <br> //Will allow the growth of younger, fertile ovaries for menopausal slaves. Restored fertility will only last for a couple years at most.// + <br> +<<elseif ($youngerOvaries > 0)>> + The organ farm is capable of growing fertile ovaries for postmenopausal slaves. + <br> <</if>> /* <<if $seePreg != 0 && $seeBestiality != 0>> diff --git a/src/pregmod/surrogacy.tw b/src/pregmod/surrogacy.tw index f3a6ee56a5d99da4c43efcd2b9c4ac8e2cfc6020..faa29826b6124e52057b3114d8efd63f2f0c3787 100644 --- a/src/pregmod/surrogacy.tw +++ b/src/pregmod/surrogacy.tw @@ -118,4 +118,77 @@ <</if>> <<set $receptrix = 0, $donatrix = 0, $wombIndex = 0>> +<<case "clone">> + + <<if $receptrix.ID == -1>> + Since the surgery required only a local anesthetic, you remain fully aware of the procedure as the autosurgery carries it out. You slowly rise to your feet, a hand to your lower belly, appreciating the clone growing within you. + <<set $PC.pregKnown = 1>> + <<if $donatrix.ID != -1>> + <<set _babyDaddy = $genePool.find(function(s) { return s.ID == $donatrix.ID; })>> + <<if ndef _babyDaddy>> + <<set _babyDaddy = $slaveIndices[$donatrix.ID]>> + <</if>> + <<else>> + <<set _babyDaddy = $PC>> + <</if>> + <<run WombImpregnateClone($PC, 1, $donatrix, _babyDaddy, 1)>> + <<run WombNormalizePreg($PC)>> + <<else>> + <<set $receptrix.pregKnown = 1>> + <<if $donatrix.ID != -1>> + <<set _babyDaddy = $genePool.find(function(s) { return s.ID == $donatrix.ID; })>> + <<if ndef _babyDaddy>> + <<set _babyDaddy = $slaveIndices[$donatrix.ID]>> + <</if>> + <<else>> + <<set _babyDaddy = $PC>> + <</if>> + <<run WombImpregnateClone($receptrix, 1, $donatrix, _babyDaddy, 1)>> + <<run WombNormalizePreg($receptrix)>> + <<setLocalPronouns $receptrix>> + <<if $receptrix.fetish == "mindbroken">> + $receptrix.slaveName leaves the surgery with a certain warmth in $his lower abdomen, + <<if $receptrix.ID == $donatrix.ID>> + but has no idea $he carries $his own clone. + <<else>> + $he knows that $he has been impregnated. + <</if>> + <<elseif ($receptrix.fetish == "pregnancy") && ($receptrix.fetishStrength > 60) && ($receptrix.fetishKnown == 1)>> + <<if canSee($receptrix)>> + Since the surgery required only a local anesthetic, $receptrix.slaveName remained fully aware throughout the procedure. $He was overjoyed at the sight of the syringe containing $his <<if $receptrix.ID == $donatrix.ID>>clone<<else>>future child<</if>> emptying into $his womb. + <<else>> + $receptrix.slaveName leaves the surgery with a certain warmth in $his lower abdomen, $he knows that $he has been impregnated<<if $receptrix.ID == $donatrix.ID>>, but not that $he now bears $his own clone<</if>>. + <</if>> + $He is @@.hotpink; filled with joy@@ over the life settling into $his womb and can't wait to see the result. $He's so pleased that $he now @@.mediumaquamarine;trusts@@ your plans for $his body. + <<set $receptrix.trust += 4, $receptrix.devotion += 10>> + <<elseif ($receptrix.devotion > 50)>> + <<if canSee($receptrix)>> + Since the surgery required only a local anesthetic, $receptrix.slaveName remained fully aware throughout the procedure. $He watched the syringe containing $his new pregnancy empty into $his womb with rapt attention. + <<else>> + $receptrix.slaveName leaves the surgery with a certain warmth in $his lower abdomen, $he knows that $he has been impregnated<<if $receptrix.ID == $donatrix.ID>>, but not that $he now bears $his own clone<</if>>. + <</if>> + $He's @@.hotpink;grateful@@ that you think $him worthy of carrying this child, and a little nervous about how $he'll perform as a surrogate. + <<set $receptrix.devotion += 4>> + <<elseif ($receptrix.devotion >= -20)>> + <<if canSee($receptrix)>> + Since the surgery required only a local anesthetic, $receptrix.slaveName remained fully aware throughout the procedure. From the syringe making contact with $his skin, to the egg's delivery into $his womb and $his subsequent impregnation, $he couldn't look away. + <<else>> + $receptrix.slaveName leaves the surgery with a certain warmth in $his lower abdomen, $he knows that $he has been impregnated<<if $receptrix.ID == $donatrix.ID>>, but not that $he now bears $his own clone<</if>>. + <</if>> + $He understands the realities of $his life as a slave, so it isn't much of a shock. $He is @@.gold;sensibly fearful@@ of your total power over $his body. + <<set $receptrix.trust -= 10>> + <<else>> + <<if canSee($receptrix)>> + Since the surgery required only a local anesthetic, $receptrix.slaveName remained fully aware throughout the procedure. The moment $he realized what was happening, $he shut $his eyes tight, only opening them again as $he feels the slight tingle of the injector exiting $his lower abdomen. + <<else>> + $receptrix.slaveName leaves the surgery with a certain warmth in $his lower abdomen, $he knows that $he has been impregnated. + <</if>> + $He does not understand the realities of $his life as a slave at a core level, so $he's @@.mediumorchid;terrified and angry@@ that you have forced $him to bear <<if $receptrix.ID == $donatrix.ID>>$his own clone and potential replacement<<else>>this child, even more so as $he realizes $he doesn't know who the father is<</if>>. $He is @@.gold;sensibly fearful@@ of your total power over $his body and the future of the life $he now harbors within $him. + <<set $receptrix.trust -= 15, $receptrix.devotion -= 15>> + <</if>> + <<set _surr = $slaves.findIndex(function(s) { return s.ID == $receptrix.ID; })>> + <<set $slaves[_surr] = $receptrix>> + <</if>> + <<set $receptrix = 0, $impregnatrix = 0, $donatrix = 0>> + <</switch>> \ No newline at end of file diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index c98e43d194990f7ef994cf9cfa1bd556e9040677..6c66291ada2d84319bc5db871b7987efd6a503e2 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -1,7 +1,7 @@ :: pregmod widgets [nobr widget] <<widget "initPC">> - <<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0}}>> + <<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, genes: "XY", pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0}}>> <<set WombInit($PC)>> @@ -130,6 +130,9 @@ <</if>> <</for>> <</if>> +<<if ndef $args[0].clone>> + <<set $args[0].clone = 0>> +<</if>> <</widget>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 2978c7481269e4553e54bc921dbaaff7cd06e8e8..1a747b3d6ac00e2016c63ae29758af7de6d9d472 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -388,6 +388,13 @@ <<set $PC.pregSource = -2>> <</if>> <</if>> +<<if ndef $PC.genes>> + <<if $PC.title == 1>> + <<set $PC.genes == "XY">> + <<else>> + <<set $PC.genes == "XX">> + <</if>> +<</if>> <<run PCDatatypeCleanup()>> <<run BCReserveInit()>> diff --git a/src/uncategorized/managePenthouse.tw b/src/uncategorized/managePenthouse.tw index 766519761593bcc503bb001ade97e4b6bbdd62da..535e2d9e2c490b0ce906bfce5fba9ff2c3bbee61 100644 --- a/src/uncategorized/managePenthouse.tw +++ b/src/uncategorized/managePenthouse.tw @@ -338,7 +338,7 @@ __Penthouse Upgrades__ //You lack the reputation to purchase a cutting-edge genetic sequencer// <</if>> <<else>> - There is a genetic sequencer linked with the pharmaceutical fabricator. + There is a [[genetic sequencer|Gene Lab]] attached to the surgery. <</if>> <br> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 6aa3a2ac0be689209fa6a737b6a26c5aa9166877..3d86806f35159943e507bde118110a3b0b52621f 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -3543,50 +3543,52 @@ <</if>> <<default>> /* random impregnation chance on other assignments - consider relationships first */ - <<if (_conceptionSeed > 80) && (($slaves[$i].vaginalCount > 0) || ($slaves[$i].analCount > 0 && $slaves[$i].mpreg > 0))>> /* TODO: compare to previous week totals? */ - <<if $slaves[$i].relationshipTarget > 0>> - <<set _tempLover = getSlave($slaves[$i].relationshipTarget)>> - <<if ndef _tempLover>>@@.red;Error, relationshipTarget not found.@@<</if>> - <<elseif $slaves[$i].rivalryTarget > 0>> - <<set _tempRival = getSlave($slaves[$i].rivalryTarget)>> - <<if ndef _tempRival>>@@.red;Error, rivalryTarget not found.@@<</if>> - <<elseif $slaves[$i].subTarget > 0>> - <<set _tempSub = getSlave($slaves[$i].subTarget)>> - <<if ndef _tempSub>>@@.red;Error, subTarget not found.@@<</if>> - <</if>> - <<if (($slaves[$i].relationship == -3) || ($slaves[$i].relationship == -2)) && canImpreg($slaves[$i], $PC)>> - <<set $slaves[$i].pregSource = -1>> - <<elseif ($slaves[$i].relationship > 2) && canImpreg($slaves[$i], _tempLover)>> /* erection not needed for impregnation via consensual sex play (FWB or better) */ - <<set $slaves[$i].pregSource = _tempLover.ID>> - <<elseif ($slaves[$i].subTarget != 0) && ($slaves[$i].assignment == "be a subordinate slave") && canAchieveErection(_tempSub) && canImpreg($slaves[$i], _tempSub)>> /* subordinate must have erection to impregnate target */ - <<set $slaves[$i].pregSource = _tempSub.ID>> - <<elseif (random(1,100) > 95) && ($slaves[$i].rivalry > 2) && canAchieveErection(_tempRival) && canImpreg($slaves[$i], _tempRival)>> /* 5% chance to be raped and knocked up by bitter rival - erection needed */ - Driven by the bitter rivalry between them, _tempRival.slaveName successfully overpowers $slaves[$i].slaveName and rapes $him, cumming deep in $his fertile <<if $slaves[$i].mpreg == 1>>asshole<<else>>pussy<</if>> whenever $he chooses. By the end of the week, $slaves[$i].slaveName is vowing revenge as $he regains confidence. - <<set $slaves[$i].pregSource = _tempRival.ID>> - <<elseif (random(1,100) > 60) && canImpreg($slaves[$i], $PC)>> /* still 40% chance of impregnation by PC */ - <<set $slaves[$i].pregSource = -1>> - <<elseif (random(1,100) > 95) && ($slaves[$i].eggType == "human") && $slaves[$i].devotion <= 20>> /* 5% chance of impregnation by random citizen - TODO: make this optional for players who want random fathers from among their own slaves only */ - <<set $slaves[$i].pregSource = -2>> - <<else>> - /* pick a random starting point in the slave array and iterate (wrapping around) until finding eligible father or coming back to starting point */ - <<if $slaves.length == 1>> - <<if canImpreg($slaves[$i], $slaves[$i]) && _conceptionSeed > 95 && ($slaves[$i].releaseRules == "permissive" || $slaves[$i].releaseRules == "masturbation")>> - <<set $slaves[$i].pregSource = $slaves[$i].ID>> - <</if>> - <<elseif $slaves[$i].releaseRules == "permissive" || ($slaves[$i].devotion <= 20 && $slaves[$i].trust > 50) || $universalRulesConsent == 0>> - <<set _sourceSeed = random(0,$slaves.length-1)>><<set _tried = 0>> - <<for _m = _sourceSeed + 1; _m != _sourceSeed; _m++>> - <<if _m == $slaves.length>><<set _m = 0, _tried = 1>><</if>> /* wrap around */ - <<if _m == _sourceSeed+1 && _tried == 1>><<break>><</if>> /* give up after a full loop */ - <<if canImpreg($slaves[$i], $slaves[_m])>> - /* self-impregnation check */ - <<if ($slaves[_m].ID == $slaves[$i].ID) && (_conceptionSeed <= 95)>> - <<continue>> /* 95% chance not to self-impregnate */ - <</if>> - <<set $slaves[$i].pregSource = $slaves[_m].ID>> /* passed the checks above, so this is an eligible father */ - <<break>> + <<if ["masturbation", "chastity"].includes($slaves[$i].releaseRules) && $slaves[$i].devotion <= 50>> + <<if (_conceptionSeed > 80) && (($slaves[$i].vaginalCount > 0) || ($slaves[$i].analCount > 0 && $slaves[$i].mpreg > 0))>> /* TODO: compare to previous week totals? */ + <<if $slaves[$i].relationshipTarget > 0>> + <<set _tempLover = getSlave($slaves[$i].relationshipTarget)>> + <<if ndef _tempLover>>@@.red;Error, relationshipTarget not found.@@<</if>> + <<elseif $slaves[$i].rivalryTarget > 0>> + <<set _tempRival = getSlave($slaves[$i].rivalryTarget)>> + <<if ndef _tempRival>>@@.red;Error, rivalryTarget not found.@@<</if>> + <<elseif $slaves[$i].subTarget > 0>> + <<set _tempSub = getSlave($slaves[$i].subTarget)>> + <<if ndef _tempSub>>@@.red;Error, subTarget not found.@@<</if>> + <</if>> + <<if (($slaves[$i].relationship == -3) || ($slaves[$i].relationship == -2)) && canImpreg($slaves[$i], $PC)>> + <<set $slaves[$i].pregSource = -1>> + <<elseif ($slaves[$i].relationship > 2) && canImpreg($slaves[$i], _tempLover)>> /* erection not needed for impregnation via consensual sex play (FWB or better) */ + <<set $slaves[$i].pregSource = _tempLover.ID>> + <<elseif ($slaves[$i].subTarget != 0) && ($slaves[$i].assignment == "be a subordinate slave") && canAchieveErection(_tempSub) && canImpreg($slaves[$i], _tempSub)>> /* subordinate must have erection to impregnate target */ + <<set $slaves[$i].pregSource = _tempSub.ID>> + <<elseif (random(1,100) > 95) && ($slaves[$i].rivalry > 2) && canAchieveErection(_tempRival) && canImpreg($slaves[$i], _tempRival)>> /* 5% chance to be raped and knocked up by bitter rival - erection needed */ + Driven by the bitter rivalry between them, _tempRival.slaveName successfully overpowers $slaves[$i].slaveName and rapes $him, cumming deep in $his fertile <<if $slaves[$i].mpreg == 1>>asshole<<else>>pussy<</if>> whenever $he chooses. By the end of the week, $slaves[$i].slaveName is vowing revenge as $he regains confidence. + <<set $slaves[$i].pregSource = _tempRival.ID>> + <<elseif (random(1,100) > 60) && canImpreg($slaves[$i], $PC) && !["masturbation", "chastity"].includes($slaves[$i].releaseRules)>> /* still 40% chance of impregnation by PC */ + <<set $slaves[$i].pregSource = -1>> + <<elseif (random(1,100) > 95) && ($slaves[$i].eggType == "human") && $slaves[$i].devotion <= 20>> /* 5% chance of impregnation by random citizen - TODO: make this optional for players who want random fathers from among their own slaves only */ + <<set $slaves[$i].pregSource = -2>> + <<else>> + /* pick a random starting point in the slave array and iterate (wrapping around) until finding eligible father or coming back to starting point */ + <<if $slaves.length == 1>> + <<if canImpreg($slaves[$i], $slaves[$i]) && _conceptionSeed > 95 && ($slaves[$i].releaseRules == "permissive" || $slaves[$i].releaseRules == "masturbation")>> + <<set $slaves[$i].pregSource = $slaves[$i].ID>> <</if>> - <</for>> + <<elseif $slaves[$i].releaseRules == "permissive" || ($slaves[$i].devotion <= 20 && $slaves[$i].trust > 50) || $universalRulesConsent == 0>> + <<set _sourceSeed = random(0,$slaves.length-1)>><<set _tried = 0>> + <<for _m = _sourceSeed + 1; _m != _sourceSeed; _m++>> + <<if _m == $slaves.length>><<set _m = 0, _tried = 1>><</if>> /* wrap around */ + <<if _m == _sourceSeed+1 && _tried == 1>><<break>><</if>> /* give up after a full loop */ + <<if canImpreg($slaves[$i], $slaves[_m])>> + /* self-impregnation check */ + <<if ($slaves[_m].ID == $slaves[$i].ID) && (_conceptionSeed <= 95)>> + <<continue>> /* 95% chance not to self-impregnate */ + <</if>> + <<set $slaves[$i].pregSource = $slaves[_m].ID>> /* passed the checks above, so this is an eligible father */ + <<break>> + <</if>> + <</for>> + <</if>> <</if>> <</if>> <<if $slaves[$i].pregSource != 0>> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw index 929be6551276844c8487d3d36d11286f585868be..8c2cb717a752af59c7706bb6869d188be8c35e66 100644 --- a/src/uncategorized/saRules.tw +++ b/src/uncategorized/saRules.tw @@ -3055,7 +3055,7 @@ <<if ($slaves[$i].attrKnown == 0)>> <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> <<set $slaves[$i].attrKnown = 1>> - <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> has been monitoring $him as $he services customers, analyzing $his sexuality. It seems $he is + <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> has been monitoring $him as $he studies, analyzing what topics $he tends to keep returning to. It seems $he is <<saRulesAttractionDiscovery>> <</if>> <</if>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 00fd1e6c7fe5a809ad97ba8d696cd0bddb45ad78..cdf1a63f73428e11e435de12c3ba6c3a3fbc887e 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -1463,7 +1463,11 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 <</if>> <</if>> <</if>> -/**/ + +<<if $cloningSystem == 1>> + <br> + <<link "Clone $him" "Cloning Workaround">><<set $returnTo = "Main", $donatrix = $activeSlave>><</link>> +<</if>> <<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">> <<if $activeSlave.breedingMark == 0 && $activeSlave.fuckdoll == 0 && $activeSlave.eggType == "human" && isFertile($activeSlave)>> <br> diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw index 70200a14739e20759985ecbe2fc9be7b5196f5e0..bec3fe24c95687672dbf25200550810d424a6c2f 100644 --- a/src/uncategorized/storyCaption.tw +++ b/src/uncategorized/storyCaption.tw @@ -610,6 +610,9 @@ <br> <br><<link [[Wardrobe]]>><</link>> <br><<if $dispensary>>[[Pharmaceutical Fabricator|Dispensary]]<</if>> + <br><<if $ImplantProductionUpgrade>>[[Implant Manufactory|Implant Manufactory]]<</if>> + <br><<if $organFarmUpgrade>>[[Organ Farm|Organ Farm]]<</if>> + <br><<if $geneticMappingUpgrade>>[[Gene Lab|Gene Lab]]<</if>> <br><<if $rep >= 10000>>[[Black Market|The Black Market]]<</if>> <br><br><br><br><br> <<elseif _Pass == "Manage Economy">> @@ -658,6 +661,9 @@ <br> <br><<link [[Wardrobe]]>><</link>> <br><<if $dispensary>>[[Pharmaceutical Fabricator|Dispensary]]<</if>> + <br><<if $ImplantProductionUpgrade>>[[Implant Manufactory|Implant Manufactory]]<</if>> + <br><<if $organFarmUpgrade>>[[Organ Farm|Organ Farm]]<</if>> + <br><<if $geneticMappingUpgrade>>[[Gene Lab|Gene Lab]]<</if>> <br><<if $rep >= 10000>>[[Black Market|The Black Market]]<</if>> <br><br><br><br><br>