diff --git a/src/uncategorized/brothelReport.js b/src/uncategorized/brothelReport.js index f475f2f0f69b2fb214e0e53dd3ff8fec0b9610ce..084c0ccdeca8b4e2a95573e66926e87d266d0e12 100644 --- a/src/uncategorized/brothelReport.js +++ b/src/uncategorized/brothelReport.js @@ -18,230 +18,234 @@ globalThis.brothelReport = function() { V.facility.brothel = initFacilityStatistics(V.facility.brothel); const brothelNameCaps = capFirstChar(V.brothelName); - if (V.MadamID !== 0) { - if (S.Madam.health.condition < -80) { - improveCondition(S.Madam, 20); - } else if (S.Madam.health.condition < -40) { - improveCondition(S.Madam, 15); - } else if (S.Madam.health.condition < 0) { - improveCondition(S.Madam, 10); - } else if (S.Madam.health.condition < 90) { - improveCondition(S.Madam, 7); - } - if (S.Madam.devotion <= 45) { - S.Madam.devotion += 5; - } - if (S.Madam.trust < 45) { - S.Madam.trust += 5; - } - if (S.Madam.rules.living !== "luxurious") { - S.Madam.rules.living = "luxurious"; - } - if (S.Madam.rules.rest !== "restrictive") { - S.Madam.rules.rest = "restrictive"; - } - if (S.Madam.fetishStrength <= 95) { - if (S.Madam.fetish !== "dom") { - if (fetishChangeChance(S.Madam) > random(0, 100)) { + function madamText() { + let r = []; + if (V.MadamID !== 0) { + if (S.Madam.health.condition < -80) { + improveCondition(S.Madam, 20); + } else if (S.Madam.health.condition < -40) { + improveCondition(S.Madam, 15); + } else if (S.Madam.health.condition < 0) { + improveCondition(S.Madam, 10); + } else if (S.Madam.health.condition < 90) { + improveCondition(S.Madam, 7); + } + if (S.Madam.devotion <= 45) { + S.Madam.devotion += 5; + } + if (S.Madam.trust < 45) { + S.Madam.trust += 5; + } + if (S.Madam.rules.living !== "luxurious") { + S.Madam.rules.living = "luxurious"; + } + if (S.Madam.rules.rest !== "restrictive") { + S.Madam.rules.rest = "restrictive"; + } + if (S.Madam.fetishStrength <= 95) { + if (S.Madam.fetish !== "dom") { + if (fetishChangeChance(S.Madam) > random(0, 100)) { + FLsFetish = 1; + S.Madam.fetishKnown = 1; + S.Madam.fetish = "dom"; + } + } else if (S.Madam.fetishKnown === 0) { FLsFetish = 1; S.Madam.fetishKnown = 1; - S.Madam.fetish = "dom"; + } else { + FLsFetish = 2; + S.Madam.fetishStrength += 4; } - } else if (S.Madam.fetishKnown === 0) { - FLsFetish = 1; - S.Madam.fetishKnown = 1; - } else { - FLsFetish = 2; - S.Madam.fetishStrength += 4; } - } - /* Make sure we have registered living expenses as for any other slave */ - getSlaveStatisticData(S.Madam, V.facility.brothel); - ({ - he, him, his, himself, He, His, wife - } = getPronouns(S.Madam)); - const slave = S.Madam; - V.i = V.slaveIndices[slave.ID]; - /* apply following SA passages to facility leader */ - - r = []; - if (S.Madam.relationship === -3 && S.Madam.devotion > 50) { - r.push(`As your loving ${wife}, ${he} does ${his} best to attract attention to your brothel.`); - } - if (FLsFetish === 1) { - r.push(`${He} isn't above sampling the merchandise ${himself}; before long it's obvious to ${his} girls that ${he}`); - r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, "fetish-gain")); - } else if ((FLsFetish === 2)) { - r.push(`${He}'s careful that all of the whores under ${his} supervision are all warmed up and ready to get fucked every morning, and ${he}`); - r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, ["fetish", "inc"])); - } - const improve = App.UI.DOM.makeElement("span", "improve", ["cash", "inc"]); - if (S.Madam.skill.whoring <= 10) { - r.push(`Though ${S.Madam.slaveName} does ${his} best to manage the brothel, with ${his} lack of skill ${he} can do little.`); - } else if ((S.Madam.skill.whoring <= 30)) { - r.push(`${S.Madam.slaveName}'s basic skills marginally`, improve, `business at ${V.brothelName}.`); - } else if ((S.Madam.skill.whoring <= 60)) { - r.push(`${S.Madam.slaveName}'s skills`, improve, `business at ${V.brothelName}.`); - } else if ((S.Madam.skill.whoring < 100)) { - r.push(`${S.Madam.slaveName}'s skills greatly`, improve, `business at ${V.brothelName}.`); - } else { - r.push(`${S.Madam.slaveName}'s mastery immensely`, improve, `business at ${V.brothelName}.`); - } - if (S.Madam.actualAge > 35) { - r.push(`${His} age and experience also contribute.`); - } - if (setup.madamCareers.includes(S.Madam.career)) { - r.push(`${He} has experience from ${his} life before ${he} was a slave that helps ${him} in the seedy business of selling other people's bodies for sex.`); - } else if (S.Madam.skill.madam >= V.masteredXP) { - r.push(`${He} has experience from working for you that helps ${him} in the seedy business of selling other people's bodies for sex.`); - } - if (S.Madam.intelligence + S.Madam.intelligenceImplant > 15) { - r.push(`${He} is a clever manager.`); - } - if ((S.Madam.dick > 2) && (canPenetrate(S.Madam))) { - r.push(`${His} turgid dick helps ${him} manage the bitches.`); - } - App.Events.addParagraph(el, r); - - for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; + /* Make sure we have registered living expenses as for any other slave */ + getSlaveStatisticData(S.Madam, V.facility.brothel); ({ he, him, his, himself, He, His, wife - } = getPronouns(slave).appendSuffix('2')); + } = getPronouns(S.Madam)); + /* apply following SA passages to facility leader */ + r = []; - /* for the included passages */ + if (S.Madam.relationship === -3 && S.Madam.devotion > 50) { + r.push(`As your loving ${wife}, ${he} does ${his} best to attract attention to your brothel.`); + } + if (FLsFetish === 1) { + r.push(`${He} isn't above sampling the merchandise ${himself}; before long it's obvious to ${his} girls that ${he}`); + r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, "fetish-gain")); + } else if ((FLsFetish === 2)) { + r.push(`${He}'s careful that all of the whores under ${his} supervision are all warmed up and ready to get fucked every morning, and ${he}`); + r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, ["fetish", "inc"])); + } + const improve = App.UI.DOM.makeElement("span", "improve", ["cash", "inc"]); + if (S.Madam.skill.whoring <= 10) { + r.push(`Though ${S.Madam.slaveName} does ${his} best to manage the brothel, with ${his} lack of skill ${he} can do little.`); + } else if ((S.Madam.skill.whoring <= 30)) { + r.push(`${S.Madam.slaveName}'s basic skills marginally`, improve, `business at ${V.brothelName}.`); + } else if ((S.Madam.skill.whoring <= 60)) { + r.push(`${S.Madam.slaveName}'s skills`, improve, `business at ${V.brothelName}.`); + } else if ((S.Madam.skill.whoring < 100)) { + r.push(`${S.Madam.slaveName}'s skills greatly`, improve, `business at ${V.brothelName}.`); + } else { + r.push(`${S.Madam.slaveName}'s mastery immensely`, improve, `business at ${V.brothelName}.`); + } + if (S.Madam.actualAge > 35) { + r.push(`${His} age and experience also contribute.`); + } + if (setup.madamCareers.includes(S.Madam.career)) { + r.push(`${He} has experience from ${his} life before ${he} was a slave that helps ${him} in the seedy business of selling other people's bodies for sex.`); + } else if (S.Madam.skill.madam >= V.masteredXP) { + r.push(`${He} has experience from working for you that helps ${him} in the seedy business of selling other people's bodies for sex.`); + } + if (S.Madam.intelligence + S.Madam.intelligenceImplant > 15) { + r.push(`${He} is a clever manager.`); + } + if ((S.Madam.dick > 2) && (canPenetrate(S.Madam))) { + r.push(`${His} turgid dick helps ${him} manage the bitches.`); + } + App.Events.addParagraph(el, r); - if (S.Madam.rivalryTarget === slave.ID) { - r.push(`${He} forces ${his} ${rivalryTerm(S.Madam)}, to service all the men in the brothel.`); - slave.devotion -= 2; - slave.trust -= 2; - if (canDoVaginal(slave)) { - seX(slave, "vaginal", "public", "penetrative", 10); - } - if (canDoAnal(slave)) { - seX(slave, "anal", "public", "penetrative", 12); - } - seX(slave, "anal", "public", "penetrative", 10); - if (random(1, 100) > 65) { - S.Madam.rivalry++; - slave.rivalry++; + for (const slave of slaves) { + ({ + he, him, his, himself, He, His, wife + } = getPronouns(slave).appendSuffix('2')); + r = []; + /* for the included passages */ + + if (S.Madam.rivalryTarget === slave.ID) { + r.push(`${He} forces ${his} ${rivalryTerm(S.Madam)}, to service all the men in the brothel.`); + slave.devotion -= 2; + slave.trust -= 2; + if (canDoVaginal(slave)) { + seX(slave, "vaginal", "public", "penetrative", 10); + } + if (canDoAnal(slave)) { + seX(slave, "anal", "public", "penetrative", 12); + } + seX(slave, "anal", "public", "penetrative", 10); + if (random(1, 100) > 65) { + S.Madam.rivalry++; + slave.rivalry++; + } + } else if (S.Madam.relationshipTarget === slave.ID) { + r.push(`${He} dotes over ${his} ${relationshipTerm(S.Madam)}, ${slave.slaveName}, making sure ${he2} is safe, but unfortunately driving potential customers away from ${him2}.`); + slave.devotion++; + } else if (areRelated(S.Madam, slave)) { + r.push(`${He} pays special attention to ${his} ${relativeTerm(S.Madam, slave)}, ${slave.slaveName}, making sure ${he2} is treated well and showing off ${his2} skills.`); + slave.trust++; } - } else if (S.Madam.relationshipTarget === slave.ID) { - r.push(`${He} dotes over ${his} ${relationshipTerm(S.Madam)}, ${slave.slaveName}, making sure ${he2} is safe, but unfortunately driving potential customers away from ${him2}.`); - slave.devotion++; - } else if (areRelated(S.Madam, slave)) { - r.push(`${He} pays special attention to ${his} ${relativeTerm(S.Madam, slave)}, ${slave.slaveName}, making sure ${he2} is treated well and showing off ${his2} skills.`); - slave.trust++; - } - if (slave.prestigeDesc === "$He is a famed Free Cities whore, and commands top prices.") { - r.push(`${He} makes sure to promote ${slave.slaveName}, the famed whore, in order to capitalize on ${his2} popularity.`); - } else if (slave.prestigeDesc === "$He is a famed Free Cities slut, and can please anyone.") { - r.push(`${He} makes sure to promote ${slave.slaveName}, the famed entertainer, in order to capitalize on ${his2} popularity.`); - } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a dairy cow.") { - if (V.arcologies[0].FSPhysicalIdealist !== "unset") { - if ((slave.muscles > 60) && (slave.weight < 30) && (slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { - r.push(`${He} shows off how even a cow like ${slave.slaveName} can achieve physical perfection.`); - } else { - if (slave.muscles < 30) { - r.push(`An unmuscled,`); + if (slave.prestigeDesc === "$He is a famed Free Cities whore, and commands top prices.") { + r.push(`${He} makes sure to promote ${slave.slaveName}, the famed whore, in order to capitalize on ${his2} popularity.`); + } else if (slave.prestigeDesc === "$He is a famed Free Cities slut, and can please anyone.") { + r.push(`${He} makes sure to promote ${slave.slaveName}, the famed entertainer, in order to capitalize on ${his2} popularity.`); + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a dairy cow.") { + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + if ((slave.muscles > 60) && (slave.weight < 30) && (slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { + r.push(`${He} shows off how even a cow like ${slave.slaveName} can achieve physical perfection.`); } else { - r.push(`A`); - } - if (slave.weight > 30) { - r.push(`fat,`); + if (slave.muscles < 30) { + r.push(`An unmuscled,`); + } else { + r.push(`A`); + } + if (slave.weight > 30) { + r.push(`fat,`); + } + r.push(`'prestigious'`); + if (slave.lactation > 0) { + r.push(`cow`); + } else if (((slave.boobs - slave.boobsImplant) > 6000)) { + r.push(`mass of titflesh`); + } else { + r.push(`slave`); + } + r.push(`like ${slave.slaveName} is woefully out of fashion, so ${S.Madam.slaveName} tries to draw attention away from ${him2}.`); } - r.push(`'prestigious'`); - if (slave.lactation > 0) { - r.push(`cow`); - } else if (((slave.boobs - slave.boobsImplant) > 6000)) { - r.push(`mass of titflesh`); + } else { + if ((slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { + r.push(`${He} makes sure to massage ${slave.slaveName}'s huge breasts to get the milk flowing before enticing clients to suckle and play with ${him2}.`); } else { - r.push(`slave`); + r.push(`${He} would like to show off ${slave.slaveName}'s huge udders, but ${slave.slaveName} `); + if (slave.lactation === 0) { + r.push(`isn't producing milk anymore.`); + } else { + r.push(`doesn't exactly have huge udders anymore.`); + } } - r.push(`like ${slave.slaveName} is woefully out of fashion, so ${S.Madam.slaveName} tries to draw attention away from ${him2}.`); } - } else { - if ((slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { - r.push(`${He} makes sure to massage ${slave.slaveName}'s huge breasts to get the milk flowing before enticing clients to suckle and play with ${him2}.`); - } else { - r.push(`${He} would like to show off ${slave.slaveName}'s huge udders, but ${slave.slaveName} `); - if (slave.lactation === 0) { - r.push(`isn't producing milk anymore.`); + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a cockmilker.") { + if (V.arcologies[0].FSGenderFundamentalist !== "unset") { + /* this needs review - doesn't fit right. An XY slave would be expected to be masculine. */ + if ((slave.balls === 0) && (slave.dick === 0) && (slave.vagina > -1)) { + r.push(`${He} uses ${slave.slaveName} as an example of how even a huge-balled freak like ${him2} can be restored to proper femininity.`); } else { - r.push(`doesn't exactly have huge udders anymore.`); + r.push(`${He} tries to hide ${slave.slaveName}, 'her' body being notorious for its defiance of conventional femininity.`); } - } - } - } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a cockmilker.") { - if (V.arcologies[0].FSGenderFundamentalist !== "unset") { - /* this needs review - doesn't fit right. An XY slave would be expected to be masculine. */ - if ((slave.balls === 0) && (slave.dick === 0) && (slave.vagina > -1)) { - r.push(`${He} uses ${slave.slaveName} as an example of how even a huge-balled freak like ${him2} can be restored to proper femininity.`); } else { - r.push(`${He} tries to hide ${slave.slaveName}, 'her' body being notorious for its defiance of conventional femininity.`); - } - } else { - if (((slave.balls > 5) && (slave.dick !== 0)) || ((slave.balls > 4) && (slave.dick !== 0) && (slave.prostate > 1))) { - r.push(`${He} shows off ${slave.slaveName}'s copious loads by putting a condom over ${his2} dick and teasing ${him2} till ${he2} bursts it. The show draws multiple clients that want to play with ${his2} oversized junk and messy orgasms.`); - } else { - r.push(`${He} would love to show off ${slave.slaveName}'s copious loads, but`); - if (slave.dick === 0) { - r.push(`${slave.slaveName} doesn't have a dick.`); - } else if (slave.balls === 0) { - r.push(`${slave.slaveName}'s not producing cum.`); + if (((slave.balls > 5) && (slave.dick !== 0)) || ((slave.balls > 4) && (slave.dick !== 0) && (slave.prostate > 1))) { + r.push(`${He} shows off ${slave.slaveName}'s copious loads by putting a condom over ${his2} dick and teasing ${him2} till ${he2} bursts it. The show draws multiple clients that want to play with ${his2} oversized junk and messy orgasms.`); } else { - r.push(`${slave.slaveName}'s orgasms just aren't messy enough.`); + r.push(`${He} would love to show off ${slave.slaveName}'s copious loads, but`); + if (slave.dick === 0) { + r.push(`${slave.slaveName} doesn't have a dick.`); + } else if (slave.balls === 0) { + r.push(`${slave.slaveName}'s not producing cum.`); + } else { + r.push(`${slave.slaveName}'s orgasms just aren't messy enough.`); + } } } - } - } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a breeder.") { - if (slave.bellyPreg >= 5000) { - r.push(`${He} makes sure ${slave.slaveName}'s growing pregnancy is well taken care of, even if it means driving away potential customers away when the mother-to-be needs a rest.`); - } else if (canGetPregnant(slave)) { - r.push(`${He} makes sure to play off ${slave.slaveName}'s fame and fertility by enticing potential customers to be the one to claim ${his2} womb by filling it with their child.`); - } else { - r.push(`${He} would love to play off of ${slave.slaveName}'s fame and fertility, but unfortunately ${he2}`); - if (slave.pregKnown === 1 && slave.bellyPreg < 1500) { - r.push(`is already pregnant and not far enough along to show it.`); - } else if (slave.pregKnown === 1 && slave.bellyPreg < 5000) { - r.push(`already pregnant, but not enough to be exciting.`); + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a breeder.") { + if (slave.bellyPreg >= 5000) { + r.push(`${He} makes sure ${slave.slaveName}'s growing pregnancy is well taken care of, even if it means driving away potential customers away when the mother-to-be needs a rest.`); + } else if (canGetPregnant(slave)) { + r.push(`${He} makes sure to play off ${slave.slaveName}'s fame and fertility by enticing potential customers to be the one to claim ${his2} womb by filling it with their child.`); } else { - r.push(`is unable to get knocked up.`); + r.push(`${He} would love to play off of ${slave.slaveName}'s fame and fertility, but unfortunately ${he2}`); + if (slave.pregKnown === 1 && slave.bellyPreg < 1500) { + r.push(`is already pregnant and not far enough along to show it.`); + } else if (slave.pregKnown === 1 && slave.bellyPreg < 5000) { + r.push(`already pregnant, but not enough to be exciting.`); + } else { + r.push(`is unable to get knocked up.`); + } } } + App.Events.addNode(el, r); } - App.Events.addNode(el, r); - } - if ((SL + V.brothelSlavesGettingHelp < 10) && V.MadamNoSex !== 1 && !slaveResting(S.Madam)) { - ({ - he, him, his, himself, He, His, wife - } = getPronouns(S.Madam)); - let oldCash = V.cash; - if (V.showEWD !== 0) { + if ((SL + V.brothelSlavesGettingHelp < 10) && V.MadamNoSex !== 1 && !slaveResting(S.Madam)) { + ({ + he, him, his, himself, He, His, wife + } = getPronouns(S.Madam)); + let oldCash = V.cash; + if (V.showEWD !== 0) { + App.Events.addParagraph( + el, + [ + He, + App.SlaveAssignment.whore(S.Madam) + ] + ); + } else { + App.SlaveAssignment.whore(S.Madam); + } App.Events.addParagraph( el, [ - He, - App.SlaveAssignment.whore(S.Madam) + `${He} whores ${himself} because ${he} doesn't have enough whores to manage to keep ${him} busy, and makes`, + App.UI.DOM.makeElement("span", `${cashFormat(S.Madam.lastWeeksCashIncome)}.`, ["cash", "inc"]), + `${He} can charge more for ${his} time, since many citizens find it erotic to fuck the Madam.` ] ); - } else { - App.SlaveAssignment.whore(S.Madam); + profits += V.cash - oldCash; + oldCash = V.cash; } - App.Events.addParagraph( - el, - [ - `${He} whores ${himself} because ${he} doesn't have enough whores to manage to keep ${him} busy, and makes`, - App.UI.DOM.makeElement("span", `${cashFormat(S.Madam.lastWeeksCashIncome)}.`, ["cash", "inc"]), - `${He} can charge more for ${his} time, since many citizens find it erotic to fuck the Madam.` - ] - ); - profits += V.cash - oldCash; - oldCash = V.cash; } + return r.join(" "); } + const madamEffects = App.UI.DOM.appendNewElement("p", el, '', "indent"); + $(madamEffects).append(madamText()); + if (SL > 0) { const whoreNumber = document.createElement("p"); whoreNumber.classList.add("indent", "bold"); @@ -287,7 +291,6 @@ globalThis.brothelReport = function() { } let oldCash = V.cash; for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; ({ he, him, his, himself, He, His, wife } = getPronouns(slave));