diff --git a/src/js/useSlave.JS b/src/js/useSlave.JS new file mode 100644 index 0000000000000000000000000000000000000000..6e138b27103ee54394811fb2c4cbe724ce96c42b --- /dev/null +++ b/src/js/useSlave.JS @@ -0,0 +1,741 @@ +window.useSlaveDisplay = function(slave) { + // Goal: Be able to write the entire "use her" block with only dom fragments. + let el = document.createElement('div'); + + const + { + // eslint-disable-next-line no-unused-vars + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + + /* + Array of objects. Each object follows the form: { + text: "Link text", + scene: "scene to include", + goto: if another passage is needed + updateSlave: update slave itself if needed, like {trust: 2}, + update: updates V., + note: if a note must appear after the link + } + */ + const sexOptions = []; + const fillFaceOptions = []; + const fillAssOptions = []; + // if no scene, it's just text, no link. Italicize it. + + if (slave.fuckdoll === 0) { + if (slave.vagina > -1) { + if (canDoVaginal(slave)) { + sexOptions.push({text: `Fuck ${him}`, scene: `FVagina`}); + if (canDoAnal(slave)) { + sexOptions.push({text: `Use ${his} holes`, scene: `FButt`}); + } + if (slave.bellyPreg >= 300000) { + sexOptions.push({text: `Fuck ${him} on ${his} belly`, scene: `FBellyFuck`}); + } + if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) { + sexOptions.push({text: `Fuck ${him} in ${his} maternity swing`, scene: `FMaternitySwing`}); + } + if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) { + sexOptions.push({text: `Fuck ${him} with the help of ${his} assistants`, scene: `FAssistedSex`}); + } + if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) { + sexOptions.push({text: `Fuck ${him} in your goo pool`, scene: `FPoolSex`}); + } + } else { + sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${him}`}); + } + } + if (slave.bellyPreg >= 300000) { + if (canDoVaginal(slave) || canDoAnal(slave)) { + sexOptions.push({text: `Fuck ${him} on ${his} belly`, scene: `FBellyFuck`}); + if (V.pregInventions >= 1) { + sexOptions.push({text: `Fuck ${him} in ${his} maternity swing`, scene: `FMaternitySwing`}); + sexOptions.push({text: `Fuck ${him} with the help of ${his} assistants`, scene: `FAssistedSex`}); + sexOptions.push({text: `Fuck ${him} in your goo pool`, scene: `FPoolSex`}); + } + } + } + + if (canDoAnal(slave)) { + sexOptions.push({text: `Fuck ${his} ass`, scene: `FAnus`}); + } else { + sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${his} ass`}); + } + sexOptions.push({text: `Use ${his} mouth`, scene: `FLips`}); + sexOptions.push({text: `Kiss ${him}`, scene: `FKiss`}); + if (hasAnyLegs(slave)) { + sexOptions.push({text: `Have ${him} dance for you`, scene: `FDance`}); + } + + sexOptions.push({text: `Play with ${his} tits`, scene: `FBoobs`}); + + sexOptions.push({text: `Caress ${him}`, scene: `FCaress`}); + + sexOptions.push({text: `Give ${him} a hug`, scene: `FEmbrace`}); + if (V.cheatMode === 1) { + sexOptions.push({text: `Pat ${his} head`, scene: `FPat`}); + } + + sexOptions.push({text: `Grope ${his} boobs`, scene: `FondleBoobs`}); + if (slave.nipples === "fuckable" && V.PC.dick > 0) { + sexOptions.push({text: `Fuck ${his} nipples`, scene: `FNippleFuck`}); + } + if (slave.lactation > 0 && slave.boobs >= 2000 && slave.belly < 60000 && hasAnyArms(slave)) { + sexOptions.push({text: `Drink ${his} milk`, scene: `FSuckle`}); + } + + if (canDoAnal(slave)) { + sexOptions.push({text: `Grope ${his} butt`, scene: `FondleButt`}); + } + + + if (slave.vagina > -1) { + if (canDoVaginal(slave)) { + sexOptions.push({text: `Grope ${his} pussy`, scene: `FondleVagina`}); + } + } + + if (slave.dick > 0) { + if (!(slave.chastityPenis)) { + sexOptions.push({text: `Grope ${his} dick`, scene: `FondleDick`}); + if (canPenetrate(slave)) { + if (V.sexualOpeness === 1 || slave.toyHole === "dick") { + sexOptions.push({text: `Ride ${his} dick`, scene: `FDick`}); + } + } + } else { + sexOptions.push({text: `Remove ${his} dick chastity belt if you wish to play with ${his} cock`}); + } + } + + if (hasAnyLegs(slave) && V.PC.dick > 0) { + sexOptions.push({text: `Get a footjob`, scene: `FFeet`}); + } + + if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && (slave.fuckdoll === 0) && V.seePreg !== 0) { + if (canImpreg(slave, V.PC)) { + sexOptions.push({text: `Impregnate ${him} yourself`, scene: `FPCImpreg`}); + } + if (canImpreg(slave, slave)) { + sexOptions.push({text: `Use ${his} own seed to impregnate ${him}`, scene: `FSlaveSelfImpreg`}); + } + sexOptions.push({text: `Use another slave to impregnate ${him}`, scene: `FSlaveImpreg`}); + } + if (slave.assignment !== "work in the dairy" && slave.assignment !== "be confined in the arcade" && slave.assignment !== "be confined in the cellblock") { + if (V.dairyPiping === 1) { + if ((V.milkPipeline > 88 && V.milkPipeline !== 0) || V.arcologies[0].FSPastoralistLaw === 1) { + if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) { + if (slave.inflationType === "milk" || slave.inflationType === "none") { + fillAssOptions.push({text: `Milk`, scene: `FillUpButt`, updateSlave: {inflationType: "milk", inflationMethod: 2}}); + fillFaceOptions.push({text: `Milk`, scene: `FillUpFace`, updateSlave: {inflationType: "milk", inflationMethod: 1}}); + } + } + } else { + sexOptions.push({text: `${V.dairyNameCaps} is not producing enough milk to pump through the pipes`}); + } + if ((V.cumPipeline > 88 && V.cumPipeline !== 0) || V.arcologies[0].FSPastoralistLaw === 1) { + if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) { + if (slave.inflationType === "cum" || slave.inflationType === "none") { + fillAssOptions.push({text: `Cum`, scene: `FillUpButt`, updateSlave: {inflationType: "cum", inflationMethod: 2}}); + fillFaceOptions.push({text: `Cum`, scene: `FillUpFace`, updateSlave: {inflationType: "cum", inflationMethod: 1}}); + } + } + } else { + sexOptions.push({text: `${V.dairyNameCaps} is not producing enough cum to pump through the pipes`}); + } + } /* dairyPiping === 1 */ + if (V.enema === 1) { + if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) { + if (slave.inflationType === "water" || slave.inflationType === "none") { + fillAssOptions.push({text: `Water`, scene: `FillUpButt`, updateSlave: {inflationType: "water", inflationMethod: 2}}); + } + if (V.medicalEnema === 1) { + if (slave.inflationType === "aphrodisiac" || slave.inflationType === "none") { + fillAssOptions.push({text: `Aphrodisiacs`, scene: `FillUpButt`, updateSlave: {inflationType: "aphrodisiac", inflationMethod: 2}}); + } + if (slave.inflationType === "curative" || slave.inflationType === "none") { + fillAssOptions.push({text: `Curatives`, scene: `FillUpButt`, updateSlave: {inflationType: "curative", inflationMethod: 2}}); + } + if (slave.inflationType === "tightener" || slave.inflationType === "none") { + fillAssOptions.push({text: `Rectal tighteners`, scene: `FillUpButt`, updateSlave: {inflationType: "tightener", inflationMethod: 2}}); + } + } + } /* inflation < 3 */ + } /* enema === 1 */ + if (V.wcPiping === 1) { + if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) { + if (slave.inflationType === "urine" || slave.inflationType === "none") { + fillAssOptions.push({text: `Urine`, scene: `FillUpButt`, updateSlave: {inflationType: "urine", inflationMethod: 2}}); + } + } + } /* wcPiping === 1 */ + } /* assigned to dairy or arcade */ + if (slave.inflation === 0 && slave.bellyImplant < 1500) { + if (slave.assignment !== "work in the dairy" && slave.assignment !== "be confined in the arcade" && slave.assignment !== "be confined in the cellblock") { + if (V.buckets === 1) { + fillFaceOptions.push({text: `Two liters of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 1, inflationType: "food", inflationMethod: 1}}); + if (slave.pregKnown === 0) { + fillFaceOptions.push({text: `A gallon of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 2, inflationType: "food", inflationMethod: 1}}); + fillFaceOptions.push({text: `Two gallons of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 3, inflationType: "food", inflationMethod: 1}}); + } + } + fillFaceOptions.push({text: `Get another slave to do it`, goto: `SlaveOnSlaveFeedingWorkAround`}); + } + } + if (canDoVaginal(slave)) { + sexOptions.push({text: `Have another slave fuck ${his} pussy`, scene: `FSlaveSlaveVag`}); + } + if (canPenetrate(slave)) { + sexOptions.push({text: `Have another slave ride ${his} cock`, scene: `FSlaveSlaveDick`}); + }else if (slave.clit >= 4) { + sexOptions.push({text: `Have another slave ride ${his} clit-dick`, scene: `FSlaveSlaveDick`}); + } + if (V.seeBestiality === 1 && V.cheatMode === 1) { + if (V.farmyardKennels > 0 && V.activeCanine !== 0) { + sexOptions.push({text: `Have a ${V.activeCanine.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "canine"}}); + } + if (V.farmyardStable > 0 && V.activeHooved !== 0) { + sexOptions.push({text: `Let a ${V.activeHooved.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "hooved"}}); + } + if (V.farmyardCages > 0 && V.activeFeline !== 0) { + sexOptions.push({text: `Have a ${V.activeFeline.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "feline"}}); + } + } + sexOptions.push({text: `Abuse ${him}`, scene: `FAbuse`}); + if (V.seeIncest === 1) { + if (V.familyTesting === 1) { + const availRelatives = availableRelatives(slave); + if (availRelatives.mother) { + sexOptions.push({text: `Fuck ${him} with ${his} mother`, scene: `FRelation`, update: {partner: "mother"}}); + } else if (availRelatives.motherName !== null) { + sexOptions.push({text: `${His} mother, ${availRelatives.motherName}, is unavailable`}); + } + /* + if (availRelatives.father) { + sexOptions.push({text: `Fuck ${him} with ${his} father`, scene: `FRelation`, update: {partner: "father"}}); + } else if (availRelatives.fatherName !== null) { + sexOptions.push({text: `${His} father, ${availRelatives.motherName}, is unavailable`}); + } + */ + if (slave.daughters > 0) { + if (availRelatives.daughters === 0) { + if (slave.daughters === 1) { + sexOptions.push({text: `${His} ${availRelatives.oneDaughterRel} is unavailable`}); + } else { + sexOptions.push({text: `${His} daughters are unavailable`}); + } + } else { + if (slave.daughters === 1) { + sexOptions.push({text: `Fuck ${him} with ${his} ${availRelatives.oneDaughterRel}`, scene: `FRelation`, update: {partner: "daughter"}}); + } else { + sexOptions.push({text: `Fuck ${him} with one of ${his} daughters`, scene: `FRelation`, update: {partner: "daughter"}}); + } + /* + if (availRelatives.daughters > 1) { + sexOptions.push({text: `Fuck ${him} with ${his} daughters`, scene: `FRelation`, update: {partner: "daughter"}}); + } + */ + } + } + if (slave.sisters > 0) { + if (availRelatives.sisters === 0) { + if (slave.sisters === 1) { + sexOptions.push({text: `${His} ${availRelatives.oneSisterRel} is unavailable`}); + } else { + sexOptions.push({text: `${His} sisters are unavailable`}); + } + } else { + if (slave.sisters === 1) { + sexOptions.push({text: `Fuck ${him} with ${his} ${availRelatives.oneSisterRel}`, scene: `FRelation`, update: {partner: "sister"}}); + } else { + sexOptions.push({text: `Fuck ${him} with one of ${his} sisters`, scene: `FRelation`, update: {partner: "sister"}}); + } + /* + if (availRelatives.sisters > 1) { + sexOptions.push({text: `Fuck ${him} with ${his} sisters`, scene: `FRelation`, update: {partner: "sisters}}); + } + */ + } + } + } else { + if (slave.relation !== 0) { + let assayedSlave = getSlave(slave.relationTarget); + const + { + daughter: daughter2, mother: mother2 + } = getPronouns(assayedSlave); + if (isSlaveAvailable(assayedSlave)) { + if (slave.relation === "mother") { + sexOptions.push({text: `Fuck ${him} with ${his} ${daughter2}`, scene: `FRelation`, update: {partner: "relation"}}); + } else if (slave.relation === "daughter") { + sexOptions.push({text: `Fuck ${him} with ${his} ${mother2}`, scene: `FRelation`, update: {partner: "relation"}}); + } else if (slave.relation === "sister") { + sexOptions.push({text: `Fuck ${him} with ${his} ${sister2}`, scene: `FRelation`, update: {partner: "relation"}}); + } else if (slave.relation === "twin") { + sexOptions.push({text: `Fuck ${him} with ${his} twin`, scene: `FRelation`, update: {partner: "relation"}}); + } + } else { + sexOptions.push({text: `${assayedSlave.slaveName} is unavailable`}); + } + } + } + } + if (slave.relationship > 0) { + const lover = getSlave(slave.relationshipTarget); + if (isSlaveAvailable(lover)) { + sexOptions.push({text: `Fuck ${him} with ${his} ${relationshipTermShort(slave)} ${SlaveFullName(lover)}`, scene: `FRelation`, update: {partner: "relationship"}}); + } else { + if (lover.assignment === "be your agent") { + if (slave.broodmother < 2) { + sexOptions.push({text: `Send ${him} to live with your agent ${SlaveFullName(lover)}`, goto: `Agent Company`, update: {subSlave: lover}}); + } else { + sexOptions.push({text: `A hyper-broodmother cannot be sent to live with your agent`}); + } + } else { + sexOptions.push({text: `${SlaveFullName(lover)} is unavailable`}); + } + } + } + if (slave.rivalryTarget !== 0 && hasAllLimbs(slave)) { + const rival = getSlave(slave.relationshipTarget); + if (isSlaveAvailable(rival) && hasAnyLegs(rival)) { + sexOptions.push({text: `Abuse ${his} rival with ${him}`, scene: `FRival`}); + } + } + if (slave.fetish !== "mindbroken" && (canTalk(slave) || hasAnyArms(slave))) { + sexOptions.push({text: `Ask ${him} about ${his} feelings`, scene: `FFeelings`}); + if (V.PC.dick > 0) { + sexOptions.push({text: `Make ${him} beg`, scene: `FBeg`}); + } + } + if (slave.devotion >= 100 && slave.relationship < 0 && slave.relationship > -3) { + sexOptions.push({text: `Talk to ${him} about relationships`, goto: `Matchmaking`, update: {subSlave: 0, eventSlave: slave}}); + } + let ML = V.marrying.length; + if ((V.MixedMarriage === 1 || V.cheatMode === 1) && slave.relationship !== 5 && slave.relationship !== -3) { + if (V.marrying.includes(slave.ID)) { + sexOptions.push({text: `You are already marrying ${him} this weekend`}); + } else { + if (ML < 2) { + if (V.cheatMode === 1 || ML === 0) { + sexOptions.push({text: `Marry ${him}`, goto: "FMarry"}); + } else { + sexOptions.push({text: `You already have a wedding planned for this weekend`}); + } + } else { + sexOptions.push({text: `You can only marry up to two slaves per week`}); + } + } + } + if (V.cheatMode === 1) { + sexOptions.push({text: `Check ${his} stats`, scene: `Slave Stats`}); + } + } else { /* IS A FUCKDOLL */ + sexOptions.push({text: `Fuck ${his} face hole`, scene: `FFuckdollOral`}); + if (canDoVaginal(slave)) { + sexOptions.push({text: `Fuck ${his} front hole`, scene: `FFuckdollVaginal`}); + } + if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && V.seePreg !== 0) { + if (canImpreg(slave, V.PC)) { + sexOptions.push({text: `Put a baby in ${him}`, scene: `FFuckdollImpreg`}); + } + } + if (canDoAnal(slave)) { + sexOptions.push({text: `Fuck ${his} rear hole`, scene: `FFuckdollAnal`}); + } + } + let activeSlaveRepSacrifice = repGainSacrifice(slave, V.arcologies[0]); + if (activeSlaveRepSacrifice > 0 && V.arcologies[0].FSPaternalist === "unset" && (slave.breedingMark === 0 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { + sexOptions.push({ + text: `Sacrifice ${him} on the altar`, goto: `Aztec Slave Sacrifice`, note: `This will kill ${him} and gain you ${activeSlaveRepSacrifice} reputation`, update: {sacrificeType: "life"} + }); + } + el.append(`Or use ${him} here: `); + el.appendChild(generateRow(sexOptions)); + if (!jQuery.isEmptyObject(fillFaceOptions)) { + let fill = document.createElement('div'); + fill.appendChild(document.createTextNode(` Fill ${his} mouth with: `)); + fill.appendChild(generateRow(fillFaceOptions)); + el.appendChild(fill); + } + if (!jQuery.isEmptyObject(fillAssOptions)) { + let fill = document.createElement('div'); + fill.appendChild(document.createTextNode(` Fill ${his} ass with: `)); + fill.appendChild(generateRow(fillAssOptions)); + el.appendChild(fill); + } + + function generateRow(sexArray) { + let row = document.createElement('span'); + for (let i = 0; i < sexArray.length; i++) { + let link; + const separator = document.createTextNode(` | `); + const keys = Object.keys(sexArray[i]); + + // Test to see if there was a problem with the key + for (let j = 0; j < keys.length; j++) { + if (["text", "scene", "goto", "updateSlave", "update", "note"].includes(keys[j])) { + continue; + } else { + sexArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY"; + console.log("Trash found while generateRow() was running: " + keys[j] + ": " + sexArray[i][keys[j]]); + break; + } + } + // is it just text? + if (keys.length === 1) { + if (sexArray[i].text) { + link = document.createTextNode(sexArray[i].text); + } else { + console.log(`expected 'text' only, got: ${sexArray[i]}`); + link = document.createTextNode("error, text not found"); + } + } else { + let passage = ""; + if (sexArray[i].goto) { + passage = sexArray[i].goto; + } + + // Set up the link + link = App.UI.DOM.link( + sexArray[i].text, + () => { click(sexArray[i]); }, + [], + passage + ); + + // add a note node if required + if (sexArray[i].note) { + let note = document.createTextNode(sexArray[i].note); + note.className = "note"; + link.appendChild(note); + } + } + row.appendChild(link); + if (i < sexArray.length-1) { + row.appendChild(separator); + } + } + + return row; + + function click(sexOption) { + if (sexOption.updateSlave) { + Object.assign(slave, sexOption.updateSlave); + } + if (sexOption.update) { + Object.assign(V, sexOption.update); + } + + if (sexOption.scene) { + App.UI.replace('#miniscene', `<<include "${sexOption.scene}">>`); + } else if (sexOption.goto) { + App.UI.replace('#miniscene', `<<goto "${sexOption.goto}">>`); + } + + SlaveInteractRefreshAll(slave); + return; + } + } + return jQuery('#useSlave').empty().append(el); +}; + +window.SlaveInteractBloating = function(slave) { + const + { + // eslint-disable-next-line no-unused-vars + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + let bloating = document.createElement('div'); + if (slave.inflation > 0) { + let intro = document.createElement('span'); + intro.textContent = "Required Bloating"; + intro.style.textDecoration = "underline"; + bloating.append(intro); + + bloating.append(": "); + + let requirement = document.createElement('span'); + requirement.style.fontWeight = "bold"; + requirement.id = "inflate"; + if (slave.inflation === 3) { + requirement.textContent = `${He} is required to keep 2 gallons of ${slave.inflationType} in ${him} at all times`; + } else if (slave.inflation === 2) { + requirement.textContent = `${He} is required to keep 4 liters of ${slave.inflationType} in ${him} at all times`; + } else if (slave.inflation === 1) { + requirement.textContent = `${He} is required to keep 2 liters of ${slave.inflationType} in ${him} at all times`; + } + bloating.append(requirement); + bloating.append(". "); + + if (slave.inflationMethod === 3) { + let link = App.UI.DOM.link( + `Let ${him} deflate`, + () => { + slave.inflation = 0, + slave.inflationType = "none", + slave.inflationMethod = 0, + slave.cumSource = 0, + slave.milkSource = 0, + SetBellySize(slave), + SlaveInteractRefreshAll(slave); + }, + ); + bloating.append(link); + } else { + let link = App.UI.DOM.link( + `Let ${him} deflate`, + () => { + slave.inflation = 0, + slave.inflationType = "none", + slave.inflationMethod = 0, + SetBellySize(slave), + SlaveInteractRefreshAll(slave); + }, + ); + bloating.append(link); + } + } + // make sure it updates itself after run + return jQuery('#bloating').empty().append(bloating); +}; + + +window.SlaveInteractFertility = function(slave) { + const + { + // eslint-disable-next-line no-unused-vars + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + const separator = document.createTextNode(` | `); + let fertilityblock = document.createElement('span'); + if (slave.ovaries === 1 || slave.mpreg === 1 || slave.preg > 0) { + let note = document.createTextNode(``); + note.className = "note"; + if (slave.preg < -1) { + note.textContent += `${He} is sterile`; + } else if (slave.pubertyXX === 0 && slave.preg < 1) { + note.textContent += `${He} is not yet fertile`; + } else if (slave.ovaryAge >= 47 && slave.preg < 1) { + note.textContent += `${He} is too old to become pregnant`; + if (slave.preg === -1) { + slave.preg = 0; + SetBellySize(slave); + } + } else if (slave.broodmotherOnHold === 1) { + note.textContent += `${His} pregnancy implant is turned off`; + if (slave.broodmotherCountDown > 0) { + note.textContent += `${he} is expected to be completely emptied of ${his} remaining brood in ${slave.broodmotherCountDown} week`; + if (slave.broodmotherCountDown > 1){ + note.textContent += `s`; + } + note.textContent += `.`; + let link = App.UI.DOM.link( + `Turn on implant`, + () => { + slave.broodmotherOnHold = 0, + slave.broodmotherCountDown = 0; + }, + [], + "Slave Interact" + ); + fertilityblock.append(link); + } + } else if (slave.preg >= -1) { + fertilityblock.append("Contraception: "); + let fertility = document.createElement('span'); + fertility.id = "fertility"; + fertility.style.fontWeight = "bold"; + if (slave.preg === -1) { + fertility.textContent = "using contraceptives"; + } else if (slave.pregWeek < 0) { + fertility.textContent = "postpartum"; + } else if (slave.preg === 0) { + fertility.textContent = "fertile"; + } else if (slave.preg < 4) { + fertility.textContent = "may be pregnant"; + } else { + fertility.textContent = `${slave.preg} weeks pregnant`; + } + fertility.textContent += ". "; + if (slave.preg > 0 && V.pregnancyMonitoringUpgrade === 1) { + fertilityblock.append(App.UI.DOM.passageLink("Inspect pregnancy", "Analyze Pregnancy")); + fertilityblock.append(` | `); + } + if (slave.preg === 0) { + let link = App.UI.DOM.link( + `Use contraceptives`, + () => { + slave.preg = -1, + SlaveInteractRefreshAll(slave); + }, + ); + fertilityblock.append(link); + } else if (slave.preg === -1) { + let link = App.UI.DOM.link( + `Let ${him} get pregnant`, + () => { + slave.preg = 0, + SlaveInteractRefreshAll(slave); + }, + ); + fertilityblock.append(link); + } else if (slave.induce === 1) { + note.textContent += `Hormones are being slipped into ${his} food; ${he} will give birth suddenly and rapidly this week`; + } else if (slave.preg > slave.pregData.normalBirth-2 && slave.preg > slave.pregData.minLiveBirth && slave.broodmother === 0 && slave.labor === 0) { + let link = App.UI.DOM.link( + `Induce labor`, + () => { + slave.labor = 1, + slave.induce = 1, + V.birthee = 1; + }, + [], + "Slave Interact" + ); + fertilityblock.append(link); + fertilityblock.appendChild(separator); + fertilityblock.append(App.UI.DOM.passageLink(`Give ${him} a cesarean section`, "csec")); + } else if (slave.broodmother > 0) { + if (slave.broodmotherOnHold !== 1) { + let link = App.UI.DOM.link( + `Turn off implant`, + () => { + slave.broodmotherOnHold = 1, + slave.broodmotherCountDown = 38-WombMinPreg(slave); + }, + ); + fertilityblock.append(link); + } + if (slave.broodmotherOnHold !== 1 && slave.preg >= 36) { + fertilityblock.appendChild(separator); + } + fertilityblock.appendChild(separator); + if (slave.preg > 37) { + fertilityblock.append(App.UI.DOM.passageLink(`Induce mass childbirth`, "BirthStorm")); + } + } else if (slave.preg > slave.pregData.minLiveBirth) { + let link = App.UI.DOM.link( + `Give ${him} a cesarean section`, + () => { + slave.broodmotherOnHold = 0, + slave.broodmotherCountDown = 0; + }, + [], + "csec" + ); + fertilityblock.append(link); + } else if (slave.preg > 0 && slave.breedingMark === 1 && V.propOutcome === 1 && V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1 && (slave.pregSource === -1 || slave.pregSource === -6)) { + note.textContent += "You are forbidden from aborting an Elite child"; + } else if (slave.preg > 0) { + let link = App.UI.DOM.link( + `Abort ${his} pregnancy`, + () => { + slave.broodmotherOnHold = 0, + slave.broodmotherCountDown = 0; + }, + [], + "Abort" + ); + fertilityblock.append(link); + } + fertilityblock.append(note); + } + } + if ( + (slave.pregKnown === 1) && + (V.pregSpeedControl === 1) && + ( + slave.breedingMark !== 1 || + V.propOutcome === 0 || + V.eugenicsFullControl === 1 || + V.arcologies[0].FSRestart === "unset" + ) && + (slave.indentureRestrictions < 1) && + (slave.broodmother === 0) && + V.seePreg !== 0 + ) { + let control = document.createElement('div'); + let underline = document.createElement('span'); + + underline.style.textDecoration = "underline"; + underline.textContent = "Pregnancy control"; + control.append(underline); + control.append(": "); + + if (slave.pregControl === "labor suppressors") { + control.append("Labor is suppressed. "); + } else if (slave.pregControl === "slow gestation") { + control.append("Slowed gestation speed. "); + } else if (slave.pregControl === "speed up") { + control.append("Faster gestation speed, staffed clinic recommended. "); + } else { + control.append("Normal gestation and birth. "); + } + fertilityblock.append(control); + control = document.createElement('div'); + if (slave.preg >= slave.pregData.minLiveBirth) { + if (slave.pregControl === "labor suppressors") { + let link = App.UI.DOM.link( + `Normal Birth`, + () => { + slave.pregControl = "none", + SlaveInteractFertility(slave); + }, + ); + control.append(link); + } else { + let link = App.UI.DOM.link( + `Suppress Labor`, + () => { + slave.pregControl = "labor suppressors", + SlaveInteractFertility(slave); + }, + ); + control.append(link); + } + } else if (slave.preg < slave.pregData.normalBirth) { + if (slave.pregControl !== "none") { + let link = App.UI.DOM.link( + `Normal Gestation`, + () => { + slave.pregControl = "none", + SlaveInteractFertility(slave); + }, + ); + control.append(link); + } + if (slave.pregControl !== "slow gestation") { + control.append(separator); + let link = App.UI.DOM.link( + `Slow Gestation`, + () => { + slave.pregControl = "slow gestation", + SlaveInteractFertility(slave); + }, + ); + control.append(link); + } + if (slave.pregControl !== "speed up") { + control.append(separator); + let link = App.UI.DOM.link( + `Fast Gestation`, + () => { + slave.pregControl = "speed up", + SlaveInteractFertility(slave); + }, + ); + control.append(link); + } + } + fertilityblock.append(control); + } + return jQuery('#fertilityblock').empty().append(fertilityblock); +}; + +window.SlaveInteractRefreshAll = function(slave) { + SlaveInteractBloating(slave); + SlaveInteractFertility(slave); + useSlaveDisplay(slave); +}; diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index c0d465dd481d94929a96c0259aefd7aaac2f1806..00de0b3bc901bd06dbe4c66467f7a715820d6b9a 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -66,338 +66,15 @@ <<if $prostheticsUpgrade > 0>>| [[Configure cybernetics|Prosthetics Configuration][$prostheticsConfig = "main"]]<</if>> -<br> -<span id="miniscene">//Or use $him here://</span> -<<if $activeSlave.fuckdoll == 0>> - <span id="sexoption"> - <<if ($activeSlave.vagina > -1)>> - <<if canDoVaginal($activeSlave)>> - <<link "Fuck $him">><<replace "#miniscene">><<include "FVagina">><br><</replace>><</link>> - <<if canDoAnal($activeSlave)>> - | <<link "Use $his holes">><<replace "#miniscene">><<include "FButt">><br> <</replace>><</link>> - <</if>> - <<else>> - //Remove $his chastity belt if you wish to fuck $him// - <</if>> - <</if>> - <<if $activeSlave.bellyPreg >= 300000>> - <<if canDoVaginal($activeSlave) || canDoAnal($activeSlave)>> - | <<link "Fuck $him on $his belly">><<replace "#miniscene">><<include "FBellyFuck">><br> <</replace>><</link>> - <<if $pregInventions >= 1>> - | <<link "Fuck $him in $his maternity swing">><<replace "#miniscene">><<include "FMaternitySwing">><br> <</replace>><</link>> - | <<link "Fuck $him with the help of $his assistants">><<replace "#miniscene">><<include "FAssistedSex">><br> <</replace>><</link>> - | <<link "Fuck $him in your goo pool">><<replace "#miniscene">><<include "FPoolSex">><br> <</replace>><</link>> - <</if>> - <</if>> - <</if>> - </span> - <span id="analsexoption"> - <<if canDoAnal($activeSlave)>> - | <<link "Fuck $his ass">><<replace "#miniscene">><<include "FAnus">><br> <</replace>><</link>> - <<else>> - | //Remove $his chastity belt if you wish to fuck $his ass// - <</if>> - </span> - | <<link "Use $his mouth">><<replace "#miniscene">><<include "FLips">><br> <</replace>><</link>> - | <<link "Kiss $him">><<replace "#miniscene">><<include "FKiss">><br> <</replace>><</link>> - <<if hasAnyLegs($activeSlave)>> - | <<link "Have $him dance for you">><<replace "#miniscene">><<include "FDance">><br> <</replace>><</link>> - <</if>> - | <<link "Play with $his tits">><<replace "#miniscene">><<include "FBoobs">><br> <</replace>><</link>> - | <<link "Caress $him">><<replace "#miniscene">><<include "FCaress">><br> <</replace>><</link>> - | <<link "Give $him a hug">><<replace "#miniscene">><<include "FEmbrace">><br> <</replace>><</link>> - <<if $cheatMode == 1>> - | <<link "Pat $his head">><<replace "#miniscene">><<include "FPat">><br> <</replace>><</link>> - <</if>> - | <<link "Grope $his boobs">><<replace "#miniscene">><<include "FondleBoobs">><br> <</replace>><</link>> - <<if $activeSlave.nipples == "fuckable" && $PC.dick > 0>> - | <<link "Fuck $his nipples">><<replace "#miniscene">><<include "FNippleFuck">><br> <</replace>><</link>> - <</if>> - <<if $activeSlave.lactation > 0 && $activeSlave.boobs >= 2000 && $activeSlave.belly < 60000 && hasAnyArms($activeSlave)>> - | <<link "Drink $his milk">><<replace "#miniscene">><<include "FSuckle">><br> <</replace>><</link>> - <</if>> - <span id="analgropeoption"> - <<if canDoAnal($activeSlave)>> - | <<link "Grope $his butt">><<replace "#miniscene">><<include "FondleButt">><br> <</replace>><</link>> - <</if>> - </span> - <span id="gropeoption"> - <<if ($activeSlave.vagina > -1)>> - <<if canDoVaginal($activeSlave)>> - | <<link "Grope $his pussy">><<replace "#miniscene">><<include "FondleVagina">><br> <</replace>><</link>> - | <<link "Eat $him out">><<replace "#miniscene">><<include "FLickPussy">><br> <</replace>><</link>> - <</if>> - <</if>> - </span> - <span id="dickgropeoption"> - <<if ($activeSlave.dick > 0)>> - <<if !($activeSlave.chastityPenis)>> - | <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br> <</replace>><</link>> - <<if canPenetrate($activeSlave)>> - <<if $sexualOpeness == 1 || $activeSlave.toyHole == "dick">> - | <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br> <</replace>><</link>> - <</if>> - <</if>> - <<else>> - | //Remove $his dick chastity belt if you wish to play with $his cock// - <</if>> - <</if>> - </span> - <<if hasAnyLegs($activeSlave) && $PC.dick > 0>> - | <<link "Get a footjob">><<replace "#miniscene">><<include "FFeet">><br> <</replace>><</link>> - <</if>> - <span id = "impreg"> - <<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && ($activeSlave.fuckdoll == 0) && $seePreg != 0>> - <<if canImpreg($activeSlave, $PC)>> - | <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if canImpreg($activeSlave, $activeSlave)>> - | <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - | <<link "Use another slave to impregnate $him" "FSlaveImpreg">><</link>> - <<if ($activeSlave.eggType != "human") && (_CL > 0 || _HL > 0 || _FL > 0) && ($cheatMode == 1)>> - | <<link "Use an animal to impregnate $him" "FAnimalImpreg">><</link>> - <</if>> - <</if>> - <<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">> - <<if $enema == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "water" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with water">><<set $activeSlave.inflationType = "water">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $medicalEnema == 1>> - <<if $activeSlave.inflationType == "aphrodisiac" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with aphrodisiacs">><<set $activeSlave.inflationType = "aphrodisiac">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $activeSlave.inflationType == "curative" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with curatives">><<set $activeSlave.inflationType = "curative">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $activeSlave.inflationType == "tightener" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with rectal tighteners">><<set $activeSlave.inflationType = "tightener">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> - <</if>> - <<if $dairyPiping == 1>> - <<if ($milkPipeline > 88 && $milkPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "milk" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force-feed $him milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <<else>> - | //$dairyNameCaps is not producing enough milk to pump through the pipes// - <</if>> - <<if ($cumPipeline > 88 && $cumPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "cum" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force-feed $him cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <<else>> - | //$dairyNameCaps is not producing enough cum to pump through the pipes// - <</if>> - <</if>> - <<if $wcPiping == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "urine" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with urine">><<set $activeSlave.inflationType = "urine">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> - <</if>> - <<if $activeSlave.inflation == 0 && $activeSlave.bellyImplant < 1500>> - <<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">> - | <<link "Use another slave to force-feed $him" "SlaveOnSlaveFeedingWorkAround">><</link>> - <<if $buckets == 1>> - | <<link "Make $him consume two liters of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 1>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<if $activeSlave.pregKnown == 0>> - | <<link "Force $him to consume a gallon of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 2>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force two gallons of slave food into $him">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 3>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> - <</if>> - </span> - <<if canDoVaginal($activeSlave)>> - | <<link "Have another slave fuck $his pussy" "FSlaveSlaveVag">><</link>> - <</if>> - <<if canPenetrate($activeSlave)>> - | <<link "Have another slave ride $his cock" "FSlaveSlaveDick">><</link>> - <<elseif $activeSlave.clit >= 4>> - | <<link "Have another slave ride $his clit-dick" "FSlaveSlaveDick">><</link>> - <</if>> - <<if $seeBestiality == 1 && $cheatMode == 1>> - <<if $farmyardKennels > 0 && $activeCanine != 0>> - | <<link "Have a $activeCanine.species mount $him">><<set $animalType = "canine">><<replace "#miniscene">><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> - <<if $farmyardStable > 0 && $activeHooved != 0>> - | <<link "Let a $activeHooved.species mount $him">><<set $animalType = "hooved">><<replace "#miniscene">><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> - <<if $farmyardCages > 0 && $activeFeline != 0>> - | <<link "Have a $activeFeline.species mount $him">><<set $animalType = "feline">><<replace "#miniscene">><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> - <</if>> - | <<link "Abuse $him">><<replace "#miniscene">><<include "FAbuse">><</replace>><</link>> - <<if $seeIncest == 1>> - <<if $familyTesting == 1>> - <<set _availRelatives = availableRelatives($activeSlave)>> - <<if _availRelatives.mother>> - | <<link "Fuck $him with $his mother">><<replace "#miniscene">><<set $partner = "mother">><<include "FRelation">><br> <</replace>><</link>> - <<elseif _availRelatives.motherName !== null>> - //$His mother, _availRelatives.motherName, is unavailable// - <</if>> - /* - <<if _availRelatives.father>> - | <<link "Fuck $him with $his father">><<replace "#miniscene">><<set $partner = "father">><<include "FRelation">><br> <</replace>><</link>> - <<elseif _availRelatives.fatherName !== null>> - //$His father, _availRelatives.fatherName, is unavailable// - <</if>> - */ - <<if $activeSlave.daughters > 0>> - <<if _availRelatives.daughters == 0>> - <<if $activeSlave.daughters == 1>> - //$His _availRelatives.oneDaughterRel is unavailable// - <<else>> - //$His daughters are unavailable// - <</if>> - <<else>> - <<if $activeSlave.daughters == 1>> - | <<link "Fuck $him with $his _availRelatives.oneDaughterRel">><<replace "#miniscene">><<set $partner = "daughter">><<include "FRelation">><br> <</replace>><</link>> - <<else>> - | <<link "Fuck $him with one of $his daughters">><<replace "#miniscene">><<set $partner = "daughter">><<include "FRelation">><br> <</replace>><</link>> - <</if>> - /* - <<if _availRelatives.daughters > 1>> - | <<link "Fuck $him with $his daughters">><<replace "#miniscene">><<set $partner = "daughters">><<include "FRelation">><br> <</replace>><</link>> - <</if>> - */ - <</if>> - <</if>> - <<if $activeSlave.sisters > 0>> - <<if _availRelatives.sisters == 0>> - <<if $activeSlave.sisters == 1>> - //$His _availRelatives.oneSisterRel is unavailable// - <<else>> - //$His sisters are unavailable// - <</if>> - <<else>> - <<if $activeSlave.sisters == 1>> - | <<link "Fuck $him with $his _availRelatives.oneSisterRel">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br> <</replace>><</link>> - <<else>> - | <<link "Fuck $him with one of $his sisters">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br> <</replace>><</link>> - <</if>> - /* - <<if _availRelatives.sisters > 1>> - | <<link "Fuck $him with $his sisters">><<replace "#miniscene">><<set $partner = "sisters">><<include "FRelation">><br> <</replace>><</link>> - <</if>> - */ - <</if>> - <</if>> - <<else>> - <<if ($activeSlave.relation != 0)>> - <<set _assayedSlave = getSlave($activeSlave.relationTarget)>> - <<setLocalPronouns _assayedSlave 2>> - <<if isSlaveAvailable(_assayedSlave)>> - <<if ($activeSlave.relation == "mother")>> - | <<link "Fuck $him with $his _daughter2">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br> <</replace>><</link>> - <<elseif ($activeSlave.relation == "daughter")>> - | <<link "Fuck $him with $his mother">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br> <</replace>><</link>> - <<elseif ($activeSlave.relation == "sister")>> - | <<link "Fuck $him with $his _sister2">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br> <</replace>><</link>> - <<elseif ($activeSlave.relation == "twin")>> - | <<link "Fuck $him with $his twin">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br> <</replace>><</link>> - <</if>> - <<else>> - //_assayedSlave.slaveName is unavailable// - <</if>> - <</if>> - <</if>> - <</if>> - <<if ($activeSlave.relationship > 0)>> - <<set _si = $slaveIndices[$activeSlave.relationshipTarget]>> - <<if isSlaveAvailable($slaves[_si])>> - | <<link `"Fuck $him with $his <<print relationshipTermShort($activeSlave)>> <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br> <</replace>><</link>> - <<else>> - <<if $slaves[_si].assignment == "be your agent">> - <<if $activeSlave.broodmother < 2>> - | <<link `"Send $him to live with your agent <<= SlaveFullName($slaves[_si])>>"`>> - <<set $subSlave = $slaves[_si]>> - <<goto "Agent Company">> - <</link>> - <<else>> - | //A hyper-broodmother cannot be sent to live with your agent// - <</if>> - <<else>> - | //<<= SlaveFullName($slaves[_si])>> is unavailable// - <</if>> - <</if>> - <</if>> - <<if $activeSlave.rivalryTarget != 0 && hasAllLimbs($activeSlave)>> - <<set _rsi = $slaveIndices[$activeSlave.rivalryTarget]>> - <<if isSlaveAvailable($slaves[_rsi]) && hasAnyLegs($slaves[_rsi])>> - | <<link "Abuse $his rival with $him">><<replace "#miniscene">><<include "FRival">><br> <</replace>><</link>> - <</if>> - <</if>> - <<if ($activeSlave.fetish != "mindbroken") && (canTalk($activeSlave) || hasAnyArms($activeSlave))>> - | <<link "Ask $him about $his feelings">><<replace "#miniscene">><<include "FFeelings">><br> <</replace>><</link>> - <<if $PC.dick > 0>> - | <<link "Make $him beg">><<replace "#miniscene">><<include "FBeg">><br> <</replace>><</link>> - <</if>> - <</if>> - <<if $activeSlave.devotion >= 100 && $activeSlave.relationship < 0 && $activeSlave.relationship > -3>> - | <<link "Talk to $him about relationships" "Matchmaking">><<set $subSlave = 0, $eventSlave = $activeSlave>><</link>> - <</if>> - <<set _ML = $marrying.length>> - <<if (($MixedMarriage == 1 || $cheatMode == 1) && $activeSlave.relationship != 5 && $activeSlave.relationship != -3)>> - <<set _eligible = 1>> - <<if $marrying.includes($activeSlave.ID)>> - <<set _eligible = 0>> - <</if>> - <<if _eligible != 0>> - <<if (_ML < 2)>> - <<if ($cheatMode == 1) || (_ML == 0)>> - | <<link "Marry $him" "FMarry">><</link>> - <<else>> - | //You already have a wedding planned for this weekend// - <</if>> - <<else>> - | //You can only marry up to two slaves per week// - <</if>> - <<else>> - | //You are already marrying $him this weekend// - <</if>> - <</if>> - <<if $cheatMode == 1>> - | <<link "Check $his stats">><<replace "#miniscene">><<include "Slave Stats">><</replace>><</link>> - <</if>> -<<else>> /* IS A FUCKDOLL */ - <<link "Fuck $his face hole">><<replace "#miniscene">><<FFuckdollOral>><br><</replace>><</link>> - <<if canDoVaginal($activeSlave)>> - | <<link "Fuck $his front hole">><<replace "#miniscene">><<FFuckdollVaginal>><br><</replace>><</link>> - <</if>> - <<if canDoAnal($activeSlave)>> - | <<link "Fuck $his rear hole">><<replace "#miniscene">><<FFuckdollAnal>><br><</replace>><</link>> - <</if>> - <span id = "impreg"> - <<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && $seePreg != 0>> - <<if canImpreg($activeSlave, $PC)>> - | <<link "Put a baby in $him">><<replace "#miniscene">><<FFuckdollImpreg>><br><</replace>><</link>> - <</if>> - <</if>> - </span> -<</if>> -<<set _activeSlaveRepSacrifice = repGainSacrifice($activeSlave, $arcologies[0])>> -<<if _activeSlaveRepSacrifice > 0 && $arcologies[0].FSPaternalist == "unset" && ($activeSlave.breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - | <<link "Sacrifice $him on the altar" "Aztec Slave Sacrifice">><<set $sacrificeType = "life">><</link>>//This will kill $him and gain you _activeSlaveRepSacrifice reputation// -<</if>> +<div id="miniscene"></div> +<span id="useSlave"></span> +<script> + useSlaveDisplay(V.activeSlave) +</script> /* pregmod start */ <<if $familyTesting == 1>> - <br><br> - <span id="family"> + <p id="family"> <div id="familyTree"></div> <span id="familyTreeLink"> <<link "Pull up the file on $his family tree.">> @@ -406,20 +83,20 @@ <</replace>> <</link>> </span> - </span> + </p> <</if>> +<p> <<if $universalRulesImpregnation == "HG" && $seePreg != 0>> - <br><br> <<if $activeSlave.HGExclude == 0>> Will be bred by the Head Girl when fertile. <<link "Exempt $him" "Slave Interact">><<set $activeSlave.HGExclude = 1>><</link>> <<else>> Will not be bred by the Head Girl when fertile. <<link "Include $him" "Slave Interact">><<set $activeSlave.HGExclude = 0>><</link>> <</if>> <</if>> +</p> /* pregmod end */ -<br><br> <<if $activeSlave.useRulesAssistant == 0>> @@.gray;''Not subject'' to the Rules Assistant.@@ <<link "Include $him" "Slave Interact">><<set $activeSlave.useRulesAssistant = 1>><</link>> @@ -951,7 +628,7 @@ <<if $activeSlave.vagina > -1>> <br>Vaginal accessory: ''<span id="vaginalAccessory">$activeSlave.vaginalAccessory</span>.'' - <<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>> + <<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <<if isItemAccessible("bullet vibrator")>> | <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> <</if>> @@ -983,7 +660,7 @@ <<if $activeSlave.dick > 0>> <br>Dick accessory: ''<span id="dickAccessory">$activeSlave.dickAccessory</span>.'' - <<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>> + <<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>> | <<link "Bullet vibrator">><<set $activeSlave.dickAccessory = "bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>> <</if>> @@ -993,18 +670,18 @@ <</if>> <br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>full chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>genital chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>combined chastity cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>combined chastity belt<<elseif $activeSlave.chastityVagina == 1>>chastity belt<<elseif $activeSlave.chastityPenis == 1>>chastity cage<<elseif $activeSlave.chastityAnus == 1>>anal chastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>none<<else>>THERE HAS BEEN AN ERROR<</if>></span>.'' - <<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>none<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>anal chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + <<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>none<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> + | <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>anal chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <<if $activeSlave.vagina > -1>> - | <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> + | <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <</if>> <<if $activeSlave.dick > 0>> - | <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> + | <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <<if $activeSlave.vagina > -1>> - | <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> + | <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>> <</if>> <</if>> @@ -1229,89 +906,8 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 | <<link "Extreme">><<set $activeSlave.aphrodisiacs = 2>><<replace "#aphrodisiacs">><strong>extreme</strong><</replace>><</link>> | <<link "Anaphrodisiacs">><<set $activeSlave.aphrodisiacs = -1>><<replace "#aphrodisiacs">><strong>anaphrodisiacs</strong><</replace>><</link>> <br> -<span id="fertilityblock"> -<<if ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1 || $activeSlave.preg > 0)>> - <<if ($activeSlave.preg < -1)>> - //$He is sterile// - <<elseif ($activeSlave.pubertyXX == 0) && $activeSlave.preg < 1>> - //$He is not yet fertile// - <<elseif $activeSlave.ovaryAge >= 47 && $activeSlave.preg < 1>> - //$He is too old to become pregnant// - <<if $activeSlave.preg == -1>> - <<set $activeSlave.preg = 0>> - <<run SetBellySize($activeSlave)>> - <</if>> - <<elseif $activeSlave.broodmotherOnHold == 1>> - //$His pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; $he is expected to be completely emptied of $his remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>// - [[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]] - <<elseif $activeSlave.preg >= -1>> - Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>. - <<if ($activeSlave.preg > 0 && $pregnancyMonitoringUpgrade == 1)>> - [[Inspect pregnancy|Analyze Pregnancy]] | - <</if>> - <<if ($activeSlave.preg == 0)>> - <<link "Use contraceptives">> - <<set $activeSlave.preg = -1>> - <<SlaveInteractFertility>> - <<SlaveInteractImpreg>> - <</link>> - <<elseif $activeSlave.preg == -1>> - <<link "Let $him get pregnant">> - <<set $activeSlave.preg = 0>> - <<SlaveInteractFertility>> - <<SlaveInteractImpreg>> - <</link>> - <<elseif $activeSlave.induce == 1>> - //Hormones are being slipped into $his food; $he will give birth suddenly and rapidly this week// - <<elseif ($activeSlave.preg > $activeSlave.pregData.normalBirth-2 && $activeSlave.preg > $activeSlave.pregData.minLiveBirth) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>> - [[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]] - | <<link "Give $him a cesarean section" "csec">><</link>> - <<elseif ($activeSlave.broodmother > 0)>> - <<if $activeSlave.broodmotherOnHold != 1>> - [[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] - <</if>> - <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>> - | - <</if>> - <<if ($activeSlave.preg >= 37)>> - [[Induce mass childbirth|BirthStorm]] - <</if>> - <<elseif ($activeSlave.preg > $activeSlave.pregData.minLiveBirth)>> - <<link "Give $him a cesarean section" "csec">><</link>> - <<elseif ($activeSlave.preg > 0) && $activeSlave.breedingMark == 1 && $propOutcome == 1 && $arcologies[0].FSRestart != "unset" && $eugenicsFullControl != 1 && ($activeSlave.pregSource == -1 || $activeSlave.pregSource == -6)>> - //You are forbidden from aborting an Elite child// - <<elseif ($activeSlave.preg > 0)>> - <<link "Abort $his pregnancy" "Abort">><</link>> - <</if>> - <<if $activeSlave.preg >= 0 && ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1) && $activeSlave.eggType == "human" && $activeSlave.ovaryAge < 47>> - | [[Harvest and implant an egg|Surrogacy Workaround][$donatrix = $activeSlave, $impregnatrix = "Undecided", $receptrix = "Undecided", $nextLink = "Slave Interact"]] - <</if>> - <</if>> -<</if>> -<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0) && $seePreg != 0>> - <br> - __Pregnancy control__: <<if $activeSlave.pregControl == "labor suppressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation speed<<elseif $activeSlave.pregControl == "speed up">>Faster gestation speed, staffed clinic recommended<<else>>Normal gestation and birth<</if>>. - <<if ($activeSlave.preg >= $activeSlave.pregData.minLiveBirth)>> - <br> - <<if $activeSlave.pregControl == "labor suppressors">> - <<link "Normal Birth">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> - <<else>> - <<link "Suppress Labor">><<set $activeSlave.pregControl = "labor suppressors">><<SlaveInteractFertility>><</link>> - <</if>> - <<elseif ($activeSlave.preg < $activeSlave.pregData.normalBirth)>> - <br> - <<if $activeSlave.pregControl != "none">> - <<link "Normal Gestation">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> | - <</if>> - <<if $activeSlave.pregControl != "slow Gestation">> - <<link "Slow Gestation">><<set $activeSlave.pregControl = "slow gestation">><<SlaveInteractFertility>><</link>> | - <</if>> - <<if $activeSlave.pregControl != "speed up">> - <<link "Fast Gestation">><<set $activeSlave.pregControl = "speed up">><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> -<</if>> -</span> +<span id="fertilityblock"></span> +<script>SlaveInteractFertility(V.activeSlave)</script> <<set $reservedChildren = FetusGlobalReserveCount("incubator")>> <<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>> <<set _reservedIncubator = WombReserveCount($activeSlave, "incubator")>> @@ -1428,23 +1024,9 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 <</if>> <</if>> -<span id="bloating"> -<<if $activeSlave.inflation > 0>> - <br> - __Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>. - <<if $activeSlave.inflationMethod == 3>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif $activeSlave.inflationType == "milk">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif $activeSlave.inflationType == "cum">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<else>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> -<</if>> -</span> +<span id="bloating"></span> +<script>SlaveInteractBloating(V.activeSlave)</script> -<br> Hormones: <strong><span id="hormones"> <<if $activeSlave.hormones == -2>>intensive male<<elseif $activeSlave.hormones == -1>>male<<elseif $activeSlave.hormones == 2>>intensive female<<elseif $activeSlave.hormones == 1>>female<<else>>none<</if>></span></strong>. <<if $activeSlave.indentureRestrictions < 2>> diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 21a0bdcf29c7721b1da91454e7c7995b3061f325..381134ed64f378cc44a825d4c29ab84be4eeb425 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -14,101 +14,7 @@ Allows for dynamic updating of the next button in the storyCaption (left side-ba Call as <<SlaveInteractImpreg>> %/ <<widget "SlaveInteractImpreg">> -<<replace #impreg>> - <<if $activeSlave.fuckdoll == 0>> - <<if canGetPregnant($activeSlave) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && ($activeSlave.fuckdoll == 0) && $seePreg != 0>> - <<if canImpreg($activeSlave, $PC)>> - | <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if canImpreg($activeSlave, $activeSlave)>> - | <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - | [["Use another slave to impregnate " + $him|FSlaveImpreg]] - <</if>> - <<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">> - <<if $enema == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "water" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with water">><<set $activeSlave.inflationType = "water">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $medicalEnema == 1>> - <<if $activeSlave.inflationType == "aphrodisiac" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with aphrodisiacs">><<set $activeSlave.inflationType = "aphrodisiac">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $activeSlave.inflationType == "curative" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with curatives">><<set $activeSlave.inflationType = "curative">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <<if $activeSlave.inflationType == "tightener" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with rectal tighteners">><<set $activeSlave.inflationType = "tightener">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> /* inflation < 3 */ - <</if>> /* enema == 1 */ - <<if $dairyPiping == 1>> - <<if ($milkPipeline > 88 && $milkPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "milk" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force-feed $him milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <<else>> - | //$dairyNameCaps is not producing enough milk to pump through the pipes// - <</if>> - <<if ($cumPipeline > 88 && $cumPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "cum" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force-feed $him cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <<else>> - | //$dairyNameCaps is not producing enough cum to pump through the pipes// - <</if>> - <</if>> /* dairyPiping == 1 */ - <<if $wcPiping == 1>> - <<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>> - <<if $activeSlave.inflationType == "urine" || $activeSlave.inflationType == "none">> - | <<link "Fill $his ass with urine">><<set $activeSlave.inflationType = "urine">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> /* wcPiping == 1 */ - <</if>> /* assigned to dairy or arcade */ - <<if $activeSlave.inflation == 0 && $activeSlave.bellyImplant < 1500>> - <<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">> - | [["Use another slave to force-feed " + $him|SlaveOnSlaveFeedingWorkAround]] - <<if $buckets == 1>> - | <<link "Make $him consume two liters of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 1>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<if $activeSlave.pregKnown == 0>> - | <<link "Force $him to consume a gallon of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 2>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - | <<link "Force two gallons of slave food into $him">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 3>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> - <</if>> - <</if>> - <<else>> - <<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && $seePreg != 0>> - <<if canImpreg($activeSlave, $PC)>> - | <<link "Put a baby in $him">><<replace "#miniscene">><<FFuckdollImpreg>><br><</replace>><</link>> - <</if>> - <</if>> - <</if>> - <</replace>> -<<replace #bloating>> - <<if $activeSlave.inflation > 0>> - <br> - __Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>. - <<if $activeSlave.inflationMethod == 3>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif $activeSlave.inflationType == "milk">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif $activeSlave.inflationType == "cum">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<else>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> -<</replace>> + <<run SlaveInteractBloating($activeSlave)>> <</widget>> /% @@ -310,78 +216,7 @@ Call as <<SlaveInteractDrugs>> Call as <<SlaveInteractFertility>> %/ <<widget "SlaveInteractFertility">> -<<replace #fertilityblock>> -<<if $activeSlave.ovaries == 1 || $activeSlave.mpreg == 1 || $activeSlave.preg > 0>> - <<if ($activeSlave.preg < -1)>> - //$He is sterile// - <<elseif ($activeSlave.pubertyXX == 0) && $activeSlave.preg < 1>> - //$He is not yet fertile// - <<elseif $activeSlave.ovaryAge >= 47 && $activeSlave.preg < 1>> - //$He is too old to become pregnant// - <<if $activeSlave.preg == -1>> - <<set $activeSlave.preg = 0>> - <<run SetBellySize($activeSlave)>> - <</if>> - <<elseif $activeSlave.broodmotherOnHold == 1>> - //$His pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; $he is expected to be completely emptied of $his remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>// - [[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]] - <<elseif ($activeSlave.preg >= -1)>> - Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>. - <<if ($activeSlave.preg > 0 && $pregnancyMonitoringUpgrade == 1)>> - [[Inspect pregnancy|Analyze Pregnancy]] | - <</if>> - <<if ($activeSlave.preg == 0)>> - <<link "Use contraceptives">><<set $activeSlave.preg = -1>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif ($activeSlave.preg == -1)>> - <<link "Let $him get pregnant">><<set $activeSlave.preg = 0>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> - <<elseif $activeSlave.induce == 1>> - //Hormones are being slipped into $his food; $he will give birth suddenly and rapidly this week// - <<elseif ($activeSlave.preg > $activeSlave.pregData.normalBirth-2 && $activeSlave.preg > $activeSlave.pregData.minLiveBirth) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>> - [[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]] - | [["Give " + $him + " a cesarean section"|csec]] - <<elseif ($activeSlave.broodmother > 0)>> - <<if $activeSlave.broodmotherOnHold != 1>> - [[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] - <</if>> - <<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>> - | - <</if>> - <<if ($activeSlave.preg > 37)>> - | [[Induce mass childbirth|BirthStorm]] - <</if>> - <<elseif ($activeSlave.preg > $activeSlave.pregData.minLiveBirth)>> - [["Give " + $him + " a cesarean section"|csec]] - <<elseif ($activeSlave.preg > 0) && $activeSlave.breedingMark == 1 && $propOutcome == 1 && $arcologies[0].FSRestart != "unset" && $eugenicsFullControl != 1 && ($activeSlave.pregSource == -1 || $activeSlave.pregSource == -6)>> - //You are forbidden from aborting an Elite child// - <<elseif ($activeSlave.preg > 0)>> - [["Abort " + $his + " pregnancy"|Abort]] - <</if>> - <</if>> -<</if>> -<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0) && $seePreg != 0>> - <br> - __Pregnancy control__: <<if $activeSlave.pregControl == "labor suppressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation speed<<elseif $activeSlave.pregControl == "speed up">>Faster gestation speed, staffed clinic recommended<<else>>Normal gestation and birth<</if>>. - <<if ($activeSlave.preg >= $activeSlave.pregData.minLiveBirth)>> - <br> - <<if $activeSlave.pregControl == "labor suppressors">> - <<link "Normal Birth">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> - <<else>> - <<link "Suppress Labor">><<set $activeSlave.pregControl = "labor suppressors">><<SlaveInteractFertility>><</link>> - <</if>> - <<elseif ($activeSlave.preg < $activeSlave.pregData.normalBirth)>> - <br> - <<if $activeSlave.pregControl != "none">> - <<link "Normal Gestation">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> | - <</if>> - <<if $activeSlave.pregControl != "slow Gestation">> - <<link "Slow Gestation">><<set $activeSlave.pregControl = "slow gestation">><<SlaveInteractFertility>><</link>> | - <</if>> - <<if $activeSlave.pregControl != "speed up">> - <<link "Fast Gestation">><<set $activeSlave.pregControl = "speed up">><<SlaveInteractFertility>><</link>> - <</if>> - <</if>> -<</if>> -<</replace>> + <<run SlaveInteractFertility($activeSlave)>> <</widget>> /% Call as <<SlaveInteractSexOption>> @@ -464,8 +299,10 @@ Call as <<SlaveInteractDickGropeOption>> <<if ($activeSlave.dick > 0)>> <<if !($activeSlave.chastityPenis)>> | <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br> <</replace>><</link>> - <<if canPenetrate($activeSlave) && $sexualOpeness == 1>> - | <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br> <</replace>><</link>> + <<if canPenetrate($activeSlave)>> + <<if $sexualOpeness == 1 || $activeSlave.toyHole == "dick">> + | <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br> <</replace>><</link>> + <</if>> <</if>> <<else>> | //Remove $his dick chastity belt if you wish to play with $his cock//