From f651420aaa125014732ec31b6666d495a21ea727 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 13 Feb 2023 18:03:57 -0500 Subject: [PATCH] Tweak attendant allowing aggroSperm in the main pool --- js/003-data/gameVariableData.js | 1 + src/endWeek/reports/spaReport.js | 23 ++++++++++++---- src/endWeek/saRewardAndPunishment.js | 6 ++--- src/endWeek/slaveAssignmentReport.js | 2 +- src/facilities/spa/spa.js | 39 ++++++++++++++++++++++++++++ 5 files changed, 62 insertions(+), 9 deletions(-) diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 40cbc9e320f..0a961c6e2c7 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -629,6 +629,7 @@ App.Data.resetOnNGPlus = { spaSpots: 0, spaUpgrade: 0, spaFix: 0, + spaAggroSpermBan: 1, spaName: "the Spa", incubator: {capacity: 0, tanks: []}, diff --git a/src/endWeek/reports/spaReport.js b/src/endWeek/reports/spaReport.js index 289e11cfc41..2053769e0cd 100644 --- a/src/endWeek/reports/spaReport.js +++ b/src/endWeek/reports/spaReport.js @@ -294,7 +294,7 @@ App.EndWeek.spaReport = function() { App.Events.addNode(el, r, "p", ["indent", "bold"]); } - if (App.EndWeek.saVars.poolJizzers.length > 0) { + if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) { r.push(`The filters${S.Attendant ? ` and ${S.Attendant.slaveName}` : ""} have been overwhelmed by the sheer quantity of resilient sperm swimming around in the pool.`); if (V.seePreg) { r.push(`Any woman that enters these fertile waters is liable to be gifted with new life.`); @@ -305,7 +305,7 @@ App.EndWeek.spaReport = function() { if (S.Attendant) { const slave = App.SlaveAssignment.reportSlave(S.Attendant); tired(slave); - if (isFertile(slave) && slave.preg !== -1 && App.EndWeek.saVars.poolJizz > 5000) { // Free swimming sperm do not respect chastity. + if (isFertile(slave) && slave.preg !== -1 && App.EndWeek.saVars.poolJizz > (canSee(S.Attendant) ? 5000 : 1000)) {) { // Free swimming sperm do not respect chastity and the Attendant can not avoid going in the pool. const spermAtt = weightedRandom(App.EndWeek.saVars.poolJizzers); if (canBreed(slave, getSlave(spermAtt.ID))) { knockMeUp(slave, 25, 2, spermAtt.ID); @@ -341,11 +341,19 @@ App.EndWeek.spaReport = function() { slave.devotion++; slave.trust++; } else if (slave.trust < 40) { - slave.trust += 10; + if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) { + slave.trust += 5; + } else { + slave.trust += 10; + } } else if (slave.devotion < 40) { - slave.devotion += 10; + if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) { + slave.devotion += 5; + } else { + slave.devotion += 10; + } } - if (App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) { + if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000) && (V.spaAggroSpermBan === 0 || slave.breedingMark === 0)) { // 0 breeds all, 1 doesn't reach here, and 2 fails if .breedingMark is 0. if (slave.fetish === "cumslut" && (canSee(slave) || canTaste(slave) || canSmell(slave))) { slave.devotion++; } @@ -420,6 +428,11 @@ App.EndWeek.spaReport = function() { r.push(`${He} remains in the Spa, stubborn in ${his} flaw.`); } else if (slave.trust < 60 || slave.devotion < 60) { r.push(`${He} remains in the Spa, as ${he} is still learning to accept life as a slave.`); + if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) { + if (slave.devotion < 40 || slave.trust < 40) { + r.push(`${He} wishes ${S.Attendant.slaveName} would allow ${him} to enjoy the main pool.`); + } + } } else if (slave.health.condition < 20) { r.push(`${He} remains in the Spa, as ${he} is benefiting from its healing properties.`); } else if (slave.health.tired > 30) { diff --git a/src/endWeek/saRewardAndPunishment.js b/src/endWeek/saRewardAndPunishment.js index 7169faaa8c9..57bdef76992 100644 --- a/src/endWeek/saRewardAndPunishment.js +++ b/src/endWeek/saRewardAndPunishment.js @@ -77,7 +77,7 @@ App.SlaveAssignment.rewardAndPunishment = function rewardAndPunish(forSlave) { r.push(`usually spends in bed with you, helping to ease your worries.`); } else if (V.spa !== 0) { r.push(`usually sets aside to spend with you in ${V.spaName}.`); - if (App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) { + if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) { if (V.PC.intelligence + V.PC.intelligenceImplant < 10 || !canSee(V.PC)) { // Free swimming sperm do not respect chastity. let sperm; if (isFertile(slave) && slave.preg !== -1) { @@ -98,10 +98,10 @@ App.SlaveAssignment.rewardAndPunishment = function rewardAndPunish(forSlave) { r.push(`usually spends relaxing with you.`); } } else if (V.spa !== 0) { - const where = (slave.assignment !== Job.SPA) ? V.spaName : `a private bath`; + const where = (slave.assignment !== Job.SPA || slave.breedingMark) ? V.spaName : `a private bath`; const attendant = S.Attendant ? `, enjoying ${S.Attendant.slaveName}'s care` : ``; r.push(`usually spends in ${where}${attendant}.`); - if (slave.assignment !== Job.SPA && App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) { + if (slave.assignment !== Job.SPA && slave.breedingMark === 0 && App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) { if (slave.fetish === "cumslut" && (canSee(slave) || canTaste(slave) || canSmell(slave))) { r.push(`As an added bonus, ${he} gets to soak in a pool teeming with live sperm; <span class="hotpink">what luck!</span>`); slave.devotion++; diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index d8f5edb7670..4d600af77eb 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -166,7 +166,7 @@ App.EndWeek.slaveAssignmentReport = function() { if (facilities.spa.established) { let cum; for (const slave of App.Utils.sortedEmployees(App.Entity.facilities.spa)) { - if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && (slave.rules.release.masturbation || App.Utils.hasNonassignmentSex(slave) || slave.rules.release.facilityLeader) && slave.energy > 20) { + if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && (slave.rules.release.masturbation || App.Utils.hasNonassignmentSex(slave) || slave.rules.release.facilityLeader) && slave.energy > 20 && (!S.Attendant || V.spaAggroSpermBan !== 1)) { cum = Math.trunc(cumAmount(slave) / 2); App.EndWeek.saVars.poolJizz += cum; App.EndWeek.saVars.poolJizzers.push({ID: slave.ID, weight: cum}); diff --git a/src/facilities/spa/spa.js b/src/facilities/spa/spa.js index f9626717217..3c40411229f 100644 --- a/src/facilities/spa/spa.js +++ b/src/facilities/spa/spa.js @@ -155,6 +155,45 @@ App.Facilities.Spa.spa = class Spa extends App.Facilities.Facility { }, ], }, + { + property: "spaAggroSpermBan", + prereqs: [ + !!S.Attendant, + optimizedSpermFormula, + ], + options: [ + { + get text() { + const {he} = getPronouns(S.Attendant); + + return `${S.Attendant.slaveName} is to allow all slaves into the main pool, regardless of genetic modifications.`; + }, + link: `Free reign`, + value: 0, + }, + { + get text() { + const {his} = getPronouns(S.Attendant); + + return `${S.Attendant.slaveName} has banned any slaves with the enhanced sperm treatment from entering the main pool ${V.seePreg ? "and causing random pregnancies" : "and clogging up the filters"}.`; + }, + link: `No optimized sperm`, + value: 1, + }, + { + get text() { + const {his} = getPronouns(S.Attendant); + + return `${S.Attendant.slaveName} will make sure that no enhanced sperm will ever reach your breeding harem.`; + }, + link: `Protect your harem`, + value: 2, + prereqs: [ + V.propOutcome === 1, + ], + }, + ], + }, ]; } }; -- GitLab