diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js index 35be3de28b79b6b5ee63d371c857382df024eef0..4a39a5eb130b95f3d784d5eced8e68a51f38e541 100644 --- a/src/endWeek/healthFunctions.js +++ b/src/endWeek/healthFunctions.js @@ -419,6 +419,37 @@ globalThis.tired = function(slave) { } else { assignment += 10; } + } else if ([Job.SUBORDINATE].includes(slave.assignment)) { + if (slaveResting(slave)) { + assignment -= 20; + V.slaveUsedRest = 1; + } else if (slave.subTarget === -1) { + if (slave.health.tired + 5 >= 90 && !willWorkToDeath(slave)) { + assignment += 1; + } else if (slave.devotion > 20) { + assignment += 3; + } else { + assignment += 5; + } + } else if (slave.subTarget === 0) { + const workload = ((V.dormitoryPopulation + V.roomsPopulation - V.subSlaves) > 5) ? (V.subSlaves / (V.dormitoryPopulation + V.roomsPopulation - V.subSlaves)) : 1; + if (slave.devotion > 20) { + assignment += 7; + } else { + assignment += 10; + } + assignment = Math.ceil(assignment / workload); // 50 if very overloaded, make sure to have enough girls serving! + } else { + if (slave.relationshipTarget === slave.subTarget && slave.health.tired > 60) { + assignment += 2; + } else if (slave.health.tired + 10 >= 90 && !willWorkToDeath(slave)) { + assignment += 1; + } else if (slave.devotion > 20 || slave.relationshipTarget === slave.subTarget) { + assignment += 5; + } else { + assignment += 10; + } + } } else if ([Job.MILKED].includes(slave.assignment)) { if (slave.devotion > 20) { assignment += 2; @@ -656,7 +687,7 @@ globalThis.restEffects = function(slave, exhaustion=0) { if (slave.rules.rest === "mandatory") { return 0.86; } else if (slaveResting(slave)) { - if (slave.assignment === window.Job.HOUSE || slave.assignment === window.Job.QUARTER) { + if (slave.assignment === window.Job.HOUSE || slave.assignment === window.Job.QUARTER || window.Job.SUBORDINATE) { return 0.60; } else { return 0.25; diff --git a/src/endWeek/saServeYourOtherSlaves.js b/src/endWeek/saServeYourOtherSlaves.js index 91fd1fed205fb1c6acbc2a9a25a662b00628a9c1..c98bcc2d17573307aa78145b84effc3090719b26 100644 --- a/src/endWeek/saServeYourOtherSlaves.js +++ b/src/endWeek/saServeYourOtherSlaves.js @@ -28,6 +28,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { let domFetishKnown; let domSlaveUsedFetish; let subSlaveLikedFetish; + let subHatesDom; let subName; let subRace; @@ -94,6 +95,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { domName = domSlave.slaveName; domFetishKnown = domSlave.fetishKnown; domSlaveUsedFetish = 0; + subHatesDom = 0; } else { jobType = "cumdump"; slave.subTarget = 0; @@ -242,7 +244,6 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`With ${his} servicing sisters, ${his} workload is reasonable and ${he} isn't overworked.`); } else if (load > 0.2) { r.push(`While ${he} may have support in servicing your stock, ${he} is <span class="red">overwhelmed by their collective need.</span>`); - slave.health.tired += 10; if (slave.sexualFlaw === "self hating") { r.push(`With so many other slaves taking advantage of ${his} body, ${his} life's purpose of <span class="hotpink">being nothing more than a piece of meat</span> has come true.`); slave.devotion += 5; @@ -268,7 +269,6 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`there are so few other slaves`); } r.push(`servicing your stock, ${he} is used to the <span class="red">point of exhaustion.</span>`); - slave.health.tired += 30; healthDamage(slave, 10); if (V.averageDick > 5) { if (canDoVaginal(slave) && slave.vagina > 0 && slave.vagina < 4) { @@ -1351,6 +1351,8 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { mammaryUse = slave.counter.mammary - mammaryUse; penetrativeUse = slave.counter.penetrative - penetrativeUse; + slave.sexAmount = oralUse + analUse + vaginalUse + mammaryUse + penetrativeUse; + if (jobType === "stud") { slave.need -= 50; if (subSlaveLikedFetish) { @@ -1378,7 +1380,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`${He} seems to enjoy getting pushed down and fucked; ${he}'s got a <span class="lightcoral"> ${slave.fetish === "masochist" ? "masochistic" : "submissive"} streak</span> in ${him}.`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; } break; case "cumslut": @@ -1389,7 +1391,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`${He} seems to enjoy putting ${his} mouth to use; ${he}'s got a <span class="lightcoral">taste for cum.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; } break; case "buttslut": @@ -1400,7 +1402,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`${He} seems to rather enjoy getting assfucked; <span class="lightcoral">anal gets ${him} worked up.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; } break; case "pregnancy": @@ -1412,7 +1414,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`Frequent unprotected sex in ${his} fertile hole exposes ${him} for the <span class="lightcoral">pregnancy fetishist ${he} is.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; } else if (slave.mpreg === 1 && analUse > 7) { if (slave.fetishKnown) { r.push(`Having ${his} fertile ass see so much use really satisfies ${subName}.`); @@ -1420,7 +1422,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`Frequent unprotected sex in ${his} fertile hole exposes ${him} for the <span class="lightcoral">pregnancy fetishist ${he} is.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; } } break; @@ -1431,7 +1433,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`${He} seems to enjoy ${his} humiliating role; ${he} <span class="lightcoral"> gets off to being degraded.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; break; case "boobs": if (mammaryUse > 5) { @@ -1441,12 +1443,23 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { r.push(`${He} seems to enjoy all the attention ${his} breasts are getting; ${he}'s a <span class="lightcoral">breast fetishist.</span>`); slave.fetishKnown = 1; } - slave.need = 0; + subSlaveLikedFetish = 1; slave.induceLactation += 2; r.push(`${induceLactation(slave)}`); } break; } + if (subSlaveLikedFetish) { + slave.need = 0; + if (slave.fetishStrength < 100) { + slave.fetishStrength++; + } + } else if (fetishChange > jsRandom(0, 100) && slave.fetish !== "masochist" && slave.fetish !== "submissive" && load <= 0.8) { + r.push(`Being used as much as ${he} is starts to take a toll on ${him} sexuality; <span class="lightcoral">${he} begins to enjoy being your chattel's fucktoy.</span>`); + slave.fetish = "submissive"; + slave.fetishStrength = 65; + slave.fetishKnown = 1; + } } else if (jobType === "sub") { domSlave.need = 0; if (domSlaveUsedFetish) { @@ -1619,13 +1632,119 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { * @param {App.Entity.SlaveState} slave * */ function physicalEffects(slave) { - if (jobType === "sub") { - if (domSlave.health.condition < 40) { - r.push(`<span class="green">${domName}'s health improves</span> with ${subName} to serve ${him2} and help with some of ${his2} harder duties.`); - // Add tiredness recovery here - improveCondition(domSlave, 10); + if (slave.health.illness > 0 || slave.health.tired > 60) { + if (jobType === "sub") { + r.push(`${subName}`); + } else { + r.push(`${He}`); + } + r.push(`is<span class="red">`); + if (slave.health.tired > 60) { + if (slave.health.illness === 1) { + r.push(`feeling under the weather`); + } else if (slave.health.illness === 2) { + r.push(`somewhat ill`); + } else if (slave.health.illness === 3) { + r.push(`sick`); + } else if (slave.health.illness === 4) { + r.push(`very sick`); + } else if (slave.health.illness === 5) { + r.push(`terribly ill`); + } + r.push(`and`); + } else { + if (slave.health.illness === 1) { + r.push(`feeling under the weather,`); + } else if (slave.health.illness === 2) { + r.push(`somewhat ill,`); + } else if (slave.health.illness === 3) { + r.push(`sick,`); + } else if (slave.health.illness === 4) { + r.push(`very sick,`); + } else if (slave.health.illness === 5) { + r.push(`terribly ill,`); + } + } + if (slave.health.tired > 90) { + r.push(`exhausted,`); + } else if (slave.health.tired > 60) { + r.push(`fatigued,`); + } + if (slave.health.illness !== 0) { + r.push(`</span> making ${him} rather unappealing to use.`); + } else { + r.push(`</span> making ${him} less enjoyable to fuck.`); + } + } + if (jobType === "stud") { + if (slaveResting(slave)) { + r.push(`${He} is only made available during certain hours to maximize ${his} potency while <span class="green">keeping ${him} rested.</span>`); + if (slave.fetish === "mindbroken" && slave.fuckdoll > 0) { + r.push(`This doesn't stop recreational breeding, should ${he} be in the mood, but gives ${him} a chance to recover as needed.`); + } + } else if (slave.health.tired + 5 >= 90 && !willWorkToDeath(slave)) { + r.push(`${He} <span class="devotion dec">underperforms in ${his} role,</span> mating far less than ${he} could be, and is <span class="trust dec">punished accordingly.</span>`); + slave.devotion -= 2; + slave.trust -= 5; + } else { + r.push(`${He} lives a simple life of sex and nothing more;`); + if (slave.devotion > 20) { + r.push(`understanding that ${his} role is to ejaculate, not pleasure ${his} partner, allows ${him} ample free time when ${he} needs it.`); + } else { + r.push(`all ${he} needs to do is ejaculate, though ${he} fails to realize it.`); + } + } + } else if (jobType === "cumdump") { + if (slaveResting(slave)) { + r.push(`${He} is only available during certain hours in <span class="green">an effort to keep ${him} rested.</span>`); + } else if (slave.health.tired >= 60 && !willWorkToDeath(slave)) { + r.push(`As much as ${he} <span class="devotion dec">wishes to resist being used</span> in ${his} tired state, ${he} <span class="trust dec">can do little to avoid it.</span>`); + slave.devotion -= 5; + slave.trust -= 5; + } else { + if (slave.devotion > 20) { + r.push(`${He} is accustomed enough to slave life to porperly manage ${his} time.`); + } else { + r.push(`${He} <span class="red">wastes time and energy resisting</span> where a properly broken slave would accept what is happening and take it.`); + } } + tiredFucks(slave); + } else if (jobType === "sub") { + if (slaveResting(slave)) { + r.push(`${domName} only uses ${subName} sexually <span class="green">out of respect for ${his} rest rules.</span>`); + } else if (slave.relationshipTarget === domSlave.ID && slave.health.tired > 60) { + r.push(`${domName} goes easy on ${his2} ${relationshipTerm(domSlave)} ${subName} outside of the bedroom.`); + } else if (slave.health.tired + 10 >= 90 && !willWorkToDeath(slave)) { + r.push(`${subName} leverages sex with ${domName} in order to shirk ${his} other work;`); + if (domSlave.energy > 20 || domSlave.sexualQuirk === "caring") { + r.push(`${domName} prefers satisfaction and <span class="trust inc">lets ${subName} get away with it.</span>`); + slave.trust += 2; + } else { + r.push(`${domName} does not care for ${subName}'s game and <span class="trust dec">punishes ${him} appropriately.</span>`); + slave.trust -= 5; + subHatesDom = 1; + } + } else { + r.push(`Since ${subName} is essentially splitting chores with ${domName}, ${his} days are not particularly difficult;`); + if (slave.relationshipTarget === domSlave.ID) { + r.push(`spending that time with one's ${relationshipTerm(domSlave)} makes it even easier.`); + } else if (slave.devotion > 20) { + r.push(`${subName} understands that working with ${domName} makes things easier.`); + } else { + r.push(`${subName} fails to realize that working with, not against, ${domName} <span class="red">would make things go smoother.</span>`); + } + if (domSlave.health.condition < 40) { + r.push(`<span class="green">${domName}'s health improves</span> with ${subName} to serve ${him2} and`); + improveCondition(domSlave, 10); + } else { + r.push(`<span class="green">${domName} spends more time at ease</span> with ${subName} to`); + } + r.push(`help with some of ${his2} harder duties.`); + domSlave.health.tired -= 10; + } + tiredFucks(slave); } + tired(slave); if (slave.cervixImplant === 1 || slave.cervixImplant === 3) { cervixPump += 20 * vaginalUse; @@ -1681,50 +1800,52 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { } } - if (slave.relationship === 0) { - if (slave.rivalryTarget !== domSlave.ID && slave.devotion >= 10 && domSlave.relationship === 0) { - if (jsRandom(1, 100) > 50) { - r.push(`${subName} and ${domName} enjoy spending time together and <span class="lightgreen">strike up a friendship.</span>`); - domSlave.relationship = 1; - domSlave.relationshipTarget = slave.ID; - slave.relationship = 1; - slave.relationshipTarget = domSlave.ID; - } else { - r.push(`${subName} and ${domName} find they enjoy their sexual relationship and <span class="lightgreen">become friends with benefits.</span>`); - domSlave.relationship = 3; - domSlave.relationshipTarget = slave.ID; - slave.relationship = 3; - slave.relationshipTarget = domSlave.ID; - } - } - } else if (slave.relationship > 0) { - if (slave.relationshipTarget === domSlave.ID && slave.devotion >= -20) { - r.push(`${subName} likes getting fucked by ${domName} and <span class="hotpink">appreciates</span> having it as ${his} job.`); - slave.devotion += 1; - } - if (slave.relationship < 3) { - if (slave.relationshipTarget === domSlave.ID) { - if (slave.devotion >= 10) { - r.push(`${subName} and ${domName} find that they enjoy having sex just as much as they like being friends, and become <span class="lightgreen">friends with benefits.</span>`); + if (!subHatesDom) { + if (slave.relationship === 0) { + if (slave.rivalryTarget !== domSlave.ID && slave.devotion >= 10 && domSlave.relationship === 0) { + if (jsRandom(1, 100) > 50) { + r.push(`${subName} and ${domName} enjoy spending time together and <span class="lightgreen">strike up a friendship.</span>`); + domSlave.relationship = 1; + domSlave.relationshipTarget = slave.ID; + slave.relationship = 1; + slave.relationshipTarget = domSlave.ID; + } else { + r.push(`${subName} and ${domName} find they enjoy their sexual relationship and <span class="lightgreen">become friends with benefits.</span>`); domSlave.relationship = 3; + domSlave.relationshipTarget = slave.ID; slave.relationship = 3; - } else if (slave.devotion <= 20) { - r.push(`${subName} and ${domName}'s relationship is <span class="lightsalmon">damaged</span> by ${domName} having the right to use ${subName}.`); - domSlave.relationship--; - slave.relationship--; + slave.relationshipTarget = domSlave.ID; } } - } else if (slave.relationship < 4) { - if (slave.relationshipTarget === domSlave.ID && slave.devotion >= 10) { - r.push(`${subName} and ${domName} don't have to be encouraged to have sex, but with extra time for it, they become <span class="lightgreen">lovers.</span>`); - domSlave.relationship++; - slave.relationship++; + } else if (slave.relationship > 0) { + if (slave.relationshipTarget === domSlave.ID && slave.devotion >= -20) { + r.push(`${subName} likes getting fucked by ${domName} and <span class="hotpink">appreciates</span> having it as ${his} job.`); + slave.devotion += 1; + } + if (slave.relationship < 3) { + if (slave.relationshipTarget === domSlave.ID) { + if (slave.devotion >= 10) { + r.push(`${subName} and ${domName} find that they enjoy having sex just as much as they like being friends, and become <span class="lightgreen">friends with benefits.</span>`); + domSlave.relationship = 3; + slave.relationship = 3; + } else if (slave.devotion <= 20) { + r.push(`${subName} and ${domName}'s relationship is <span class="lightsalmon">damaged</span> by ${domName} having the right to use ${subName}.`); + domSlave.relationship--; + slave.relationship--; + } + } + } else if (slave.relationship < 4) { + if (slave.relationshipTarget === domSlave.ID && slave.devotion >= 10) { + r.push(`${subName} and ${domName} don't have to be encouraged to have sex, but with extra time for it, they become <span class="lightgreen">lovers.</span>`); + domSlave.relationship++; + slave.relationship++; + } } } } if (slave.rivalry === 0) { - if (slave.relationshipTarget !== domSlave.ID && slave.devotion <= 50 && domSlave.rivalry === 0 && jsRandom(1, 100) > 50) { + if (slave.relationshipTarget !== domSlave.ID && slave.devotion <= 50 && domSlave.rivalry === 0 && jsRandom(1, 100) > 50 - (subHatesDom * 20)) { r.push(`${subName} resents ${domName} for using ${him} and the two <span class="lightsalmon">start to dislike each other.</span>`); domSlave.rivalry = 1; domSlave.rivalryTarget = slave.ID; diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index d68248c0d9cf1da4bf8fada411ee88b6c9d852b4..64bfb6ffd7cf808552f35fea961eac9f565b7a3f 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -186,7 +186,7 @@ App.EndWeek.slaveAssignmentReport = function() { // Stud gets off based on impregnations, so we need to check and see if they actually do anyone if (V.StudID) { const stud = S.Stud; - V.StudCum = 2 + Math.trunc(((stud.balls / 5) + (stud.energy / 95) + (stud.health.condition / 95) + (stud.devotion / 95) + (V.reproductionFormula * 5) - (stud.health.tired / 25)) * healthPenalty(stud)); + V.StudCum = 2 + Math.trunc(((stud.balls / 5) + (stud.energy / 95) + (stud.health.condition / 95) + (stud.devotion / 95) + (V.reproductionFormula * 5) - (stud.health.tired / 25)) * restEffects(stud, 5)); if (stud.drugs === "hyper testicle enhancement") { V.StudCum += 3; } else if (stud.drugs === "testicle enhancement") {