diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index ff009d2b75ffb833722d7b9f256d047eca7317a0..dab782f1b8e33c36c4794bf9dae0e6c398f0e6ca 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -811,6 +811,20 @@ window.ngUpdateGenePool = function(genePool) { }); } +window.ngUpdateMissingTable = function(missingTable) { + var newTable = {}; + + (State.variables.slaves || []) + .forEach(s => ([s.pregSource+1200000,s.mother+1200000,s.father+1200000] + .filter(i => (i in missingTable)) + .forEach(i => { + newTable[i-1200000] = missingTable[i]; + newTable[i-1200000].ID -= 1200000; + }))); + + return newTable; +}; + window.toJson = function(obj) { var jsontext = JSON.stringify(obj); jsontext = jsontext.replace(/^{/,""); @@ -9794,6 +9808,14 @@ window.WombZeroID = function(actor, id) { WombNormalizePreg(actor); }; +window.WombChangeID = function(actor, fromID, toID) { + WombInit(actor); + actor.womb + .filter(ft => ft.fatherID === fromID) + .forEach(ft => ft.fatherID = toID); + WombNormalizePreg(actor); +}; + /* Sorts the womb object by age with oldest and thus soonest to be born, first. This will be needed in the future once individual fertilization is a possibility.*/ window.WombSort = function(actor) { actor.womb.sort((a, b) => { return b.age - a.age; }); @@ -11862,10 +11884,16 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { } var mom = character.mother; if(mom < -6) { - if(typeof outmoms[mom] == 'undefined') { - outmoms[mom] = []; + if (mom in State.variables.missingTable && State.variables.showMissingSlaves) { + node_lookup[mom] = family_graph.nodes.length; + var missing = State.variables.missingTable[mom]; + charList.push({ID: mom, mother: 0, father: 0, is_mother: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); + } else { + if(typeof outmoms[mom] == 'undefined') { + outmoms[mom] = []; + } + outmoms[mom].push(character.slaveName); } - outmoms[mom].push(character.slaveName); } else if(mom < 0 && typeof node_lookup[mom] == 'undefined' && typeof preset_lookup[mom] != 'undefined') { node_lookup[mom] = family_graph.nodes.length; charList.push({ID: mom, mother: 0, father: 0, is_father: true, dick: 0, vagina: 1, slaveName: preset_lookup[mom]}); @@ -11873,10 +11901,16 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { var dad = character.father; if(dad < -6) { - if(typeof outdads[dad] == 'undefined') { - outdads[dad] = []; + if (dad in State.variables.missingTable && State.variables.showMissingSlaves) { + node_lookup[dad] = family_graph.nodes.length; + var missing = State.variables.missingTable[dad]; + charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); + } else { + if(typeof outdads[dad] == 'undefined') { + outdads[dad] = []; + } + outdads[dad].push(character.slaveName); } - outdads[dad].push(character.slaveName); } else if(dad < 0 && typeof node_lookup[dad] == 'undefined' && typeof preset_lookup[dad] != 'undefined') { node_lookup[dad] = family_graph.nodes.length; charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: 1, vagina: -1, slaveName: preset_lookup[dad]}); @@ -23162,6 +23196,8 @@ window.SlaveSummaryUncached = (function(){ handled = 1; } r += " "; + } else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.mother].fullName}'s daughter `; } if (slave.father > 0 && slave.father !== slave.mother) { let _ssj = V.slaves.findIndex(function(s) { @@ -23195,6 +23231,8 @@ window.SlaveSummaryUncached = (function(){ handled = 1; } r += " "; + } else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.father].fullName}'s daughter`; } if (slave.daughters === 1) { let _ssj = V.slaves.findIndex(function(s) { @@ -23422,6 +23460,8 @@ window.SlaveSummaryUncached = (function(){ } else { r += `<span class="lightgreen">daughter.</span> `; } + } else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.mother].fullName}'s <span class="lightgreen">daughter.</span> `; } if (slave.father > 0 && slave.father !== slave.mother) { let _ssj = V.slaves.findIndex(function(s) { @@ -23456,6 +23496,8 @@ window.SlaveSummaryUncached = (function(){ } else { r += `<span class="lightgreen">daughter.</span> `; } + } else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.father].fullName}'s <span class="lightgreen">daughter.</span> `; } if (slave.daughters === 1) { let _ssj = V.slaves.findIndex(function(s) { @@ -24101,7 +24143,10 @@ window.removeActiveSlave = function removeActiveSlave() { const INDEX = V.slaveIndices[AS_ID]; let missing = false; - WombZeroID(V.PC, AS_ID); + WombChangeID(V.PC, AS_ID, V.missingParentID); + if (V.PC.pregSource === V.missingParentID) { + missing = true; + } if (V.activeSlave.reservedChildren > 0) { V.reservedChildren -= V.activeSlave.reservedChildren; } @@ -24138,7 +24183,10 @@ window.removeActiveSlave = function removeActiveSlave() { }); } V.slaves.forEach(slave => { - WombZeroID(slave, AS_ID); /* This check is complex, should be done in JS now, all needed will be done here. */ + WombChangeID(slave, AS_ID, V.missingParentID); /* This check is complex, should be done in JS now, all needed will be done here. */ + if (slave.pregSource === V.missingParentID) { + missing = true; + } if (V.activeSlave.daughters > 0) { if (slave.mother === AS_ID) { slave.mother = V.missingParentID; @@ -24286,13 +24334,19 @@ window.removeActiveSlave = function removeActiveSlave() { } } - removeSlave(INDEX); - LENGTH--; - V.activeSlave = 0; - if (missing) { + V.missingTable[V.missingParentID] = { slaveName: V.activeSlave.slaveName, + slaveSurname: V.activeSlave.slaveSurname, + fullName: SlaveFullName(V.activeSlave), + dick : V.activeSlave.dick, + vagina : V.activeSlave.vagina, + ID : V.missingParentID }; V.missingParentID--; } + + removeSlave(INDEX); + LENGTH--; + V.activeSlave = 0; } }; diff --git a/src/SpecialForce/JS.js b/src/SpecialForce/JS.js index c90792a201640226898268989b02b6984acb4b83..0f51ed8ece7a7fd65337a9552f15f3ed6e7f8fa7 100644 --- a/src/SpecialForce/JS.js +++ b/src/SpecialForce/JS.js @@ -68,9 +68,9 @@ window.Count = function() { T.Base = S.Firebase + S.Armoury + S.Drugs + S.Drones + T.H+T.SFF; T.BaseU = T.FU + T.AU + T.DrugsU + T.DU + T.HU+T.SFFU; } - if (V.terrain !== "oceanic") T.LBU += T.GRU, T.LB += S.GiantRobot, T.Base += T.G, T.BaseU += T.GU; + if (V.terrain !== "oceanic") { T.LBU += T.GRU, T.LB += S.GiantRobot, T.Base += T.G, T.BaseU += T.GU; T.max = T.BaseU + T.LBU, V.SF.Units = T.Base + T.LB; - if (V.terrain === "oceanic" || V.terrain === "marine") { + } else { T.NY = S.AircraftCarrier + S.Sub + S.HAT, V.SF.Units += T.NY; T.NYU = T.ACU + T.SubU + T.HATU, T.max += T.NYU;} V.SF.Units = C(V.SF.Units, 0, T.max); diff --git a/src/SpecialForce/Report.tw b/src/SpecialForce/Report.tw index 49899d18fb3e97f8105dbdabcb4c62181d663eea..dc06173356ef2ef2ac6c1a823f08f77c070aade6 100644 --- a/src/SpecialForce/Report.tw +++ b/src/SpecialForce/Report.tw @@ -130,7 +130,7 @@ <<if $SFUnit.GiantRobot > 0>> - <<set _FNGs += SF.GiantRobot,_Trade += 0.25*$SFUnit.GiantRobot,_ME *= 1+($SFUnit.GiantRobot)>> + <<set _FNGs += $SFUnit.GiantRobot,_Trade += 0.25*$SFUnit.GiantRobot,_ME *= 1+($SFUnit.GiantRobot)>> <</if>> @@ -168,7 +168,7 @@ <<if $SFTradeShow.History > 0>> <<set _ME *= 1+($SFTradeShow.History)>> <</if>> - <<if $LieutenantColonel == 1>> <<set _ME *= 1+($LieutenantColonel)>> <</if>> + <<if $SF.Facility.LC > 0>> <<set _ME *= 1+($SF.Facility.LC)>> <</if>> @@ -210,11 +210,11 @@ <<else>> <<set _FNGs += Math.ceil((_FNGs)*.25)>> <</if>> - <<if $SF.Target == "secure">> <<set $rep += Math.ceil($rep*((_Trade/100)*.95))>> + <<if $SF.Target == "secure">> <<set $rep += Math.ceil($rep+((_Trade/100)*.95))>> <<set $arcologies[0].prosperity = Math.ceil(($arcologies[0].prosperity+(_Trade/10)*.95))>> - <<else>> <<set $rep += Math.ceil($rep*((_Trade/100)*.25))>> + <<else>> <<set $rep += Math.ceil($rep+((_Trade/100)*.25))>> <<set $arcologies[0].prosperity = Math.ceil(($arcologies[0].prosperity+(_Trade/10)*.25))>> diff --git a/src/SpecialForce/Upgrades.tw b/src/SpecialForce/Upgrades.tw index 2da2e46c89b517ca5cba75d9510689d33a0e53c4..269032de2318c798cbf97ea87c9e23c185ff5af4 100644 --- a/src/SpecialForce/Upgrades.tw +++ b/src/SpecialForce/Upgrades.tw @@ -234,7 +234,7 @@ <<link "Upgrade Satellite">><<set $SF.U = 1, $SFUnit.Satellite++, $cash -= _cSat>> <<goto "Firebase">><</link>> - <<else>>//Cannot afford to upgrade Satellite.//>><</if>> + <<else>>//Cannot afford to upgrade Satellite.//<</if>> //Costs @@.yellowgreen;<<print cashFormat(_cSat)>>@@//<span style="float:right;"><<print progress($SFUnit.Satellite)>> </span> diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 9ae8c0cc7f126a962c83043f9e134c6fddf512ee..b94ac1052f3e40389bd60766b7d05dab1ecb4439 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -97,6 +97,11 @@ You should have received a copy of the GNU General Public License along with thi <</if>> <</for>> <<set $genePool = ngUpdateGenePool($genePool)>> + <<if ndef $missingTable || $showMissingSlaves == 0>> + <<set $missingTable = {}>> + <<else>> + <<set $missingTable = ngUpdateMissingTable($missingTable)>> + <</if>> /* <<for $i = 0; $i < $genePool.length; $i++>> <<for $k = 0; $k < $slaves.length; $k++>> @@ -244,6 +249,9 @@ You should have received a copy of the GNU General Public License along with thi <<set $slavesOriginal = []>> /* not used by pregmod */ <<set $genePool = []>> <<set $slaveIndices = slaves2indices()>> + <<set $missingTable = {}>> + <<set $showMissingSlaves = false>> + <<set $showMissingSlavesSD = false>> <</if>> <<set $organs = []>> diff --git a/src/js/familyTree.tw b/src/js/familyTree.tw index 4a8fbfec0a204396730e049092baa8a0d1ec8906..74a03a79a1909fb3a5ab03023280798676b327c6 100644 --- a/src/js/familyTree.tw +++ b/src/js/familyTree.tw @@ -265,10 +265,16 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { } var mom = character.mother; if(mom < -6) { - if(typeof outmoms[mom] == 'undefined') { - outmoms[mom] = []; + if (mom in State.variables.missingTable && State.variables.showMissingSlaves) { + node_lookup[mom] = family_graph.nodes.length; + var missing = State.variables.missingTable[mom]; + charList.push({ID: mom, mother: 0, father: 0, is_mother: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); + } else { + if(typeof outmoms[mom] == 'undefined') { + outmoms[mom] = []; + } + outmoms[mom].push(character.slaveName); } - outmoms[mom].push(character.slaveName); } else if(mom < 0 && typeof node_lookup[mom] == 'undefined' && typeof preset_lookup[mom] != 'undefined') { node_lookup[mom] = family_graph.nodes.length; charList.push({ID: mom, mother: 0, father: 0, is_father: true, dick: 0, vagina: 1, slaveName: preset_lookup[mom]}); @@ -276,10 +282,16 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { var dad = character.father; if(dad < -6) { - if(typeof outdads[dad] == 'undefined') { - outdads[dad] = []; + if (dad in State.variables.missingTable && State.variables.showMissingSlaves) { + node_lookup[dad] = family_graph.nodes.length; + var missing = State.variables.missingTable[dad]; + charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); + } else { + if(typeof outdads[dad] == 'undefined') { + outdads[dad] = []; + } + outdads[dad].push(character.slaveName); } - outdads[dad].push(character.slaveName); } else if(dad < 0 && typeof node_lookup[dad] == 'undefined' && typeof preset_lookup[dad] != 'undefined') { node_lookup[dad] = family_graph.nodes.length; charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: 1, vagina: -1, slaveName: preset_lookup[dad]}); diff --git a/src/js/removeActiveSlave.tw b/src/js/removeActiveSlave.tw index 6b8c3db5675fdfab8d607309771e9d16b04cdef2..4c69f001ed07aab0cc351168e8f6a05c50a59321 100644 --- a/src/js/removeActiveSlave.tw +++ b/src/js/removeActiveSlave.tw @@ -9,7 +9,10 @@ window.removeActiveSlave = function removeActiveSlave() { const INDEX = V.slaveIndices[AS_ID]; let missing = false; - WombZeroID(V.PC, AS_ID); + WombChangeID(V.PC, AS_ID, V.missingParentID); + if (V.PC.pregSource === V.missingParentID) { + missing = true; + } if (V.activeSlave.reservedChildren > 0) { V.reservedChildren -= V.activeSlave.reservedChildren; } @@ -46,7 +49,10 @@ window.removeActiveSlave = function removeActiveSlave() { }); } V.slaves.forEach(slave => { - WombZeroID(slave, AS_ID); /* This check is complex, should be done in JS now, all needed will be done here. */ + WombChangeID(slave, AS_ID, V.missingParentID); /* This check is complex, should be done in JS now, all needed will be done here. */ + if (slave.pregSource === V.missingParentID) { + missing = true; + } if (V.activeSlave.daughters > 0) { if (slave.mother === AS_ID) { slave.mother = V.missingParentID; @@ -183,6 +189,9 @@ window.removeActiveSlave = function removeActiveSlave() { keep = true; } } + if (isImpregnatedBy(V.PC, V.activeSlave)) { /* did we impregnate the PC */ + keep = true; + } if (!keep) { /* avoid going through this loop if possible */ keep = V.slaves.some(slave => { /* have we impregnated a slave that is not ourself? */ @@ -194,12 +203,18 @@ window.removeActiveSlave = function removeActiveSlave() { } } - removeSlave(INDEX); - LENGTH--; - V.activeSlave = 0; - if (missing) { + V.missingTable[V.missingParentID] = { slaveName: V.activeSlave.slaveName, + slaveSurname: V.activeSlave.slaveSurname, + fullName: SlaveFullName(V.activeSlave), + dick : V.activeSlave.dick, + vagina : V.activeSlave.vagina, + ID : V.missingParentID }; V.missingParentID--; } + + removeSlave(INDEX); + LENGTH--; + V.activeSlave = 0; } }; diff --git a/src/js/slaveSummaryWidgets.tw b/src/js/slaveSummaryWidgets.tw index 557162709e93d664ed1f146ee70adcd93ae16d75..3309884d94e4bb9686afd3479d40c5a81fdf34ac 100644 --- a/src/js/slaveSummaryWidgets.tw +++ b/src/js/slaveSummaryWidgets.tw @@ -3673,6 +3673,8 @@ window.SlaveSummaryUncached = (function(){ handled = 1; } r += " "; + } else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.mother].fullName}'s daughter `; } if (slave.father > 0 && slave.father !== slave.mother) { let _ssj = V.slaves.findIndex(function(s) { @@ -3706,6 +3708,8 @@ window.SlaveSummaryUncached = (function(){ handled = 1; } r += " "; + } else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.father].fullName}'s daughter`; } if (slave.daughters === 1) { let _ssj = V.slaves.findIndex(function(s) { @@ -3933,6 +3937,8 @@ window.SlaveSummaryUncached = (function(){ } else { r += `<span class="lightgreen">daughter.</span> `; } + } else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.mother].fullName}'s <span class="lightgreen">daughter.</span> `; } if (slave.father > 0 && slave.father !== slave.mother) { let _ssj = V.slaves.findIndex(function(s) { @@ -3967,6 +3973,8 @@ window.SlaveSummaryUncached = (function(){ } else { r += `<span class="lightgreen">daughter.</span> `; } + } else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) { + r += `${V.missingTable[slave.father].fullName}'s <span class="lightgreen">daughter.</span> `; } if (slave.daughters === 1) { let _ssj = V.slaves.findIndex(function(s) { diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw index 7dc0173b5f3fe0624d30fd4b6ebc2318629b6c12..59995968ae1531a85678733c52d85d211f1b332e 100644 --- a/src/js/storyJS.tw +++ b/src/js/storyJS.tw @@ -808,6 +808,20 @@ window.ngUpdateGenePool = function(genePool) { }); } +window.ngUpdateMissingTable = function(missingTable) { + var newTable = {}; + + (State.variables.slaves || []) + .forEach(s => ([s.pregSource+1200000,s.mother+1200000,s.father+1200000] + .filter(i => (i in missingTable)) + .forEach(i => { + newTable[i-1200000] = missingTable[i]; + newTable[i-1200000].ID -= 1200000; + }))); + + return newTable; +}; + window.toJson = function(obj) { var jsontext = JSON.stringify(obj); jsontext = jsontext.replace(/^{/,""); @@ -953,4 +967,4 @@ window.SoftenSexualFlaw = function SoftenSexualFlaw(slave) { break; } slave.sexualFlaw = "none"; -}; \ No newline at end of file +}; diff --git a/src/js/wombJS.tw b/src/js/wombJS.tw index ea9fc9d33e425c48fd48caf7b007c67327d35828..ca6a44655a6a8036b602a1fbaa57ec2798ad1cad 100644 --- a/src/js/wombJS.tw +++ b/src/js/wombJS.tw @@ -276,6 +276,15 @@ window.WombZeroID = function(actor, id) { WombNormalizePreg(actor); }; +window.WombChangeID = function(actor, fromID, toID) { + WombInit(actor); + actor.womb + .filter(ft => ft.fatherID === fromID) + .forEach(ft => ft.fatherID = toID); + WombNormalizePreg(actor); +}; + + /* Sorts the womb object by age with oldest and thus soonest to be born, first. This will be needed in the future once individual fertilization is a possibility.*/ window.WombSort = function(actor) { actor.womb.sort((a, b) => { return b.age - a.age; }); diff --git a/src/pregmod/generateChild.tw b/src/pregmod/generateChild.tw index 878a029f25ecddfdc041d7b283123a3c0485cf54..023e75bd4637f50179ef14ed04c542a33a85dd50 100644 --- a/src/pregmod/generateChild.tw +++ b/src/pregmod/generateChild.tw @@ -5,10 +5,10 @@ <<set $mergeDad = 0>> <<for $m = 0; $m < $genePool.length; $m++>> <<if $mom.ID == $genePool[$m].ID>> - <<set $mergeMom = $genePool[$m]>> + <<set $mergeMom = clone($genePool[$m])>> <</if>> <<if $mom.pregSource == $genePool[$m].ID>> - <<set $mergeDad = $genePool[$m]>> + <<set $mergeDad = clone($genePool[$m])>> <</if>> <</for>> <<if $mom.pregSource == -1>> diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 08e48ab8cda1f0e113590b60b2d30e68c7fff150..3eeff1bdd2ee65cebfac28e914828d1b3e3158d5 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -358,7 +358,7 @@ __Rumors__ <</link>> </span> */ - <<if totalPlayerRelatives($PC) > 0>> + <<if totalPlayerRelatives($PC) > 0 || ($showMissingSlaves && ($PC.mother in $missingTable || $PC.father in $missingTable))>> <<PlayerFamily>> <</if>> <</if>> diff --git a/src/pregmod/testGenetics.tw b/src/pregmod/testGenetics.tw index 4499bbb868b6665eb60245a5c945ad2912fd09ca..e7064b3cc5231b02a3eaeee43ce31d5155f6bbae 100644 --- a/src/pregmod/testGenetics.tw +++ b/src/pregmod/testGenetics.tw @@ -50,3 +50,15 @@ All slave array slaves MUST be present in genePool or else there is a malfunctio <</if>> <</for>> </table> + +<<if _errorCause>> + @@.red;Errors in the gene pool detected! Please report this.@@ + <<link "Add missing slaves to the gene pool">> + <<for _i = 0; _i < $slaves.length; _i++>> + <<if $genePool.every(function(g) { return $slaves[_i].ID !== g.ID; })>> + <<set $genePool.push($slaves[_i])>> + <</if>> + <</for>> + <<goto "Main">> + <</link>> //This will not fix missing properties.// +<</if>> diff --git a/src/pregmod/widgets/assignmentFilterWidget.tw b/src/pregmod/widgets/assignmentFilterWidget.tw index fb792ea4996fa10f36c1cb93372b7b4f4ae2c9d9..11529c1f5114e7f93338ad5f006e7287c3ada02b 100644 --- a/src/pregmod/widgets/assignmentFilterWidget.tw +++ b/src/pregmod/widgets/assignmentFilterWidget.tw @@ -110,6 +110,6 @@ <<link Spa>><<spaAssignmentFilter>><<replace $args.full>><<include 'Slave Summary'>><</replace>><</link>><<print " | ">> <<link Nursery>><<nurseryAssignmentFilter>><<replace $args.full>><<include 'Slave Summary'>><</replace>><</link>><<print " | ">> <<link Suite>><<suiteAssignmentFilter>><<replace $args.full>><<include 'Slave Summary'>><</replace>><</link>><<print " | ">> - <<link Quarters>><<spaAssignmentFilter>><<replace $args.full>><<include 'Slave Summary'>><</replace>><</link>> + <<link Quarters>><<quartersAssignmentFilter>><<replace $args.full>><<include 'Slave Summary'>><</replace>><</link>> <<resetAssignmentFilter>> <</widget>> \ No newline at end of file diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw index b208f1aef2c065c25b4ad48435c6a6e98b1057df..214577f730e604db90ff6175861aa61da596d213 100644 --- a/src/pregmod/widgets/seBirthWidgets.tw +++ b/src/pregmod/widgets/seBirthWidgets.tw @@ -338,6 +338,8 @@ <<set _getFather = $slaves.find(function(s) { return s.ID == $slaves[$i].pregSource; })>> <<if def _getFather>> <<set $daddy = _getFather.slaveName>> +<<elseif $slaves[$i].pregSource in $missingTable && $showMissingSlaves>> + <<set $daddy = $missingTable[$slaves[$i].pregSource].slaveName>> <<else>> <<set $daddy = "some unknown father">> <</if>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 587897030fe5a23f32658a66741f0ea9858107c3..bcf1c498c1df7883a68b6b0a387e72db7f9dfc40 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -3377,6 +3377,9 @@ Setting missing slave variables: <<set _dontDeleteMe = 1>> <</if>> <</if>> + <<if isImpregnatedBy($PC, _Slave)>> /* did we impregnate the PC */ + <<set _dontDeleteMe = 1>> + <</if>> <<if _dontDeleteMe == 0>> /* avoid going through this loop if possible */ <<for _bci2 = 0; _bci2 < $slaves.length; _bci2++>> <<if isImpregnatedBy($slaves[_bci2], _Slave)>> /* have we impregnated a slave on the slaves array? */ @@ -3434,6 +3437,16 @@ Done! <<set $brothelAdsSpending = 0>> <</if>> +<<if ndef $missingTable>> + <<set $missingTable = {}>> +<</if>> +<<if ndef $showMissingSlaves>> + <<set $showMissingSlaves = false>> +<</if>> +<<if ndef $showMissingSlavesSD>> + <<set $showMissingSlavesSD = false>> +<</if>> + <<for _bci = 0; _bci < $defaultRules.length; _bci++>> <<set _rule = $defaultRules[_bci].set>> <<if !([true, false, "no default setting"].includes(_rule.preg))>> diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw index 7117133cc45a91c18c3d847197c9840cd964fe6b..2b7566be0eae3432957ddeab8536e3e78fa9ac1f 100644 --- a/src/uncategorized/RETS.tw +++ b/src/uncategorized/RETS.tw @@ -310,7 +310,7 @@ After you complete your weekly inspection of <<EventNameLink $activeSlave>>, the $desc asks if $he can beg a favor. Absurd though it sounds, $he does exactly that, saying in $his <<if $activeSlave.voice > 2>>high<<elseif $activeSlave.voice > 1>>feminine<<else>>bimbo<</if>> voice, "<<Master>>, may I a<<s>>k a favor?" You take a moment to look at $him, standing there in front of your desk. $He's devoted to you, willing to please you for the sake of pleasing you, rather than to avoid punishment or make $his own life easier. And $he's very trusting, confident that $he can say such an odd thing without fear. So, you hear $him out. <br><br> -"Thank you, <<Master>>," $he <<say>>s. "I would like to do <<s>>omething for $subSlave.slaveName." You ask if $he's worried about $his <<if $activeSlave.relationship >= 5>>wife<<else>>girlfriend<</if>> for some reason. "Oh no, <<Master>>," $he answers hurriedly. "No, no, that came out wrong. It'<<s>> ju<<s>>t that I love <<him 2>> and I want to, you know, get <<him 2>> <<s>>omething or do <<s>>omething <<s>>pe<<c>>ial for <<him 2>>. We don't really have <<s>>tuff of our own, <<s>>o I can't give <<him 2>> a pre<<s>>ent, and we already do everything either one of u<<s>> want<<s>> in bed, <<s>>o I can't really think of anything." $He <<if canSee($activeSlave)>>looks<<else>>gazes<</if>> at you hopefully. +"Thank you, <<Master>>," $he <<say>>s. "I would like to do <<s>>omething for $subSlave.slaveName." You ask if $he's worried about $his <<if $activeSlave.relationship >= 5>>wife<<else>>girlfriend<</if>> for some reason. "Oh no, <<Master>>," $he answers hurriedly. "No, no, that came out wrong. It'<<s>> ju<<s>>t that I love _him2 and I want to, you know, get _him2 <<s>>omething or do <<s>>omething <<s>>pe<<c>>ial for _him2. We don't really have <<s>>tuff of our own, <<s>>o I can't give _him2 a pre<<s>>ent, and we already do everything either one of u<<s>> want<<s>> in bed, <<s>>o I can't really think of anything." $He <<if canSee($activeSlave)>>looks<<else>>gazes<</if>> at you hopefully. <<case "anal cowgirl">> @@ -364,20 +364,20 @@ Surprisingly, the slave on top doesn't seem too unhappy with this. _He2's no sla breathlessly, doing _his2 best to greet you properly despite the bouncing. <br><br> $activeSlave.slaveName stops thrusting, and $his <<if $activeSlave.face > 95>>gorgeous<<elseif $activeSlave.face >= -10>>pretty<<else>>homely<</if>> face instantly appears, craning out from behind $subSlave.slaveName's back to see. "Oh, hi, <<Master>>!" $he says with a cheerful smile, <<if $activeSlave.muscles > 30>>not breathing hard at all despite bouncing a girl off $his crotch<<elseif $activeSlave.muscles > 5>>barely out of breath despite the effort<<else>>completely out of breath<</if>>. -"I <<if canSee($activeSlave)>><<s>>aw<<else>>heard<</if>> <<him>> going by, and I thought <<he>>'d look cute with <<if canPenetrate($activeSlave)>>my dick<<else>>a <<s>>trap-on<</if>> up <<his>> butthole, +"I <<if canSee($activeSlave)>><<s>>aw<<else>>heard<</if>> _him2 going by, and I thought <<he>>'d look cute with <<if canPenetrate($activeSlave)>>my dick<<else>>a <<s>>trap-on<</if>> up <<his>> butthole, <<if $universalRulesConsent == 0>> - <<s>>o I told <<him>> to get in here and take it." + <<s>>o I told _him2 to get in here and take it." <<else>> - <<s>>o I a<<s>>ked <<him>> to come in, and <<he>> did!" + <<s>>o I a<<s>>ked _him2 to come in, and <<he>> did!" <</if>> $He shrugs. <<if $activeSlave.fetish == "sadist">> "I thought <<he>> wa<<s>> going to whine and <<s>>truggle, but <<he>>'<<s>> kinda di<<ss>>appointing." <<elseif $activeSlave.fetish == "pregnancy" && $subSlave.belly >= 10000>> <<if $subSlave.bellyPreg >= 8000>> - "<<He>>'<<s>> <<s>>o pregnant, I ju<<s>>t had to fuck <<him>>. I'm <<s>>urpri<<s>>ed <<he>>'<<s>> enjoying it <<s>>o much." + "<<He>>'<<s>> <<s>>o pregnant, I ju<<s>>t had to fuck _him2. I'm <<s>>urpri<<s>>ed <<he>>'<<s>> enjoying it <<s>>o much." <<else>> - "<<His>> belly'<<s>> <<s>>o round, I ju<<s>>t had to fuck <<him>>. I ju<<s>>t wi<<sh>> <<he>> wa<<s>> pregnant." + "<<His>> belly'<<s>> <<s>>o round, I ju<<s>>t had to fuck _him2. I ju<<s>>t wi<<sh>> <<he>> wa<<s>> pregnant." <</if>> <<elseif $activeSlave.fetish == "buttslut">> "I like butt<<s>>e<<x>> <<s>>o much, it'<<s>> good to give back." @@ -735,20 +735,20 @@ $activeSlave.slaveName senses your presence above and behind $him, and twists $h <<elseif $activeSlave.fetishKnown && $activeSlave.fetish == "dom">> "The crying almo<<s>>t make<<s>> me feel bad, but fucking a bitch feel<<s>> <<s>>o, <<s>>o good," the dominant $desc admits conversationally. <<elseif $activeSlave.fetishKnown && $activeSlave.fetish == "pregnancy" && _vaginal == 1 && canImpreg($subSlave, $activeSlave)>> - "I couldn't help my<<s>>elf," the $desc admits. "<<He 2>>'d look <<s>>o pretty with a pregnant belly and I ju<<s>>t couldn't re<<s>>i<<s>>t giving <<him 2>> one. <<He 2>> tried to <<s>>ay <<he 2>> didn't want to be a mother, <<s>>o..." + "I couldn't help my<<s>>elf," the $desc admits. "<<He 2>>'d look <<s>>o pretty with a pregnant belly and I ju<<s>>t couldn't re<<s>>i<<s>>t giving _him2 one. <<He 2>> tried to <<s>>ay <<he 2>> didn't want to be a mother, <<s>>o..." <<elseif $activeSlave.energy > 95>> "I can't help my<<s>>elf," the nymphomaniac $desc admits breathlessly. "Thank you for letting me take what I need from the other girl<<s>>." <<elseif $activeSlave.energy > 60>> "I couldn't help my<<s>>elf," the $desc admits. "I wa<<s>> really, really horny and <<he 2>> was ju<<s>>t, um, there. And <<he 2>> tried to <<s>>ay no." <<else>> - "I know it'<<s>> not like me," the $desc admits. "But I a<<s>>ked <<him 2>>, like, mo<<s>>tly joking, and <<he 2>> tried to <<s>>ay no." + "I know it'<<s>> not like me," the $desc admits. "But I a<<s>>ked _him2, like, mo<<s>>tly joking, and <<he 2>> tried to <<s>>ay no." <</if>> <br><br> <<run Enunciate($subSlave)>> -$subSlave.slaveName <<if _vaginal>>looks out from under $activeSlave.slaveName<<else>>turns _his2 head<</if>> and <<if canSee($subSlave)>>looks at<<else>>faces<</if>> you too. "<<Master $subSlave>>, plea<<s>>e," _he2 begs. "P-plea<<s>>e, make <<him>> <<s>>-<<s>>top - mhhh -" $activeSlave.slaveName shuts _him2 up by <<if _vaginal>>kissing _his2 unwilling mouth<<else>>shoving _his2 face back against the floor<</if>>. Once $he has $subSlave.slaveName back under control, $activeSlave.slaveName slows $his thrusting, reaches around behind $himself, and <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>>spreads $his futa pussy for you.<<else>>pulls one asscheek aside to offer you $his anus. To make the offer extra clear, $he starts winking it lewdly.<</if>> +$subSlave.slaveName <<if _vaginal>>looks out from under $activeSlave.slaveName<<else>>turns _his2 head<</if>> and <<if canSee($subSlave)>>looks at<<else>>faces<</if>> you too. "<<Master $subSlave>>, plea<<s>>e," _he2 begs. "P-plea<<s>>e, make $him <<s>>-<<s>>top - mhhh -" $activeSlave.slaveName shuts _him2 up by <<if _vaginal>>kissing _his2 unwilling mouth<<else>>shoving _his2 face back against the floor<</if>>. Once $he has $subSlave.slaveName back under control, $activeSlave.slaveName slows $his thrusting, reaches around behind $himself, and <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>>spreads $his futa pussy for you.<<else>>pulls one asscheek aside to offer you $his anus. To make the offer extra clear, $he starts winking it lewdly.<</if>> <br><br> <<run Enunciate($activeSlave)>> -"Plea<<s>>e fuck me while I rape <<him 2>>, <<Master>>," $activeSlave.slaveName <<say>>s in a mockery of $subSlave.slaveName's <<if $subSlave.voice > 2>>high-pitched whining<<elseif $subSlave.voice > 1>>begging<<else>>deep-voiced begging<</if>>. "Ooh, or, plea<<s>>e, <<Master>>, may I flip <<him 2>> over? I'd love to feel <<if $PC.dick>>your cock in<<s>>ide <<him 2>> along<<s>>ide mine<<else>>that <<s>>trap-on you u<<s>>e in<<s>>ide <<him 2>> along<<s>>ide my cock<</if>>!" +"Plea<<s>>e fuck me while I rape _him2, <<Master>>," $activeSlave.slaveName <<say>>s in a mockery of $subSlave.slaveName's <<if $subSlave.voice > 2>>high-pitched whining<<elseif $subSlave.voice > 1>>begging<<else>>deep-voiced begging<</if>>. "Ooh, or, plea<<s>>e, <<Master>>, may I flip _him2 over? I'd love to feel <<if $PC.dick>>your cock in<<s>>ide _him2 along<<s>>ide mine<<else>>that <<s>>trap-on you u<<s>>e in<<s>>ide _him2 along<<s>>ide my cock<</if>>!" <br><br> <<run Enunciate($subSlave)>> "Plea<<s>>e, no," sobs $subSlave.slaveName. @@ -1689,7 +1689,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of <<replace "#result">> You order $activeSlave.slaveName to go back to what $he was doing. $He's a little disappointed you're not joining in, but $he obeys, pounding the crying $subSlave.slaveName without mercy. Then $activeSlave.slaveName feels the head of <<if $PC.dick>>your dick<<else>>a strap-on<</if>> brush $his butt. <<run Enunciate($activeSlave)>> - "Ooh!" $he squeals, @@.hotpink;pleased $he was wrong after all.@@ "Ye<<s>>, thank you, <<Master>>! Fuck me! Fuck me while I rape <<him 2>>!" Underneath $him, $subSlave.slaveName cries harder, even though $activeSlave.slaveName has to stop $his thrusting for a moment to let you inside. In fact, you reflect as you hammer $activeSlave.slaveName's <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>><<if $activeSlave.vagina > 2>>roomy<<elseif $activeSlave.vagina > 1>>delectable<<else>>tight little<</if>> cunt<<else>><<if $activeSlave.anus > 2>>gaping<<elseif $activeSlave.anus > 1>>relaxed<<else>>poor little<</if>> asspussy<</if>>, it's a little strange that $subSlave.slaveName @@.gold;seems to think this is worse@@ than just being raped by $activeSlave.slaveName. After all, having your <<if $PC.dick>>turgid cock<<else>>formidable strap-on<</if>> sliding energetically in and out of $his <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>>womanhood<<else>>rectum<</if>> is cramping $activeSlave.slaveName's style a bit. Maybe it's that $subSlave.slaveName is a little squashed under there. + "Ooh!" $he squeals, @@.hotpink;pleased $he was wrong after all.@@ "Ye<<s>>, thank you, <<Master>>! Fuck me! Fuck me while I rape _him2!" Underneath $him, $subSlave.slaveName cries harder, even though $activeSlave.slaveName has to stop $his thrusting for a moment to let you inside. In fact, you reflect as you hammer $activeSlave.slaveName's <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>><<if $activeSlave.vagina > 2>>roomy<<elseif $activeSlave.vagina > 1>>delectable<<else>>tight little<</if>> cunt<<else>><<if $activeSlave.anus > 2>>gaping<<elseif $activeSlave.anus > 1>>relaxed<<else>>poor little<</if>> asspussy<</if>>, it's a little strange that $subSlave.slaveName @@.gold;seems to think this is worse@@ than just being raped by $activeSlave.slaveName. After all, having your <<if $PC.dick>>turgid cock<<else>>formidable strap-on<</if>> sliding energetically in and out of $his <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>>womanhood<<else>>rectum<</if>> is cramping $activeSlave.slaveName's style a bit. Maybe it's that $subSlave.slaveName is a little squashed under there. <<set $activeSlave.devotion += 4>> <<set $activeSlave.penetrativeCount++, $penetrativeTotal++>> <<if $activeSlave.vagina != 0 && canDoVaginal($activeSlave)>> @@ -1798,7 +1798,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of <</if>> _He2 was on the edge of orgasm when you stepped in, and this is just too much. _He2 climaxes with indecent speed, involuntarily humping against the machine, shooting rope after rope of _his2 cum into $activeSlave.slaveName's mouth<<if $PC.dick>> and spasming against your invading penis wonderfully<</if>>. You hold the quivering $subSlave.slaveName down and keep hammering _him2 until you're certain _he2's fed $activeSlave.slaveName every drop _he2 has. Then you let _him2 up. <br><br> - As $subSlave.slaveName stumbles off, looking @@.hotpink;rather submissive,@@ $activeSlave.slaveName scoots out from underneath the machine. "<<Master>>," $he <<say>>s @@.hotpink;devotedly,@@ "that ta<<s>>ted incredible. It ta<<s>>te<<s>> <<s>>o much better when you fuck it out of <<him 2>>!" $He rubs $his<<if $activeSlave.belly >= 5000>> rounded<</if>> tummy with exaggerated satisfaction, and then realizes that you weren't fucking for nearly long enough to have gotten off yourself. + As $subSlave.slaveName stumbles off, looking @@.hotpink;rather submissive,@@ $activeSlave.slaveName scoots out from underneath the machine. "<<Master>>," $he <<say>>s @@.hotpink;devotedly,@@ "that ta<<s>>ted incredible. It ta<<s>>te<<s>> <<s>>o much better when you fuck it out of _him2!" $He rubs $his<<if $activeSlave.belly >= 5000>> rounded<</if>> tummy with exaggerated satisfaction, and then realizes that you weren't fucking for nearly long enough to have gotten off yourself. <<if $activeSlave.lactation || $activeSlave.balls>> "I need to be milked now, too," $he <<say>>s flirtily, and turns to mount the machine in turn. "Plea<<s>>e, plea<<s>>e do me too!" The machine hasn't had a turn first, this time, so $he's much tighter<<if $PC.dick>>, and when $he's done being milked, $he's got a load of your cum inside $him<</if>>. <<set $activeSlave.analCount++, $analTotal++>> diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw index 450f46a28a181f53afc9a1b9a985c8d65bf0c00a..371f3c943d44b89f0704d7b26d37a066e59e5532 100644 --- a/src/uncategorized/cellblock.tw +++ b/src/uncategorized/cellblock.tw @@ -119,7 +119,7 @@ $cellblockNameCaps <<if ($cellblock <= $cellblockSlaves)>> ''$cellblockNameCaps is full and cannot hold any more slaves'' <<elseif ($slaves.length > $cellblockSlaves)>> - <<link "''Send a resistant slave to be broken in the cellblock''">> + <<link "''Send a resistant slave to be broken in $cellblockName''">> <<replace #ComingGoing>> <<resetAssignmentFilter>> <<set $Flag = 0>> @@ -129,7 +129,7 @@ $cellblockNameCaps <</if>> <<if $cellblockSlaves > 0>> - | <<link "''Let a slave out of the cellblock''">> + | <<link "''Let a slave out of $cellblockName''">> <<replace #ComingGoing>> <<cellblockAssignmentFilter>> <<set $Flag = 1>> @@ -138,7 +138,7 @@ $cellblockNameCaps <</replace>> <</link>> <<else>> - <br><br>//The cellblock is empty for the moment.<br>// + <br><br>//$cellblockNameCaps is empty for the moment.<br>// <</if>> <br><br> <<assignmentFilter>> diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw index 941cdcd254ca30066b2ae2682d0f45b0b6de6711..cc13f403f254525c557672c98176d2b42bab94e9 100644 --- a/src/uncategorized/clinic.tw +++ b/src/uncategorized/clinic.tw @@ -154,7 +154,7 @@ $clinicNameCaps <</if>> <<if $clinicSlaves > 0>> - | <<link "''Take a slave out of the clinic''">> + | <<link "''Take a slave out of $clinicName''">> <<replace #ComingGoing>> <<clinicAssignmentFilter>> <<set $Flag = 1>> @@ -163,7 +163,7 @@ $clinicNameCaps <</replace>> <</link>> <<else>> - <br><br>//The clinic is empty for the moment.<br>// + <br><br>//$clinicNameCaps is empty for the moment.<br>// <</if>> <br><br> <<assignmentFilter>> diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw index 563f60d2dde9e25da2b821823c4ae2ece772655f..234f7c72c83a4ab66a47a23726c0450a744ed053 100644 --- a/src/uncategorized/masterSuite.tw +++ b/src/uncategorized/masterSuite.tw @@ -366,7 +366,7 @@ $masterSuiteNameCaps is furnished <</if>> <<if $masterSuiteSlaves > 0>> - | <<link "''Bring a slave out of the master suite''">> + | <<link "''Bring a slave out of $masterSuiteName''">> <<replace #ComingGoing>> <<suiteAssignmentFilter>> <<set $Flag = 1>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index b54111b94993fe26f7a67b12a08516d0573fe608..fe994fdb72c0538ecea1a48784e42c614e68c2c2 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -405,6 +405,13 @@ Male slave names are currently @@.red;FORBIDDEN@@. [[Allow|Options][$allowMaleSl <</if>> //This only affects slave generation and not your ability to name your slaves.// +<br> +<<if $showMissingSlaves>> +Missing slave names are currently @@.cyan;SHOWN@@. [[Hide|Options][$showMissingSlaves = 0]] +<<else>> +Missing slave names are currently @@.red;HIDDEN@@. [[Show|Options][$showMissingSlaves = 1]] +<</if>> + <br><br> ''INTERSECTING MECHANICS'' <br> diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw index 9e1296800f356ef972a9e0b91e98d9bd174962b2..74072d25e591c9c9599484e66971fae7dbb83306 100644 --- a/src/uncategorized/schoolroom.tw +++ b/src/uncategorized/schoolroom.tw @@ -144,7 +144,7 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These <</replace>> <</link>> <<else>> - <br><br>//The classroom is empty for the moment.<br>// + <br><br>//$schoolroomNameCaps is empty for the moment.<br>// <</if>> <br><br> <<assignmentFilter>> diff --git a/src/uncategorized/slaveSummary.tw b/src/uncategorized/slaveSummary.tw index 1b9182b1875f5b0de8776ba8b325e283fc16a1cc..d1e7d8eac516ec41943269125a9de1a9e0d44632 100644 --- a/src/uncategorized/slaveSummary.tw +++ b/src/uncategorized/slaveSummary.tw @@ -769,9 +769,9 @@ will <<case "Spa">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Send her to the Spa|Assign][$i = _ssi]] + <<link "Send her to $spaName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Remove her from the Spa|Retrieve][$i = _ssi]] + <<link "Remove her from $spaName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Attendant|Attendant Select]] <<break>> @@ -783,9 +783,9 @@ will <<case "Nursery">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Send her to the Nursery|Assign][$i = _ssi]] + <<link "Send her to $nurseryName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Remove her from the Nursery|Retrieve][$i = _ssi]] + <<link "Remove her from $nurseryName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Matron|Matron Select]] <<break>> @@ -797,9 +797,9 @@ will <<case "Brothel">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Send her to the Brothel|Assign][$i = _ssi]] + <<link "Send her to $brothelName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Release her from the Brothel|Retrieve][$i = _ssi]] + <<link "Release her from $brothelName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Madam|Madam Select]] <<break>> @@ -811,9 +811,9 @@ will <<case "Club">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Send her to the Club|Assign][$i = _ssi]] + <<link "Send her to $clubName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Remove her from the Club|Retrieve][$i = _ssi]] + <<link "Remove her from $clubName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove DJ|DJ Select]] <<break>> @@ -821,9 +821,9 @@ will <<case "Arcade">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Confine her in the Arcade|Assign][$i = _ssi]] + <<link "Confine her in $arcadeName" "Assign">><<set $i = _ssi>><</link>> <<else>> - [[Release her from the Arcade|Retrieve][$i = _ssi]] + <<link "Release her from $arcadeName" "Retrieve">><<set $i = _ssi>><</link>> <</if>> <<case "DJ Select">> <<if setup.DJCareers.includes(_Slave.career) || (_Slave.skillDJ >= $masteredXP)>> @@ -835,9 +835,9 @@ will @@.cyan;Estimated DNA error value: <<print Math.ceil(_Slave.chem/10)>>@@ <</if>> <<if $Flag == 0>> - [[Send her to the Clinic|Assign][$i = _ssi]] + <<link "Send her to $clinicName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Take her out of the Clinic|Retrieve][$i = _ssi]] + <<link "Take her out of $clinicName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Nurse|Nurse Select]] <<break>> @@ -849,9 +849,9 @@ will <<case "Schoolroom">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Assign her to the Schoolroom|Assign][$i = _ssi]] + <<link "Assign her to $schoolroomName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Release her from the Schoolroom|Retrieve][$i = _ssi]] + <<link "Release her from $schoolroomName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Schoolteacher|Schoolteacher Select]] <<break>> @@ -863,9 +863,9 @@ will <<case "Dairy">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Send her to the Dairy|Assign][$i = _ssi]] + <<link "Send her to $dairyName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Release her from the Dairy|Retrieve][$i = _ssi]] + <<link "Release her from $dairyName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Milkmaid|Milkmaid Select]] <<break>> @@ -877,9 +877,9 @@ will <<case "Servants' Quarters">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Assign her to the Servants' Quarters|Assign][$i = _ssi]] + <<link "Assign her to $servantsQuartersName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Release her from the Servants' Quarters|Retrieve][$i = _ssi]] + <<link "Release her from $servantsQuartersName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Stewardess|Stewardess Select]] <<break>> @@ -891,9 +891,9 @@ will <<case "Master Suite">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Add her to the Suite|Assign][$i = _ssi]] + <<link "Add her to $masterSuiteName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Send her out of the Suite|Retrieve][$i = _ssi]] + <<link "Send her out of $masterSuiteName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Concubine|Concubine Select]] <<break>> @@ -901,9 +901,9 @@ will <<case "Cellblock">> <br><<if $seeImages != 1 || $seeSummaryImages != 1 || $imageChoice == 1>> <</if>> <<if $Flag == 0>> - [[Confine her in the cellblock|Assign][$i = _ssi]] + <<link "Confine her in $cellblockName" "Assign">><<set $i = _ssi>><</link>> <<elseif $Flag == 1>> - [[Release her from the cellblock|Retrieve][$i = _ssi]] + <<link "Release her from $cellblockName" "Retrieve">><<set $i = _ssi>><</link>> <<else>> [[Change or remove Wardeness|Wardeness Select]] <<break>> diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw index 3158bd350049514f67d413925807fe42252478bb..cdee476ea3a55b52fe905f425b56e27634f46a67 100644 --- a/src/uncategorized/spa.tw +++ b/src/uncategorized/spa.tw @@ -138,7 +138,7 @@ $spaNameCaps <</if>> <<if $spaSlaves > 0>> - | <<link "''Prise a slave out of the spa''">> + | <<link "''Prise a slave out of $spaName''">> <<replace #ComingGoing>> <<spaAssignmentFilter>> <<set $Flag = 1>> @@ -147,7 +147,7 @@ $spaNameCaps <</replace>> <</link>> <<else>> - <br><br>//The spa is empty at the moment.<br>// + <br><br>//$spaNameCaps is empty at the moment.<br>// <</if>> <span id="ComingGoing"> diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw index d575b8ad993a1efaa2d32511e59089e31d5ac490..6e27d40b40881e393cc5fe97bd49570ffc475456 100644 --- a/src/uncategorized/storyCaption.tw +++ b/src/uncategorized/storyCaption.tw @@ -134,12 +134,15 @@ <<print Math.trunc(0.1*$arcologies[0].prosperity)>>m <<if $arcologies[0].ownership >= $arcologies[0].minority>> <<if $arcologies[0].ownership >= $arcologies[0].minority+5>> - (<<print $arcologies[0].ownership>>%) + <<if $arcologies[0].ownership < 100>> + <<if $assistantPower >= 1>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellowgreen;<<print $arcologies[0].ownership>>%) <</if>> + <<else>> (<<print $arcologies[0].ownership>>%) + <</if>> <<else>> - @@.yellow;(<<print $arcologies[0].ownership>>%)@@ + <<if $assistantPower >= 1>> (@@.yellow;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.yellow;<<print $arcologies[0].ownership>>%@@) <</if>> <</if>> <<else>> - @@.red;(<<print $arcologies[0].ownership>>%)@@ + <<if $assistantPower >= 1>> (@@.red;<<print $arcologies[0].ownership>>%@@:<<print $arcologies[0].minority>>%) <<else>> (@@.red;<<print $arcologies[0].ownership>>%@@) <</if>> <</if>> <br>@@.green;Rep@@ | <<set $rep = Math.clamp(Math.trunc($rep), 0, 20000)>> diff --git a/src/uncategorized/summaryOptions.tw b/src/uncategorized/summaryOptions.tw index a3ba75c1c552a5b699ba091e61e2dfbd2bce28a0..8cad7e4ec01e2da4e16c4ad5cca467dba199521a 100644 --- a/src/uncategorized/summaryOptions.tw +++ b/src/uncategorized/summaryOptions.tw @@ -73,6 +73,11 @@ <br> <span id="OptionAbbreviateOrigins"><<OptionAbbreviateOrigins>></span> +<<if $showMissingSlaves>> +<br> +<span id="OptionAbbreviateMissing"><<OptionAbbreviateMissing>></span> +<</if>> + <br><br> //[[FC Dev's preferred options|Summary Options][$seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion",$sortSlavesOrder = "descending",$sortSlavesMain = 0,$rulesAssistantMain = 1,$abbreviateDevotion = 1,$abbreviateRules = 1,$abbreviateClothes = 2,$abbreviateHealth = 1,$abbreviateDiet = 1,$abbreviateDrugs = 1,$abbreviateRace = 1,$abbreviateGenitalia = 1,$abbreviatePhysicals = 1,$abbreviateSkills = 1,$abbreviateMental = 1,$abbreviateSidebar = 1]]// diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 3424ffaac9c1ccd232251c58ac9d8dcadb84f15b..0a456a79a96488900d3f3aa4094d05f4240fbc21 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -15111,6 +15111,8 @@ $He has <<else>> <<set _daddy = "partner">> <</if>> +<<elseif $activeSlave.pregSource in $missingTable && $showMissingSlaves>> + <<set _daddy = $missingTable[$activeSlave.pregSource].fullName>> <</if>> <<if ($activeSlave.preg == -2) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0)>> diff --git a/src/utility/extendedFamilyWidgets.tw b/src/utility/extendedFamilyWidgets.tw index 5555c84e79a7ca2d93f3acb8eb705853a12e4b67..9a91f9927e5efce1a6ccd069e9e50f3ada7c7381 100644 --- a/src/utility/extendedFamilyWidgets.tw +++ b/src/utility/extendedFamilyWidgets.tw @@ -13,23 +13,35 @@ <<if $activeSlave.father == -1 && $activeSlave.mother == -1>> $He's @@.lightgreen;your child;@@ you knocked yourself up and gave birth to $him. -<<elseif $activeSlave.father > 0 && $activeSlave.mother > 0 && $activeSlave.father == $activeSlave.mother>> - <<set _efw = $slaveIndices[$activeSlave.father]>> - $He was @@.lightgreen;both fathered and mothered by $slaves[_efw].slaveName.@@ +<<elseif $activeSlave.father == $activeSlave.mother && ($activeSlave.father > 0 || ($activeSlave.father in $missingTable && $showMissingSlaves))>> + <<if $activeSlave.father > 0>> + <<set _pName = $slaves[$slaveIndices[$activeSlave.father]].slaveName>> + <<else>> + <<set _pName = "your former slave "+$missingTable[$activeSlave.father].slaveName>> + <</if>> + $He was @@.lightgreen;both fathered and mothered by _pName.@@ <</if>> <<if $activeSlave.father == -1 && $activeSlave.mother != -1>> $He's @@.lightgreen;your child;@@ you knocked $his mother up. -<<elseif $activeSlave.father > 0 && $activeSlave.father != $activeSlave.mother>> - <<set _efw = $slaveIndices[$activeSlave.father]>> - $He was @@.lightgreen;fathered by $slaves[_efw].slaveName's@@ virile dick. +<<elseif ($activeSlave.father > 0 || ($activeSlave.father in $missingTable && $showMissingSlaves)) && $activeSlave.father != $activeSlave.mother>> + <<if $activeSlave.father > 0>> + <<set _pName = $slaves[$slaveIndices[$activeSlave.father]].slaveName>> + <<else>> + <<set _pName = "your former slave "+$missingTable[$activeSlave.father].slaveName>> + <</if>> + $He was @@.lightgreen;fathered by _pName's@@ virile dick. <</if>> <<if $activeSlave.father != -1 && $activeSlave.mother == -1>> $He's @@.lightgreen;your child;@@ you gave birth to $him. -<<elseif $activeSlave.mother > 0 && $activeSlave.father != $activeSlave.mother>> - <<set _efw = $slaveIndices[$activeSlave.mother]>> - $He was @@.lightgreen;born from $slaves[_efw].slaveName's@@ fertile womb. +<<elseif ($activeSlave.mother > 0 || ($activeSlave.mother in $missingTable && $showMissingSlaves)) && $activeSlave.father != $activeSlave.mother>> + <<if $activeSlave.mother > 0>> + <<set _pName = $slaves[$slaveIndices[$activeSlave.mother]].slaveName>> + <<else>> + <<set _pName = "your former slave "+$missingTable[$activeSlave.mother].slaveName>> + <</if>> + $He was @@.lightgreen;born from _pName's@@ fertile womb. <</if>> <<set _children = $slaves.filter(function(s) { return $activeSlave.ID == s.father; })>> @@ -698,18 +710,26 @@ <br><br>Your present family includes: /*Player parents, lists both your parents, or just one.*/ +<<if $showMissingSlaves>> + <<if $PC.mother in $missingTable>> + <<set $children.push($missingTable[$PC.mother])>> + <</if>> + <<if $PC.father in $missingTable && !($PC.father == $PC.mother)>> + <<set $children.push($missingTable[$PC.father])>> + <</if>> +<</if>> <<for $i = 0; $i < $slaves.length; $i++>> <<if $slaves[$i].ID == $PC.father || $slaves[$i].ID == $PC.mother>> <<set $children.push($slaves[$i])>> <</if>> <</for>> <<if $children.length > 1>> - <br>Your parents are @@.lightgreen;$children[0].slaveName and $children[1].slaveName@@. + <br>Your parents are @@.lightgreen;<<if $children[0].ID < 0>>your former slave<<if $children[1].ID < 0>>s<</if>><</if>> $children[0].slaveName and <<if $children[1].ID < 0 && $children[0].ID > 0>>your former slave<</if>> $children[1].slaveName@@. <<elseif $children.length > 0>> <<if $PC.father == $PC.mother>> - <br>Your parent is @@.lightgreen;$children[0].slaveName@@, who impregnated $himself with you. + <br>Your parent is @@.lightgreen;<<if $children[0].ID < 0>>your former slave<</if>> $children[0].slaveName@@, who impregnated $himself with you. <<else>> - <br>You know one of your parents, @@.lightgreen;$children[0].slaveName@@. + <br>You know one of your parents, @@.lightgreen;<<if $children[0].ID < 0>>your former slave<</if>> $children[0].slaveName@@. <</if>> <</if>> <<set $children = []>> diff --git a/src/utility/optionsWidgets.tw b/src/utility/optionsWidgets.tw index da0c8265dcda4a2e3c61dbfc405a6ac27a807fe0..c19abdd471ad11fdf41ad32f9d7b27271b4af086 100644 --- a/src/utility/optionsWidgets.tw +++ b/src/utility/optionsWidgets.tw @@ -790,3 +790,28 @@ Facilities in the sidebar are <</link>>// <</if>> <</widget>> + +/% + Call as <<OptionAbbreviateMissing>> + Should be placed in a <span> with id = "OptionAbbreviateMissing" +%/ +<<widget "OptionAbbreviateMissing">> +Missing slave parents are +<<if $showMissingSlavesSD>> + @@.cyan;SHOWN.@@ + //<<link 'Hide'>> + <<set $showMissingSlavesSD = false>> + <<replace '#OptionAbbreviateMissing'>> + <<OptionAbbreviateMissing>> + <</replace>> + <</link>>// +<<else>> + @@.red;HIDDEN.@@ + //<<link 'Show'>> + <<set $showMissingSlavesSD = true>> + <<replace '#OptionAbbreviateMissing'>> + <<OptionAbbreviateMissing>> + <</replace>> + <</link>>// +<</if>> +<</widget>>