diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index 2f440a2b8e484e47cf2293f54051bf579f554339..e5db8973851d24928b25034ddc4d665ec0ebb965 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -461,6 +461,11 @@ rules.rest: "permissive" - slave is allowed to rest when tired "mandatory" - day of rest each week to recover +rules.mobility + +"restrictive" - slave is forced to crawl should she grow too large to walk +"permissive" - slave is allowed to use carts and such to carry her weight should she grow too large to walk + rules.relationship: "restrictive" diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 4564df3e1027f97c63cd859987bea7823421d2c2..60a17047a0e5579de773a24678db928f63fc925a 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -1049,6 +1049,9 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() { slave.choosesOwnChastity = Math.clamp(+slave.choosesOwnChastity, 0, 1) || 0; slave.breedingMark = Math.clamp(+slave.breedingMark, 0, 1) || 0; slave.rudeTitle = Math.clamp(+slave.rudeTitle, 0, 1) || 0; + if (typeof slave.rules.mobility !== "string") { + slave.rules.mobility = "restrictive"; + } } /** diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css index 6df18302381e551ba35766130030421d7bf9f36e..ea810776e556246be27260e75ebe1efc1403990f 100644 --- a/src/gui/css/mainStyleSheet.css +++ b/src/gui/css/mainStyleSheet.css @@ -339,7 +339,7 @@ div.double-choices, p.double-choices { font-style: italic; } -.story-label { +.story-label, .underline { text-decoration: underline; } diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 0313f4892c1647257af7136a5957860d5b24dfe2..92f35f702d2f61f60101b8c11ff2fd131ffaa698 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -44,6 +44,12 @@ App.Entity.RuleState = class RuleState { * * "mandatory" */ this.rest = "restrictive"; + /** + * Is the slave allowed to use mobility aids + * * "restrictive" + * * "permissive" + */ + this.mobility = "restrictive"; /** * * "restrictive" * * "permissive" diff --git a/src/js/slaveExpenses.js b/src/js/slaveExpenses.js new file mode 100644 index 0000000000000000000000000000000000000000..9327b167f0a27bd01feb87deb0025fc4658a47f3 --- /dev/null +++ b/src/js/slaveExpenses.js @@ -0,0 +1,231 @@ +/** + * Returns a block that describes an overview of the slave's impact on your reputation and finances in the short term + * @param {App.Entity.SlaveState} slave + * @returns {node} + */ +globalThis.slaveExpenses = function(slave) { + const frag = new DocumentFragment(); + let div; + + // Generate the lines of the report + for (const line of getSlaveCostArray(slave)) { + div = document.createElement("div"); + div.classList.add("indent"); + App.UI.DOM.appendNewElement("span", div, `${line.text}: `); + App.UI.DOM.appendNewElement("span", div, cashFormat(line.value), "cash"); + frag.append(div); + } + + // Total expenses + const individualCosts = getSlaveCost(slave); + div = document.createElement("div"); + div.classList.add("double-indent"); + + App.UI.DOM.appendNewElement("span", div, "Predicted expense", "underline"); + div.append(": "); + div.append(App.UI.DOM.cashFormat(-individualCosts)); + frag.append(div); + + // Income from last week vs expense gives net, assistant gated + if (V.assistant.power > 0) { + if (slave.lastWeeksCashIncome > 0) { + div = document.createElement("div"); + div.classList.add("indent"); + App.UI.DOM.appendNewElement("span", div, `Income: `); + div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome)); + frag.append(div); + + div = document.createElement("div"); + div.classList.add("double-indent"); + App.UI.DOM.appendNewElement("span", div, `Total`, "underline"); + App.UI.DOM.appendNewElement("span", div, `: `); + div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome - individualCosts)); + frag.append(div); + } + } + frag.append(slaveImpactLongTerm(slave)); + + return frag; +}; + +/** + * Returns a block that describes an overview of the slave's impact on your reputation and finances over the long term + * @param {App.Entity.SlaveState} slave + * @returns {node} + */ +globalThis.slaveImpactLongTerm = function(slave) { + const frag = new DocumentFragment(); + const {he, his, him} = getPronouns(slave); + let p; + let div; + let span; + let _Cost; + let _Expense; + let _Income; + let text; + + // Background and original cost + if (slave.origin !== 0) { + App.UI.DOM.appendNewElement("div", frag, pronounsForSlaveProp(slave, slave.origin), "indent"); + } + div = document.createElement("div"); + div.classList.add("indent"); + if (slave.slaveCost < 0) { + div.append(`You bought ${him} for: `); + div.append(App.UI.DOM.cashFormat(slave.slaveCost)); + div.append(`.`); + _Cost = slave.slaveCost; + } else if (slave.slaveCost === 0) { + div.append(`You spent nothing to acquire ${him}.`); + _Cost = slave.slaveCost; + } else { + text = `You have no record of how much `; + if (slave.origin !== 0) { + text += `this`; + } else { + text += `${he} originally`; + } + text += ` cost.`; + div.append(text); + _Cost = 0; + } + frag.append(div); + + // Lifetime totals, assistant gated + if (V.assistant.power > 0) { + const _weeksOwned = V.week - slave.weekAcquired; + // Lifetime expense + div = document.createElement("div"); + div.classList.add("indent"); + if (slave.lifetimeCashExpenses < 0) { + text = `In ${his} `; + if (_weeksOwned > 0) { + text += `${_weeksOwned} `; + if (_weeksOwned === 1) { + text += `week`; + } else { + text += `weeks`; + } + } else { + text += `time`; + } + text += ` with you, ${he} has cost `; + div.append(text); + div.append(App.UI.DOM.cashFormat(slave.lifetimeCashExpenses)); + div.append(`.`); + _Expense = slave.lifetimeCashExpenses; + } else { + div.append(`You have no record of ${him} costing you any ¤.`); + _Expense = 0; + } + frag.append(div); + + // Lifetime income + div = document.createElement("div"); + div.classList.add("indent"); + if (slave.lifetimeCashIncome > 0) { + text = `In ${his} `; + if (_weeksOwned > 0) { + text += `${_weeksOwned} `; + if (_weeksOwned === 1) { + text += `week`; + } else { + text += `weeks`; + } + } else { + text += `time`; + } + text += ` with you, ${he} has earned `; + div.append(text); + div.append(App.UI.DOM.cashFormat(slave.lifetimeCashIncome)); + div.append(`.`); + _Income = slave.lifetimeCashIncome; + } else { + div.append(`You have no record of ${him} making you any ¤.`); + _Income = 0; + } + frag.append(div); + + // Lifetime total + div = document.createElement("div"); + div.classList.add("indent"); + div.append(`Overall, `); + if ((_Income + _Cost + _Expense) > 0) { + div.append(`you have made `); + div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense)); + div.append(` net from ${his} labors.`); + } else if ((_Income + _Cost + _Expense) === 0) { + div.append(`${he} is even in cost and income.`); + } else { + div.append(`${he} has cost you `); + div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense)); + div.append(`.`); + } + frag.append(div); + + // Reputation: + p = document.createElement("p"); + if (slave.lifetimeRepIncome !== 0 || slave.lifetimeRepExpenses !== 0) { + let _repTotal = (slave.lifetimeRepIncome + slave.lifetimeRepExpenses); + if (V.cheatMode === 1 || V.debugMode === 1) { + if (slave.lifetimeRepIncome !== 0) { + div = document.createElement("div"); + div.classList.add("indent"); + div.append(`This week ${he} has `); + if (slave.lastWeeksRepIncome === 0) { + div.append(`had no positive effect on your reputation, but `); + } else { + div.append(`improved your reputation by `); + App.UI.DOM.appendNewElement("span", div, num(slave.lastWeeksRepIncome), "green"); + div.append(` and `); + } + div.append(`over ${his} entire time with you, ${he} gained `); + App.UI.DOM.appendNewElement("span", div, `${num(slave.lifetimeRepIncome)}.`, "green"); + p.append(div); + } + + if (slave.lifetimeRepExpenses !== 0) { + div = document.createElement("div"); + div.classList.add("indent"); + div.append(`This week ${he} has `); + if (slave.lastWeeksRepExpenses === 0) { + div.append(`had no negative effect on your reputation, but `); + } else { + div.append(`lowered your reputation by `); + App.UI.DOM.appendNewElement("span", div, slave.lastWeeksRepExpenses, "red"); + div.append(` and `); + } + div.append(`over ${his} entire time with you, ${he} cost `); + App.UI.DOM.appendNewElement("span", div, `${slave.lifetimeRepExpenses}.`, "red"); + p.append(div); + } + + div = document.createElement("div"); + div.classList.add("indent"); + div.append(`Overall then, ${he} has changed your reputation by `); + span = document.createElement("span"); + if (_repTotal > 0) { + span.classList.add("green"); + } else if (_repTotal < 0) { + span.classList.add("red"); + } + span.append(num(_repTotal)); + div.append(span); + p.append(div); + } else { + /* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */ + text = `Overall, ${he} has `; + if (_repTotal === 0) { + text += `had no impact on your reputation.`; + } else if (_repTotal > 0) { + text += `<span class="green">increased</span> your reputation.`; + } else if (_repTotal < 0) { + text += `<span class="red">decreased</span> your reputation.`; + } + App.UI.DOM.appendNewElement("div", p, text, "indent"); + } + } + frag.append(p); + } + return frag; +}; diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js index 27531125aa81bb12b0711a878886f59807ec5109..efd222f544541de35cd3d3df43b596a2aab60db1 100644 --- a/src/js/utilsDOM.js +++ b/src/js/utilsDOM.js @@ -382,3 +382,14 @@ Macro.add("includeDOM", { } } }); + +App.UI.DOM.cashFormat = function(s) { + const span = document.createElement("span"); + if (s < 0) { // Display red if the value is negative, unless invert is true + span.classList.add("red"); + } else if (s !== 0) { // Yellow for positive + span.classList.add("cash"); + } + span.textContent = cashFormat(Math.trunc(s)); + return span; +}; diff --git a/src/npc/descriptions/boobs/boobs.js b/src/npc/descriptions/boobs/boobs.js index 9c4bee2b3d184398752a2997efee1c632344c953..9de9fdcfc75013a7953d16416ca18b01268f3d2d 100644 --- a/src/npc/descriptions/boobs/boobs.js +++ b/src/npc/descriptions/boobs/boobs.js @@ -1528,7 +1528,7 @@ App.Desc.boobsExtra = function(slave, {market, eventDescription} = {}) { } else { res.push(`Together they are nearly the same size as ${his} torso, making ${him} about half boob.`); } - if (canMove(eventSlave) && !canWalk(eventSlave)) { + if (canMove(slave) && !canWalk(slave)) { res.push(`${His} breasts are so heavy that it is difficult for ${him} to move at all.`); res.push(movingRestrictions(dairyTest)); } diff --git a/src/npc/interaction/fSlaveFeed.tw b/src/npc/interaction/fSlaveFeed.tw index a91527177c410e4195e867e669f2ece6366613a6..e7d6fe2cc5a86b40a31abd995d9e7e68220a77b5 100644 --- a/src/npc/interaction/fSlaveFeed.tw +++ b/src/npc/interaction/fSlaveFeed.tw @@ -22,6 +22,12 @@ <<if getSlave($AS).inflationType == "milk">> <<set getSlave($AS).milkSource = $milkTap.ID>> +<<if $milkTap.behavioralQuirk == "sinful" || $milkTap.sexualQuirk == "perverted" || $milkTap.fetish == "incest">> /* incest is a planned fetish, don't touch it! */ + <<set _incestGive = 1>> +<</if>> +<<if getSlave($AS).behavioralQuirk == "sinful" || getSlave($AS).sexualQuirk == "perverted" || getSlave($AS).fetish == "incest">> + <<set _incestTake = 1>> +<</if>> The first necessary step is to prepare the milk cow and _his2 udders. @@ -52,19 +58,107 @@ The first necessary step is to prepare the milk cow and _his2 udders. This is very easy, since $milkTap.slaveName loves _his2 tits played with and can't wait to get suckled. <<if $milkTap.lactation > 1>>_he2 is practically gushing milk with excitement<<else>>It takes next to no effort to get _his2 milk flowing<</if>>. <<elseif getSlave($AS).mother == $milkTap.ID>> - This is easy enough, as $milkTap.slaveName fondly remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>$he is practically gushing milk with nostalgia<<else>>It takes minimal effort to get _his2 milk flowing<</if>>. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName fondly remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<else>> + This is fairly easy, as $milkTap.slaveName's body remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, even if $he is resistant to the idea. + <</if>> + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with nostalgia. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> <<elseif getSlave($AS).father == $milkTap.ID>> - This is extremely tough, as $milkTap.slaveName is very uncomfortable breast feeding the $girl _he2 sired. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release, however<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName is aroused at the thought of breast feeding the $girl _he2 sired. + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> + <<else>> + This is extremely tough, as $milkTap.slaveName is very uncomfortable breast feeding the $girl _he2 sired. + <<if $milkTap.lactation > 1>> + _His2 excessive milk production quickly leaves _him2 eager for release, however. + <<else>> + It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief. + <</if>> + <</if>> <<elseif $milkTap.mother == getSlave($AS).ID>> - This is moderately tough, as $milkTap.slaveName finds it awkward to nurse _his2 own mother. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName is aroused at the lewdity of breast feeding _his2 own mother. + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> + <<else>> + This is moderately tough, as $milkTap.slaveName finds it awkward to nurse _his2 own mother. + <<if $milkTap.lactation > 1>> + _His2 excessive milk production quickly leaves _him2 eager for release. + <<else>> + It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief. + <</if>> + <</if>> <<elseif $milkTap.father == getSlave($AS).ID>> - This is very tough, as $milkTap.slaveName finds it weird to let _his2 father suckle from _him2. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release, however<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>. + <<if _incestGive>> + This is easy enough, as having _his2 father drink _his2 milk is a taboo $milkTap.slaveName can't wait to break. + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> + <<else>> + This is very tough, as $milkTap.slaveName finds it weird to let _his2 father suckle from _him2. + <<if $milkTap.lactation > 1>> + _His2 excessive milk production quickly leaves _him2 eager for release, however. + <<else>> + It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief. + <</if>> + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 1>> - This is easy enough, as $milkTap.slaveName wants _his2 <<print relativeTerm(getSlave($AS), $milkTap)>> to try _his2 milk, but only if $he can taste $hers too. <<if $milkTap.lactation > 1>>$he is practically gushing milk with excitement<<else>>It takes minimal effort to get _his2 milk flowing<</if>>. + <<if _incestGive>> + This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>. + <<else>> + This is easy enough, as $milkTap.slaveName wants _his2 <<print relativeTerm(getSlave($AS), $milkTap)>> to try _his2 milk, but only if $he can taste $hers too. + <</if>> + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 2>> - This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>. + <<if _incestGive>> + This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>. + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> + <<else>> + This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<if $milkTap.lactation > 1>> + _His2 excessive milk production quickly leaves _him2 eager for release. + <<else>> + It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief. + <</if>> + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 3>> - This is slightly difficult, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>. + <<if _incestGive>> + This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>. + <<if $milkTap.lactation > 1>> + _He2 is practically gushing milk with excitement. + <<else>> + It takes minimal effort to get _his2 milk flowing. + <</if>> + <<else>> + This is slightly difficult, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<if $milkTap.lactation > 1>> + _His2 excessive milk production quickly leaves _him2 eager for release. + <<else>> + It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief. + <</if>> + <</if>> <<elseif ($milkTap.lactation > 1) && ($milkTap.devotion >= -20)>> Since $milkTap.slaveName produces so much milk, _he2 eagerly accepts any source of relief _he2 can manage. @@ -116,17 +210,21 @@ Next, you see to <<= getSlave($AS).slaveName>>. <<elseif getSlave($AS).mother == $milkTap.ID>> $He draws close to $his mother's nipples, trying to remember if $he once had a favorite. <<elseif getSlave($AS).father == $milkTap.ID>> - $He hesitatingly lowers $himself to $his father's nipple. <<if $milkTap.dick > 0 && canAchieveErection($milkTap)>> $he nearly backs away when $he feels the dick that sired $him poking at $his belly.<</if>> + <<if _incestTake>> + $He eagerly wraps $his lips around $his father's nipple.<<if canAchieveErection($milkTap)>> $He shudders with budding lust when $he feels the dick that sired $him poking at $his belly.<</if>> + <<else>> + $He hesitatingly lowers $himself to $his father's nipple.<<if canAchieveErection($milkTap)>> $He nearly backs away when $he feels the dick that sired $him poking at $his belly.<</if>> + <</if>> <<elseif $milkTap.mother == getSlave($AS).ID>> - $He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. + $He <<if _incestTake>>happily<<else>>awkwardly<</if>> brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. <<elseif $milkTap.father == getSlave($AS).ID>> - $He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple<<if getSlave($AS).dick > 0 && canAchieveErection(getSlave($AS))>>, $his cock steadily hardening at the perversion of suckling from $his child<</if>>. + $He <<if _incestTake>>eagerly<<else>>awkwardly<</if>> brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple<<if canAchieveErection(getSlave($AS))>>, $his cock steadily hardening at the perversion of suckling from $his child<</if>>. <<elseif areSisters(getSlave($AS), $milkTap) == 1>> $He readily gets in position to <<if canTaste(getSlave($AS))>>taste<<else>>suckle from<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>><<if getSlave($AS).lactation > 0>> while coaxing $his own milk to flow<</if>>. <<elseif areSisters(getSlave($AS), $milkTap) == 2>> - $He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. <<elseif areSisters(getSlave($AS), $milkTap) == 3>> - $He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple. <<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).devotion >= -20)>> $He can't wait to <<if hasBothArms(getSlave($AS))>>wrap $his hands around<<else>>get between<</if>> $milkTap.slaveName's massive milky breasts and eagerly approaches $his nipples to suckle. @@ -176,7 +274,7 @@ Next, you see to <<= getSlave($AS).slaveName>>. <<elseif getSlave($AS).mother == $milkTap.ID>> $milkTap.slaveName sighs contently as _his2 little $girl once again suckles from _his2 breasts. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>>. <<elseif getSlave($AS).father == $milkTap.ID>> - $milkTap.slaveName moans lewdly as _his2 <<print relativeTerm($milkTap, getSlave($AS))>> suckles from _his2 breasts<<if $milkTap.dick > 0 && canAchieveErection($milkTap)>>, _his2 dick throbbing with lust<</if>>. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>><<if $milkTap.dick > 0 && canAchieveErection($milkTap)>><<if getSlave($AS).sexualQuirk == "perverted">>. The way $he is wiggling $his hips suggests $he isn't finished with $his daddy just yet, and $his father's moaning confirms $he is teasing _him2 with $his rear. $He giggles as the horny cow unloads on $his backside<<else>>. $He doesn't stay put for long, as a strong moan and a blast of cum across $his rear from the horny cow startles $him from $his rest<</if>><</if>>. + $milkTap.slaveName moans lewdly as _his2 <<print relativeTerm($milkTap, getSlave($AS))>> suckles from _his2 breasts<<if canAchieveErection($milkTap)>>, _his2 dick throbbing with lust<</if>>. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>><<if canAchieveErection($milkTap)>><<if _incestTake>>. The way $he is wiggling $his hips suggests $he isn't finished with $his daddy just yet, and $his father's moaning confirms $he is teasing _him2 with $his rear. $He giggles as the horny cow unloads on $his backside<<else>>. $He doesn't stay put for long, as a strong moan and a blast of cum across $his rear from the horny cow startles $him from $his rest<</if>><</if>>. <<elseif $milkTap.mother == getSlave($AS).ID>> $milkTap.slaveName moans lewdly as _he2 enjoys some role reversal as _his2 mother suckles from _his2 breasts. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>>. <<elseif $milkTap.father == getSlave($AS).ID>> @@ -347,7 +445,12 @@ Next, you see to <<= getSlave($AS).slaveName>>. <<else>> /* cum variant */ <<set getSlave($AS).cumSource = $milkTap.ID>> - +<<if $milkTap.behavioralQuirk == "sinful" || $milkTap.sexualQuirk == "perverted" || $milkTap.fetish == "incest">> /* incest is a planned fetish, don't touch it! */ + <<set _incestGive = 1>> +<</if>> +<<if getSlave($AS).behavioralQuirk == "sinful" || getSlave($AS).sexualQuirk == "perverted" || getSlave($AS).fetish == "incest">> + <<set _incestTake = 1>> +<</if>> The first necessary step is to prepare the cum slave and $his cock and balls. @@ -375,22 +478,50 @@ The first necessary step is to prepare the cum slave and $his cock and balls. <</if>> <<elseif getSlave($AS).mother == $milkTap.ID>> - This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName savors the thought of having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<else>> + This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif getSlave($AS).father == $milkTap.ID>> - This is tough, as $milkTap.slaveName is rather uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName cherishes the sheer lewdity of having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<else>> + This is tough, as $milkTap.slaveName is rather uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif $milkTap.mother == getSlave($AS).ID>> - This is moderately tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own mother, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName savors the thought of having _his2 dick sucked by _his2 own mother. + <<else>> + This is moderately tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own mother, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif $milkTap.father == getSlave($AS).ID>> - This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own father, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName cherishes the sheer lewdity of having _his2 dick sucked by _his2 own father. + <<else>> + This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own father, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 1>> - This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>><<if $milkTap.energy >= 95>>, though as a nymphomaniac, the thought of someone who looks so much like _his2 is a major turn on<<else>> but _he2 can't really complain about getting _his2 overfilled nuts drained<</if>>. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName enjoys the notion of twincest quite a lot. + <<else>> + This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>><<if $milkTap.energy >= 95>>, though as a nymphomaniac, the thought of someone who looks so much like _his2 is a major turn on<<else>> but _he2 can't really complain about getting _his2 overfilled nuts drained<</if>>. + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 2>> - This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName is quite eager to get intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<else>> + This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif areSisters(getSlave($AS), $milkTap) == 3>> - This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <<if _incestGive>> + This is easy enough, as $milkTap.slaveName is quite eager to get intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. + <<else>> + This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained. + <</if>> <<elseif ($milkTap.fetish == "cumslut") && ($milkTap.fetishKnown == 1) && ($milkTap.fetishStrength > 60) && ($milkTap.devotion >= -20)>> - This is very easy, since $milkTap.slaveName loves blasting loads whenever _he2 can, and it is just a bonus to _his2 that _he2 gets a blowjob in the process. + This is very easy, since $milkTap.slaveName loves blasting loads whenever _he2 can, and it is just a bonus to _him2 that _he2 gets a blowjob in the process. <<elseif ($milkTap.energy > 95)>> This is very easy, since $milkTap.slaveName is so sexually charged _he2 is practically overflowing at the thought of getting _his2 dick sucked. @@ -457,19 +588,19 @@ Next, you see to <<= getSlave($AS).slaveName>>. <</if>> <<elseif getSlave($AS).mother == $milkTap.ID>> - $He awkwardly brings $his lips to $his mother's cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his mother's cock. <<elseif getSlave($AS).father == $milkTap.ID>> - $He <<if getSlave($AS).sexualQuirk == "perverted">>eagerly<<else>>awkwardly<</if>> brings $his lips to daddy's cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> daddy's cock. <<elseif $milkTap.mother == getSlave($AS).ID>> - $He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>><<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>><<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. <<elseif $milkTap.father == getSlave($AS).ID>> - $He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. <<elseif areSisters(getSlave($AS), $milkTap) == 1>> - $He gets in position to suck $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s dick. + $He <<if _incestTake>>readily <</if>>gets in position to suck $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s dick. <<elseif areSisters(getSlave($AS), $milkTap) == 2>> - $He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. <<elseif areSisters(getSlave($AS), $milkTap) == 3>> - $He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. + $He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock. <<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).devotion >= -20)>> $He can't wait to wrap $his lips around $milkTap.slaveName's cock and balloon with cum, so $he eagerly approaches the waiting shaft. diff --git a/src/npc/interaction/passage/fSlaveImpreg.tw b/src/npc/interaction/passage/fSlaveImpreg.tw index 2e5015ba3a3ad1eaa041c0ec9d333f8e9b7fb068..ea74e085502754f4fbd5ca0f322f0070f8d88957 100644 --- a/src/npc/interaction/passage/fSlaveImpreg.tw +++ b/src/npc/interaction/passage/fSlaveImpreg.tw @@ -9,7 +9,7 @@ <h3>Select an eligible slave to serve as the semen donatrix</h3> -<<set _eligibles = $slaves.filter((s) => (s.ID != getSlave($AS).ID) && canImpreg(getSlave($AS), s))>> +<<set _eligibles = $slaves.filter((s) => (s.ID != getSlave($AS).ID) && canImpreg(getSlave($AS), s) && canPenetrate(getSlave($AS), s))>> <<for _i = 0; _i < _eligibles.length; _i++>> <<set _name = SlaveFullName(_eligibles[_i])>> <div> diff --git a/src/player/js/enslavePlayer.js b/src/player/js/enslavePlayer.js index b995e6412f2e575f1ff9584ac3b3b8cd7020f024..752f46e5a9ebca016f2136b03c0b7927829e2a52 100644 --- a/src/player/js/enslavePlayer.js +++ b/src/player/js/enslavePlayer.js @@ -89,6 +89,7 @@ globalThis.convertPlayerToSlave = function(slave, badEnd = "boring") { slave.currentRules = []; slave.HGExclude = 0; slave.choosesOwnChastity = 0; + slave.rules.mobility = "restrictive"; slave.pregControl = "none"; slave.readyProsthetics = []; slave.death = ""; diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw index f971c456965480b4182a2adfa960e35b175656df..5b365daa246306f026575687ddd11c9cb3f83d64 100644 --- a/src/uncategorized/costsReport.tw +++ b/src/uncategorized/costsReport.tw @@ -7,7 +7,7 @@ <<capture $i>> <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> [[$slaves[$i].slaveName|Slave Interact][$activeSlave = $slaves[$i]]] will $slaves[$i].assignment. - <<SlaveExpenses $slaves[$i]>> + <<includeDOM SlaveExpenses (V.slaves[V.i])>> <</capture>> <</for>> diff --git a/src/uncategorized/costsReportSlaves.tw b/src/uncategorized/costsReportSlaves.tw index 3399fecd92dfe8a6509c01412263bd4e8a05718d..ae0467edc474f629deb9c74255662f840c8890c3 100644 --- a/src/uncategorized/costsReportSlaves.tw +++ b/src/uncategorized/costsReportSlaves.tw @@ -8,6 +8,6 @@ <<capture $i>> <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> [[$slaves[$i].slaveName|Slave Interact][$activeSlave = $slaves[$i]]] will $slaves[$i].assignment. - <<SlaveExpenses $slaves[$i]>> + <<includeDOM SlaveExpenses (V.slaves[V.i])>> <</capture>> <</for>> diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw deleted file mode 100644 index 5b69bd2fa6c132cb49c48e662134f34ac6c0190a..0000000000000000000000000000000000000000 --- a/src/uncategorized/costsWidgets.tw +++ /dev/null @@ -1,145 +0,0 @@ -:: Cost widgets [nobr widget] - -<<widget "SlaveExpenses">> - <<set _individualCosts = 0>> - <<setLocalPronouns $args[0]>> - - /* Generate the lines of the report */ - <<for _line range getSlaveCostArray($args[0])>> - <div class="indent"> - <<= _line.text>>: <<=cashFormatColor(_line.value)>> - </div> - <</for>> - - /* Total expenses */ - <<set _individualCosts = Math.trunc(getSlaveCost($args[0]))>> - <div class="double-indent"> - __Predicted expense__: @@.red;<<print cashFormat(Math.trunc(_individualCosts))>>@@ - </div> - - /* Income from last week vs expense gives net, assistant gated */ - <<if $assistant.power > 0>> - <<if $args[0].lastWeeksCashIncome > 0>> - <div class="indent"> - Income: <<print cashFormatColor($args[0].lastWeeksCashIncome)>> - </div> - <<set _total = (Math.trunc($args[0].lastWeeksCashIncome - _individualCosts))>> - <div class="double-indent"> - __Total__: <<print cashFormatColor(Math.trunc(_total))>> - </div> - <</if>> - <</if>> - <<SlaveExpensesExtra $args[0]>> -<</widget>> - -<<widget "SlaveExpensesExtra">> - <<setLocalPronouns $args[0]>> - /* Background and original cost */ - <<if $args[0].origin != 0>> - <div class="indent"> - $args[0].origin - </div> - <</if>> - <div class="indent"> - <<if $args[0].slaveCost < 0>> - You bought $him for: @@.red;<<print cashFormat($args[0].slaveCost)>>.@@ - <<set _Cost = $args[0].slaveCost>> - <<elseif $args[0].slaveCost == 0>> - You spent nothing to acquire $him. - <<set _Cost = $args[0].slaveCost>> - <<else>> - You have no record of how much <<if $args[0].origin != 0>>this<<else>>$he originally<</if>> cost. - <<set _Cost = 0>> - <</if>> - </div> - - /* Lifetime totals, assistant gated */ - <<if $assistant.power > 0>> - <<set _weeksOwned = $week - $args[0].weekAcquired>> - /* Lifetime expense */ - <div class="indent"> - <<if $args[0].lifetimeCashExpenses < 0>> - In $his <<if _weeksOwned > 0>>_weeksOwned <<if _weeksOwned == 1>>week<<else>>weeks<</if>><<else>>time<</if>> with you, $he has cost @@.red;<<print cashFormat($args[0].lifetimeCashExpenses)>>.@@ - <<set _Expense = $args[0].lifetimeCashExpenses>> - <<else>> - You have no record of $him costing you any ¤. - <<set _Expense = 0>> - <</if>> - </div> - - /* Lifetime income */ - <div class="indent"> - <<if $args[0].lifetimeCashIncome > 0>> - In $his <<if _weeksOwned > 0>>_weeksOwned <<if _weeksOwned == 1>>week<<else>>weeks<</if>><<else>>time<</if>> with you, $he has earned @@.yellowgreen;<<print cashFormat($args[0].lifetimeCashIncome)>>.@@ - <<set _Income = $args[0].lifetimeCashIncome>> - <<else>> - You have no record of $him making you any ¤. - <<set _Income = 0>> - <</if>> - </div> - - /* Lifetime total */ - <div class="indent"> - Overall, - <<if (_Income + _Cost + _Expense) > 0>> - you have made @@.yellowgreen;<<print cashFormat(_Income + _Cost + _Expense)>>@@ net from $his labors. - <<elseif (_Income + _Cost + _Expense) == 0>> - $he is even in cost and income. - <<else>> - $he has cost you @@.red;<<print cashFormat(_Income + _Cost + _Expense)>>.@@ - <</if>> - </div> - - /* Reputation: */ - <div> - <<if ($args[0].lifetimeRepIncome != 0 || $args[0].lifetimeRepExpenses != 0)>> - <<set _repTotal = ($args[0].lifetimeRepIncome + $args[0].lifetimeRepExpenses)>> - <<if ($cheatMode == 1 || $debugMode == 1)>> - <<if $args[0].lifetimeRepIncome != 0>> - <div class="indent"> - This week $he has - <<if $args[0].lastWeeksRepIncome == 0>> - had no positive effect on your reputation, but - <<else>> - improved your reputation by @@.green;<<print num($args[0].lastWeeksRepIncome)>>@@ and - <</if>> - over $his entire time with you, $he gained @@.green;<<print num($args[0].lifetimeRepIncome)>>.@@ - </div> - <</if>> - <<if $args[0].lifetimeRepExpenses != 0>> - <div class="indent"> - This week $he has - <<if $args[0].lastWeeksRepExpenses == 0>> - had no negative effect on your reputation, but - <<else>> - lowered your reputation by @@.red;<<print num($args[0].lastWeeksRepExpenses)>>@@ and - <</if>> - over $his entire time with you, $he cost @@.red;<<print num($args[0].lifetimeRepExpenses)>>.@@ - </div> - <</if>> - <div class="indent"> - Overall then, $he has changed your reputation by - <<if _repTotal > 0>> - @@.green;<<print num(_repTotal)>>@@ - <<elseif _repTotal < 0>> - @@.red;<<print num(_repTotal)>>@@ - <<else>> - <<print num(_repTotal)>> - <</if>> - </div> - <<else>> /* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */ - <div class="indent"> - Overall, $he has - <<if _repTotal == 0>> - had no impact on your reputation. - <<elseif _repTotal > 0>> - @@.green;increased@@ your reputation. - <<elseif _repTotal < 0>> - @@.red;decreased@@ your reputation. - <</if>> - </div> - <</if>> - <</if>> - </div> - <</if>> -<</widget>> diff --git a/src/uncategorized/pBioreactorPerfected.tw b/src/uncategorized/pBioreactorPerfected.tw index 6400df20ac5ace1511c5831d8294429a6fb33718..68a0cc811044ded79c58461d98a6dc3d886ee756 100644 --- a/src/uncategorized/pBioreactorPerfected.tw +++ b/src/uncategorized/pBioreactorPerfected.tw @@ -238,6 +238,6 @@ You stop and consider the cow, from $his titanic breasts to $his <<if ($activeSl <div class="indent"> $His current task is to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> - <<SlaveExpenses $activeSlave>> + <<includeDOM slaveExpenses(V.activeSlave)>> </div> <</if>> /* closes validity check */ diff --git a/src/uncategorized/pMercenaryRomeo.tw b/src/uncategorized/pMercenaryRomeo.tw index e44f9645d50b45dcfa4fc73f8adf1528ecce805f..f0e7363898e764ce86bd6cf5f00c083ef57a6d13 100644 --- a/src/uncategorized/pMercenaryRomeo.tw +++ b/src/uncategorized/pMercenaryRomeo.tw @@ -132,7 +132,7 @@ proffered by an attentive slave _girlU, he seems almost bashful. <div class="indent"> $His current task is to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> - <<SlaveExpensesExtra $activeSlave>> + <<includeDOM slaveImpactLongTerm(V.activeSlave)>> </div> <</if>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 563471bbca377f6db3916ebfc2a8ae2fa6393ff7..17f1785363d4cb98d9102f8b3a395fde3980e2a5 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -4834,9 +4834,8 @@ <<set $slaves[$i].trust -= 4>> <<set _studVaginal = 1>> <<else>> - $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ + $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ <<set $slaves[$i].trust += 4>> - <<set _Stud.trust += 4>> <<set $slaves[$i].need = 0>> <</if>> <<elseif ($slaves[$i].devotion <= 20)>> @@ -4844,9 +4843,8 @@ $slaves[$i].slaveName, though fearfully obedient, is not happy with being bred, so _Stud.slaveName is forced to @@.mediumorchid;rape the poor $girl@@ pregnant, regularly squirting cum into $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy until @@.lime;conception@@ is confirmed. <<set $slaves[$i].devotion -= 4>> <<else>> - _Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however. - <<set $slaves[$i].devotion -= 4>> - <<set _Stud.devotion -= 4>> + $slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@ + <<set $slaves[$i].devotion -= 6>> <</if>> <<elseif ($slaves[$i].devotion <= 75)>> <<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> @@ -4915,9 +4913,8 @@ <<set $slaves[$i].devotion -= 4>> <<set _rapeAddsFlaw = 1>> <<else>> - $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible@@ while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ + $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ <<set $slaves[$i].trust += 4>> - <<set _Stud.trust += 4>> <<set $slaves[$i].need = 0>> <</if>> <<elseif ($slaves[$i].devotion <= 20)>> @@ -4926,9 +4923,8 @@ <<set $slaves[$i].devotion -= 4>> <<set _rapeAddsFlaw = 1>> <<else>> - _Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however. - <<set $slaves[$i].devotion -= 4>> - <<set _Stud.devotion -= 4>> + $slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@ + <<set $slaves[$i].devotion -= 6>> <</if>> <<elseif ($slaves[$i].devotion <= 75)>> <<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> @@ -5000,9 +4996,8 @@ <<set _studPenetrative = 1>> <<set _studTakesV = 1>> <<else>> - $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible@@ while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ + $slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@ <<set $slaves[$i].trust += 4>> - <<set _Stud.trust += 4>> <<set $slaves[$i].need = 0>> <<set _studPenetrative = 1>> <</if>> @@ -5011,9 +5006,8 @@ $slaves[$i].slaveName, though fearfully obedient, is not happy with being bred, so _Stud.slaveName is forced to @@.mediumorchid;rape the poor $girl@@ pregnant, regularly squirting cum into $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy until @@.lime;conception@@ is confirmed. <<set $slaves[$i].devotion -= 4>> <<else>> - _Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however. - <<set $slaves[$i].devotion -= 4>> - <<set _Stud.devotion -= 4>> + $slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@ + <<set $slaves[$i].devotion -= 6>> <</if>> <<elseif ($slaves[$i].devotion <= 75)>> <<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw index 6a5d5cc47662078b2e137cf10c2d2618190034ab..df473743b1d393701a3decff38957bc84caf4085 100644 --- a/src/uncategorized/seExpiration.tw +++ b/src/uncategorized/seExpiration.tw @@ -202,5 +202,5 @@ at the moment of $his scheduled emancipation, $he seems willing to consider a sh <div class="indent"> $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> - <<SlaveExpensesExtra $activeSlave>> + <<includeDOM slaveImpactLongTerm(V.activeSlave)>> </div> \ No newline at end of file diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw index 560bf85bcb33e1af1f5307509444a958e7b0726c..c38103479688aa2a09fe03b2a6431168674a2252 100644 --- a/src/uncategorized/seRetirement.tw +++ b/src/uncategorized/seRetirement.tw @@ -388,7 +388,7 @@ <div class="indent"> $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> - <<SlaveExpensesExtra $activeSlave>> + <<includeDOM slaveImpactLongTerm(V.activeSlave)>> </div> <<if $retired == 0>> /* retiring during the end week */ diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw index 4f3cf2cec05a3151f1d9ffef912f17d8df843cc7..0007e6b30a74a330ead71c95a2d5f4ee14e0c042 100644 --- a/src/uncategorized/sellSlave.tw +++ b/src/uncategorized/sellSlave.tw @@ -728,7 +728,7 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <br><br> __Financial Records__ -<<SlaveExpenses $activeSlave>> +<<includeDOM slaveExpenses(V.activeSlave)>> <</if>> /* CLOSES APPRAISAL */ <</if>> /* closes breeding mark */ diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 46ba3454f437d529763d019fea65732ac0a5acd0..b1e4f5796a89830351634b5ffd4e35321cfaa205 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -324,7 +324,7 @@ <h3>Financial</h3> <p> - <<SlaveExpenses $activeSlave>> + <<includeDOM slaveExpenses(V.activeSlave)>> </p> <p>