diff --git a/src/js/PenthouseNaming.js b/src/js/PenthouseNaming.js index 8fe4bac44d5299a539ded3cc6f420516bfb57bff..2df44f652f07d3cc675630f57efad64c2aa24eff 100644 --- a/src/js/PenthouseNaming.js +++ b/src/js/PenthouseNaming.js @@ -1,118 +1,80 @@ -/* eslint-disable no-undef */ /** * @return {string} */ window.MasterSuiteUIName = function () { const V = State.variables; - let name = ""; - if (V.masterSuiteNameCaps === "The Master Suite") { - name = "Master Suite"; - } else { - name = V.masterSuiteNameCaps; - } + const name = (V.masterSuiteNameCaps === "The Master Suite") ? "Master Suite" : V.masterSuiteNameCaps; return `<<link "${name}""Master Suite">><</link>> `; }; + /** * @return {string} */ window.HeadGirlSuiteUIName = function () { const V = State.variables; - let name = ""; - if (V.HGSuiteNameCaps === "The Head Girl Suite") { - name = "Head Girl Suite"; - } else { - name = V.HGSuiteNameCaps; - } + const name = (V.HGSuiteNameCaps === "The Head Girl Suite") ? "Head Girl Suite" : V.HGSuiteNameCaps; return `<<link "${name}""Head Girl Suite">><</link>> `; }; + /** * @return {string} */ window.ServantQuartersUIName = function () { const V = State.variables; - let name = ""; - if (V.servantsQuartersNameCaps === "The Servants' Quarters") { - name = "Servants' Quarters"; - } else { - name = V.servantsQuartersNameCaps; - } + const name = (V.servantsQuartersNameCaps === "The Servants' Quarters") ? "Servants' Quarters" : V.servantsQuartersNameCaps; return `<<link "${name}""Servants' Quarters">><</link>> `; }; + /** * @return {string} */ window.SpaUIName = function() { const V = State.variables; - let name = ""; - if (V.spaNameCaps === "The Spa") { - name = "Spa"; - } else { - name = V.spaNameCaps; - } + const name = (V.spaNameCaps === "The Spa") ? "Spa" : V.spaNameCaps; return `<<link "${name}""Spa">><</link>> `; }; + /** * @return {string} */ window.NurseryUIName = function () { const V = State.variables; - let name = ""; - if (V.nurseryNameCaps === "The Nursery") { - name = "Nursery"; - } else { - name = V.nurseryNameCaps; - } + const name = (V.nurseryNameCaps === "The Nursery") ? "Nursery" : V.nurseryNameCaps; return `<<link "${name}""Nursery">><</link>> `; }; + /** * @return {string} */ window.ClinicUIName = function () { const V = State.variables; - let name = ""; - if (V.clinicNameCaps === "The Clinic") { - name = "Clinic"; - } else { - name = V.clinicNameCaps; - } + const name = (V.clinicNameCaps === "The Clinic") ? "Clinic" : V.clinicNameCaps; return `<<link "${name}""Clinic">><</link>> `; }; + /** * @return {string} */ window.SchoolRoomUIName = function () { const V = State.variables; - let name = ""; - if (V.schoolroomNameCaps === "The Schoolroom") { - name = "Schoolroom"; - } else { - name = V.schoolroomNameCaps; - } + const name = (V.schoolroomNameCaps === "The Schoolroom") ? "Schoolroom" : V.schoolroomNameCaps; return `<<link "${name}""Schoolroom">><</link>> `; }; + /** * @return {string} */ window.CellblockUIName = function () { const V = State.variables; - let name = ""; - if (V.cellblockNameCaps === "The Cellblock") { - name = "Cellblock"; - } else { - name = V.cellblockNameCaps; - } + const name = (V.cellblockNameCaps === "The Cellblock") ? "Cellblock" : V.cellblockNameCaps; return `<<link "${name}""Cellblock">><</link>> `; }; + /** * @return {string} */ window.IncubatorUIName = function () { const V = State.variables; - let name = ""; - if (V.incubatorNameCaps === "The Incubator") { - name = "Incubator"; - } else { - name = V.incubatorNameCaps; - } + const name = (V.incubatorNameCaps === "The Incubator") ? "Incubator" : V.incubatorNameCaps; return `<<link "${name}""Incubator">><</link>> `; }; diff --git a/src/js/SetBellySize.js b/src/js/SetBellySize.js index 657bd987bd790568386715dd8e0b09ab6cc8e16e..78d2eec4a50fdf0a59d1e954863fd2848acf0610 100644 --- a/src/js/SetBellySize.js +++ b/src/js/SetBellySize.js @@ -1,13 +1,8 @@ /** @param {App.Entity.SlaveState} slave */ window.SetBellySize = function SetBellySize(slave) { - let _implantSize; WombNormalizePreg(slave); /* now with support for legacy code that advances pregnancy by setting .preg++ */ - if (slave.bellyImplant > 0) { - _implantSize = slave.bellyImplant; - } else { - _implantSize = 0; - } + const _implantSize = (slave.bellyImplant > 0) ? slave.bellyImplant : 0; if (slave.inflation === 3) { slave.bellyFluid = 10000; diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index 049b0668248e291324b7ab99ab17d4f7e996222c..5871a894ddf883a73b61d3d69aca48ebb98c1a88 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -1,5 +1,11 @@ /* eslint-disable no-undef */ /* intended to condense the clothing/toy/etc availability checks into something less asinine */ + +/** + * Checks whether item is accessible + * @param {string} string Name of the item + * @returns {boolean} + */ window.isItemAccessible = function(string) { const V = State.variables; diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 3477b35aef8d599f20e7bdafaf1a136a8dd0f252..2a2e4567a7dab86af5cea46bda172ffa6142acaf 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -383,7 +383,7 @@ window.setPregType = function(actor) { } } if (actor.geneticQuirks.superfetation === 2 && actor.womb.length > 0) { - ovum = Math.ceiling(ovum / 4); + ovum = Math.ceil(ovum / 4); } return ovum; }; diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index 9a3d5fc2088be7cdb1593a848d65e360201436e1..76d3c507f30bd7425f3084209cccf76eec32287f 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -1,36 +1,66 @@ -/** @param {App.Entity.SlaveState} slave */ +/** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @returns {boolean} +*/ window.hasSurgeryRule = function (slave, rules) { return rules.some( rule => ruleApplied(slave, rule) && rule.set.autoSurgery > 0); }; -/** @param {App.Entity.SlaveState} slave */ +/** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @param {string} what + * @returns {boolean} +*/ window.hasRuleFor = function(slave, rules, what) { return rules.some( rule => ruleApplied(slave, rule) && rule[what] !== "no default setting"); }; -/** @param {App.Entity.SlaveState} slave */ +/** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @returns {boolean} +*/ window.hasHColorRule = function(slave, rules) { return hasRuleFor(slave, rules, "hColor"); }; -/** @param {App.Entity.SlaveState} slave */ +/** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @returns {boolean} + * */ window.hasHStyleRule = function(slave, rules) { return hasRuleFor(slave, rules, "hStyle"); }; -/** @param {App.Entity.SlaveState} slave */ +/** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @returns {boolean} + * */ window.hasEyeColorRule = function(slave, rules) { return hasRuleFor(slave, rules, "eyeColor"); }; -/** @param {App.Entity.SlaveState} slave */ +/** + * return if a rule is applied on a slave + * @param {App.Entity.SlaveState} slave + * @param {Object[]} rules + * @returns {boolean} +*/ window.lastPregRule = function(slave, rules) { return rules.some(rule => ruleApplied(slave, rule) && rule.set.preg === -1); }; +/** + * @param {Object[]} rules + * @returns {Object} + */ window.mergeRules = function mergeRules(rules) { const combinedRule = {}; rules.forEach(rule => { @@ -49,14 +79,22 @@ window.mergeRules = function mergeRules(rules) { return combinedRule; }; -// return if a rule is applied on a slave -/** @param {App.Entity.SlaveState} slave */ +/** + * return if a rule is applied on a slave + * @param {App.Entity.SlaveState} slave + * @param {Object} rule + * @returns {boolean} +*/ window.ruleApplied = function(slave, rule) { return slave.currentRules.includes(rule.ID); }; -// remove slave from the facility described by the rule -/** @param {App.Entity.SlaveState} slave */ +/** + * remove slave from the facility described by the rule + * @param {App.Entity.SlaveState} slave + * @param {Object} rule + * @returns {string} +*/ window.RAFacilityRemove = function RAFacilityRemove(slave, rule) { const V = State.variables; let r = ""; @@ -155,8 +193,11 @@ window.RAFacilityRemove = function RAFacilityRemove(slave, rule) { } }; -// return whether the rule applies to the slave -/** @param {App.Entity.SlaveState} slave */ +/** + * return whether the rule applies to the slave + * @param {Object} cond + * @param {App.Entity.SlaveState} slave + * @returns {boolean} flag */ window.ruleAppliesP = function ruleAppliesP(cond, slave) { let flag; @@ -196,6 +237,9 @@ window.ruleAppliesP = function ruleAppliesP(cond, slave) { return flag; }; +/** + * @returns {Object} + */ window.emptyDefaultRule = function emptyDefaultRule() { const id = generateNewID(); const rule = { @@ -339,9 +383,10 @@ window.emptyDefaultRule = function emptyDefaultRule() { return rule; }; -// Saves the slave, silently fires the RA, saves the slave's after-RA state, and then reverts the slave. -// Call and then check potential change against $slaveAfterRA to see if the RA would revert it. -/** @param {App.Entity.SlaveState} slave */ +/** + * Saves the slave, silently fires the RA, saves the slave's after-RA state, and then reverts the slave. + * Call and then check potential change against $slaveAfterRA to see if the RA would revert it. + * @param {App.Entity.SlaveState} slave */ window.RulesDeconfliction = function RulesDeconfliction(slave) { const before = clone(slave); DefaultRules(slave); diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 02b265d38d9a2793376e50b17820773411773984..3dfc35e75707f5144ac42b17ba4672c0b701a4ae 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -1757,9 +1757,10 @@ window.rulesAssistantOptions = (function() { ["No default setting", "no default setting"], ["Abort all", "all"], ]; - if (V.pregnancyMonitoringUpgrade === 1 && V.geneticMappingUpgrade === 1) + if (V.pregnancyMonitoringUpgrade === 1 && V.geneticMappingUpgrade === 1) { pairs.push(["Abort boys", "male"]); pairs.push(["Abort girls", "female"]); + } super("Pregnancy termination", pairs); this.setValue(current_rule.set.abortion); this.onchange = (value) => current_rule.set.abortion = value; diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js index 2b33dbadf8065db6b686ce4d03ae2fef10748e70..8e0d4738e6554d735a612d449bc3939aa06461ee 100644 --- a/src/js/rulesAutosurgery.js +++ b/src/js/rulesAutosurgery.js @@ -1,11 +1,13 @@ -/* eslint-disable no-undef */ window.rulesAutosurgery = (function() { "use strict"; let V; let r; return rulesAutoSurgery; - /** @param {App.Entity.SlaveState} slave */ + /** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ function rulesAutoSurgery(slave) { V = State.variables; r = ""; @@ -18,7 +20,11 @@ window.rulesAutosurgery = (function() { return r; } - /** @param {App.Entity.SlaveState} slave */ + /** + * @param {App.Entity.SlaveState} slave + * @param {Object[]} ruleset + * @returns {Object} + */ function autoSurgerySelector(slave, ruleset) { const surgery = {}; ruleset.forEach(rule => { @@ -31,7 +37,10 @@ window.rulesAutosurgery = (function() { return surgery; } - /** @param {App.Entity.SlaveState} slave */ + /** + * @param {App.Entity.SlaveState} slave + * @returns {Object} + */ function ProcessHGTastes(slave) { let thisSurgery; switch (V.HGTastes) { @@ -50,7 +59,7 @@ window.rulesAutosurgery = (function() { surgery_boobs: 0, surgery_holes: 0 }; - break ; + break; case 2: thisSurgery = { surgery_lactation: 0, @@ -127,7 +136,11 @@ window.rulesAutosurgery = (function() { return thisSurgery; } - /** @param {App.Entity.SlaveState} slave */ + /** + * @param {App.Entity.SlaveState} slave + * @param {Object} thisSurgery + * @param {string[]} surgeries + */ function CommitSurgery(slave, thisSurgery, surgeries) { if (slave.health > 20 && surgeries.length < 3) { if (slave.eyes === -1 && thisSurgery.surgery_eyes === 1) { @@ -550,7 +563,11 @@ window.rulesAutosurgery = (function() { } } - /** @param {App.Entity.SlaveState} slave */ + /** + * @param {App.Entity.SlaveState} slave + * @param {Object} thisSurgery + * @param {string[]} surgeries + */ function PrintResult(slave, thisSurgery, surgeries) { let surgeriesDisplay = ""; if (surgeries.length === 1) diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js index 16ee9096abd3dfbd39034d26e2e2d10c7868a280..2275f819ced8e9af3907b81edf48c71a9abe8862 100644 --- a/src/js/slaveStatsChecker.js +++ b/src/js/slaveStatsChecker.js @@ -29,35 +29,48 @@ window.SlaveStatsChecker = (function() { function piercingScore(slave) { let score = 0; - if (slave.earPiercing > 0) + if (slave.earPiercing > 0) { score += slave.earPiercing*0.75 - 0.5; - if (slave.nosePiercing > 0) + } + if (slave.nosePiercing > 0) { score += slave.nosePiercing*0.75 - 0.5; - if (slave.eyebrowPiercing > 0) + } + if (slave.eyebrowPiercing > 0) { score += slave.eyebrowPiercing*0.75 - 0.5; - if (slave.navelPiercing > 0) + } + if (slave.navelPiercing > 0) { score += slave.navelPiercing*0.75 - 0.5; - if (slave.corsetPiercing > 0) + } + if (slave.corsetPiercing > 0) { score += slave.corsetPiercing*0.75 + 0.5; - if (slave.nipplesPiercing > 0) + } + if (slave.nipplesPiercing > 0) { score += slave.nipplesPiercing*0.75 - 0.25; - if (slave.areolaePiercing > 0) + } + if (slave.areolaePiercing > 0) { score += slave.areolaePiercing*0.75 + 0.5; - if (slave.lipsPiercing > 0) + } + if (slave.lipsPiercing > 0) { score += slave.lipsPiercing*0.75 - 0.25; - if (slave.tonguePiercing > 0 ) + } + if (slave.tonguePiercing > 0 ) { score += slave.tonguePiercing*0.75 - 0.25; - if (slave.clitPiercing === 3) /* smart piercing */ + } + if (slave.clitPiercing === 3) /* smart piercing */ { score += 1.25; - else if (slave.clitPiercing > 0) + } else if (slave.clitPiercing > 0) { score += slave.clitPiercing*0.75 - 0.25; + } - if (slave.vaginaPiercing > 0) + if (slave.vaginaPiercing > 0) { score += slave.vaginaPiercing*0.75 - 0.25; - if (slave.dickPiercing > 0) + } + if (slave.dickPiercing > 0) { score += slave.dickPiercing*0.75 - 0.25; - if (slave.anusPiercing > 0) + } + if (slave.anusPiercing > 0) { score += slave.anusPiercing*0.75 - 0.25; + } return score; } @@ -67,49 +80,59 @@ window.SlaveStatsChecker = (function() { function tatScore(slave) { let score = 0; - if (slave.boobsTat !== 0) + if (slave.boobsTat !== 0) { score += 1.25; - if (slave.buttTat !== 0) + } + if (slave.buttTat !== 0) { score += 1.25; - if (slave.lipsTat !== 0) + } + if (slave.lipsTat !== 0) { score += 1.25; - if (slave.shouldersTat !== 0) + } + if (slave.shouldersTat !== 0) { score += 1; - if (slave.backTat !== 0) + } + if (slave.backTat !== 0) { score += 1.25; - if (slave.armsTat !== 0) + } + if (slave.armsTat !== 0) { score += 1; - if (slave.legsTat !== 0) + } + if (slave.legsTat !== 0) { score += 1; - if (slave.stampTat !== 0) + } + if (slave.stampTat !== 0) { score += 1; - if (slave.vaginaTat !== 0) + } + if (slave.vaginaTat !== 0) { score += 1; - if (slave.dickTat !== 0) + } + if (slave.dickTat !== 0) { score += 1; + } if (slave.bellyTat !== 0) { - if ((slave.preg > slave.pregData.normalBirth/1.33 && slave.pregType >= 20) || slave.belly >= 300000) + if ((slave.preg > slave.pregData.normalBirth/1.33 && slave.pregType >= 20) || slave.belly >= 300000) { score += 0.75; - else if ((slave.preg > slave.pregData.normalBirth/2 && slave.pregType >= 20) || (slave.preg > slave.pregData.normalBirth/1.33 && slave.pregType >= 10) || slave.belly >= 150000) + } else if ((slave.preg > slave.pregData.normalBirth/2 && slave.pregType >= 20) || (slave.preg > slave.pregData.normalBirth/1.33 && slave.pregType >= 10) || slave.belly >= 150000) { score += 1; - else if (slave.belly >= 10000 || slave.bellyImplant >= 8000) + } else if (slave.belly >= 10000 || slave.bellyImplant >= 8000) { score += 1; - else if ((slave.preg >= slave.pregData.normalBirth/4 && slave.pregType >= 20) || (slave.preg > slave.pregData.normalBirth/4 && slave.pregType >= 10) || slave.belly >= 5000) + } else if ((slave.preg >= slave.pregData.normalBirth/4 && slave.pregType >= 20) || (slave.preg > slave.pregData.normalBirth/4 && slave.pregType >= 10) || slave.belly >= 5000) { score += 0.5; - else if (slave.belly >= 1500) + } else if (slave.belly >= 1500) { score += 0.25; - else + } else { score += 0.1; + } } - if (slave.anusTat === "bleached") + if (slave.anusTat === "bleached") { score += 0.5; - else if (slave.anusTat !== 0) + } else if (slave.anusTat !== 0) { score += 1.25; - + } if (slave.abortionTat > 0 || (slave.abortionTat === 0 && slave.pregKnown === 1)) { score += 1; } - return score; } }()); @@ -240,37 +263,29 @@ window.canPenetrate = /** @param {App.Entity.SlaveState} slave */ function(slave window.canSee = /** @param {App.Entity.SlaveState} slave */ function(slave) { if (!slave) { return null; - } else if (slave.eyes > -2) { - return true; } - return false; + return (slave.eyes > -2); }; window.canHear = /** @param {App.Entity.SlaveState} slave */ function(slave) { if (!slave) { return null; - } else if ((slave.hears > -2) && (slave.earwear !== "deafening ear plugs")) { - return true; } - return false; + return ((slave.hears > -2) && (slave.earwear !== "deafening ear plugs")); }; window.canSmell = /** @param {App.Entity.SlaveState} slave */ function(slave) { if (!slave) { return null; - } else if (slave.smells > -1) { - return true; } - return false; + return (slave.smells > -1); }; window.canTaste = /** @param {App.Entity.SlaveState} slave */ function(slave) { if (!slave) { return null; - } else if (slave.tastes > -1) { - return true; } - return false; + return (slave.tastes > -1); }; window.canWalk = /** @param {App.Entity.SlaveState} slave */ function(slave) { @@ -326,10 +341,8 @@ window.canTalk = /** @param {App.Entity.SlaveState} slave */ function(slave) { window.canDoAnal = /** @param {App.Entity.SlaveState} slave */ function(slave) { if (!slave) { return null; - } else if (slave.chastityAnus === 1) { - return false; } - return true; + return (slave.chastityAnus === 1); }; window.canDoVaginal = /** @param {App.Entity.SlaveState} slave */ function(slave) { diff --git a/src/js/storyJS.js b/src/js/storyJS.js index aaa173e46edcc50d46a6220b26a55c1acbe06d3f..2064a2eca9e7a3c43f76c6b2bf7ce89400da5701 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -1,5 +1,3 @@ -/* eslint-disable no-console */ -/* eslint-disable no-undef */ /* config.history.tracking = false;*/ // State.expired.disable; @@ -16,16 +14,14 @@ window.variableAsNumber = function(x, defaultValue, minValue, maxValue) { } return x; }; + window.isSexuallyPure = /** @param {App.Entity.SlaveState} slave */ function (slave) { if (!slave) { return null; } - if (slave.vagina < 1 && slave.anus < 1 && !slave.analCount && !slave.vaginalCount && !slave.oralCount && !slave.mammaryCount && !slave.penetrativeCount) { - return true; - } else { - return false; - } + return (slave.vagina < 1 && slave.anus < 1 && !slave.analCount && !slave.vaginalCount && !slave.oralCount && !slave.mammaryCount && !slave.penetrativeCount); }; + if (typeof interpolate === "undefined") { const interpolate = function(x0, y0, x1, y1, x) { if (x <= x0) { @@ -68,11 +64,8 @@ window.filterInPlace = function(arr, callback, thisArg) { window.canBreed = function(slave1, slave2) { if (!slave1 || !slave2) { return null; - } else if (slave1.eggType === slave2.ballType) { - return true; - } else { - return false; } + return (slave1.eggType === slave2.ballType); }; /** assuming slave1 is fertile, could slave2 impregnate slave1? @@ -149,46 +142,45 @@ window.milkAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) let calcs; if (!slave) { return null; + } + calcs = slave.boobs - slave.boobsImplant - slave.boobsMilk; + if (calcs > 40000) { + milk = (158 + ((calcs - 10000) / 600)); + } else if (calcs > 25000) { + milk = (128 + ((calcs - 10000) / 500)); + } else if (calcs > 10000) { + milk = (78 + ((calcs - 10000) / 300)); + } else if (calcs > 5000) { + milk = (53 + ((calcs - 5000) / 200)); + } else if (calcs > 2000) { + milk = (29 + ((calcs - 2000) / 125)); + } else if (calcs > 800) { + milk = (16 + ((calcs - 800) / 80)); } else { - calcs = slave.boobs - slave.boobsImplant - slave.boobsMilk; - if (calcs > 40000) { - milk = (158 + ((calcs - 10000) / 600)); - } else if (calcs > 25000) { - milk = (128 + ((calcs - 10000) / 500)); - } else if (calcs > 10000) { - milk = (78 + ((calcs - 10000) / 300)); - } else if (calcs > 5000) { - milk = (53 + ((calcs - 5000) / 200)); - } else if (calcs > 2000) { - milk = (29 + ((calcs - 2000) / 125)); - } else if (calcs > 800) { - milk = (16 + ((calcs - 800) / 80)); - } else { - milk = (8 + ((calcs - 400) / 50)); - } - if (slave.lactation === 2) { - milk *= 1.2; - } - milk += (milk * ((slave.devotion - 50) / 200)); - if (slave.boobsImplant > 200) { - milk *= 0.9; - } - calcs = (slave.hormoneBalance / 50); - if (slave.balls !== 0 && calcs > -2) { - calcs -= 1; - } else if (slave.ovaries !== 1 && calcs < 2) { - calcs += 1; - } - milk *= (1 + (calcs * 0.1)); - milk *= (1 + (slave.preg / 100)); - milk *= (1 + (slave.health / 50)); - milk *= (1 + (slave.weight / 500)); - milk *= (1 + (slave.lactationAdaptation / 500)); - milk += (slave.boobsMilk / 100); - milk = Math.trunc(milk); - milk = Math.clamp(milk, 1, 1000000000000000000); - return milk; + milk = (8 + ((calcs - 400) / 50)); + } + if (slave.lactation === 2) { + milk *= 1.2; + } + milk += (milk * ((slave.devotion - 50) / 200)); + if (slave.boobsImplant > 200) { + milk *= 0.9; } + calcs = (slave.hormoneBalance / 50); + if (slave.balls !== 0 && calcs > -2) { + calcs -= 1; + } else if (slave.ovaries !== 1 && calcs < 2) { + calcs += 1; + } + milk *= (1 + (calcs * 0.1)); + milk *= (1 + (slave.preg / 100)); + milk *= (1 + (slave.health / 50)); + milk *= (1 + (slave.weight / 500)); + milk *= (1 + (slave.lactationAdaptation / 500)); + milk += (slave.boobsMilk / 100); + milk = Math.trunc(milk); + milk = Math.clamp(milk, 1, 1000000000000000000); + return milk; }; window.cumAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) { @@ -196,46 +188,45 @@ window.cumAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) let calcs = 0; if (!slave) { return null; + } + if (slave.drugs === "testicle enhancement") { + cum = ((slave.balls * 3.5) + 1); + } else if (slave.drugs === "hyper testicle enhancement") { + cum = ((slave.balls * 5) + 1); } else { - if (slave.drugs === "testicle enhancement") { - cum = ((slave.balls * 3.5) + 1); - } else if (slave.drugs === "hyper testicle enhancement") { - cum = ((slave.balls * 5) + 1); - } else { - cum = ((slave.balls * 2.5) + 1); - } - if (slave.ballType === "sterile") { - cum *= 0.8; - } - if (slave.diet === "cum production") { - cum *= 1.2; - } - calcs = (slave.hormoneBalance / 50); - cum *= (1 - (calcs * 0.1)); - if (slave.scrotum === 0) { - cum *= 0.8; - } - if (slave.prostate === 0) { - cum *= 0.2; // being generous here - } else if (slave.prostate === 2) { - cum *= 1.2; - } else if (slave.prostate === 3) { - cum *= 1.5; - } - if (slave.devotion > 50) { - cum += (cum * (slave.devotion / 100)); - } else if (slave.devotion < -50) { - cum += (cum * (slave.devotion / 100)); - } - if (slave.health > 50) { - cum += (cum * (slave.health / 50)); - } else if (slave.health < -50) { - cum += (cum * (slave.health / 50)); - } - cum = Math.trunc(cum); - cum = Math.clamp(cum, 1, 1000000000000000000); - return cum; + cum = ((slave.balls * 2.5) + 1); + } + if (slave.ballType === "sterile") { + cum *= 0.8; + } + if (slave.diet === "cum production") { + cum *= 1.2; + } + calcs = (slave.hormoneBalance / 50); + cum *= (1 - (calcs * 0.1)); + if (slave.scrotum === 0) { + cum *= 0.8; + } + if (slave.prostate === 0) { + cum *= 0.2; // being generous here + } else if (slave.prostate === 2) { + cum *= 1.2; + } else if (slave.prostate === 3) { + cum *= 1.5; + } + if (slave.devotion > 50) { + cum += (cum * (slave.devotion / 100)); + } else if (slave.devotion < -50) { + cum += (cum * (slave.devotion / 100)); + } + if (slave.health > 50) { + cum += (cum * (slave.health / 50)); + } else if (slave.health < -50) { + cum += (cum * (slave.health / 50)); } + cum = Math.trunc(cum); + cum = Math.clamp(cum, 1, 1000000000000000000); + return cum; }; window.lispReplace = function (text) {