diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js new file mode 100644 index 0000000000000000000000000000000000000000..46d54b6885b24ec64dd7a1703b433d115c176f9e --- /dev/null +++ b/src/endWeek/economics/personalNotes.js @@ -0,0 +1,489 @@ +/** + * @returns {DocumentFragment} + */ +App.EndWeek.personalNotes = function() { + const el = new DocumentFragment(); + let r = []; + let _milk; + let _milkSale; + if (V.useTabs === 0) { + App.UI.DOM.appendNewElement("h2", el, `Personal Notes`); + } + // <br> + if (V.playerAging !== 0) { + r.push(`Your birthday is `); + if (V.PC.birthWeek === 51) { + r.push(`next week`); + if (V.playerAging === 2) { + r.push(`; you'll be turning ${V.PC.actualAge + 1}`); + } + } else { + r.push(`in ${52 - V.PC.birthWeek} weeks`); + } + r.push(`.`); + } + r.push(App.Desc.Player.boobs()); + r.push(App.Desc.Player.belly()); + r.push(App.Desc.Player.crotch()); + r.push(App.Desc.Player.butt()); + 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].FSPastoralistLaw === 1) { + _milkSale = _milk * (28 + 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 if ((V.arcologies[0].FSPastoralist !== "unset")) { + _milkSale = _milk * (12 + 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; + } + } + } + } + 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; + /* 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.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")) { + 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 child`); + if (V.PC.pregType > 1) { + r.push(`ren`); + } + r.push(`.`); + 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 child`); + if (V.PC.pregType > 1) { + r.push(`ren`); + } + r.push(`.`); + 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 child`); + if (V.PC.pregType > 1) { + r.push(`ren`); + } + r.push(`.`); + 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 (_sagCheck) { + if (V.PC.boobShape !== "saggy" && V.PC.preg > random(V.PC.pregData.normalBirth / 1.25, V.PC.pregData.normalBirth * 2.5) && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { + r.push(`${His} <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.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) { + // <br> + if (V.PC.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 && V.PC.labor !== 1) { + if (V.PC.pregAdaptation < 500) { + _miscarriageChance = -10; + _miscarriageChance += ((V.PC.bellyPreg/1000)-V.PC.pregAdaptation); + r.push(` // 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, V.birthee = 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) { + r.push(` // 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); + r.push(` // 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 === "get treatment in the clinic") { + if (S.Nurse) { + _burstChance -= 100; + } else { + _burstChance -= 30; + } + } else if (V.PC.assignment === "work in the 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>`); + } + } + } + } + } + } + */ + } + } + return el; +};