diff --git a/js/medicine/utility.js b/js/medicine/utility.js index 07682ad63cc4a404a6ece4947b35515719de8d52..e4bffc8382e1689a5f661d2e06a64df33adfcee7 100644 --- a/js/medicine/utility.js +++ b/js/medicine/utility.js @@ -102,7 +102,9 @@ App.Medicine.implantTypesForTarget = function(target) { /** * Returns the size of the flesh part of the sizable body part - * @param {FC.SlaveState} slave + * + * "Flesh" means without implants and without milk in case of boobs + * @param {FC.HumanState} slave * @param {FC.SizableBodyPart} part * @returns {number} */ @@ -118,7 +120,7 @@ App.Medicine.fleshSize = function(slave, part) { /** * Returns the size of the flesh part of the sizable body part - * @param {FC.SlaveState} slave + * @param {FC.HumanState} slave * @param {FC.SizableBodyPart} part * @returns {number} */ diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 8ee0bac518acfe3ac8d9c02ce0e781531c7e200b..54848cc5fba57f9c39981e12f17fe1919ad4a596 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -578,7 +578,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() { } slave.lactation = Math.clamp(+slave.lactation, 0, 2) || 0; slave.boobsMilk = Math.max(+slave.boobsMilk, 0) || 0; - if (slave.boobsMilk > 0 && slave.boobs - slave.boobsMilk - slave.boobsImplant < 0) { + if (slave.boobsMilk > 0 && App.Medicine.fleshSize(slave, 'boobs') < 0) { // should never get here, but if it does, just immediately abort! slave.boobsMilk = 0; } diff --git a/src/endWeek/player/prDiet.js b/src/endWeek/player/prDiet.js index f470ac257defd11256285a3ffe69ed61a841d100..ce01e0b917e6d082cb0525233b268e80a1814bdb 100644 --- a/src/endWeek/player/prDiet.js +++ b/src/endWeek/player/prDiet.js @@ -9,8 +9,8 @@ App.EndWeek.Player.diet = function(PC = V.PC) { let weightGain; const gigantomastiaMod = PC.geneticQuirks.gigantomastia === 2 ? (PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; const rearQuirk = PC.geneticQuirks.rearLipedema === 2 ? 2 : 0; - const boobSize = PC.boobs - PC.boobsImplant - PC.boobsMilk; - const buttSize = PC.butt - PC.buttImplant; + const boobSize = App.Medicine.fleshSize(PC, 'boobs'); + const buttSize = App.Medicine.fleshSize(PC, 'butt'); const ballSize = PC.balls - PC.ballsImplant; if (canEatFood(PC)) { diff --git a/src/endWeek/player/prHormones.js b/src/endWeek/player/prHormones.js index f33394534f119213f69ddcd5bb00667b82d4b98f..10b6f7a1d96a930441fad414ff1426e7d8fcba5c 100644 --- a/src/endWeek/player/prHormones.js +++ b/src/endWeek/player/prHormones.js @@ -3,8 +3,8 @@ App.EndWeek.Player.hormones = function(PC, selfManufactured, hormonePower) { 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 boobSize = App.Medicine.fleshSize(PC, 'boobs'); + const buttSize = App.Medicine.fleshSize(PC, 'butt'); let normBreasts; let normButt; const faceValue = PC.face - PC.faceImplant; diff --git a/src/endWeek/player/prLongTermEffects.js b/src/endWeek/player/prLongTermEffects.js index 4ac5dea9dacbf23e96c91ce8be3d1493c2644037..94e00fbd876ed64c344bd7c0cd3826d2ab009ade 100644 --- a/src/endWeek/player/prLongTermEffects.js +++ b/src/endWeek/player/prLongTermEffects.js @@ -37,7 +37,7 @@ App.EndWeek.Player.longTermEffects = function(PC = V.PC) { return frag; function boobSize(PC) { - return PC.boobs - PC.boobsImplant - PC.boobsMilk; + return App.Medicine.fleshSize(PC, 'boobs'); } function asexualOvariesBurnout() { // This block needs to be reflected in PC.need generation. diff --git a/src/endWeek/player/prLongTermPhysicalEffects.js b/src/endWeek/player/prLongTermPhysicalEffects.js index 6085c7d5f93dde054c7256d70a158466bf306f94..86337259774c77747e274dc4248b689a16739f66 100644 --- a/src/endWeek/player/prLongTermPhysicalEffects.js +++ b/src/endWeek/player/prLongTermPhysicalEffects.js @@ -2,8 +2,8 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { const r = []; const gigantomastiaMod = PC.geneticQuirks.gigantomastia === 2 ? (PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; - const boobSize = PC.boobs - PC.boobsImplant - PC.boobsMilk; - const buttSize = PC.butt - PC.buttImplant; + const boobSize = App.Medicine.fleshSize(PC, 'boobs'); + const buttSize = App.Medicine.fleshSize(PC, 'butt'); const faceValue = PC.face - PC.faceImplant; const averageDicking = V.slaves.filter(s => canAchieveErection(s) && isSlaveAvailable(s) && ((V.policies.sexualOpenness === 1 && s.devotion > 20 && App.Utils.sexAllowed(V.PC, s)) || s.toyHole === "dick")); const isNull = PC.dick === 0 && PC.vagina === -1; @@ -836,10 +836,11 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) { } if (PC.lactation === 1) { if (PC.boobsMilk > 0) { - if (PC.boobs - PC.boobsImplant + PC.boobsMilk > PC.boobs - PC.boobsImplant * 2) { + const milkToFleshRatio = PC.boobsMilk / App.Medicine.fleshSize(PC, 'boobs'); + if (milkToFleshRatio > 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) { + } else if (milkToFleshRatio > 0.5) { 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 { diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js index eceaf20e7065684e97a4636a63407553f4608d2e..ddfd2ed5eb8354b6a64c9f7d9854fa11e92ba68f 100644 --- a/src/endWeek/player/prPregnancy.js +++ b/src/endWeek/player/prPregnancy.js @@ -4,9 +4,9 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { 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 boobSize = PC.boobs - PC.boobsImplant - PC.boobsMilk; + const boobSize = App.Medicine.fleshSize(PC, 'boobs'); const oldBoobs = PC.boobs; - const buttSize = PC.butt - PC.buttImplant; + const buttSize = App.Medicine.fleshSize(PC, 'butt'); const hipSize = PC.hips - PC.hipsImplant; const child = (PC.pregType > 1 ? "children" : "child"); diff --git a/src/endWeek/reports/clinicReport.js b/src/endWeek/reports/clinicReport.js index 731070c1306f2d3b6592598c9dfe5c2638301433..8f1b20dc11ffdd365bd22b3671e8da4859cdb377 100644 --- a/src/endWeek/reports/clinicReport.js +++ b/src/endWeek/reports/clinicReport.js @@ -150,7 +150,7 @@ App.EndWeek.clinicReport = function() { } break; case "$He is remembered for winning best in show as a dairy cow.": - if (slave.lactation > 0 && (slave.boobs - slave.boobsImplant - slave.boobsMilk) > 6000) { + if (slave.lactation > 0 && App.Medicine.fleshSize(slave, 'boobs') > 6000) { r.push(`${He} does ${his} best to aid the leaking ${slave.slaveName}, paying special attention to ${his2} huge breasts as well as making sure to milk ${him2} hourly.`); improveCondition(slave, 4); slave.lactationDuration = 2; diff --git a/src/endWeek/saDiet.js b/src/endWeek/saDiet.js index 956fdc75980fe920c2f3773b3db0abcdda518d4b..be8cab3982573d5aa13eaea6ff05e4443f0edee3 100644 --- a/src/endWeek/saDiet.js +++ b/src/endWeek/saDiet.js @@ -8,8 +8,8 @@ App.SlaveAssignment.diet = function saDiet(slave) { const gigantomastiaMod = slave.geneticQuirks.gigantomastia === 2 ? (slave.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; const rearQuirk = slave.geneticQuirks.rearLipedema === 2 ? 2 : 0; - const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; - const buttSize = slave.butt - slave.buttImplant; + const boobSize = App.Medicine.fleshSize(slave, 'boobs'); + const buttSize = App.Medicine.fleshSize(slave, 'butt'); let growthGoal; let roll; diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 5395ab1892f4788c4e452654d521684a8b855630..c03bba400e049622c79ae92511f68bb56005c652 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -9,8 +9,8 @@ App.SlaveAssignment.drugs = function saDrugs(slave) { slave.drugs === "intensive penis enhancement" || slave.drugs === "intensive testicle enhancement") ? 1 : 0; const gigantomastiaMod = slave.geneticQuirks.gigantomastia === 2 ? (slave.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; const rearLipedemaMod = slave.geneticQuirks.rearLipedema === 2 ? 1 : 0; - const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; - const buttSize = slave.butt - slave.buttImplant; + const boobSize = App.Medicine.fleshSize(slave, 'boobs'); + const buttSize = App.Medicine.fleshSize(slave, 'butt'); const { he, him, his, himself, He, His diff --git a/src/endWeek/saHormonesEffects.js b/src/endWeek/saHormonesEffects.js index b2894623bce139dea361153c53d97beaeeb832e9..5603bca02f92c57b858bb72694be982c683226a3 100644 --- a/src/endWeek/saHormonesEffects.js +++ b/src/endWeek/saHormonesEffects.js @@ -7,8 +7,8 @@ App.SlaveAssignment.hormonesEffects = function saHormonesEffects(slave) { const r = []; const gigantomastiaMod = slave.geneticQuirks.gigantomastia === 2 ? (slave.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; const rearLipedemaMod = slave.geneticQuirks.rearLipedema === 2 ? 1 : 0; - const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; - const buttSize = slave.butt - slave.buttImplant; + const boobSize = App.Medicine.fleshSize(slave, 'boobs'); + const buttSize = App.Medicine.fleshSize(slave, 'butt'); const faceValue = slave.face - slave.faceImplant; const { diff --git a/src/endWeek/saLongTermEffects.js b/src/endWeek/saLongTermEffects.js index b55312fc1562e14b263d8e8cfadf307892a326ea..68b43ec5d58c992db559f05f9a9eaef88ae66ec9 100644 --- a/src/endWeek/saLongTermEffects.js +++ b/src/endWeek/saLongTermEffects.js @@ -98,7 +98,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) { * */ function boobSize(slave) { - return slave.boobs - slave.boobsImplant - slave.boobsMilk; + return App.Medicine.fleshSize(slave, 'boobs'); } /** diff --git a/src/endWeek/saLongTermMentalEffects.js b/src/endWeek/saLongTermMentalEffects.js index eb876e32d3295dc5d8f4d4f902fd3c0afb522d5e..48fba18bcc805bfb60612c917d0ae47e766ca242 100644 --- a/src/endWeek/saLongTermMentalEffects.js +++ b/src/endWeek/saLongTermMentalEffects.js @@ -2057,7 +2057,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla break; case "boobs": if (slave.sexualFlaw !== "breast growth") { - const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; + const boobSize = App.Medicine.fleshSize(slave, 'boobs'); if (slave.drugs === "breast injections" || slave.drugs === "intensive breast injections") { r.push(`${He} loves ${his} tits, and feeling them respond to drug injections starts to hold more fascination for ${him} than mere sex. <span class="paraphilia gain">${His} sexual identity is now dominated by ${his} swelling boobs.</span>`); slave.sexualFlaw = "breast growth"; diff --git a/src/endWeek/saLongTermPhysicalEffects.js b/src/endWeek/saLongTermPhysicalEffects.js index b8d38a68ea931880c0db61fcd0716959aab89cb2..d0119f3be1bde16bba25a267f03481df3151c5a2 100644 --- a/src/endWeek/saLongTermPhysicalEffects.js +++ b/src/endWeek/saLongTermPhysicalEffects.js @@ -1068,10 +1068,11 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects r.push(`engorged</span> with pent-up milk.`); */ /* I don't know where to put this since it happens at the tail end of endWeek now */ - if (slave.boobs - slave.boobsImplant + slave.boobsMilk > slave.boobs - slave.boobsImplant * 2) { + const milkToFleshRatio = slave.boobsMilk / App.Medicine.fleshSize(slave, 'boobs'); + if (milkToFleshRatio > 2) { r.push(`Having breasts bloated to the point of bursting is <span class="health dec">incredibly painful.</span> Spending a week like that is excruciating,`); healthDamage(slave, 20); - } else if (slave.boobs - slave.boobsImplant + slave.boobsMilk > slave.boobs - slave.boobsImplant * .5) { + } else if (milkToFleshRatio > .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 that only makes it worse,`); healthDamage(slave, 5); } else { diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js index c640eb0db0e75ef0328f1476fe620b27b91eb6b8..fffee9a4371edb1a55e675d47a0c61becac78d42 100644 --- a/src/endWeek/saPregnancy.js +++ b/src/endWeek/saPregnancy.js @@ -671,8 +671,8 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) { boobTarget *= gigantomastiaMod; boobTarget *= slimnessFoodMod; if (slave.geneMods.NCS === 0) { - const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; - const buttSize = slave.butt - slave.buttImplant; + const boobSize = App.Medicine.fleshSize(slave, 'boobs'); + const buttSize = App.Medicine.fleshSize(slave, 'butt'); const hipSize = slave.hips - slave.hipsImplant; if (slave.pregType >= 30 && (((slave.assignment === Job.CONCUBINE || slave.assignment === Job.MASTERSUITE) && V.masterSuitePregnancySlaveLuxuries === 1) || slave.diet === "high caloric")) { if (slave.weight <= 65) { diff --git a/src/events/RE/reLegendaryCow.js b/src/events/RE/reLegendaryCow.js index bac7d53233e4691563ffbe72bbc001a34fa9f58b..08393593e00c240addf55d63fab7aa2e564f85a5 100644 --- a/src/events/RE/reLegendaryCow.js +++ b/src/events/RE/reLegendaryCow.js @@ -8,7 +8,7 @@ App.Events.RELegendaryCow = class RELegendaryCow extends App.Events.BaseEvent { (s) => s.devotion > 50, (s) => s.prestige === 0, (s) => s.lactation > 0, - (s) => (s.boobs - s.boobsImplant - s.boobsMilk) > 6000, // should probably have a milkAmount() check? + (s) => App.Medicine.fleshSize(s, 'boobs') > 6000, // should probably have a milkAmount() check? (s) => [Job.DAIRY, Job.MILKED].includes(s.assignment) ]]; } diff --git a/src/facilities/surgery/surgeryPassageUpper.js b/src/facilities/surgery/surgeryPassageUpper.js index 4fd3a04b348c9b4beb4a086d7188f38b01122205..889db8ac3895f1917c652100547205d349ae64df 100644 --- a/src/facilities/surgery/surgeryPassageUpper.js +++ b/src/facilities/surgery/surgeryPassageUpper.js @@ -208,7 +208,7 @@ App.UI.surgeryPassageUpper = function(slave, refresh, cheat = false) { } else { if (slave.boobs - slave.boobsMilk < 500) { App.UI.DOM.appendNewElement("div", el, `${His} breasts are too small to support reshaping ${his} nipples to be penetratable`, ["choices", "note"]); - } else if (slave.boobs - slave.boobsImplant - slave.boobsMilk < 500) { + } else if (App.Medicine.fleshSize(slave, 'boobs') < 500) { App.UI.DOM.appendNewElement("div", el, `${His} implants are too large to support reshaping ${his} nipples to be penetratable`, ["choices", "note"]); } else if (slave.nipples !== "huge") { App.UI.DOM.appendNewElement("div", el, `${His} nipples are too small to be made fuckable`, ["choices", "note"]); diff --git a/src/interaction/siPhysicalRegimen.js b/src/interaction/siPhysicalRegimen.js index fa79ec52510b0b1d054bb0325792782897233127..745258687b27c42acc5b0a02003871d07d46589e 100644 --- a/src/interaction/siPhysicalRegimen.js +++ b/src/interaction/siPhysicalRegimen.js @@ -71,7 +71,7 @@ App.UI.SlaveInteract.physicalRegimen = function(slave, refresh) { // Breasts if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) { - if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) { + if (App.Medicine.fleshSize(slave, 'boobs') > 100) { breasts.push({text: `Reducers`, updateSlave: {drugs: `breast redistributors`}}); } else { breasts.push({text: `Reducers`, disabled: `Boobs are too small`}); diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 124a613224eafd664d942fb5cd4fbc5b46c3b26b..730beb09091dc9ad85e0d4a44fb01beec6a0719b 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -473,7 +473,9 @@ globalThis.findFather = function(fatherID) { return father; }; -/* not to be used until that last part is defined. It may become slave.boobWomb.volume or some shit */ +/* not to be used until that last part is defined. It may become slave.boobWomb.volume or some shit + * TODO update App.Medicine.fleshSize() when boobsWombVolume comes unto existence +*/ /** * @param {App.Entity.SlaveState} slave * @returns {number} diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 260ee07d444bda365827c9048d59e6e412aa56c0..b65b3c4054000403a8cc7248d2807eff9697294f 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -150,7 +150,7 @@ globalThis.canFemImpreg = function(slave1, slave2) { */ globalThis.milkAmount = function(slave) { let milk; - let calcs = slave.boobs - slave.boobsImplant - slave.boobsMilk; + let calcs = App.Medicine.fleshSize(slave, 'boobs'); if (calcs > 40000) { milk = (158 + ((calcs - 40000) / 600)); } else if (calcs > 25000) { diff --git a/src/npc/interaction/passage/fSlaveImpreg.js b/src/npc/interaction/passage/fSlaveImpreg.js index 27b934ce639c4f7b08ca225b0bd69f48dfa96c91..76a732f536cc2f0cd8dc008afe2bee25e45233e3 100644 --- a/src/npc/interaction/passage/fSlaveImpreg.js +++ b/src/npc/interaction/passage/fSlaveImpreg.js @@ -484,9 +484,9 @@ App.Interact.fSlaveImpreg = function(slave, impregnatrix) { r.push(`middle height,`); } - if ((slave.boobs + impregnatrix.boobs - slave.boobsImplant - impregnatrix.boobsImplant - impregnatrix.boobsMilk) > 1500) { + if (App.Medicine.fleshSize(slave, 'boobs') + App.Medicine.fleshSize(impregnatrix, 'boobs') > 1500) { r.push(`big-titted`); - } else if ((slave.boobs + impregnatrix.boobs - slave.boobsImplant - impregnatrix.boobsImplant - impregnatrix.boobsMilk) < 700) { + } else if (App.Medicine.fleshSize(slave, 'boobs') + App.Medicine.fleshSize(impregnatrix, 'boobs') < 700) { r.push(`flat-chested`); } else { r.push(`moderately-breasted`); diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js index c8f8c97c3cd6505036901c924e690bac25d4e122..f1d4b277260b4fcdb047885339c41dc4a8e32e71 100644 --- a/src/player/managePersonalAffairs.js +++ b/src/player/managePersonalAffairs.js @@ -1153,7 +1153,7 @@ App.UI.managePersonalAffairs = function() { } if (arcology.FSSlimnessEnthusiastResearch === 1) { if (PC.drugs !== "breast redistributors") { - if ((PC.boobs - PC.boobsImplant - PC.boobsMilk) > 100) { + if (App.Medicine.fleshSize(PC, 'boobs') > 100) { links.push(App.UI.DOM.link(`Breast redistributors`, () => { PC.drugs = "breast redistributors"; App.UI.DOM.replace(drugsDiv, drugs);