diff --git a/src/cheats/cheatEditArcology.js b/src/cheats/cheatEditArcology.js index aebc9076f1adaf19bce5a4a2e73b8017de83a079..315d736c73f755969d0a61156cfec82733941ac6 100644 --- a/src/cheats/cheatEditArcology.js +++ b/src/cheats/cheatEditArcology.js @@ -15,27 +15,26 @@ App.UI.Cheat.arcology = function(num) { el.append(tabBar.render()); } - if(num === 0) { - if(arc.FSMaturityPreferentialist !== "unset") { - if(V.idealAge < 30) { + if (num === 0) { + if (arc.FSMaturityPreferentialist !== "unset") { + if (V.idealAge < 30) { V.idealAge = 30; } - if(V.targetIdealAge < 30) { + if (V.targetIdealAge < 30) { V.targetIdealAge = 30; } V.policies.idealAge = 1; - } - else if(arc.FSYouthPreferentialist !== "unset") { - if(V.idealAge >= 30) { + } else if (arc.FSYouthPreferentialist !== "unset") { + if (V.idealAge >= 30) { V.idealAge = 29; - } - if(V.targetIdealAge >= 30) { + } + if (V.targetIdealAge >= 30) { V.targetIdealAge = 29; } - if(V.targetIdealAge !== 18) { + if (V.targetIdealAge !== 18) { V.policies.idealAge = 1; - } - } + } + } } return el; diff --git a/src/endWeek/economics/economics.js b/src/endWeek/economics/economics.js index 1bf6ae3d620fe531bbe3512a7e1959a40e784399..4ca4911742d07b70f4badc17c4dcf892d238fa85 100644 --- a/src/endWeek/economics/economics.js +++ b/src/endWeek/economics/economics.js @@ -67,7 +67,7 @@ App.EndWeek.economics = function() { }], ["personal", { name: "Personal Notes", - get requirements() { return (V.PC.boobs >= 1000 || V.PC.pregKnown === 1 || V.playerAging !== 0); }, + requirements: true, get report() { return App.EndWeek.personalNotes(); } }], diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js index 608ac9ccb2fb566241587d34f8afcdf765515444..dc9f14c73c4e5bdb0a4b1032edda83445f186b80 100644 --- a/src/endWeek/economics/personalNotes.js +++ b/src/endWeek/economics/personalNotes.js @@ -4,11 +4,11 @@ App.EndWeek.personalNotes = function() { const el = document.createElement("p"); let r = []; - let milk; - let milkSale; + if (V.useTabs === 0) { App.UI.DOM.appendNewElement("h2", el, `Personal Notes`); } + if (V.playerAging !== 0) { let birthday = `Your birthday is `; if (V.PC.birthWeek === 51) { @@ -22,463 +22,45 @@ App.EndWeek.personalNotes = function() { birthday += `.`; r.push(birthday); } + + App.Events.addParagraph(el, r); + r = []; + + if (V.useTabs === 1) { + App.UI.DOM.appendNewElement("h2", el, `Appearance`); + } r.push(App.Desc.Player.pNotesBoobs()); r.push(App.Desc.Player.pNotesBelly()); r.push(App.Desc.Player.pNotesCrotch()); r.push(App.Desc.Player.pNotesButt()); - if (V.PC.lactation > 0) { - if (V.PC.rules.lactation !== "none" && V.PC.rules.lactation !== "induce") { - V.PC.lactationDuration = 2; - if (V.PC.rules.lactation === "sell") { - /* watch this be a disaster */ - milk = milkAmount(V.PC); - r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce ${milk} liters of sellable milk over the week.`); - if (V.arcologies[0].FSPastoralist !== "unset") { - if (V.arcologies[0].FSPastoralistLaw === 1) { - milkSale = Math.round(milk * ((28 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30))); - r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); - } else { - milkSale = Math.round(milk * ((12 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30))); - r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); - } - } else { - milkSale = milk * 8; - r.push(`Your milk is sold for <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); - } - cashX(milkSale, "personalBusiness"); - } else { - r.push(`You regularly see to your breasts to make sure your milk production doesn't dry up; be it by hand, milker, or mouth, you keep yourself comfortably drained.`); - } - } else { - if (V.PC.belly < 1500) { - V.PC.lactationDuration--; - if (V.PC.lactationDuration === 0) { - r.push(`With no reason to continue production, your <span class="yellow">lactation has stopped.</span>`); - V.PC.lactation = 0; - } - } - } + + App.Events.addParagraph(el, r); + r = []; + + if (V.useTabs === 1) { + App.UI.DOM.appendNewElement("h2", el, `Diet`); } - if (V.PC.preg > 0) { - const oldCount = V.PC.pregType; - if (V.PC.preg <= 2) { - fetalSplit(V.PC, 1000); - WombCleanYYFetuses(V.PC); - } - if (V.pregnancyMonitoringUpgrade === 1) { - if (oldCount < V.PC.pregType) { - r.push(`While making use of the advanced pregnancy monitoring equipment, you are surprised to find <span class="lime">your womb is a little more occupied than last checkup.</span>`); - } else if (oldCount > V.PC.pregType) { - r.push(`While making use of the advanced pregnancy monitoring equipment, you are surprised to find <span class="orange">your womb houses less life than last checkup.</span>`); - if (V.PC.pregType === 0) { - r.push(`For all intents and purposes, <span class="yellow">you are no longer pregnant.</span>`); - TerminatePregnancy(V.PC); - } - } - } else if (oldCount > V.PC.pregType && V.PC.pregType === 0) { - TerminatePregnancy(V.PC); - } - if (V.PC.preg === 15) { - if (V.PC.pregKnown === 0) { - r.push(`Your areolae have gotten dark. Some cursory tests reveal <span class="lime">you are about fifteen weeks pregnant.</span> How did that manage to slip past you?`); - V.PC.pregKnown = 1; - } else { - r.push(`Your areolae have gotten dark. Just another step along your pregnancy.`); - } - } else if (V.PC.belly >= 1500) { - if ((V.PC.preg > 20) && (V.PC.lactation === 0)) { - if (V.PC.preg > random(18, 30)) { - r.push(`A moist sensation on your breasts draws your attention; <span class="lime">your milk has come in.</span>`); - V.PC.lactation = 1; - } - } - if (V.PC.lactation === 1) { - V.PC.lactationDuration = 2; - } - } - if (V.PC.preg >= V.PC.pregData.normalBirth / 4) { - const gigantomastiaMod = V.PC.geneticQuirks.gigantomastia === 2 ? (V.PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; // TODO: 'gigantomastiaMod' is assigned a value but never used - /* trim this down */ - let boobTarget; - if (V.PC.geneMods.NCS === 1) { - boobTarget = 100; - } else if (V.PC.geneticQuirks.androgyny === 2) { - boobTarget = 400; - } else if (V.PC.physicalAge >= 18) { - if (V.PC.pregType >= 8) { - boobTarget = 1500; - /* 2000 */ - } else if (V.PC.pregType >= 5) { - boobTarget = 1400; - } else if (V.PC.pregType >= 2) { - boobTarget = 1000; - } else { - boobTarget = 800; - } - } else if (V.PC.physicalAge >= 13) { - if (V.PC.pregType >= 8) { - boobTarget = 1500; - /* 1800 */ - } else if (V.PC.pregType >= 5) { - boobTarget = 1400; - } else if (V.PC.pregType >= 2) { - boobTarget = 1000; - } else { - boobTarget = 800; - } - } else if (V.PC.physicalAge >= 8) { - if (V.PC.pregType >= 8) { - boobTarget = 1400; - } else if (V.PC.pregType >= 5) { - boobTarget = 1000; - } else if (V.PC.pregType >= 2) { - boobTarget = 800; - } else { - boobTarget = 600; - } - } else { - if (V.PC.pregType >= 8) { - boobTarget = 1000; - } else if (V.PC.pregType >= 5) { - boobTarget = 8000; - } else if (V.PC.pregType >= 2) { - boobTarget = 600; - } else { - boobTarget = 400; - } - } - /* boobTarget *= gigantomastiaMod;*/ - if (V.PC.geneMods.NCS === 0) { - /* - if (V.PC.pregType >= 30) { - if (V.PC.weight <= 65) { - r.push(`${He} has <span class="lime">gained weight</span> in order to better sustain ${himself} and ${his} children.`); - V.PC.weight += 1; - } - if (random(1,100) > 60) { - if ((V.PC.boobs - V.PC.boobsImplant) < boobTarget) { - r.push(`${His} breasts <span class="lime">greatly swell</span> to meet the upcoming demand.`); - V.PC.boobs += 100; - if (V.PC.boobShape !== "saggy" && V.PC.preg > V.PC.pregData.normalBirth/1.25 && (V.PC.boobsImplant / V.PC.boobs < 0.5) && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { - r.push(`${His} immensely engorged <span class="orange">breasts become saggy</span> in the last stages of ${his} pregnancy as ${his} body undergoes changes in anticipation of the forthcoming birth.`); - V.PC.boobShape = "saggy"; - } - } - if (V.PC.geneticQuirks.androgyny !== 2) { - if (V.PC.hips < 2) { - r.push(`${His} hips <span class="lime">widen</span> for ${his} upcoming birth.`); - V.PC.hips += 1; - } - if (V.PC.butt < 14) { - r.push(`${His} butt <span class="lime">swells with added fat</span> from ${his} changing body.`); - V.PC.butt += 1; - } - } - } - } else if (V.PC.pregType >= 10) { - if (random(1,100) > 80 && ((V.PC.boobs - V.PC.boobsImplant) < boobTarget)) { - V.PC.boobs += 50; - if (V.PC.boobShape !== "saggy" && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone") && (V.PC.boobsImplant / V.PC.boobs < 0.5)) { - if (V.PC.preg > random(V.PC.pregData.normalBirth/1.25, V.PC.pregData.normalBirth*2.05)) { - r.push(`${His} swollen <span class="orange">breasts become saggy</span> in the last stages of ${his} pregnancy as ${his} body undergoes changes in anticipation of the forthcoming birth.`); - V.PC.boobShape = "saggy"; - } - } - } - } - */ - if ((V.PC.boobs - V.PC.boobsImplant) < boobTarget) { - if (V.PC.boobs >= 1400) { - if (random(1, 100) > 90) { - r.push(`Unsurprisingly, your cow tits <span class="lime">have swollen even larger</span> with your pregnancy.`); - V.PC.boobs += 25; - } - } else if (V.PC.boobs >= 1200) { - if (random(1, 100) > 90) { - r.push(`Your already huge breasts have <span class="lime">grown even heavier</span> with your pregnancy.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 1400) { - r.push(`Your desk is steadily starting to disappear; <span class="lime">H-cups will do that.</span>`); - } - } - } else if (V.PC.boobs >= 1000) { - if (random(1, 100) > 75) { - r.push(`Your already large breasts have <span class="lime">grown even larger</span> with your pregnancy.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 1200) { - r.push(`Nothing fits comfortably now; your tailor says <span class="lime">it's your G-cup knockers.</span> Your back agrees.`); - } - } - } else if (V.PC.boobs >= 800) { - if (random(1, 100) > 75) { - r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child` : `children`}.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 1000) { - r.push(`You popped your bra when you put it on; <span class="lime">time to order some F-cups.</span>`); - } - } - } else if (V.PC.boobs >= 650) { - if (random(1, 100) > 80) { - r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child` : `children`}.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 800) { - r.push(`Their prominence, and a quick measuring, reveals <span class="lime">you now sport DDs.</span>`); - } - } - } else if (V.PC.boobs >= 500) { - if (random(1, 100) > 80) { - r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child` : `children`}.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 650) { - r.push(`They're big, sensitive, <span class="lime">and now a D-cup.</span>`); - } - } - } else if (V.PC.boobs >= 400) { - if (random(1, 100) > 80) { - r.push(`Your breasts have <span class="lime">gotten heavier</span> alongside your pregnancy.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 500) { - r.push(`They spill dramatically out of your bra now, which means <span class="lime">you've graduated to a C-cup.</span>`); - } - } - } else if (V.PC.boobs >= 300) { - if (random(1, 100) > 75) { - r.push(`Your breasts have <span class="lime">swollen</span> alongside your pregnancy.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 400) { - r.push(`A quick measuring after your top started to feel too constricting reveals <span class="lime">you are now a B-cup!</span>`); - } - } - } else { - if (random(1, 100) > 75) { - r.push(`Your chest <span class="lime">has filled out slightly</span> with your pregnancy.`); - V.PC.boobs += 25; - if (V.PC.boobs >= 300) { - r.push(`They've gotten so big that <span class="lime">you can now fill an A-cup bra.</span>`); - } - } - } - if (V.PC.boobShape !== "saggy" && V.PC.preg > random(V.PC.pregData.normalBirth / 1.25, V.PC.pregData.normalBirth * 2.5) && (V.PC.boobsImplant / V.PC.boobs < 0.5) && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { - r.push(`Your <span class="orange">breasts become saggy</span> in the last stages of pregnancy as your body undergoes changes in anticipation of the forthcoming birth.`); - V.PC.boobShape = "saggy"; - } - } - /* - if (V.PC.preg > V.PC.pregData.normalBirth/1.25 && V.PC.physicalAge >= 18 && V.PC.hips === 1 && V.PC.hipsImplant === 0 && random(1,100) > 90) { - r.push(`${His} hips <span class="lime">widen</span> to better support ${his} gravidity.`); - V.PC.hips += 1; - } else if (V.PC.preg > V.PC.pregData.normalBirth/1.42 && V.PC.physicalAge >= 18 && V.PC.hips === 0 && V.PC.hipsImplant === 0 && random(1,100) > 70) { - r.push(`${His} hips <span class="lime">widen</span> to better support ${his} gravidity.`); - V.PC.hips += 1; - } - */ - } - } - /* --------------- main labor triggers: -------- */ - if (V.PC.preg > V.PC.pregData.normalBirth / 8) { - if (WombBirthReady(V.PC, V.PC.pregData.normalBirth * 1.075) > 0) { // check for really ready fetuses - 43 weeks - max, overdue - V.PC.labor = 1; - } else if (WombBirthReady(V.PC, V.PC.pregData.normalBirth) > 0 && (random(1, 100) > 50)) { // check for really ready fetuses - 40 weeks - normal*/ - V.PC.labor = 1; - } else if (WombBirthReady(V.PC, V.PC.pregData.normalBirth / 1.1111) > 0 && (random(1, 100) > 90)) { // check for really ready fetuses - 36 weeks minimum */ - V.PC.labor = 1; - } - if (V.PC.labor === 1) { - App.Events.addParagraph(el, r); - r = []; - if (V.PC.counter.birthsTotal > 0) { - r.push(App.UI.DOM.makeElement("span", `A dull cramp runs down your middle.`, "red")); - r.push(`You'll be giving birth soon.`); - } else { - r.push(`You begin to experience`); - r.push(App.UI.DOM.makeElement("span", `odd cramps`, "red")); - r.push(`in your lower body. Contractions, more than likely.`); - } - App.Events.addNode(el, r, "div"); - r = []; - } - /* - if (V.dangerousPregnancy === 1 && V.PC.labor !== 1) { - if (V.PC.pregAdaptation < 500) { - miscarriageChance = -10; - miscarriageChance += ((V.PC.bellyPreg / 1000) - V.PC.pregAdaptation); - // this could use to not be linear - if (V.PC.inflation > 0) { - miscarriageChance += 10; - } - miscarriageChance -= (V.PC.curatives === 1 ? 100 : 0); - if (V.PC.health.health < -20) { - miscarriageChance -= (V.PC.health.health); - } else if (V.PC.health.health > 80) { - miscarriageChance -= (V.PC.health.health / 10); - } - if (V.PC.weight < -50) { - miscarriageChance -= (V.PC.weight); - } - if (V.PC.bellyAccessory === "a support band") { - miscarriageChance -= 30; - } - miscarriageChance = Math.round(miscarriageChance); - if (miscarriageChance > random(0, 100)) { - chance = random(1, 100); - if (V.PC.preg >= V.PC.pregData.normalBirth / 1.33) { - V.PC.labor = 1; - miscarriage = 1; - } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.48) { - V.PC.labor = 1, V.PC.prematureBirth = 1; - miscarriage = 1; - } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.6 && chance > 10) { - V.PC.labor = 1, V.PC.prematureBirth = 1; - miscarriage = 1; - } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.73 && chance > 40) { - V.PC.labor = 1, V.PC.prematureBirth = 1; - miscarriage = 1; - } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.81 && chance > 75) { - V.PC.labor = 1, V.PC.prematureBirth = 1; - miscarriage = 1; - } else { - r.push(`${His} overwhelmed body has <span class="orange">forced ${him} to miscarry,</span> possibly saving ${his} life.`); - V.PC.preg = 0; - if (V.PC.sexualFlaw === "breeder") { - r.push(`${He} is <span class="mediumorchid">filled with violent, all-consuming hatred</span> at ${himself} for failing to carry to term and you for allowing this to happen.`); - if (V.PC.pregType > 4) { - r.push(`The loss of so many children at once <span class="red">shatters the distraught breeder's mind.</span>`); - V.PC.fetish = "mindbroken", V.PC.behavioralQuirk = "none", V.PC.behavioralFlaw = "none", V.PC.sexualQuirk = "none", V.PC.sexualFlaw = "none", V.PC.devotion = 0, V.PC.trust = 0; - } else { - r.push(`${He} cares little for what punishment awaits ${his} actions.`); - V.PC.devotion -= 25 * V.PC.pregType; - } - } else if (V.PC.devotion < -50) { - r.push(`${He} is <span class="mediumorchid">filled with violent, consuming hatred</span> and <span class="gold">fear.</span> Even though ${he} knew ${his} bab`); - if (V.PC.pregType > 1) { - r.push(`ies were`); - } else { - r.push(`y was`); - } - r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); - if (V.PC.pregType > 1) { - r.push(`them`); - } else { - r.push(`it`); - } - r.push(` and blames you for the loss.`); - V.PC.devotion -= 25, V.PC.trust -= 25; - } else if (V.PC.devotion < -20) { - r.push(`${He} is <span class="mediumorchid">afflicted by desperate, inconsolable grief</span> and <span class="gold">horror.</span> Even though ${he} knew ${his} bab`); - if (V.PC.pregType > 1) { - r.push(`ies were`); - } else { - r.push(`y was`); - } - r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); - if (V.PC.pregType > 1) { - r.push(`them`); - } else { - r.push(`it`); - } - r.push(`.`); - V.PC.devotion -= 10, V.PC.trust -= 20; - } else if (V.PC.fetish === "pregnancy") { - r.push(`${He} is <span class="mediumorchid">filled with deep regret</span> and <span class="gold">fear.</span>`); - if (V.PC.fetishKnown === 1) { - r.push(`To a pregnancy fetishist, ending it like this hurts far worse than birth ever would.`); - } else { - r.push(`It appears ${he} was more attached to ${his} baby bump than ${he} let on and is hurting even more for it.`); - } - fetishModifier = V.PC.fetishStrength / 2; - V.PC.devotion -= 1 * fetishModifier, V.PC.trust -= 1 * fetishModifier; - } else if (V.PC.devotion <= 20) { - r.push(`${He} is <span class="mediumorchid">consumed by enduring sorrow</span> and <span class="gold">horror.</span> Even though ${he} knew ${his} bab`); - if (V.PC.pregType > 1) { - r.push(`ies were`); - } else { - r.push(`y was`); - } - r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); - if (V.PC.pregType > 1) { - r.push(`them`); - } else { - r.push(`it`); - } - r.push(`.`); - V.PC.devotion -= 5, V.PC.trust -= 5; - } else if (V.PC.devotion <= 50) { - r.push(`${He} is dully obedient. ${He} has been broken to slave life so thoroughly that even this is neither surprising nor affecting.`); - } else { - r.push(`${He} is <span class="mediumorchid">disappointed by this development</span> and <span class="gold">afraid</span> of your reaction. By failing to carry to term, ${he} has failed your will.`); - V.PC.devotion -= 10, V.PC.trust -= 10; - } - TerminatePregnancy(V.PC); - actX(V.PC, "abortions"); - if (V.PC.abortionTat > -1) { - V.PC.abortionTat++; - r.push(`The temporary tattoo of a child has been replaced with ${his} `); - V.ordinalSuffix(V.PC.abortionTat) - r.push(` crossed out infant.`); - cashX(forceNeg(V.modCost), "slaveMod", V.PC); - } - miscarriage = 1; - } - } - } - if (V.seeExtreme === 1) { - if (miscarriage !== 1 && V.PC.bellyPreg >= 100000 && V.PC.geneMods.rapidCellGrowth !== 1) { - // If he can't relieve the pressure that way, will he hold? - if (V.PC.bellyPreg >= 500000 || V.PC.wombImplant !== "restraint") { - if ((V.PC.belly > (V.PC.pregAdaptation * 3200)) || V.PC.bellyPreg >= 500000) { - burstChance = -80; - burstChance += ((V.PC.belly / 1000) - V.PC.pregAdaptation); - // this could use to not be linear - if (V.PC.health.health < -20) { - burstChance -= (V.PC.health.health); - } else if (V.PC.health.health > 80) { - burstChance -= (V.PC.health.health / 10); - } - if (V.PC.weight < 0) { - burstChance -= V.PC.weight; - } - burstChance -= V.PC.bellySag; - burstChance -= V.PC.muscles; - if (V.PC.bellyAccessory === "a support band") { - burstChance -= 10; - } - if (V.PC.pregControl === "slow gestation") { - burstChance -= 20; - } - if (V.PC.assignment === Job.CLINIC) { - if (S.Nurse) { - burstChance -= 100; - } else { - burstChance -= 30; - } - } else if (V.PC.assignment === Job.DAIRY && V.dairyPregSetting === 3) { - burstChance -= 250; - } - if (V.PC.pregControl === "speed up") { - if (burstChance > 0) { - burstChance *= 4; - } - } - burstChance = Math.round(burstChance); - if (burstChance > random(0, 100)) { - V.PC.burst = 1; - } else { - r.push(`Constant <span class="red">`); - if (V.PC.geneticQuirks.uterineHypersensitivity === 2) { - r.push(`painful orgasms`); - } else { - r.push(`sharp pains`); - } - r.push(`</span> from ${his} womb strongly suggest <span class="red">${his} body is beginning to break.</span>`); - } - } - } - } - } - } - */ - } + r.push(App.EndWeek.Player.diet()); + + App.Events.addParagraph(el, r); + r = []; + + if (V.useTabs === 1) { + App.UI.DOM.appendNewElement("h2", el, `Physical`); + } + + r.push(App.EndWeek.Player.longTermEffects()); + + App.Events.addParagraph(el, r); + r = []; + + if (V.useTabs === 1) { + App.UI.DOM.appendNewElement("h2", el, `Drugs`); } + // r.push(App.EndWeek.Player.drugs()); + + + App.Events.addParagraph(el, r); return el; }; diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js index f83ea91958a48027201993b0dd5e6e414e844a0e..e5de533dc11811dff588d6aa7bd6ad4b97850041 100644 --- a/src/endWeek/endWeek.js +++ b/src/endWeek/endWeek.js @@ -268,6 +268,9 @@ globalThis.endWeek = (function() { if (V.PC.pregWeek < 0) { V.PC.pregWeek++; } + if (V.PC.lactation === 1 && V.PC.bellyPreg < 1500) { + V.PC.lactationDuration--; + } } function threaten() { diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js index a3901eff9af6da10dc1fe4047554c7dd11f71508..e3a899688e268367af6ac92e248acac519b101e0 100644 --- a/src/endWeek/nextWeek/nextWeek.js +++ b/src/endWeek/nextWeek/nextWeek.js @@ -30,42 +30,21 @@ App.EndWeek.nextWeek = function() { V.PC.ovaryAge += either(0.8, 0.9, 0.9, 1.0, 1.0, 1.0, 1.1); } if (V.PC.physicalAge <= 18 && V.loliGrow > 0) { - // this is temporary to make physDev not wig out! - if (V.PC.genes === "XX") { - if (V.PC.pubertyXX === 1) { - if (V.PC.pubertyXY === 1) { - V.PC.hormoneBalance = 20; - } else { - V.PC.hormoneBalance = 60; - } - } else { - if (V.PC.pubertyXY === 1) { - V.PC.hormoneBalance = -20; - } else { - V.PC.hormoneBalance = 20; - } - } - } else if (V.PC.genes === "XY") { - if (V.PC.pubertyXX === 1) { - if (V.PC.pubertyXY === 1) { - V.PC.hormoneBalance = 20; - } else { - V.PC.hormoneBalance = 40; - } - } else { - if (V.PC.pubertyXY === 1) { - V.PC.hormoneBalance = -40; - } else { - V.PC.hormoneBalance = 20; - } - } - } App.EndWeek.Shared.physicalDevelopment(V.PC, true); } agePCEffects(); } } } + if (V.PC.induceLactation > 0) { + V.PC.induceLactation--; + } + if (V.PC.lactation === 1) { + if (V.PC.lactationDuration === 1) { + V.PC.boobsMilk = Math.round(10 * V.PC.lactationAdaptation); + V.PC.boobs += V.PC.boobsMilk; + } + } if (V.menstruation === 1) { // TODO } else if (V.PC.geneticQuirks.superfetation === 2 && V.PC.womb.length > 0) { diff --git a/src/endWeek/player/prDiet.js b/src/endWeek/player/prDiet.js index d2cf00e56fd4b612efdfb86d32c3b45b116ba290..dce0eaa4af5c7d46b04044992bb5074849958e89 100644 --- a/src/endWeek/player/prDiet.js +++ b/src/endWeek/player/prDiet.js @@ -26,7 +26,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) { function playerFoodEffects() { switch (PC.diet) { case "healthy": - r.push(`You keep to a healthy, if exceptional, diet.`); + r.push(`You keep to a healthy, high-quality diet befitting your station.`); break; case "restricted": weightLoss = 4; diff --git a/src/endWeek/player/prHormones.js b/src/endWeek/player/prHormones.js index 7c6d7811917be33dbfef98c6a04c79d0d39d232d..39b4824f0e53e26f75acd14c22eb450e5d197016 100644 --- a/src/endWeek/player/prHormones.js +++ b/src/endWeek/player/prHormones.js @@ -1,12 +1,10 @@ -App.EndWeek.Player.hormones = function(PC = V.PC) { +App.EndWeek.Player.hormones = function(PC, selfManufactured, hormonePower) { const r = []; const gigantomastiaMod = PC.geneticQuirks.gigantomastia === 2 ? (PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; const rearLipedemaMod = PC.geneticQuirks.rearLipedema === 2 ? 1 : 0; const boobSize = PC.boobs - PC.boobsImplant - PC.boobsMilk; const buttSize = PC.butt - PC.buttImplant; - const selfManufactured = false; // Once a means to buy the recipes is added, this will become a ternary. - const hormonePower = selfManufactured ? V.hormoneUpgradePower : 1; // Prescribed ones are better to match their base price. let normBreasts; let normButt; const faceValue = PC.face - PC.faceImplant; @@ -41,13 +39,17 @@ App.EndWeek.Player.hormones = function(PC = V.PC) { } else if (PC.hormoneBalance <= -100) { r.push(`Your hormone balance is overly masculine.`); } else if (PC.hormoneBalance < -20) { - r.push(`You have a masculine hormone balance`); - if (PC.hormones === 1) { - r.push(r.pop() + `, but are taking female ones in an attempt to become feminine.`); - } else if (PC.hormones === -1) { - r.push(`being supplemented by your use of artificial hormones.`); + if (PC.hormones === 0 && PC.genes === "XY") { + r.push(`Your hormone balance is normal.`); } else { - r.push(r.pop() + `.`); + r.push(`You have a masculine hormone balance`); + if (PC.hormones === 1) { + r.push(r.pop() + `, but are taking female ones in an attempt to become feminine.`); + } else if (PC.hormones === -1) { + r.push(`being supplemented by your use of artificial hormones.`); + } else { + r.push(r.pop() + `.`); + } } } else if (PC.hormoneBalance >= 400) { r.push(`You are overflowing with feminine hormones`); @@ -65,13 +67,17 @@ App.EndWeek.Player.hormones = function(PC = V.PC) { } else if (PC.hormoneBalance >= 100) { r.push(`Your hormone balance is overly feminine.`); } else if (PC.hormoneBalance > 20) { - r.push(`You have a feminine hormone balance`); - if (PC.hormones === -1) { - r.push(r.pop() + `, but are taking male ones in an attempt to become more masculine.`); - } else if (PC.hormones === 1) { - r.push(`being supplemented by your use of artificial hormones.`); + if (PC.hormones === 0 && PC.genes === "XX") { + r.push(`Your hormone balance is normal.`); } else { - r.push(r.pop() + `.`); + r.push(`You have a feminine hormone balance`); + if (PC.hormones === -1) { + r.push(r.pop() + `, but are taking male ones in an attempt to become more masculine.`); + } else if (PC.hormones === 1) { + r.push(`being supplemented by your use of artificial hormones.`); + } else { + r.push(r.pop() + `.`); + } } } else { r.push(`Your hormone balance is very androgynous`); diff --git a/src/endWeek/player/prInflation.js b/src/endWeek/player/prInflation.js index d467536b04356e1777d790aa34dabc5819d37d1f..94afe36a6874bade19da95c42c00a647a2b3030d 100644 --- a/src/endWeek/player/prInflation.js +++ b/src/endWeek/player/prInflation.js @@ -130,6 +130,9 @@ App.EndWeek.Player.inflation = function(PC = V.PC) { healthDamage(PC, 5); } PC.chem += 2 * PC.inflation; + if (PC.geneticQuirks.galactorrhea === 2 && random(1, 100) < PC.hormoneBalance && PC.lactation === 0) { + PC.inappropriateLactation = 1; + } if (PC.addict > 0) { PC.addict += PC.inflation * 3; } else if (jsRandom(1, 100) < 40 + (20 * PC.inflation)) { diff --git a/src/endWeek/player/prLongTermEffects.js b/src/endWeek/player/prLongTermEffects.js new file mode 100644 index 0000000000000000000000000000000000000000..0df5a75369e394b9e58b5cfc0d1fa3238d850ef1 --- /dev/null +++ b/src/endWeek/player/prLongTermEffects.js @@ -0,0 +1,952 @@ +App.EndWeek.Player.longTermEffects = function(PC = V.PC) { + const r = []; + + const gigantomastiaMod = PC.geneticQuirks.gigantomastia === 2 ? (PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; + const rearQuirk = PC.geneticQuirks.rearLipedema === 2 ? 2 : 0; + const uterineHypersensitivityMod = PC.geneticQuirks.uterineHypersensitivity === 2 ? 2 : 1; + const oldEnergy = PC.energy; + + asexualOvariesBurnout(); + piercingEffects(); + if (PC.lactation >= 2 || (PC.lactation > 0 && PC.lactationAdaptation >= 100)) { + heavyLactationEffects(); + } + implantEffects(); + hormoneBalance(); + if (PC.pubertyXX === 0 || PC.pubertyXY === 0) { + puberty(); + } + r.push(App.EndWeek.Player.pregnancy()); + if (PC.bellyFluid >= 1500) { + r.push(App.EndWeek.Player.inflation()); + } + bellySagging(); + r.push(App.EndWeek.Player.longTermPhysicalEffects()); + anaphrodisiacEffects(PC, oldEnergy); // must come after all .energy gains! + if (PC.preg > PC.pregData.normalBirth / 8) { + mainLaborTriggers(); + } + endWeekHealthDamage(PC); // contained in healthFunctions.js + slaveDeath(); // We can't die just yet. + if (!["bob cut", "buzzcut", "pixie cut", "shaved", "trimmed"].includes(PC.hStyle) && PC.bald !== 1 && PC.haircuts === 0) { + hairGrowth(); + } + + const frag = document.createDocumentFragment(); + $(frag).append(...App.Events.spaceSentences(r)); + return frag; + + function boobSize(PC) { + return PC.boobs - PC.boobsImplant - PC.boobsMilk; + } + + function asexualOvariesBurnout() { // This block needs to be reflected in PC.need generation. + if (PC.ovaImplant === "asexual" && isFertile(PC) && (PC.preg === 0 || (PC.preg >= 0 && PC.geneticQuirks.superfetation === 2))) { + r.push(`The frequent climaxes brought about by your ovarian modification's internal ejaculations keep you sexually sated.`); + if (PC.energy >= 10) { + r.push(`However, the constant self-gratification <span class="libido dec">leaves sex less satisfying.</span>`); + PC.energy -= 10; + } + PC.need = 0; + } + } + + function piercingEffects() { + if (PC.piercing.vagina.weight > 1) { + if (PC.vagina > -1 && PC.labia < 2 && random(1, 100) > 90) { + r.push(`The amount of weight hangning from your labia <span class="change positive">stretches out your pussylips a bit.</span>`); + PC.labia += 1; + } + } + if (PC.piercing.nipple.weight === 1) { + if (PC.nipples === "tiny") { + if (random(1, 100) > 95) { + r.push(`Your piercings keep your nipples half-hard all the time, and <span class="change positive">eventually they just stay that way.</span>`); + PC.nipples = "cute"; + } + } else if (PC.nipples === "partially inverted") { + if (random(1, 100) > 70) { + r.push(`Your piercings keep your nipples half-hard all the time, which <span class="change positive">eventually protrudes them permanently.</span>`); + if (random(1, 2) === 1) { + r.push(`It turns out they're kind of cute.`); + PC.nipples = "cute"; + } else { + r.push(`It turns out they're really puffy.`); + PC.nipples = "puffy"; + } + } + } else if (PC.nipples === "inverted") { + if (random(1, 100) > 90) { + r.push(`Your piercings keep your nipples half-hard all the time, which eventually <span class="change positive">eventually protrudes them permanently.</span>`); + if (random(1, 2) === 1) { + r.push(`It turns out they're kind of cute.`); + PC.nipples = "cute"; + } else { + r.push(`It turns out they're really puffy.`); + PC.nipples = "puffy"; + } + } + } else if (PC.nipples === "flat") { + if (random(1, 100) > 90) { + r.push(`Your piercings tug at your nipples constantly, eventually <span class="change positive">preventing the fat nubs from flattening out again.</span>`); + PC.nipples = "huge"; + } + } + } else if (PC.piercing.nipple.weight === 2) { + if (PC.nipples === "tiny") { + if (random(1, 100) > 80) { + r.push(`The piercings in your nipples are so extensive and heavy that the weight <span class="change positive">stretches and lengthens them.</span>`); + PC.nipples = "cute"; + } + } else if (PC.nipples === "partially inverted") { + if (random(1, 100) > 50) { + r.push(`The piercings in your nipples are so extensive and heavy that the weight <span class="change positive">permanently protrudes them.</span>`); + if (random(1, 2) === 1) { + r.push(`It turns out they're kind of cute.`); + PC.nipples = "cute"; + } else { + r.push(`It turns out they're really puffy.`); + PC.nipples = "puffy"; + } + } + } else if (PC.nipples === "inverted") { + if (random(1, 100) > 70) { + r.push(`The piercings in your nipples are so extensive that they are kept <span class="change positive">permanently protruded.</span>`); + if (random(1, 2) === 1) { + r.push(`It turns out they're as massive as the metal hanging from them.`); + PC.nipples = "huge"; + } else { + r.push(`It turns out they're really puffy.`); + PC.nipples = "puffy"; + } + } + } else if (PC.nipples === "flat") { + if (random(1, 100) > 50) { + r.push(`The piercings in your nipples are so extensive that they eventually <span class="change positive">stretch out into huge nubs.</span>`); + PC.nipples = "huge"; + } + } + } + } + + function heavyLactationEffects() { + if (PC.nipples !== "huge" && PC.nipples !== "fuckable") { + if (PC.nipples === "tiny") { + if (random(1, 100) > 70) { + r.push(`Your tiny nipples are unable to keep up with the output demanded by your heavy lactation, <span class="change positive">stretching and engorging</span> painfully until your milk can flow properly.`); + PC.nipples = "cute"; + } + } else if (PC.nipples === "cute") { + if (random(1, 100) > 80) { + r.push(`Your nipples are constantly swollen from your heavy lactation, and as they become accustomed to the flow of milk, <span class="change positive">grow puffy</span> and engorged.`); + PC.nipples = "puffy"; + } + } else if (PC.nipples === "partially inverted" || PC.nipples === "inverted") { + if (random(1, 100) > 80) { + r.push(`You lactate so much that your nipples never get a chance to retreat back to their inverted state. Lactation has <span class="change positive">permanently protruded them,</span> leaving them engorged and puffy.`); + PC.nipples = "puffy"; + } + } else if (PC.nipples === "flat") { + if (random(1, 100) > 50) { + r.push(`You lactate so much that your nipples just can't stay flattened. Lactation has <span class="change positive">permanently engorged them,</span> leaving them positively massive.`); + PC.nipples = "huge"; + } + } else { + if (random(1, 100) > 90) { + r.push(`Lactation has <span class="change positive">swollen your nipples</span> to an absurd size, giving you milky teats worthy of the cow you are.`); + PC.nipples = "huge"; + } + } + } + } + + function implantEffects() { + let implantsSwellBoobs = 0; + let effect; + if (PC.boobsImplantType === "string") { + r.push(`String implants absorb fluid, and yours are no exception; they're <span class="change positive">slightly larger</span> than last week.`); + PC.boobsImplant += 50; + PC.boobs += 50; + effect = random(1, 10); + if (PC.boobs > 50000) { + r.push(`Your breasts just can not handle them growing any larger, so some serum is drained from them.`); + PC.boobs -= 100; + PC.boobsImplant -= 100; + } else if (PC.boobsImplant > 25000 && effect >= 2) { + r.push(`Their growth <span class="health dec">is painful,</span> as they greatly irritate the tissue of your breasts in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 20); + } else if (PC.boobsImplant > 15000 && effect >= 3) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your breasts in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 10); + } else if (PC.boobsImplant > 10000 && effect >= 4) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your breasts in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 10); + } else if (PC.boobsImplant > 8000 && effect >= 5) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 10); + } else if (PC.boobsImplant > 6000 && effect >= 6) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 10); + } else if (PC.boobsImplant > 4500 && effect >= 7) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 10); + } else if (PC.boobsImplant > 3000 && effect >= 8) { + r.push(`Their growth <span class="health dec">is uncomfortable,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 7); + } else if (PC.boobsImplant > 2000 && effect >= 9) { + r.push(`Their growth <span class="health dec">is a bit uncomfortable,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 5); + } else if (PC.boobsImplant > 1000 && effect > 9) { + r.push(`Their growth <span class="health dec">is a bit uncomfortable,</span> as they irritate the tissue of your breasts in order to produce the fluid needed to swell.`); + healthDamage(PC, 3); + } + } + if (PC.boobsImplant >= PC.boobs + PC.boobsMilk && PC.boobsImplant > 0) { + /* catch in case breast implants get larger than boobs */ + r.push(`Your breast tissue has naturally <span class="change positive">stretched and grown</span> to better accommodate your implants.`); + PC.boobs = PC.boobsImplant + PC.boobsMilk + 10; + } else if (PC.boobsImplant > 1000) { + if (PC.boobs - PC.boobsImplant < 1000) { + if (random(1, 100) > 60) { + implantsSwellBoobs = 1; + } + } + } else if (PC.boobsImplant > 600) { + if (PC.boobs - PC.boobsImplant < 500) { + if (random(1, 100) > 60) { + implantsSwellBoobs = 1; + } + } + } else if (PC.boobsImplant > 0) { + if (PC.boobs - PC.boobsImplant < 300) { + if (random(1, 100) > 60) { + implantsSwellBoobs = 1; + } + } + } + if (implantsSwellBoobs === 1) { + r.push(`Your breast tissue has naturally <span class="change positive">stretched and grown</span> to better accommodate your implants.`); + PC.boobs += 50; + } + if (PC.buttImplantType === "string") { + r.push(`Your string implants absorb fluid <span class="change positive">slowly swelling your ass</span> week to week.`); + PC.buttImplant += .25; + PC.butt += .25; + if (PC.butt + PC.buttImplant > 10 && PC.buttImplant > 1) { + r.push(`Your body is unable to handle them at their current size, so some serum is drained from them.`); + PC.butt -= 1; + PC.buttImplant -= 1; + } + effect = random(1, 8); + if (PC.buttImplant > 7 && effect >= 2) { + r.push(`Their growth <span class="health dec">is painful,</span> as they greatly irritate the tissue of your cheeks in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 20); + } else if (PC.buttImplant > 6 && effect >= 2) { + r.push(`Their growth <span class="health dec">is painful,</span> as they greatly irritate the tissue of your cheeks in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 20); + } else if (PC.buttImplant > 5 && effect >= 3) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your cheeks in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 10); + } else if (PC.buttImplant > 4 && effect >= 4) { + r.push(`Their growth <span class="health dec">is a bit painful,</span> as they irritate the tissue of your cheeks in order to produce the large amount of fluid needed to continue swelling.`); + healthDamage(PC, 10); + } else if (PC.buttImplant > 3 && effect >= 5) { + r.push(`Their growth <span class="health dec">is uncomfortable,</span> as they irritate the tissue of your cheeks in order to produce the fluid needed to swell.`); + healthDamage(PC, 5); + } else if (PC.buttImplant > 2 && effect >= 6) { + r.push(`Their growth <span class="health dec">is uncomfortable,</span> as they irritate the tissue of your cheeks in order to produce the fluid needed to swell.`); + healthDamage(PC, 5); + } else if (PC.buttImplant > 1 && effect >= 7) { + r.push(`Their growth <span class="health dec">is a bit uncomfortable,</span> as they irritate the tissue of your cheeks in order to produce the fluid needed to swell.`); + healthDamage(PC, 3); + } else if (PC.buttImplant > 0 && effect > 7) { + r.push(`Their growth <span class="health dec">is a bit uncomfortable,</span> as they irritate the tissue of your cheeks in order to produce the fluid needed to swell.`); + healthDamage(PC, 3); + } + } + } + + function hormoneBalance() { + const selfManufactured = false; // Once a means to buy the recipes is added, this will become a ternary. + const hormonePower = selfManufactured ? V.hormoneUpgradePower : 1; // Prescribed ones are better to match their base price. + if (PC.diet === "XX") { + PC.hormoneBalance += 4; + } else if (PC.diet === "XXY") { + if (PC.hormoneBalance > 0) { + PC.hormoneBalance -= 8; + } else if (PC.hormoneBalance < 0) { + PC.hormoneBalance += 8; + } + } else if (PC.diet === "XY") { + PC.hormoneBalance -= 4; + } + if (PC.drugs === "fertility drugs") { + PC.hormoneBalance += 4; + } else if (PC.drugs === "female hormone injections") { + PC.hormoneBalance += 20; + } else if (PC.drugs === "male hormone injections") { + PC.hormoneBalance -= 20; + } else if (PC.drugs === "testicle enhancement") { + PC.hormoneBalance -= 4; + } else if (PC.drugs === "steroids") { + PC.hormoneBalance -= 4; + } else if (PC.drugs === "super fertility drugs") { + PC.hormoneBalance += 8; + } else if (PC.drugs === "hyper testicle enhancement") { + PC.hormoneBalance -= 12; + } + if (PC.hormones === 1) { + PC.hormoneBalance += 4 + (hormonePower * 2); + } else if (PC.hormones === -1) { + PC.hormoneBalance -= 4 + (hormonePower * 2); + } + if (PC.drugs === "hormone enhancers") { + if (PC.hormones === 1) { + PC.hormoneBalance += 4 + (hormonePower * 2); + } else if (PC.hormones === -1) { + PC.hormoneBalance -= 4 + (hormonePower * 2); + } else { + PC.drugs = "no drugs"; + r.push(`You aren't taking hormones, so there's really no reason to take hormone enhancers, is there?`); + } + } + /* NCS helps primary sexual maturity */ + if (PC.geneMods.NCS === 1) { + if (PC.genes === "XX" && PC.hormoneBalance > 0 && PC.pubertyXX === 0) { + PC.hormoneBalance = Math.clamp(PC.hormoneBalance * 1.5, -400, 400); + } else if (PC.genes === "XY" && PC.hormoneBalance < 0 && PC.pubertyXY === 0) { + PC.hormoneBalance = Math.clamp(PC.hormoneBalance * 1.5, -400, 400); + } else if ((PC.ovaries === 1 || PC.mpreg === 1) && PC.pubertyXX === 0) { + PC.hormoneBalance += 20; + } else if (PC.balls > 0 && PC.pubertyXY === 0) { + PC.hormoneBalance -= 20; + } else if (PC.genes === "XX") { + PC.hormoneBalance += 5; + } else if (PC.genes === "XY") { + PC.hormoneBalance -= 5; + } + } + /* androgyny really wants to sit around 0 and will fight changes to do so */ + if (PC.geneticQuirks.androgyny === 2) { + if (PC.hormoneBalance > 6) { + PC.hormoneBalance -= 10; + } else if (PC.hormoneBalance < -6) { + PC.hormoneBalance += 10; + } + } + PC.hormoneBalance = Math.clamp(PC.hormoneBalance, -500, 500); + if (PC.drugs !== "hormone blockers") { + r.push(App.EndWeek.Player.hormones(PC, selfManufactured, hormonePower)); + } else if (PC.drugs === "hormone blockers") { + r.push(`The hormone blockers you're on on suppress your hormones, natural or not.`); + if (PC.energy > 20) { + r.push(`You sex drive is similarly <span class="stat drop">suppressed.</span>`); + PC.energy--; + } + if (PC.hormoneBalance > 0) { + PC.hormoneBalance -= 5; + } else if (PC.hormoneBalance < 0) { + PC.hormoneBalance += 5; + } + } + + if (PC.genes === "XX") { + if ((PC.ovaries === 1 || PC.mpreg === 1) && PC.pubertyXX > 0) { + if (PC.balls > 0 && PC.ballType !== "sterile" && PC.pubertyXY > 0) { + if (PC.hormoneBalance > 10) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance - 10) / 40); + } else if (PC.hormoneBalance < 10) { + PC.hormoneBalance += Math.ceil((10 - PC.hormoneBalance) / 40); + } + } else { + if (PC.hormoneBalance > 50) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance - 50) / 40); + } else if (PC.hormoneBalance < 50) { + PC.hormoneBalance += Math.ceil((50 - PC.hormoneBalance) / 40); + } + } + } else { + if (PC.balls > 0 && PC.ballType !== "sterile" && PC.pubertyXY > 0) { + if (PC.hormoneBalance > -30) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance + 30) / 40); + } else if (PC.hormoneBalance < -30) { + PC.hormoneBalance += Math.ceil((-30 - PC.hormoneBalance) / 40); + } + } else { + if (PC.hormoneBalance > 10) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance - 10) / 40); + } else if (PC.hormoneBalance < 10) { + PC.hormoneBalance += Math.ceil((10 - PC.hormoneBalance) / 40); + } + } + } + } else if (PC.genes === "XY") { + if ((PC.ovaries === 1 || PC.mpreg === 1) && PC.pubertyXX > 0) { + if (PC.balls > 0 && PC.ballType !== "sterile" && PC.pubertyXY > 0) { + if (PC.hormoneBalance > -10) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance + 10) / 40); + } else if (PC.hormoneBalance < -10) { + PC.hormoneBalance += Math.ceil((-10 - PC.hormoneBalance) / 40); + } + } else { + if (PC.hormoneBalance > 30) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance - 30) / 40); + } else if (PC.hormoneBalance < 30) { + PC.hormoneBalance += Math.ceil((30 - PC.hormoneBalance) / 40); + } + } + } else { + if (PC.balls > 0 && PC.ballType !== "sterile" && PC.pubertyXY > 0) { + if (PC.hormoneBalance > -50) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance + 50) / 40); + } else if (PC.hormoneBalance < -50) { + PC.hormoneBalance += Math.ceil((-50 - PC.hormoneBalance) / 40); + } + } else { + if (PC.hormoneBalance > -10) { + PC.hormoneBalance -= Math.ceil((PC.hormoneBalance + 10) / 40); + } else if (PC.hormoneBalance < -10) { + PC.hormoneBalance += Math.ceil((-10 - PC.hormoneBalance) / 40); + } + } + } + } + if (PC.geneticQuirks.galactorrhea === 2 && random(1, 100) < PC.hormoneBalance && PC.lactation === 0) { + PC.inappropriateLactation = 1; + } + } + + function puberty() { + if (V.precociousPuberty === 1) { + let earlyPubertyFlag = 0; + let precocious = 0; + if (PC.physicalAge < PC.pubertyAgeXX && (PC.ovaries === 1 || PC.mpreg === 1) && PC.pubertyXX === 0) { // Female type + /* Just having NCS speeds precocious Puberty, but also hormonal puberty affects are + * increased while secondary growth is suppressed + */ + if (PC.geneMods.NCS === 1) { + precocious -= 0.8; + } + if (PC.diet === "XX" || PC.diet === "XXY") { + precocious -= 0.1; + } else if (PC.diet === "fertility") { + precocious -= 0.1; + } + if (PC.drugs === "fertility drugs") { + precocious -= 0.1; + } else if (PC.drugs === "female hormone injections") { + precocious -= 1; + } else if (PC.drugs === "male hormone injections") { + precocious += 1; + } else if (PC.drugs === "testicle enhancement") { + precocious += 0.1; + } else if (PC.drugs === "steroids") { + precocious += 0.2; + } else if (PC.drugs === "super fertility drugs") { + precocious -= 0.5; + if (PC.geneMods.NCS === 0) { + r.push(`You feel an <span class="change positive">unusually warm sensation</span> in your lower belly and chest.`); + if (boobSize(PC) < 400 * gigantomastiaMod && random(1, 100) < 30) { + r.push(`Your <span class="change positive">breasts are budding.</span>`); + PC.boobs += 50; + } + if (PC.hips < 2 && random(1, 100) < 10 * uterineHypersensitivityMod) { + r.push(`Oddly, <span class="change positive">your hips have widened.</span>`); + PC.hips += 1; + } + if (PC.butt < 4 && random(1, 100) < 10 + (5 * rearQuirk)) { + r.push(`There's no mistaking that <span class="change positive">your butt has gotten bigger.</span>`); + PC.butt += 1; + } + } + } else if (PC.drugs === "hyper testicle enhancement") { + precocious += .5; + } + if (PC.hormones === 1) { + precocious -= 0.1; + } else if (PC.hormones === -1) { + precocious += 0.2; + } + if (PC.drugs === "hormone enhancers") { + if (PC.hormones === 1) { + precocious -= 0.1; + } else if (PC.hormones === -1) { + precocious += 0.1; + } + } else if (PC.drugs === "hormone blockers") { + precocious += 1; + } + if (PC.geneticQuirks.neoteny >= 2) { + precocious += 0.1; + } + if (PC.geneMods.NCS === 1) { + precocious *= 2; + } + if (PC.geneticQuirks.progeria === 2) { + precocious -= 10; + } + PC.pubertyAgeXX += precocious; + if (PC.physicalAge < PC.pubertyAgeXX && PC.physicalAge > PC.pubertyAgeXX - 3 && PC.pubertyAgeXX < V.fertilityAge) { + earlyPubertyFlag = 1; + } + } + if (PC.physicalAge < PC.pubertyAgeXY && PC.balls >= 1 && PC.pubertyXY === 0) { // Male type + precocious = 0; + /* Just having NCS speeds precocious Puberty, but also hormonal puberty affects are increased while secondary growth is suppressed */ + if (PC.geneMods.NCS === 1) { + precocious -= 0.8; + } + if (PC.diet === "XY" || PC.diet === "XXY") { + precocious -= 0.1; + } + if (PC.drugs === "fertility drugs") { + precocious += 0.2; + } else if (PC.drugs === "female hormone injections") { + precocious += 1; + } else if (PC.drugs === "male hormone injections") { + precocious -= 1; + } else if (PC.drugs === "testicle enhancement") { + precocious -= 0.1; + } else if (PC.drugs === "steroids") { + precocious -= 0.2; + } else if (PC.drugs === "hyper testicle enhancement") { + precocious -= 0.5; + if (PC.geneMods.NCS === 0) { + r.push(`You feel an <span class="change positive">unusual heat</span> in your groin. It feels good to touch.`); + if (PC.dick < 4 && random(1, 100) < 30) { + r.push(`You penis has grown <span class="change positive">heavy, hot and oversensitive.</span>`); + PC.dick += 1; + } + if (PC.balls < 4 && random(1, 100) < 30) { + r.push(`Not only are your balls <span class="change positive">heavy and tingling,</span> but you feel like you've been leaking a little.`); + PC.balls += 1; + } + } + } else if (PC.drugs === "super fertility drugs") { + precocious -= 1; + } + if (PC.hormones === 1) { + precocious += 0.2; + } else if (PC.hormones === -1) { + precocious -= 0.1; + } + if (PC.drugs === "hormone enhancers") { + if (PC.hormones === 1) { + precocious += 0.1; + } else if (PC.hormones === -1) { + precocious -= 0.1; + } + } else if (PC.drugs === "hormone blockers") { + precocious += 1; + } + if (PC.geneticQuirks.neoteny >= 2) { + precocious += 0.1; + } + if (PC.geneMods.NCS === 1) { + precocious *= 2; + } + if (PC.geneticQuirks.progeria === 2) { + precocious -= 10; + } + PC.pubertyAgeXY += precocious; + if (PC.physicalAge < PC.pubertyAgeXY && PC.physicalAge > PC.pubertyAgeXY - 3 && PC.pubertyAgeXY < V.potencyAge && earlyPubertyFlag !== 1) { + earlyPubertyFlag = 1; + } + } + if (earlyPubertyFlag === 1) { + r.push(`It looks like you are <span class="puberty">beginning to go through puberty,</span> if a bit early.`); + } + } + if (PC.ovaries === 1 || PC.mpreg === 1) { + if (PC.pubertyXX === 0) { + if (PC.physicalAge >= PC.pubertyAgeXX) { + PC.pubertyXX = 1; + r.push(`After several days of unrelenting pain in your stomach, you have your first period.`); + if (PC.genes === "XX") { + r.push(`<span class="puberty">You're a woman now.</span>`); + } else { + r.push(`<span class="puberty">Your ladyparts have matured</span> and are now fully functional.`); + } + if (PC.geneticQuirks.gigantomastia === 3 && random(1, 100) < PC.hormoneBalance) { + PC.geneticQuirks.gigantomastia = 2; + } + if (PC.geneticQuirks.macromastia === 3 && random(1, 100) < PC.hormoneBalance) { + PC.geneticQuirks.macromastia = 2; + } + if (PC.geneticQuirks.galactorrhea === 3) { + PC.geneticQuirks.galactorrhea = 2; + if (random(1, 100) < PC.hormoneBalance && PC.lactation === 0) { + PC.inappropriateLactation = 1; + } + } + } + } + } + if (PC.balls > 0 && PC.ballType !== "sterile") { + if (PC.pubertyXY === 0) { + if (PC.physicalAge >= PC.pubertyAgeXY) { + PC.pubertyXY = 1; + r.push(`You wake up from a wonderful dream only to discover you've wet the bed.`); + if (S.Concubine && fuckSlavesLength() >= 1) { + r.push(`Your giggling bedslaves coddle and carress you before enlightening your sleep-fogged mind as to just what happened the best way they know how.`); + if (PC.genes === "XY") { + r.push(`<span class="puberty">You became a man that night.</span>`); + } else { + r.push(`<span class="puberty">You know what it feels like to be a man now.</span>`); + } + } else { + r.push(`You've been feeling very amorous lately, and this only solidifies that ${(PC.genes === "XY") ? "you're becoming a man" : "your maleness has reached maturity"}. Luckily for you, you're living the ideal life to satisfy your newfound needs.`); + } + + if (PC.geneticQuirks.galactorrhea === 3) { + PC.geneticQuirks.galactorrhea = 2; + if (random(1, 100) < PC.hormoneBalance && PC.lactation === 0) { + PC.inappropriateLactation = 1; + } + } + } + } + } + } + + function bellySagging() { + if (PC.belly >= 1000000) { + if (PC.bellySag < 50) { + PC.bellySag += 1; + if (PC.preg > 0) { + PC.bellySagPreg += 1; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 50) { + PC.bellySagPreg += 1; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 3; + if (PC.preg > 0) { + PC.bellySagPreg += 3; + } + } + } else if (PC.belly >= 750000) { + if (PC.bellySag < 30) { + PC.bellySag += 0.7; + if (PC.preg > 0) { + PC.bellySagPreg += 0.7; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 30) { + PC.bellySagPreg += 0.7; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 1; + if (PC.preg > 0) { + PC.bellySagPreg += 1; + } + } + } else if (PC.belly >= 600000) { + if (PC.bellySag < 20) { + PC.bellySag += 0.5; + if (PC.preg > 0) { + PC.bellySagPreg += 0.5; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 20) { + PC.bellySagPreg += 0.5; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 1; + if (PC.preg > 0) { + PC.bellySagPreg += 1; + } + } + } else if (PC.belly >= 450000) { + if (PC.bellySag < 15) { + PC.bellySag += 0.4; + if (PC.preg > 0) { + PC.bellySagPreg += 0.4; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 15) { + PC.bellySagPreg += 0.4; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 0.5; + if (PC.preg > 0) { + PC.bellySagPreg += 0.5; + } + } + } else if (PC.belly >= 300000) { + if (PC.bellySag < 10) { + PC.bellySag += 0.3; + if (PC.preg > 0) { + PC.bellySagPreg += 0.3; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 10) { + PC.bellySagPreg += 0.3; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 0.5; + if (PC.preg > 0) { + PC.bellySagPreg += 0.5; + } + } + } else if (PC.belly >= 100000) { + if (PC.bellySag < 10) { + PC.bellySag += 0.2; + if (PC.preg > 0) { + PC.bellySagPreg += 0.2; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 10) { + PC.bellySagPreg += 0.2; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 0.3; + if (PC.preg > 0) { + PC.bellySagPreg += 0.3; + } + } + } else if (PC.bellyPreg >= 10000 || PC.bellyImplant >= 10000) { + if (PC.bellySag < 5) { + PC.bellySag += 0.1; + if (PC.preg > 0) { + PC.bellySagPreg += 0.1; + } + } else if (PC.preg > 0 && PC.bellySagPreg < 5) { + PC.bellySagPreg += 0.1; + } + if (PC.geneMods.rapidCellGrowth === 1) { + PC.bellySag += 0.2; + if (PC.preg > 0) { + PC.bellySagPreg += 0.2; + } + } + } + if (PC.bellySagPreg > PC.bellySag) { + PC.bellySagPreg = PC.bellySag; + } + + if (PC.bellySag > 0 && PC.belly < 1500 && PC.geneMods.rapidCellGrowth !== 1) { + let bellySagReduction = 0; + if (PC.muscles > 95) { + if (random(1, 100) > 1) { + r.push(`Your loose, yet still visible, abdominals <span class="change positive">are eager to get back in shape</span> after being`); + if (PC.bellySagPreg > 0) { + r.push(`worked over by pregnancy`); + } else { + r.push(`stretched out`); + } + r.push(`for so long.`); + bellySagReduction = 0.5; + } + } else if (PC.muscles >= 30) { + if (random(1, 100) > 20) { + r.push(`Your sagging muscular belly <span class="change positive">firms up</span> readily`); + if (PC.bellySagPreg > 0) { + r.push(`after being stretched out of shape by your pregnancy.`); + } else { + r.push(`now that you aren't constantly stretching it out by overinflating.`); + } + bellySagReduction = 0.4; + } + } else if (PC.muscles >= 5) { + if (random(1, 100) > 40) { + r.push(`Your sagging belly <span class="change positive">regains some of its tone</span>`); + if (PC.bellySagPreg > 0) { + r.push(`after being stretched out of shape by your pregnancy.`); + } else { + r.push(`now that you aren't constantly stretching it out by overinflating.`); + } + bellySagReduction = 0.3; + } + } else { + if (random(1, 100) > 60) { + r.push(`Your sagging belly <span class="change positive">tightens up a little</span>`); + if (PC.bellySagPreg > 0) { + r.push(`after your pregnancy.`); + } else { + r.push(`now that you aren't constantly stretching it out by overinflating.`); + } + bellySagReduction = 0.2; + } + } + PC.bellySag -= bellySagReduction; + PC.bellySagPreg -= bellySagReduction; + PC.bellySag = Math.max(0, PC.bellySag); + PC.bellySagPreg = Math.max(0, PC.bellySagPreg); + } + } + + function anaphrodisiacEffects(PC, oldEnergy) { + const maxEnergyGain = Math.round((75 - oldEnergy) / 9.3); + if (PC.aphrodisiacs === -1 && PC.energy - oldEnergy > maxEnergyGain) { + r.push(`Anaphrodisiacs help <span class="libido dec">keep your sex drive under control.</span>`); + PC.energy = oldEnergy + maxEnergyGain; + } + } + + function mainLaborTriggers() { + if (PC.pregControl !== "labor suppressors") { + if (WombBirthReady(PC, PC.pregData.normalBirth * 1.075) > 0) { + // check for really ready fetuses - 43 weeks - max, overdue + startLabor(PC); + } else if (WombBirthReady(PC, PC.pregData.normalBirth) > 0 && (random(1, 100) > 50)) { + // check for really ready fetuses - 40 weeks - normal + startLabor(PC); + } else if (WombBirthReady(PC, PC.pregData.normalBirth / 1.1111) > 0 && (random(1, 100) > 90)) { + // check for really ready fetuses - 36 weeks minimum + startLabor(PC); + } + } + if (isInLabor(PC)) { + if (PC.counter.birthsTotal > 0) { + r.push(`<span class="red">A dull cramp runs down your middle.</span> You'll be giving birth soon.`); + } else { + r.push(`You begin to experience <span class="red">odd cramps</span> in your lower body. Contractions, more than likely.`); + } + } + /* + if (V.dangerousPregnancy === 1 && !isInLabor(PC)) { + let miscarriage = 0; + if ((PC.pregAdaptation < 500) || (PC.preg > slave.pregData.normalBirth / 2 && PC.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2))) { + let miscarriageChance = -10; + miscarriageChance += ((PC.bellyPreg / 1000) - PC.pregAdaptation); + // this could use to not be linear + if (PC.inflation > 0) { + miscarriageChance += 10; + } + if (PC.health.health < -20) { + miscarriageChance -= (PC.health.health); + } else if (PC.health.health > 80) { + miscarriageChance -= (PC.health.health / 10); + } + if (PC.weight < -50) { + miscarriageChance -= PC.weight; + } + if (onBedRest(PC)) { + miscarriageChance -= 300; + } + if (PC.bellyAccessory === "a support band") { + miscarriageChance -= 30; + } + if (PC.pregControl === "labor suppressors") { + miscarriageChance -= 10000; + } + if (PC.preg > PC.pregData.normalBirth / 2 && PC.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2)) { + if (PC.bellyPreg > 50000) { + miscarriageChance = 100; + } + } + miscarriageChance = Math.round(miscarriageChance); + if (miscarriageChance > random(0, 100)) { + const chance = random(1, 100); + if (PC.preg >= PC.pregData.normalBirth / 1.33) { + startLabor(PC); + miscarriage = 1; + } else if (PC.preg > PC.pregData.normalBirth / 1.48) { + PC.prematureBirth = 1; + startLabor(PC); + miscarriage = 1; + } else if (PC.preg > PC.pregData.normalBirth / 1.6 && chance > 10) { + PC.prematureBirth = 1; + startLabor(PC); + miscarriage = 1; + } else if (PC.preg > PC.pregData.normalBirth / 1.73 && chance > 40) { + PC.prematureBirth = 1; + startLabor(PC); + miscarriage = 1; + } else if (PC.preg > PC.pregData.normalBirth / 1.81 && chance > 75) { + PC.prematureBirth = 1; + startLabor(PC); + miscarriage = 1; + } else { + // this needs to move to birth + r.push(`Your overwhelmed body has <span class="miscarriage">forced you to miscarry,</span> possibly saving your life.`); + TerminatePregnancy(PC); + actX(PC, "abortions"); + if (PC.abortionTat > -1) { + PC.abortionTat++; + r.push(`The temporary tattoo of a child has been replaced with your ${ordinalSuffix(PC.abortionTat)} crossed out infant.`); + cashX(forceNeg(V.modCost), "slaveMod", PC); + } + miscarriage = 1; + } + } + } + if (V.seeExtreme === 1) { + if (miscarriage !== 1 && PC.bellyPreg >= 100000 && PC.geneMods.rapidCellGrowth !== 1) { + // If she can't relieve the pressure that way, will she hold? + if (PC.bellyPreg >= 500000 || PC.wombImplant !== "restraint") { + if ((PC.belly > (PC.pregAdaptation * 3200)) || PC.bellyPreg >= 500000) { + let burstChance = -80; + burstChance += ((PC.belly / 1000) - PC.pregAdaptation); + // this could use to not be linear + if (PC.health.health < -20) { + burstChance -= (PC.health.health); + } else if (PC.health.health > 80) { + burstChance -= (PC.health.health / 10); + } + if (PC.weight < 0) { + burstChance -= PC.weight; + } + burstChance -= PC.bellySag; + burstChance -= PC.muscles; + if (PC.bellyAccessory === "a support band") { + burstChance -= 10; + } + if (onBedRest(PC)) { + burstChance -= 250; + } + burstChance = Math.round(burstChance); + if (burstChance > random(0, 100)) { + burst(PC); + } else { + r.push(`Constant <span class="health dec">`); + if (PC.geneticQuirks.uterineHypersensitivity === 2) { + r.push(`painful orgasms`); + } else { + r.push(`sharp pains`); + } + r.push(`</span> emanate from your womb; <span class="health dec">it is beginning to break!</span>`); + } + } + } + } + } + } + */ + } + + function slaveDeath() { + /* + let deathSeed; + if (PC.health.health <= -90) { + deathSeed = (PC.health.health - PC.physicalAge - (PC.chem * 2) - (PC.addict * 2)); + if (PC.weight < -50 || PC.weight > 95) { + deathSeed -= 100; + } + if (PC.weight > 190) { + deathSeed -= 100; + } + if (PC.aphrodisiacs > 0) { + deathSeed -= (75 * PC.aphrodisiacs); + } + if (PC.inflationType === "aphrodisiac") { + deathSeed -= (100 * PC.inflation); + } + if (random(1, 1000) > (600 + deathSeed)) { + planDeath(PC, "lowHealth"); + } + if ((PC.aphrodisiacs > 0 || PC.inflationType === "aphrodisiac") && random(1, 1000) > (400 + deathSeed)) { + planDeath(PC, "overdosed"); + } + } + if (V.seeAge === 1) { + deathSeed = ((PC.health.health * 2) - (PC.physicalAge * 2) - (PC.chem * 4) - (PC.addict * 3)); + if (PC.physicalAge >= Math.max((70 + (PC.health.health / 5) - (PC.addict) - (PC.chem / 20)), 50) && random(1, 1000) > 800 + deathSeed) { + planDeath(PC, "oldAge"); + } + } + */ + } + + function hairGrowth() { + if (PC.hLength < 200) { + PC.hLength += 1; + } + } +}; diff --git a/src/endWeek/player/prLongTermMentalEffects.js b/src/endWeek/player/prLongTermMentalEffects.js deleted file mode 100644 index 516235f9f3f4d7025bba508251663dd26b323311..0000000000000000000000000000000000000000 --- a/src/endWeek/player/prLongTermMentalEffects.js +++ /dev/null @@ -1,20 +0,0 @@ -App.EndWeek.Player.longTermMentalEffects = function(PC = V.PC) { - // just dissolve this - const r = []; - - asexualOvariesBurnout(); - - return r.join(" "); - - function asexualOvariesBurnout() { // This block needs to be reflected in PC.need generation. - if (PC.ovaImplant === "asexual" && isFertile(PC) && (PC.preg === 0 || (PC.preg >= 0 && PC.geneticQuirks.superfetation === 2))) { - r.push(`The frequent climaxes brought about by your ovarian modification's internal ejaculations keep you sexually sated.`); - if (PC.energy >= 10) { - r.push(`However, the constant self-gratification <span class="libido dec">leaves sex less satisfying.</span>`); - PC.energy -= 10; - } - PC.need = 0; - } - } - -}; diff --git a/src/endWeek/player/prLongTermPhysicalEffects.js b/src/endWeek/player/prLongTermPhysicalEffects.js index 65c5fe162c5384809c36127700b6db9234f08499..77f4d5ec1ebfe45a55b09f40d6ab17d466fc0c21 100644 --- a/src/endWeek/player/prLongTermPhysicalEffects.js +++ b/src/endWeek/player/prLongTermPhysicalEffects.js @@ -29,6 +29,7 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { NCSEffects(); } geneticQuirkEffects(); + lactationEffects(); boobsEffects(); // Moved up from middle of the mobility and oversized asset set of text. bellyEffects(); // Moved up from middle of the mobility and oversized asset set of text. // player mobility function goes here. @@ -766,8 +767,7 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { } } - function boobsEffects() { - /* LACTATION EFFECTS */ + function lactationEffects() { if (PC.lactation > 1) { if (PC.geneMods.NCS === 1) { // Power struggle for sure @@ -787,13 +787,46 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { } PC.lactationDuration = 2; } + if (PC.rules.lactation === "induce") { + if (PC.lactation > 0) { + PC.rules.lactation = "maintain"; + } else { + r.push(`You pay a lot of attention to your breasts, and insist that your slaves do as well during sex.`); + r.push(induceLactation(PC, 3)); + if (PC.lactation === 1) { + r.push(`Now it is just a matter of <span class="noteworthy">maintaining production.</span>`); + PC.rules.lactation = "maintain"; + } + } + } else if (PC.lactation === 0) { + PC.rules.lactation = "none"; + } else if (PC.rules.lactation === "maintain") { + r.push(`You regularly see to your breasts to make sure your milk production doesn't dry up; be it by hand, milker, or mouth, you keep yourself comfortably drained.`); + } else if (PC.rules.lactation === "sell") { + const milk = milkAmount(PC); + let milkSale; + r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce ${milk} liters of sellable milk over the week.`); + if (V.arcologies[0].FSPastoralist !== "unset") { + if (V.arcologies[0].FSPastoralistLaw === 1) { + milkSale = Math.round(milk * ((28 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30))); + r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } else { + milkSale = Math.round(milk * ((12 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30))); + r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } + } else { + milkSale = milk * 8; + r.push(`Your milk is sold for <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } + cashX(milkSale, "personalBusiness"); + } if (PC.lactation === 1) { if (PC.boobsMilk > 0) { if (PC.boobs - PC.boobsImplant + PC.boobsMilk > PC.boobs - PC.boobsImplant * 2) { r.push(`Your breasts <span class="health dec">feel like they are going to explode with milk.</span> Spending the week like this is excruciating,`); healthDamage(PC, 20); } else if (PC.boobs - PC.boobsImplant + PC.boobsMilk > PC.boobs - PC.boobsImplant * .5) { - r.push(`Having breasts so swollen with milk that every motion hurts is <span class="health dec">very uncomfortable.</span> Spending a week like this only makes it worse,`); + r.push(`Having breasts so swollen with milk that every motion hurts is <span class="health dec">very unpleasant.</span> Spending a week like this only makes it worse,`); healthDamage(PC, 5); } else { r.push(`You spend the week with breasts aching for release,`); @@ -812,7 +845,7 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { if (PC.boobsMilk > 0) { r.push(`but without regular use, your <span class="change negative">lactation finally ends</span> and you can drain your remaining milk without encouraging it.`); } else { - r.push(`Without regular use, your lactation naturally <span class="change negative">come to an end.</span>`); + r.push(`With no reason to continue production, your <span class="yellow">lactation has stopped.</span>`); } PC.boobs -= PC.boobsMilk; PC.boobsMilk = 0; @@ -820,11 +853,14 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { } } } + } + + function boobsEffects() { if (PC.breastMesh !== 1) { if (PC.boobs - (PC.muscles * 30) > 5000 && PC.boobs <= 8000 && PC.boobsImplant / PC.boobs < .50) { // Check now requires breasts to be less than half implant to sag. if (PC.physicalAge < random(10, 200)) { if (PC.boobShape === "perky") { - r.push(`Breasts of your size and weight just <span class="change negative">cannot remain perky;</span> Your nipples now point forward as your boobs rest heavily against the chest beneath them.`); + r.push(`Breasts of your size and weight just <span class="change negative">cannot remain perky;</span> your nipples now point forward as your boobs rest heavily against the chest beneath them.`); PC.boobShape = "torpedo-shaped"; } else if (PC.boobShape !== "saggy") { r.push(`Your breasts are so heavy that gravity <span class="change negative">forces them to become saggy.</span> Your nipples now point downward and your bosom sways pendulously with every motion unless you restrain it.`); diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js index 1f0c4f43df2f508a1ac784e72587a6582adac73d..ddd20fd98f42e8b46e5ffc1941a55fc5c8db1d9d 100644 --- a/src/endWeek/player/prPregnancy.js +++ b/src/endWeek/player/prPregnancy.js @@ -63,7 +63,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { // drop .energy on birth for uterine hypersensitivity if (PC.geneticQuirks.uterineHypersensitivity === 2 && V.geneticMappingUpgrade >= 1) { if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You're full-term and overwhelmed with arousal. Your uterine hypersensitivity combined with a full womb and upcoming birth confers a <span class="libido inc">huge improvement to your sexual appetite.</span>`); + r.push(`Your pregnancy is nearing its end and you're overwhelmed with arousal. Your uterine hypersensitivity combined with a full womb and upcoming birth confers a <span class="libido inc">huge improvement to your sexual appetite.</span>`); PC.energy += 7; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`Being hugely pregnant with uterine hypersensitivity confers an <span class="libido inc">improvement to your sexual appetite</span> as your womb steadily stretches.`); @@ -84,7 +84,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { } } else if (PC.geneticQuirks.uterineHypersensitivity === 2) { if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You're full-term and overwhelmed with arousal. The sensation of your womb stretched so full ${PC.counter.birthsTotal > 0 ? "and the anticipation of another orgasmic birth " : ""}<span class="libido inc">sends your sexual appetite skyrocketing.</span>`); + r.push(`Your pregnancy is nearing its end and you're overwhelmed with arousal. The sensation of your womb stretched so full ${PC.counter.birthsTotal > 0 ? "and the anticipation of another orgasmic birth " : ""}<span class="libido inc">sends your sexual appetite skyrocketing.</span>`); PC.energy += 7; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`The feeling of your womb steadily expanding drives you wild, <span class="libido inc">improving your sexual appetite.</span>`); @@ -108,7 +108,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { r.push(`The rigors of early pregnancy <span class="libido dec">take their toll on your sexual appetite.</span>`); PC.energy -= 3; } else if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You are full-term and <span class="libido inc">horny as hell.</span> Your hormones are out of control, driving you to fuck like a beast in heat despite your condition.`); + r.push(`Your pregnancy is nearing its end and you're <span class="libido inc">horny as hell.</span> Your hormones are out of control, driving you to fuck like a beast in heat despite your condition.`); PC.energy += 4; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`With your pregnancy hormones raging, you <span class="libido inc">find your thoughts focusing on sex</span> more than usual.`); @@ -122,7 +122,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { r.push(`The rigors of early pregnancy <span class="libido dec">take their toll on your sexual appetite.</span>`); PC.energy -= 3; } else if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You are full-term and <span class="libido inc">horny as hell.</span> Between your hormones and already high libido, you're acting like you haven't had a good fuck in nine months.`); + r.push(`Your pregnancy is nearing its end and you're <span class="libido inc">horny as hell.</span> Between your hormones and already high libido, you're acting like you haven't had a good fuck in nine months.`); PC.energy += 2; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`Your advanced pregnancy, combined with your already high libido, leaves you aching to be filled throughout the day.`); @@ -136,7 +136,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { r.push(`The rigors of early pregnancy <span class="libido dec">take their toll on your sexual appetite.</span>`); PC.energy -= 3; } else if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You are full-term and suffering from an <span class="libido inc">unquenchable need to be filled.</span>`); + r.push(`Your pregnancy is nearing its end and you're suffering from an <span class="libido inc">unquenchable need to be filled.</span>`); PC.energy += 4; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`Your advanced pregnancy comes with a hugely increased libido, <span class="libido inc">greatly increasing your sexual drive.</span>`); @@ -150,7 +150,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { r.push(`The rigors of early pregnancy <span class="libido dec">slightly reduce your sexual appetite.</span>`); PC.energy -= 1; } else if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You are full-term and <span class="libido inc">feeling rather frisky.</span>`); + r.push(`Your pregnancy is nearing its end and you're <span class="libido inc">feeling rather frisky.</span>`); PC.energy += 2; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`As your pregnancy grows, so does that<span class="libido inc">tingling feeling</span> in your crotch.`); @@ -161,7 +161,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { r.push(`The rigors of early pregnancy <span class="libido dec">take their toll on your sexual appetite.</span>`); PC.energy -= 3; } else if (PC.preg >= PC.pregData.normalBirth) { - r.push(`You are full-term and feeling way too full for sex, <span class="libido dec">greatly suppressing your sexual appetite.</span>`); + r.push(`Your pregnancy is nearing its end and you're feeling way too full for sex, <span class="libido dec">greatly suppressing your sexual appetite.</span>`); PC.energy -= 3; } else if (PC.preg > PC.pregData.normalBirth / 1.33) { r.push(`Your advanced pregnancy <span class="libido dec">greatly hinders your sexual appetite.</span>`); diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 6ff47053c6fd702764fbeed5c88a5fc7879ec440..9c47f80ea24b7b25b56386f727b575597f3857ed 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -928,7 +928,7 @@ App.SlaveAssignment.drugs = function saDrugs(slave) { } } // evaluate against slave expected height, with neoteny slaves comparing against expected height for 12 year olds... - let heightDiff + let heightDiff; if (slave.geneticQuirks.neoteny === 2 && slave.physicalAge > 12) { heightDiff = (slave.height - slave.heightImplant * 10) / Height.mean(slave.nationality, slave.race, slave.genes, 12); } else { diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js index 48acedf4df979e425fbd912236520a6504cf0caf..b2e7c5ce0a0fb2288548d352542886298fd80f8f 100644 --- a/src/events/intro/introSummary.js +++ b/src/events/intro/introSummary.js @@ -416,6 +416,33 @@ App.Intro.summary = function() { V.PC.energy = 40; } } + if (V.PC.genes === "XX") { + if (V.PC.ovaries === 1 && V.PC.pubertyXX > 0) { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = 10; + } else { + V.PC.hormoneBalance = 50; + } + } else if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -30; + } else { + V.PC.hormoneBalance = 10; + } + } else if (V.PC.genes === "XY") { + if (V.PC.ovaries === 1 && V.PC.pubertyXX > 0) { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -10; + } else { + V.PC.hormoneBalance = 30; + } + } else { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -50; + } else { + V.PC.hormoneBalance = -10; + } + } + } if (V.PC.preg > 0 && V.PC.preg > V.PC.pregData.normalBirth / 2) { V.PC.lactation = 1; } @@ -497,6 +524,70 @@ App.Intro.summary = function() { V.PC.skill.engineering = 100; V.PC.skill.medicine = 100; V.PC.skill.hacking = 100; + V.PC.geneticQuirks.wellHung = 2; + if (V.PC.title === 0) { + V.PC.hLength = 15; + V.PC.waist = -20; + V.PC.voice = 2; + } + if (V.PC.eye.right.vision === 1 || V.PC.eye.left.vision === 1) { + V.PC.eyewear = "corrective glasses"; + } + if (V.PC.physicalAge >= 14) { + if (V.PC.balls > 0) { + V.PC.pubertyXY = 1; + } + if (V.PC.ovaries > 0) { + V.PC.pubertyXX = 1; + } + } + if (V.PC.pubertyXX === 0 && V.PC.pubertyXY === 0) { + if (V.PC.physicalAge < 11) { + V.PC.energy = 20; + } else if (V.PC.physicalAge < 12) { + V.PC.energy = 30; + } else if (V.PC.physicalAge < 13) { + V.PC.energy = 40; + } + } + if (V.PC.genes === "XX") { + if (V.PC.ovaries === 1 && V.PC.pubertyXX > 0) { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = 10; + } else { + V.PC.hormoneBalance = 50; + } + } else if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -30; + } else { + V.PC.hormoneBalance = 10; + } + } else if (V.PC.genes === "XY") { + if (V.PC.ovaries === 1 && V.PC.pubertyXX > 0) { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -10; + } else { + V.PC.hormoneBalance = 30; + } + } else { + if (V.PC.balls > 0 && V.PC.pubertyXY > 0) { + V.PC.hormoneBalance = -50; + } else { + V.PC.hormoneBalance = -10; + } + } + } + if (V.PC.preg > 0 && V.PC.preg > V.PC.pregData.normalBirth / 2) { + V.PC.lactation = 1; + } + if (V.PC.pubertyXX === 1 && V.PC.physicalAge < V.PC.pubertyAgeXX) { + V.PC.pubertyAgeXX = 8; + } + if (V.PC.pubertyXY === 1 && V.PC.physicalAge < V.PC.pubertyAgeXY) { + V.PC.pubertyAgeXY = 8; + } + V.PC.birthName = V.PC.slaveName; + V.PC.birthSurname = V.PC.slaveSurname; App.Intro.initNationalities(); }, [], diff --git a/src/futureSocieties/fsPassage.js b/src/futureSocieties/fsPassage.js index a43f65ae91fd8ee418be2c6f31ec1f1ffdc69a21..a9c23ed21eb8fb66c293ea386883dfdb6f9d3070 100644 --- a/src/futureSocieties/fsPassage.js +++ b/src/futureSocieties/fsPassage.js @@ -718,15 +718,15 @@ App.UI.fsPassage = function() { "Youth Preferentialism", () => { arc.FSYouthPreferentialist = 4; - if(V.idealAge >= 30) { + if (V.idealAge >= 30) { V.idealAge = 29; } - if(V.targetIdealAge >= 30) { + if (V.targetIdealAge >= 30) { V.targetIdealAge = 29; } - if(V.targetIdealAge !== 18) { + if (V.targetIdealAge !== 18) { V.policies.idealAge = 1; - } + } App.UI.reload(); } ) @@ -751,10 +751,10 @@ App.UI.fsPassage = function() { "Maturity Preferentialism", () => { arc.FSMaturityPreferentialist = 4; - if(V.idealAge < 30) { + if (V.idealAge < 30) { V.idealAge = 30; } - if(V.targetIdealAge < 30) { + if (V.targetIdealAge < 30) { V.targetIdealAge = 30; } V.policies.idealAge = 1; diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 5a6583e19a1b76a369589b2597495138eea550f9..6f9d03512a02cd1c0a095ea400605db0ab10584d 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -7,8 +7,8 @@ globalThis.DefaultRules = (function() { "allowed": {success: "is allowed", unable: "could not be allowed"}, }; const getAssignmentDescription = function({rule, slave, assignmentResult, append = null}) { - const assignment = rule.setAssignment === Job.CHOICE ? - { + const assignment = rule.setAssignment === Job.CHOICE + ? { descriptionType: "allowed", work: `select ${pronouns.his} own assignments` } : { diff --git a/src/js/reminder.js b/src/js/reminder.js index ad3db63521f1b0e6124e53b58bef0ed868d3bcf1..719581a6c7434f8bd0134a6c26d71c862349ad93 100644 --- a/src/js/reminder.js +++ b/src/js/reminder.js @@ -101,14 +101,14 @@ App.Reminders = (function() { div.append(entry.message, " ", App.UI.DOM.makeElement("span", week.toString(), classes)); const slave = getSlave(entry.slaveID); if (slave) { - const slaveName = link ? - App.UI.DOM.passageLink(SlaveFullName(slave), "Slave Interact", () => { + const slaveName = link + ? App.UI.DOM.passageLink(SlaveFullName(slave), "Slave Interact", () => { V.AS = slave.ID; if (Dialog.isOpen()) { Dialog.close(); } - }) : - SlaveFullName(slave); + }) + : SlaveFullName(slave); div.append(" (for ", slaveName, ")"); } div.append(" ", App.UI.DOM.link("Clear", clearEntry, [entry])); diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index ff84712c598730bd117fd9092d4e1273ea527ac3..4b0b63df148e3ca6112f8652d8b07de86f22f454 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -431,12 +431,12 @@ globalThis.BeautyArray = (function() { adjustBeauty("Skilled: Slave Professionalism", ((arcology.FSSlaveProfessionalism / 50) * ((slave.skill.entertainment + slave.skill.whoring + slave.skill.oral + slave.skill.anal + slave.skill.vaginal) / 100))); /* 10 */ } if (arcology.FSYouthPreferentialist !== "unset") { - if(slave.visualAge < 30) { - adjustBeauty("Age: Youth Preferentialist", Math.clamp(((arcology.FSYouthPreferentialist / 2) + (arcology.FSYouthPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222),0,60)); /* max 60 */ + if (slave.visualAge < 30) { + adjustBeauty("Age: Youth Preferentialist", Math.clamp(((arcology.FSYouthPreferentialist / 2) + (arcology.FSYouthPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */ } } else if (arcology.FSMaturityPreferentialist !== "unset") { - if(slave.visualAge >= 30 && slave.visualAge < 60) { - adjustBeauty("Age: Maturity Preferentialist", Math.clamp(((arcology.FSMaturityPreferentialist / 2) + (arcology.FSMaturityPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222),0,60)); /* max 60 */ + if (slave.visualAge >= 30 && slave.visualAge < 60) { + adjustBeauty("Age: Maturity Preferentialist", Math.clamp(((arcology.FSMaturityPreferentialist / 2) + (arcology.FSMaturityPreferentialistLaw * 10)) - Math.round(Math.abs(slave.visualAge - V.idealAge) * 2.222), 0, 60)); /* max 60 */ } } if (arcology.FSBodyPurist > 20) { @@ -2476,7 +2476,7 @@ globalThis.slaveCostBeauty = function(slave, isStartingSlave, followLaws, isSpec if (fromMarket) { if (fromMarket.limitReached) { cost += cost * ((V.slavesSeen - V.slaveMarketLimit) * 0.1); // updateMultiplier(`Market reach exceeded`, (cost * (V.slavesSeen - V.slaveMarketLimit))); - } + } if (fromMarket.costMod > 0 && fromMarket.costMod <= 1) { cost *= fromMarket.costMod; } else { diff --git a/src/js/storyJS.js b/src/js/storyJS.js index c5b3f795609688b0ad67a63ffb579b095fedb685..c36fc5b4fd9a8a201425632fd05c64324dee2950 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -3,7 +3,7 @@ globalThis.peacekeepersCanBeEstablished = function() { return V.invasionVictory > 0 && App.Events.effectiveWeek() > 48; -} +}; /** * @param {number} x diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index 90c210301fe0e242d7ad0597716e24f9812c70b8..3cad4c902a6c1bc32cf93309ec64ba1ccf4d551b 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -3361,7 +3361,11 @@ globalThis.induceLactation = function(slave, induce = 0) { } lactationStartChance = Math.floor(lactationStartChance); if (slave.induceLactation >= lactationStartChance) { - r += `${His} breasts have been stimulated often enough to <span class="lime">induce lactation.</span>`; + if (slave.ID === -1) { + r += `Your breasts have been stimulated consistently enough to <span class="lime">begin producing milk.</span>`; + } else { + r += `${His} breasts have been stimulated often enough to <span class="lime">induce lactation.</span>`; + } slave.induceLactation = 0; slave.lactationDuration = 2; slave.lactation = 1; @@ -3394,7 +3398,7 @@ globalThis.slaveSkillIncrease = function(targetSkill, slave, skillIncrease = 1) ['farmer', 'farmer'], ['wardeness', 'wardeness'] ]; - const isLeadershipRole = isLeadership.find(s => s[0].includes(targetSkill)) + const isLeadershipRole = isLeadership.find(s => s[0].includes(targetSkill)); if (isLeadershipRole) { if (!App.Data.Careers.Leader[isLeadershipRole[1]].includes(slave.career)) { if (slave.skill[targetSkill] <= 20) { diff --git a/src/markets/marketUI.js b/src/markets/marketUI.js index 05013f197e830479a0e01d98f8e8192946156ce2..eb60b9b4b808ac65874bf9743a51a43aab09f3f2 100644 --- a/src/markets/marketUI.js +++ b/src/markets/marketUI.js @@ -16,7 +16,7 @@ App.Markets.purchaseFramework = function(slaveMarket, {sTitleSingular = "slave", } else { $(el).append(` ${text}`); } - + const applyLaw = applyLawCheck(slaveMarket); const complianceResult = applyLaw ? App.Desc.lawCompliance(slave, slaveMarket) : ``; const limitReached = V.slavesSeen > V.slaveMarketLimit; diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index 134e5c6e6a8f4df940d39b1d578c8b6f305a88d6..d7934e5ce6015e92be758340fd0609e24e878c88 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -200,7 +200,7 @@ App.Interact.fFeelings = function(slave) { need(), favoritePCBodyPart(), ] - .filter(t => t !== ``) + .filter(t => !!t) .map(t => Spoken(slave, t)); text.push( @@ -244,8 +244,6 @@ App.Interact.fFeelings = function(slave) { return `Thank you so much for a chance to talk a little, ${Master}. It's hard, never speaking.`; } } - - return ``; } function health() { @@ -758,8 +756,6 @@ App.Interact.fFeelings = function(slave) { if (slave.pregSource === -9 && slave.bellyPreg >= 5000 && slave.devotion > 0) { return `My little sister is getting big; do you think she'll be a good little futa like me someday?`; } - - return ``; } function need() { @@ -1256,8 +1252,6 @@ App.Interact.fFeelings = function(slave) { } } } - - return ``; } function curatives() { @@ -1280,8 +1274,6 @@ App.Interact.fFeelings = function(slave) { } } } - - return ``; } function inflation() { diff --git a/src/player/MpregSelf.js b/src/player/MpregSelf.js index 64e87b4bd4d3d98c74f1f1fbacbbf330c747fd46..02bd651e7e122f1d0c5e1b9ed936e7a8c47233f8 100644 --- a/src/player/MpregSelf.js +++ b/src/player/MpregSelf.js @@ -153,7 +153,6 @@ globalThis.MpregSelf = function() { r.push(`You feel ${hisU} soft lips pressed to your vulva as ${heU} works to retrieve ${hisU} treat. You hear some soft slurping noises and feel a warm tongue worming its way inside you to retrieve any lingering cum. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your own balls for a satisfying creampie. There's always a slave to do that, of course, but why use slave cum when you have such obviously superior material available?`); } r.push(knockMeUp(V.PC, 100, 0, -1)); - } App.Events.addParagraph(node, r); return node; diff --git a/src/player/desc/pLongCrotch.js b/src/player/desc/pLongCrotch.js index c9e3981593c4bcbc97178bc6b08440d84eed0196..2d1c07bbaa18e027b4cc975fcc8beae928c2690a 100644 --- a/src/player/desc/pLongCrotch.js +++ b/src/player/desc/pLongCrotch.js @@ -687,7 +687,7 @@ App.Desc.Player.crotch = function(PC = V.PC) { r.push(`some distance from your torso.`); } } - } else if (PC.balls > 3) { + } else if (PC.balls > 2) { if (scrotalFullness < -1) { r.push(`They're too big for your undersized scrotum, which is stretched uncomfortably tight over each testicle.`); } else if (scrotalFullness === -1) { diff --git a/src/player/desc/pNotesBelly.js b/src/player/desc/pNotesBelly.js index 951dd7154f7c602408796cd0ac9703bfbaf9ea80..e7e16d62cbf734834812215f2c89ea984f07e072 100644 --- a/src/player/desc/pNotesBelly.js +++ b/src/player/desc/pNotesBelly.js @@ -320,7 +320,7 @@ App.Desc.Player.pNotesBelly = function(PC = V.PC) { } r.push(`from your front and has soundly defeated your maternity suit.`); if (PC.dick !== 0) { - r.push(`Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm. The last thing you want to do in a meeting is spontaneously orgasm and cum your in clothes.`); + r.push(`Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm. The last thing you want to do in a meeting is spontaneously climax and cum your in clothes.`); } } else if (PC.belly >= 105000) { r.push(`You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. Your suit buttons keep popping, and much to your annoyance, your ${children} will not stay still enough to let you redo them.`); diff --git a/src/player/electiveSurgery.js b/src/player/electiveSurgery.js index b78f705dac0f6716aad0e81e99a503f17b265af3..5b04f4d6342985b65163b922eb94f2237deed382 100644 --- a/src/player/electiveSurgery.js +++ b/src/player/electiveSurgery.js @@ -47,7 +47,7 @@ App.UI.electiveSurgery = function() { r.push(`You could undergo facial surgery to make yourself look older${(V.PC.visualAge >= 25) ? ", though you could also make yourself look even younger" : ""}.`); } if (V.PC.visualAge >= 25) { - linkArray.push(surgeryLink(`${V.PC.actualAge < 35 ? 'Remodel your face to appear younger' : 'Get a face lift'}`, "ageDown", () => { + linkArray.push(surgeryLink(`${V.PC.actualAge < 35 ? 'Remodel your face to appear younger' : 'Get a face lift'}`, "ageDown", () => { V.PC.faceImplant = 1; cashX(forceNeg(5000), "PCmedical"); }));