diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index 082c9704b3a33be4fcddcffa4a0ab14352c3d35f..719097a67b9216a23349cf9c971e028cfe08ca00 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -456,6 +456,7 @@ rules.living: rules.rest: "none" - slave may be worked into exhaustion +"cruel" - slave is allowed rest when exhausted "restrictive" - slave is allowed to rest when fatigued "permissive" - slave is allowed to rest when tired "mandatory" - day of rest each week to recover diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js index 76e4acc132aa5ffc9ffe8a3f891caf1232ebb043..ce11266bc87fd7257fcb4dbfe5cb6cfeffb1b233 100644 --- a/src/endWeek/healthFunctions.js +++ b/src/endWeek/healthFunctions.js @@ -62,8 +62,10 @@ window.illness = function illness(slave) { let r = ``; let assignBonus = 0; // bonus for healthy assignments + // eslint-disable-next-line no-unused-vars let he, him, his, hers, himself, girl, loli, He, His; ({ + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, girl, He, His, loli } = getPronouns(slave)); let sicknessDegree = ["fine", "minor illness", "illness", "bad illness", "severe illness", "life-threatening illness"]; @@ -325,7 +327,7 @@ window.endWeekHealthDamage = function endWeekHealthDamage(slave) { }; /** - * Tells if a slave will try to work to death due to mental hangups + * Tells if a slave will willingly work to death * @param {App.Entity.SlaveState} slave * @returns {boolean} */ @@ -333,8 +335,28 @@ window.willWorkToDeath = function willWorkToDeath(slave) { // More to come in the future if (slave.trust < -50) { // Maybe lower return true; + } else if (slave.devotion > 50) { + return true; } else if (slave.sexualFlaw === "self hating") { return true; + } else if (slave.fetish === "mindbroken") { + return true; + } + return false; +}; + +/** + * Tells if a slave is taking the week off to rest + * @param {App.Entity.SlaveState} slave + * @returns {boolean} + */ +window.slaveResting = function slaveResting(slave) { + if (slave.rules.rest === "cruel" && slave.health.tired > 90) { + return true; + } else if (slave.rules.rest === "restrictive" && slave.health.tired > 60) { + return true; + } else if (slave.rules.rest === "permissive" && slave.health.tired > 30) { + return true; } return false; }; @@ -347,6 +369,7 @@ window.willWorkToDeath = function willWorkToDeath(slave) { window.tired = function tired(slave) { const H = slave.health; let livingRules = 0; + let restRules = 0; let assignment = 0; let reward = 0; let punishment = 0; @@ -439,21 +462,23 @@ window.tired = function tired(slave) { } else { assignment -= 8; } - } else if (["be confined in the arcade"].includes(slave.assignment)) { // Brutal assignments - // assignment += 50; // We should have a safeguard in place to prevent slave health meltdown while contained in the machine + } else if (["be confined in the arcade"].includes(slave.assignment)) { + assignment += 35; + if (V.arcadeUpgradeHealth === 2) { + assignment -= 60; + } else if (V.arcadeUpgradeHealth === 1) { + assignment -= 30; + } } else if (["work a glory hole", "work as a farmhand"].includes(slave.assignment)) { // Hard assignments - if (!willWorkToDeath(slave)) { - if (slave.tired > 90) { - assignment += 1; - } else if (slave.tired > 60) { - assignment += 10; - } + if (slaveResting(slave)) { + assignment -= 20; + V.slaveUsedRest = 1; + } else if (slave.tired + 20 >= 90 && !willWorkToDeath(slave)) { + assignment += 1; + } else if (slave.devotion > 20) { + assignment += 15; } else { - if (slave.devotion > 20) { - assignment += 15; - } else { - assignment += 20; - } + assignment += 20; } } else if (["serve in the club", "serve the public", "whore", "work in the brothel"].includes(slave.assignment)) { // Moderate assignments if (!willWorkToDeath(slave)) { @@ -576,7 +601,14 @@ window.tired = function tired(slave) { // Add advanced pregnancy/high .bellyPreg (it is either caused by an advanced pregnancy or high multiples, both draining) tiredness gain gated under preg effects // Add pregnancy speed up effects - tiredChange = livingRules + assignment + reward + punishment; // + muscles + health + // day of rest + if (slave.rules.rest === "mandatory") { + if (["work a glory hole", "work as a farmhand", "serve in the club", "serve the public", "whore", "work in the brothel", "be a subordinate slave", "be a servant", "work as a servant", "please you", "serve in the master suite"].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === "work in the dairy")) { + restRules -= 20; + } + } + + tiredChange = livingRules + assignment + restRules + reward + punishment; // + muscles + health H.tired += tiredChange; // HG special cases diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 14ff02217e899363736465aff1cb110fbcade21c..fbade7dfab63562aaecc6ad914c0acedf6616b31 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -1724,13 +1724,14 @@ window.saDrugs = (function saDrugs() { r += ` ${He} has been worked to the bone`; if (slave.devotion < 20) { r += ` and <span class="hotpink">bends a little more to your will,</span> while <span class="gold">fearing ${he}'ll never earn a reprieve</span> from toiling.`; - slave.devotion += 2; + slave.devotion += 1; slave.trust -= 2; } else if (slave.devotion < 50) { r += ` and can't help but <span class="gold">worry a little about ${his} well-being.</span>`; slave.trust -= 1; } else { - r += ` but ${he} carries on without reservations.`; + r += ` but ${he} carries on without complaint, keeping ${his} <span class="mediumorchid">growing doubts</span> to $himself.`; + slave.devotion -= 2; } } else if (slave.health.tired > 60) { r += ` ${He} is suffering from exhaustion`; diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index b2aef70b900e3caa3fc7726a5559b63037f51abe..be070d9b0c08daa395234020f252dc0ec488acf6 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -148,10 +148,40 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() { if (slave.health.tired > 90) { r += ` exhausted`; } else if (slave.health.tired > 60) { - r += ` tired`; + r += ` fatigued`; } r += `,</span> but no one cared.`; } + if (slave.assignment === "be confined in the arcade") { + if (!slave.fuckdoll) { + r += ` $He spends $his working hours constrained to a box, and $his time outside preparing for $his next shift; <span class="red">an exhausting life for even the healthiest of slaves.</span>`; + if (V.arcadeUpgradeHealth > 0) { + r += ` The curative cocktail pumped into ${him} is laced with `; + if (V.arcadeUpgradeHealth === 2) { + r += `sedatives and painkillers to keep $him in a <span class="green">state of forced rest.</span>`; + } else { + r += `painkillers and mild muscle relaxants; Not enough to ruin a customor's fun, but enough to keep ${him} in a <span class="green">state of pseudo-rest.</span>`; + } + } else { + r += ` If ${he} needs to rest, however, ${he} can always just pass out in ${his} restraints.`; + } + } + tired(slave); + } else if (slave.assignment === "work a glory hole") { + if (!slave.fuckdoll) { + if (slaveResting(slave)) { + r += ` ${He} spends reduced hours serving ${his} glory hole in order to <span class="green">offset ${his} lack of rest.</span>`; + } else if (slave.tired + 20 >= 90 && !willWorkToDeath(slave)) { + r += ` ${He} attempts to refuse work due to ${his} exhaustion, but can do little to stop it or the resulting <span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">aggravating customers and damaging the establishment's image.</span>`; + slave.devotion -= 10; + slave.trust -= 5; + repX(forceNeg(50), "gloryhole", slave); + } else { + r += ` ${He} spends long hours cooped up in a small box with nothing to rest on. Even if ${he} where to try to lean against its side, it won't be long before another dick pokes through the hole demanding service. <span class="red">By the time ${he} is released, ${he} is nothing short of exhausted.</span>`; + } + } + tired(slave); + } if (slave.vagina === 0 && canDoVaginal(slave)) { r += ` A `; diff --git a/src/events/RESS/muscles.js b/src/events/RESS/muscles.js index cbe2e93b62d76a394f4479047fabedd52c5e2cc6..8f8e32c68d481e22e41ccdd0e25e16ff59942a76 100644 --- a/src/events/RESS/muscles.js +++ b/src/events/RESS/muscles.js @@ -175,7 +175,11 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent { t.push(`${He} dominantly fucks you, ${his} muscles flexing powerfully with every thrust. You're no slouch when it comes to muscles yourself, so when you feel ${him} tense with orgasm you wrap your legs around ${him} and hilt ${him} deep inside you. This only encourages ${him} to fuck you harder, quickly bring you to climax as well. ${He} gently carries you to your couch, where ${he} slides in behind you for a little post-coitus spooning. You definitely appreciate ${his} gains after such a good fuck. <span class="trust inc">${His} confidence in ${his} place has increased,</span> as has ${his} <span class="devotion inc">love for you.</span>`); eventSlave.trust += 4; eventSlave.devotion += 4; - seX(eventSlave, "penetrative", V.PC, "vaginal"); + if (V.PC.vagina !== -1) { + seX(eventSlave, "penetrative", V.PC, "anal"); + } else { + seX(eventSlave, "penetrative", V.PC, "vaginal"); + } if (canImpreg(V.PC, eventSlave)) { knockMeUp(V.PC, 50, 0, eventSlave.ID); } diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index bfe1313c4b6bacb7b2b37b4e0183ba0a7fc3145e..cf787f4df749f6cc223f12c5d1aa0ed129e451a3 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -38,6 +38,7 @@ App.Entity.RuleState = class RuleState { this.living = "spare"; /** * * "none" + * * "cruel" * * "restrictive" * * "permissive" * * "mandatory" diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw index 403a8e3358b0e07db48ce61d8e754cf23b63c803..ff29e44aa97626a585b961dd1b6468dc5c20e2e8 100644 --- a/src/uncategorized/arcade.tw +++ b/src/uncategorized/arcade.tw @@ -134,7 +134,7 @@ [[Decrease power|Arcade][$arcadeUpgradeHealth = 1]] </div> <<elseif $arcadeUpgradeHealth == 1>> - It has been upgraded with curative injectors. inmates will be kept alive and productive, so they may be held locked in place for as long as necessary and available for use. + It has been upgraded with curative injectors. Inmates will be kept alive and productive, so they may be held locked in place for as long as necessary and available for use. <div class="choices"> [[Increase power|Arcade][$arcadeUpgradeHealth = 2]] | [[Turn off|Arcade][$arcadeUpgradeHealth = 0]] </div> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw index 0f89b59cb3e5d96bd17efa56b7d295a3c6d8687e..e97817e4c5281e31b066819d4ad4e7e813839fd1 100644 --- a/src/uncategorized/saRules.tw +++ b/src/uncategorized/saRules.tw @@ -5750,6 +5750,54 @@ <</if>> <</if>> + /* rules rest block only applies to certain jobs for now - may consider dropping the condition during finalization */ + <<if ["work a glory hole"].includes($slaves[$i].assignment)>> + <<if $slaves[$i].rules.rest == "mandatory">> + <<if ($slaves[$i].devotion <= 20)>> + Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. + <<set $slaves[$i].trust += 3>> + <<else>> + $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= WrittenMaster()>>.@@ + <<set $slaves[$i].trust += 1>> + <</if>> + <<elseif $slaveUsedRest>> + <<if $slaves[$i].rules.rest == "permissive">> + <<if ($slaves[$i].devotion <= 20)>> + $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ + <<set $slaves[$i].trust += 2>> + <<else>> + $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. + <<set $slaves[$i].devotion += 1>> + <<set $slaves[$i].trust += 1>> + <</if>> + <<elseif $slaves[$i].rules.rest == "restrictive">> + <<if ($slaves[$i].devotion <= -20)>> + $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. + <<set $slaves[$i].trust -= 1>> + <<elseif ($slaves[$i].devotion <= 20)>> + $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. + <<set $slaves[$i].devotion += 1>> + <<else>> + $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. + <<set $slaves[$i].trust += 1>> + <</if>> + <<elseif $slaves[$i].rules.rest == "cruel">> + <<if ($slaves[$i].devotion <= -20)>> + $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. + <<set $slaves[$i].trust -= 3>> + <<elseif ($slaves[$i].devotion <= 20)>> + You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. + <<set $slaves[$i].trust -= 3>> + <<set $slaves[$i].devotion -= 3>> + <<else>> + Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. + <<set $slaves[$i].devotion -= 2>> + <</if>> + <</if>> + <<unset $slaveUsedRest>> + <</if>> + <</if>> + <<if ($universalRulesConsent == 0)>> <<if ($slaves[$i].devotion <= 20)>> <<if ($slaves[$i].trust > -10)>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 27b6312ae845bbda60c3feb2ffb1b682c1375830..ff492afca56eb001cec9f782233f677da74b1239 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -475,6 +475,7 @@ /* <br>Sleep Rules: ''<span id="restRules">$slaves[_i].rules.rest</span>.'' <<link "None">><<set $slaves[_i].rules.rest = "none">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> | + <<link "Cruel">><<set $slaves[_i].rules.rest = "cruel">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> | <<link "Restrictive">><<set $slaves[_i].rules.rest = "restrictive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> | <<link "Permissive">><<set $slaves[_i].rules.rest = "permissive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> | <<link "Mandatory">><<set $slaves[_i].rules.rest = "mandatory">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |