diff --git a/src/endWeek/saRelationships.js b/src/endWeek/saRelationships.js index e98d4a5534c4a62924e03c7e560f4f9315966bc9..8e905f89ecd783ad85078cd116d5cb88fb757dbd 100644 --- a/src/endWeek/saRelationships.js +++ b/src/endWeek/saRelationships.js @@ -61,6 +61,7 @@ App.SlaveAssignment.relationships = (function() { /** Does the facility head accept her advances? * @param {App.Entity.SlaveState} potentialFriend + * @param {number} manipulationSkill * @returns {boolean} */ function silverTongue(potentialFriend, manipulationSkill) { @@ -70,6 +71,7 @@ App.SlaveAssignment.relationships = (function() { /** * @param {App.Entity.SlaveState} slave * @param {App.Entity.SlaveState} friend + * @param {number} degree */ function startFriendship(slave, friend, degree) { friend.relationship = degree; @@ -125,19 +127,17 @@ App.SlaveAssignment.relationships = (function() { slave.relationship = -2; } } else if (slave.career === "a Futanari Sister" && slave.rules.relationship === "permissive") { - for (const potentialFriend of V.slaves) { - if (potentialFriend.career === "a Futanari Sister" && potentialFriend.rules.relationship === "permissive" && canStartFriendship(slave, potentialFriend)) { - r.push(`${slave.slaveName} greets ${potentialFriend.slaveName} with joy. It's not clear whether they ever knew each other during their lives as Futanari Sisters, but it seems that they believe themselves to be in a relationship by simple virtue of having been Sisters. In any case, ${slave.slaveName} and ${potentialFriend.slaveName} <span class="relationship">become inseparable lovers</span> instantly, as though there's no possibility they would do anything else. They're even surprised when other slaves ask them about it; it's as though they're unaware that other possibilities even exist.`); - startFriendship(slave, potentialFriend, 4); - break; - } + const potentialFriend = V.slaves.find((s) => s.career === "a Futanari Sister" && s.rules.relationship === "permissive" && canStartFriendship(slave, s)); + if (potentialFriend !== undefined) { + r.push(`${slave.slaveName} greets ${potentialFriend.slaveName} with joy. It's not clear whether they ever knew each other during their lives as Futanari Sisters, but it seems that they believe themselves to be in a relationship by simple virtue of having been Sisters. In any case, ${slave.slaveName} and ${potentialFriend.slaveName} <span class="relationship">become inseparable lovers</span> instantly, as though there's no possibility they would do anything else. They're even surprised when other slaves ask them about it; it's as though they're unaware that other possibilities even exist.`); + startFriendship(slave, potentialFriend, 4); } - } else if (slave.origin === "You were acquainted with $him before you were an arcology owner; your rival tried to use $him to manipulate you, but you rescued $him." && V.rivalryDuration > 20 && !["Intellectual Dependency", "Paternalism", "Racial Supremacism", "Slave Professionalism"].includes(V.rivalryFS)&& slave.newGamePlus === 0) { - potentialFriend = V.slaves.find((s) => (s.prestigeDesc === "You bankrupted and enslaved $him in revenge for $his part in the attack on your arcology by the Daughters of Liberty." && s.fuckdoll === 0 && s.fetish !== "mindbroken" && s.newGamePlus === 0)); + } else if (slave.origin === "You were acquainted with $him before you were an arcology owner; your rival tried to use $him to manipulate you, but you rescued $him." && V.rivalryDuration > 20 && !["Intellectual Dependency", "Paternalism", "Racial Supremacism", "Slave Professionalism"].includes(V.rivalryFS) && slave.newGamePlus === 0) { + const potentialFriend = V.slaves.find((s) => (s.prestigeDesc === "You bankrupted and enslaved $him in revenge for $his part in the attack on your arcology by the Daughters of Liberty." && s.fuckdoll === 0 && s.fetish !== "mindbroken" && s.newGamePlus === 0)); if (potentialFriend !== undefined) { r.push(`${slave.slaveName} greets ${potentialFriend.slaveName} with joy, happy to see a familiar face again. Without any regard to you, <span class="relationship">they continue their prior relationship.</span>`); if (potentialFriend.relationship > 0) { // remove me with multi-friend system - formerFriend = V.slaves.find((s) => (s.ID === potentialFriend.relationshipTarget)); + const formerFriend = getSlave(potentialFriend.relationshipTarget); if (formerFriend !== undefined) { formerFriend.relationshipTarget = 0; formerFriend.relationship = 0; @@ -239,7 +239,7 @@ App.SlaveAssignment.relationships = (function() { } } else if (potentialFriend.ID === V.WardenessID && slave.assignment === Job.CELLBLOCK) { if (potentialFriend.rules.relationship !== "restrictive" && silverTongue(potentialFriend, manipulationSkill)) { - r.push(`${slave.slaveName} manages to earn the respect of the Wardeness, ${potentialFriend}.slaveName. The two slaves have <span class="relationship">struck up a friendship.</span>`); + r.push(`${slave.slaveName} manages to earn the respect of the Wardeness, ${potentialFriend.slaveName}. The two slaves have <span class="relationship">struck up a friendship.</span>`); startFriendship(slave, potentialFriend, 1); break; } else { @@ -372,7 +372,7 @@ App.SlaveAssignment.relationships = (function() { slave.relationship = 0; slave.relationshipTarget = 0; } else if (slave.relationship === -1) { - if ([Job.DJ, Job.CLUB, Job.PUBLIC, Job.WHORE, job.BROTHEL].includes(slave.assignment)) { + if ([Job.DJ, Job.CLUB, Job.PUBLIC, Job.WHORE, Job.BROTHEL].includes(slave.assignment)) { r.push(`${His} endless stream of lovers maintains and satisfies ${his} emotional reliance on sex.`); } else if (slave.assignment === Job.MASTERSUITE && V.masterSuiteUpgradeLuxury === 2) { r.push(`Forming a part of the pile of copulating bodies in ${V.masterSuiteName} satisfies ${his} voracious sexual appetite.`); @@ -393,7 +393,7 @@ App.SlaveAssignment.relationships = (function() { } else if (slave.relationship === -2) { incestReactions(slave, PC); if (slave.devotion + slave.trust < 150) { - if (random(1, 100) > 50) { + if (slave.devotion < 75 && random(1, 100) > 50) { r.push(`${He} is no longer as devoted to you as ${he} once was, and has <span class="relationship dec">begun to look elsewhere for emotional support.</span>`); slave.relationship = 0; } else if (slave.trust < 75 && random(1, 100) > 50) { @@ -611,8 +611,8 @@ App.SlaveAssignment.relationships = (function() { switch (slave.relationship) { case 1: // friends r.push(`is friends with ${friend.slaveName}.`); - if (slave.devotion + slave.trust > 170 && random(1, 2) === 1) { - r.push(`${He}'s very devoted to you, and strongly trusts both you and ${his} place as a ${slave}. Since ${he} is just friends with ${friend.slaveName},`); + if (slave.devotion + slave.trust > 170 && random(1, 100) > 95) { // 5% chance to abandon friend to ebond/eslut + r.push(`${He}'s very devoted to you, and strongly trusts both you and ${his} place as a slave. Since ${he} is just friends with ${friend.slaveName},`); if (slave.sexualQuirk === "romantic") { r.push(`and persistently interprets sex in the most romantic possible terms, ${he} has decided that ${he} wants to be yours in ${his} heart as well as ${his} `); if (slave.vagina > 0) { @@ -666,7 +666,7 @@ App.SlaveAssignment.relationships = (function() { r.push(`${His} romantic bent drives ${him} to search for a regular sexual partner.`); seed = 10; } - if (slave.devotion + slave.trust > 95 && random(1, 2) === 1) { + if (slave.devotion + slave.trust > 95 && random(1, 100) === 100) { // 1% chance to abandon best friend to ebond/eslut r.push(`${slave.slaveName} is totally devoted to you, and implicitly trusts both you and ${his} place as a slave. Since ${his} relationship with ${friend.slaveName} has not yet turned sexual, and`); if (slave.sexualQuirk === "romantic") { r.push(`${he} persistently interprets sex in the most romantic possible terms, ${he} has decided that ${he} wants to be yours in ${his} heart as well as ${his}`); @@ -689,49 +689,51 @@ App.SlaveAssignment.relationships = (function() { friend.relationship = 0; friend.relationshipTarget = 0; slave.relationshipTarget = 0; - } else if (mutualChildren(slave, friend, V.slaves) > 0 && random(1, 100) < (50 + (10 * mutualChildren(slave, friend, V.slaves)) + seed)) { - r.push(`Having already had kids together, their relationship turns sexual once again, turning them into <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (V.seeIncest === 1 && slave.energy > 95 && areRelated(slave, friend) && random(1, 100) > (90-seed)) { - r.push(`Driven by nymphomania to attempt to have sex with everyone, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (V.seeIncest === 1 && slave.sexualQuirk === "perverted" && areRelated(slave, friend) && random(1, 100) > (80 - seed)) { - r.push(`Reveling in the taboo nature of ${his} attraction to ${friend.slaveName}, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (V.seeIncest === 1 && slave.behavioralQuirk === "sinful" && areRelated(slave, friend) && random(1, 100) > (80 - seed)) { - r.push(`Aroused by the chance to commit the sin of incest, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (slave.energy > 95 && random(1, 100) > (80 - seed)) { - r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if ((random(1, 100) > (100 - seed) - (0.2 * slave.attrXX)) && (friend.vagina > -1 || friend.faceShape !== "masculine")) { - r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if ((random(1, 100) > (100 - seed) - (0.2 * slave.attrXY)) && (canAchieveErection(friend) || friend.faceShape === "masculine")) { - r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (V.seeIncest === 1 && areRelated(slave, friend) && (random(1, 100) > (95 - seed))) { - r.push(`Eventually, they happen to be together and horny, and find themselves fucking without thinking. They have become incestuous <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; - } else if (random(1, 100) > (95 - seed)) { - if (friend.vagina !== -1 && slave.behavioralFlaw === "hates women" && random(1, 2) === 1) { - r.push(`Despite ${slave.slaveName}'s dislike of pussy,`); - } else if ((friend.dick > 0 || friend.faceShape === "masculine") && slave.behavioralFlaw === "hates men" && random(1, 2) === 1) { - r.push(`Despite ${slave.slaveName}'s distaste for cock,`); - } else { - r.push(`Living in an atmosphere of omnipresent sexuality,`); + } else if (App.Utils.sexAllowed(slave, friend) && slave.rules.relationship !== "just friends" && friend.rules.relationship !== "just friends") { + if (mutualChildren(slave, friend, V.slaves) > 0 && random(1, 100) < (50 + (10 * mutualChildren(slave, friend, V.slaves)) + seed)) { + r.push(`Having already had kids together, their relationship turns sexual once again, turning them into <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (V.seeIncest === 1 && slave.energy > 95 && areRelated(slave, friend) && random(1, 100) > (90-seed)) { + r.push(`Driven by nymphomania to attempt to have sex with everyone, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (V.seeIncest === 1 && slave.sexualQuirk === "perverted" && areRelated(slave, friend) && random(1, 100) > (80 - seed)) { + r.push(`Reveling in the taboo nature of ${his} attraction to ${friend.slaveName}, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (V.seeIncest === 1 && slave.behavioralQuirk === "sinful" && areRelated(slave, friend) && random(1, 100) > (80 - seed)) { + r.push(`Aroused by the chance to commit the sin of incest, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (slave.energy > 95 && random(1, 100) > (80 - seed)) { + r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if ((random(1, 100) > (100 - seed) - (0.2 * slave.attrXX)) && (friend.vagina > -1 || friend.faceShape !== "masculine")) { + r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if ((random(1, 100) > (100 - seed) - (0.2 * slave.attrXY)) && (canAchieveErection(friend) || friend.faceShape === "masculine")) { + r.push(`${slave.slaveName} successfully seduces ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (V.seeIncest === 1 && areRelated(slave, friend) && (random(1, 100) > (95 - seed))) { + r.push(`Eventually, they happen to be together and horny, and find themselves fucking without thinking. They have become incestuous <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; + } else if (random(1, 100) > (95 - seed)) { + if (friend.vagina !== -1 && slave.behavioralFlaw === "hates women" && random(1, 2) === 1) { + r.push(`Despite ${slave.slaveName}'s dislike of pussy,`); + } else if ((friend.dick > 0 || friend.faceShape === "masculine") && slave.behavioralFlaw === "hates men" && random(1, 2) === 1) { + r.push(`Despite ${slave.slaveName}'s distaste for cock,`); + } else { + r.push(`Living in an atmosphere of omnipresent sexuality,`); + } + r.push(`they fuck in a weak moment and find themselves becoming <span class="relationship">friends with benefits.</span>`); + slave.relationship++; + friend.relationship = slave.relationship; } - r.push(`they fuck in a weak moment and find themselves becoming <span class="relationship">friends with benefits.</span>`); - slave.relationship++; - friend.relationship = slave.relationship; } break; case 3: // FWB @@ -869,7 +871,7 @@ App.SlaveAssignment.relationships = (function() { /** * @param {App.Entity.SlaveState} slave - * + * @param {App.Entity.SlaveState} relative */ function incestReactions(slave, relative) { if (areRelated(slave, relative)) { @@ -1025,7 +1027,7 @@ App.SlaveAssignment.relationships = (function() { } } if (slave.attrXX <= 95 && random(1, 100) < (slave.relationship * 5) && (lover.vagina > -1 || lover.faceShape !== "masculine")) { - if (slave.attrKnown === 1) { // just becuase you don't know about it doesn't mean it's not happening. + if (slave.attrKnown === 1) { // just because you don't know about it doesn't mean it's not happening. r.push(`After finding comfort with a feminine lover, ${slave.slaveName} begins to experience more attraction to women.`); } slave.attrXX += 2; diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index aa1033cf81860978cd6a7dc6ea0dc831687405d7..65795a7f90d4900c0c3d2c2b2efb5b7d4ae50853 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -8540,7 +8540,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<link "No, and $his role is to suck dick and take it in the ass">> <<replace "#result">> You patiently explain that you've decided to use $him as an oral and anal slave, and leave $his pussy unfucked. $He's unsurprised, but $he understands your decision. You usually fuck slaves during your inspection, and you don't exempt $him from this, but you do let $him take it easy. Rather than facefucking $him you let $him suckle you gently. Rather that a hard buttfuck, you take $him to the couch and gently spoon $him with your <<if $PC.dick == 0>>strap-on<<else>>dick<</if>> up $his ass while making out with $him and playing with $his nipples. $He understands your forbearance and @@.hotpink;appreciates how kind $his <<= WrittenMaster()>> is.@@ - <<set $activeSlave.devotion += 4,>> + <<set $activeSlave.devotion += 4>> <<run seX($activeSlave, "oral", $PC, "penetrative")>> <<= VCheck.Anal()>> <</replace>>