diff --git a/src/endWeek/reports/dairyReport.js b/src/endWeek/reports/dairyReport.js new file mode 100644 index 0000000000000000000000000000000000000000..beba61e915faa744e5549f0633ccb56f51c1a9d7 --- /dev/null +++ b/src/endWeek/reports/dairyReport.js @@ -0,0 +1,1446 @@ +/** + * @returns {DocumentFragment} + */ +App.EndWeek.dairyReport = function() { + const el = new DocumentFragment(); + let r; + + let MMWorkout = 0; + const BF = App.Data.misc.bioreactorFluids; + const slaves = App.Utils.sortedEmployees(App.Entity.facilities.dairy); + let DL = slaves.length; + let anusesStretched = 0, birthers = 0, births = 0, cumWeek = 0, femCumWeek = 0, FLsFetish = 0, milkWeek = 0, balltacular = 0, boobtacular = 0, careerForgotten = 0, chemMinor = 0, chemSevere = 0, desterilized = 0, hateFilled = 0, horrified = 0, intelligenceLost = 0, mindbroken = 0, profits = 0, skillsLost = 0, stupidified = 0, vaginasStretched = 0; + let cmSlave, dsSlave, hfSlave, hrSlave, slSlave, cfSlave, stSlave, btSlave; + const inflatedSlaves = App.Facilities.Dairy.inflation(); + const dairySettings = V.dairyStimulatorsSetting + V.dairyFeedersSetting + V.dairyPregSetting; + const restrainedInjected = V.dairyRestraintsSetting + V.injectionUpgrade; + const boobsMultiplier = Math.trunc(V.injectionUpgrade * 2) + V.dairyRestraintsSetting + V.dairyFeedersSetting; + V.bioreactorPerfectedID = 0; + V.legendaryBallsID = 0; + V.legendaryCowID = 0; + V.milkmaidDevotionBonus = 1; + V.milkmaidHealthBonus = 0; + V.milkmaidTrustBonus = 1; + V.milkmaidDevotionThreshold = 45; + V.milkmaidTrustThreshold = 35; + let He, His, he, his, him, wife, girl; + let he2, his2; + let milkResults; + let growth; + let cashValue; + let outputMilk; + let outputCum; + const dairyNameCaps = capFirstChar(V.dairyName); + + // Statistics gathering + V.facility = V.facility || {}; + V.facility.dairy = initFacilityStatistics(V.facility.dairy); + const dairyStats = document.createElement("div"); + el.append(dairyStats); + + if (V.MilkmaidID !== 0) { + r = []; + let milkmaidImpregnated = 0, milkers = 0, cummers = 0, breeders = 0, prostateStim = 0; + + if (DL > 0) { + for (const slave of slaves) { + if (slave.lactation > 0) { + milkers++; + } + if (slave.balls > 0 && slave.ballType === "human") { + cummers++; + } + if (slave.bellyPreg >= 500 && V.dairyPregSetting > 0) { + breeders++; + } + if (V.milkmaidImpregnates === 1 && canPenetrate(S.Milkmaid) && S.Milkmaid.pubertyXY === 1 && !slaveResting(S.Milkmaid)) { + if (canImpreg(slave, S.Milkmaid)) { + slave.preg = 1; + slave.pregSource = V.MilkmaidID; + slave.pregKnown = 1; + slave.pregWeek = 1; + milkmaidImpregnated++; + if (slave.mpreg === 1) { + slave.counter.anal += 10; + V.analTotal += 10; + } else { + slave.counter.vaginal += 10; + V.vaginalTotal += 10; + } + slave.pregType = setPregType(slave); + WombImpregnate(slave, slave.pregType, V.MilkmaidID, 1); + } + } + /* how much effort the MM must take to force a slave into a stall */ + if (slave.devotion <= 20) { + MMWorkout++; + } + if (slave.trust < 20) { + MMWorkout++; + } + if (slave.muscles >= 30 || slave.muscles < -30) { + MMWorkout++; + } + if (slave.weight >= 70) { + MMWorkout++; + } + if (slave.weight >= 160) { + MMWorkout++; + } + if (slave.boobs >= 20000) { + MMWorkout++; + } + if (slave.balls >= 30) { + MMWorkout++; + } + if (slave.belly >= 5000) { + MMWorkout++; + } + if (!canMove(slave)) { // big bonus if they can't move themselves and are fat as cows + if (slave.weight >= 70) { + MMWorkout += 2; + } + if (slave.weight >= 160) { + MMWorkout += 2; + } + if (slave.boobs >= 20000) { + MMWorkout += 2; + } + if (slave.balls >= 30) { + MMWorkout += 2; + } + if (slave.belly >= 5000) { + MMWorkout += 2; + } + } else if (!canWalk(slave)) { // smaller bonus if they are fat as cows and need assistance with moving + if (slave.weight >= 70) { + MMWorkout += 1; + } + if (slave.weight >= 160) { + MMWorkout += 1; + } + if (slave.boobs >= 20000) { + MMWorkout += 1; + } + if (slave.balls >= 30) { + MMWorkout += 1; + } + if (slave.belly >= 5000) { + MMWorkout += 1; + } + } + if (V.dairyStimulatorsSetting < 2 && S.Milkmaid.dick > 4 && canPenetrate(S.Milkmaid) && prostateStim !== 1) { + if (slave.balls > 0 && slave.prostate > 0) { + prostateStim = 1; + } + } + } + } + + if (S.Milkmaid.health.condition < 90) { + S.Milkmaid.curatives = 2; + } else { + S.Milkmaid.curatives = 0; + } + if (S.Milkmaid.diet !== "healthy") { + (S.Milkmaid.diet = "healthy"); + } + if (S.Milkmaid.devotion <= 60) { + S.Milkmaid.devotion += 5; + } + if (S.Milkmaid.trust < 60) { + S.Milkmaid.trust += 5; + } + if (S.Milkmaid.skill.oral > 0) { + V.milkmaidDevotionBonus += Math.trunc(S.Milkmaid.skill.oral / 30); + } + if (S.Milkmaid.health.condition >= 80) { + V.milkmaidHealthBonus++; + } + if (S.Milkmaid.rules.living !== "luxurious") { + S.Milkmaid.rules.living = "luxurious"; + } + if (S.Milkmaid.rules.rest !== "restrictive") { + S.Milkmaid.rules.rest = "restrictive"; + } + if (S.Milkmaid.fetishStrength <= 95) { + if (milkers >= cummers && milkers >= breeders) { + if (S.Milkmaid.fetish !== "boobs") { + if (fetishChangeChance(S.Milkmaid) > random(0, 100)) { + FLsFetish = 1; + S.Milkmaid.fetishKnown = 1; + S.Milkmaid.fetish = "boobs"; + } + } else if (S.Milkmaid.fetishKnown === 0) { + FLsFetish = 1; + S.Milkmaid.fetishKnown = 1; + } else { + FLsFetish = 2; + S.Milkmaid.fetishStrength += 4; + } + } else if (cummers >= breeders) { + if (S.Milkmaid.fetish !== "cumslut") { + if (fetishChangeChance(S.Milkmaid) > random(0, 100)) { + FLsFetish = 3; + S.Milkmaid.fetishKnown = 1; + S.Milkmaid.fetish = "cumslut"; + } + } else if (S.Milkmaid.fetishKnown === 0) { + FLsFetish = 3; + S.Milkmaid.fetishKnown = 1; + } else { + FLsFetish = 4; + S.Milkmaid.fetishStrength += 4; + } + } else { + if (S.Milkmaid.fetish !== "pregnancy") { + if (fetishChangeChance(S.Milkmaid) > random(0, 100)) { + FLsFetish = 5; + S.Milkmaid.fetishKnown = 1; + S.Milkmaid.fetish = "pregnancy"; + } + } else if (S.Milkmaid.fetishKnown === 0) { + FLsFetish = 5; + S.Milkmaid.fetishKnown = 1; + } else { + FLsFetish = 6; + S.Milkmaid.fetishStrength += 4; + } + } + } + getSlaveStatisticData(S.Milkmaid, V.facility.dairy); + ({ + he, him, his, He, His, wife, girl + } = getPronouns(S.Milkmaid)); + r.push(`${SlaveFullName(S.Milkmaid)} is serving as your Milkmaid.`); + if (S.Milkmaid.relationship === -3 && S.Milkmaid.devotion > 50) { + V.milkmaidDevotionBonus += 2; + V.milkmaidTrustBonus += 2; + r.push(`${He} tries ${his} best to be your perfect farm${wife}.`); + } + if (milkmaidImpregnated > 0) { + r.push(`It's ${his} responsibility to keep ${his} charges pregnant, and ${he} constantly`); + if (milkmaidImpregnated === 1) { + r.push(`breeds the one fertile cow.`); + } else { + r.push(`fills the ${milkmaidImpregnated} cows' cunts with ${his} cum.`); + } + if (S.Milkmaid.career === "a breeding bull") { + r.push(`${He} was conditioned to fill empty wombs, so ${he} takes a <span class="hotpink">deep pleasure</span> in ${his} job.`); + S.Milkmaid.devotion++; + } else if (S.Milkmaid.fetish === "pregnancy" && S.Milkmaid.fetishKnown === 1) { + r.push(`${He} has a pregnancy fetish, so ${he} finds ${his} job <span class="hotpink">quite enjoyable,</span> especially when ${he} gets to watch the cows swell with ${his} children.`); + S.Milkmaid.devotion += Math.ceil(S.Milkmaid.fetishStrength / 25); + S.Milkmaid.fetishStrength += 2; + } + actX(S.Milkmaid, "penetrative", (milkmaidImpregnated * 10)); + S.Milkmaid.need = 0; + } + switch (FLsFetish) { + case 1: + r.push(`In ${his} line of work, ${he} touches more breasts than even you do. ${He} lives in an atmosphere of quivering, heaving, milky breastflesh; of girls who shudder and moan when ${he} touches their creamy nipples. ${He} has <span class="lightcoral">become more of a breast ${girl}.</span>`); + break; + case 2: + r.push(`It's a hard life, pulling teats and washing cows, but it does <span class="lightsalmon">make ${him} more of a breast fetishist.</span>`); + break; + case 3: + r.push(`In ${his} line of work, ${he} touches more dicks and balls than most sluts. ${He} lives in an atmosphere of constant orgasm and ejaculation; of girls who shudder and moan when ${he} touches their engorged members. ${He} has <span class="lightcoral">become more of a cum ${girl}.</span>`); + break; + case 4: + r.push(`It's a hard life, cupping balls, cleaning dicks, and observing semen quality, but it does <span class="lightsalmon">make ${him} more of a cum fetishist.</span>`); + break; + case 5: + r.push(`In ${his} line of work, ${he} fondles more pregnancies than most clinics. ${He} lives in an atmosphere of swollen, hanging, baby-filled bellies; of girls who shudder and moan when ${he} runs ${his} hands across their bellies. ${He} has <span class="lightcoral">grown a taste for girls laden with child.</span>`); + break; + case 6: + r.push(`It's a hard life, washing bellies and inspecting pussies, but it does <span class="lightsalmon">make ${him} more of a pregnancy fetishist.</span>`); + break; + } + if (S.Milkmaid.muscles > 30) { + V.milkmaidHealthBonus++; + r.push(`${His} muscles help ${him} handle the fattest or most reluctant cow.`); + } + if (MMWorkout > random(1, 30 - S.Milkmaid.geneticQuirks.mLoss + S.Milkmaid.geneticQuirks.mGain) && S.Milkmaid.muscles < 60) { + r.push(`Constantly having to wrestle unruly or aiding heavy cows into their stalls forces ${him} to <span class="lime">build muscle.</span>`); + S.Milkmaid.muscles++; + } + if (S.Milkmaid.skill.oral > 30) { + r.push(`${His} skilled tongue helps ${him} keep ${his} cattle happy.`); + } + if (S.Milkmaid.skill.oral < 90) { + slaveSkillIncrease('oral', S.Milkmaid, 3); + } + if (S.Milkmaid.sexualQuirk === "caring") { + V.milkmaidTrustBonus++; + r.push(`${He}'s very caring, and does ${his} best to get the cows to trust ${him}.`); + } + if (S.Milkmaid.behavioralQuirk === "funny") { + V.milkmaidTrustBonus++; + r.push(`${He}'s funny, and does ${his} best to get the cows to trust ${him} by keeping them laughing.`); + } + if (setup.milkmaidCareers.includes(S.Milkmaid.career)) { + V.milkmaidHealthBonus++; + r.push(`${He} has career experience dealing with milk animals.`); + } else if (S.Milkmaid.skill.milkmaid >= V.masteredXP) { + V.milkmaidHealthBonus++; + r.push(`${He} has experience harvesting slave products from working for you.`); + } else { + S.Milkmaid.skill.milkmaid += random(1, Math.ceil((S.Milkmaid.intelligence + S.Milkmaid.intelligenceImplant) / 15) + 8); + } + if (prostateStim === 1) { + r.push(`${He} uses ${his} turgid cock to give prostate stimulation to slaves that need help ejaculating.`); + S.Milkmaid.need -= 50; + } + V.milkmaidDevotionThreshold += (5 * V.milkmaidDevotionBonus); + V.milkmaidTrustThreshold += (5 * V.milkmaidTrustBonus); + for (const slave of slaves) { + if (S.Milkmaid.rivalryTarget === slave.ID) { + ({ + he2, his2 + } = getPronouns(slave).appendSuffix("2")); + r.push(`${He} either neglects or harasses ${his} ${rivalryTerm(S.Milkmaid)}, ${slave.slaveName}, making sure ${he2} is unhappy and uncomfortable.`); + slave.devotion -= 3; + slave.trust -= 3; + if (random(1, 100) > 65) { + S.Milkmaid.rivalry++; + slave.rivalry++; + } + } else if (S.Milkmaid.relationshipTarget === slave.ID) { + ({ + he2, his2 + } = getPronouns(slave).appendSuffix("2")); + r.push(`${He} dotes over ${his} ${relationshipTerm(S.Milkmaid)}, ${slave.slaveName}, making sure ${he2} is happy and comfortable.`); + slave.devotion++; + slave.trust++; + } else if (areRelated(S.Milkmaid, slave)) { + ({ + he2, his2 + } = getPronouns(slave).appendSuffix("2")); + r.push(`${He} pays special attention to ${his} ${relativeTerm(S.Milkmaid, slave)}, ${slave.slaveName}, making sure ${he2} is well kept and happy.`); + slave.trust++; + } + if (slave.prestigeDesc === "$He is remembered for winning best in show as a dairy cow.") { + if (slave.lactation > 0 && (slave.boobs - slave.boobsImplant) > 6000) { + r.push(`${He} spends extra time with ${slave.slaveName}, the well-known cow. ${He} is fascinated by ${slave.slaveName}'s massive ${commaNum(slave.boobs)}cc breasts and spends extra time massaging and kneading them to maximize production.`); + slave.devotion += 3; + slave.trust += 3; + } else { + r.push(`${He} is disappointed that the well-known cow ${slave.slaveName}${(slave.lactation === 0) ? `isn't producing milk anymore` : `'s breasts have shrunken considerably from their heyday`}.`); + } + } + if (slave.prestigeDesc === "$He is remembered for winning best in show as a cockmilker.") { + if ((slave.balls > 6 && slave.dick !== 0) || (slave.balls > 4 && slave.dick !== 0 && slave.prostate > 1)) { + r.push(`${He} spends extra time with ${slave.slaveName}, the massive ejaculating cow. ${He} can't help but massage the cow's dick and testes to stimulate them further and coax more from them.`); + slave.devotion += 3; + slave.trust += 3; + } else { + r.push(`${He} is disappointed that the (formerly) massive ejaculating cow`); + if (slave.balls === 0 || slave.dick === 0) { + r.push(`${slave.slaveName} is incapable of giving cum.`); + } else if (slave.prostate < 2) { + r.push(`${slave.slaveName} no longer possesses a hyperactive prostate.`); + } else { + r.push(`${slave.slaveName}'s balls are considerably smaller than at their heyday.`); + } + } + } + if (slave.prestigeDesc === "$He is remembered for winning best in show as a breeder." && slave.bellyPreg >= 1500) { + ({ + he2, his2 + } = getPronouns(slave).appendSuffix("2")); + r.push(`${He} spends extra time with ${slave.slaveName}, the well-known breeder. ${S.Milkmaid.slaveName} is fascinated by ${his2} growing pregnancy and popular womb. ${He} makes sure ${his2} belly and its occupants are nice and comfortable.`); + slave.devotion += 3; + slave.trust += 3; + } + } + App.Events.addNode(el, r, "p", "indent"); + } + + const bioreactors = App.Entity.facilities.dairy.nonEmployeeOccupantsCount; + if (DL + bioreactors > 0) { + r = []; + if (DL !== 1) { + r.push(App.UI.DOM.makeElement("span", `There are ${DL} cows in ${V.dairyName}.`, "bold")); + } else { + r.push(App.UI.DOM.makeElement("span", `There is one cow in ${V.dairyName}.`, "bold")); + } + if (V.dairyRestraintsSetting > 1) { + r.push(`The facility functions as an industrial slave products factory.`); + } + if (bioreactors > 0) { + r.push(`${bioreactors} milking machines have permanent biological components, making a total of ${bioreactors + DL} milk-producing bodies.`); + } + App.Events.addNode(el, r, "div"); + } + + if (V.MilkmaidID !== 0) { + const slave = S.Milkmaid; + /* apply following SA passages to facility leader */ + if (V.showEWD !== 0) { + const milkMaidEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", milkMaidEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + milkMaidEntry.append(App.EndWeek.favoriteIcon(slave), " "); + App.Events.addNode( + milkMaidEntry, + [ + App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"), + `is serving as your Milkmaid.`, + App.SlaveAssignment.standardSlaveReport(slave, false), + ] + ); + } else { + App.SlaveAssignment.standardSlaveReport(slave, true); + } + } + + const oldCash = V.cash; + for (const slave of slaves) { + ({ + he, him, his, He, His, wife, girl + } = getPronouns(slave)); + /* Special attention section */ + if (slave.devotion > 50 && slave.prestige === 0) { + if ( + V.legendaryCowID === 0 && slave.lactation > 0 && + (slave.boobs - slave.boobsImplant - slave.boobsMilk) > 6000 + ) { + V.legendaryCowID = slave.ID; + } + if ( + V.legendaryBallsID === 0 && slave.dick !== 0 && + (slave.balls > 5 || (slave.balls > 4 && slave.prostate > 1)) + ) { + V.legendaryBallsID = slave.ID; + } + } + + + /* Perform facility based rule changes */ + + // Set diet + if (V.dairySlimMaintain === 0) { + if (V.dairyWeightSetting === 0) { + if (slave.weight <= 30) { + slave.diet = "fattening"; + } else { + slave.diet = "healthy"; + } + } else if (V.dairyWeightSetting === 1) { + if (slave.weight <= 95) { + slave.diet = "fattening"; + } else { + slave.diet = "healthy"; + } + } else if (V.dairyWeightSetting === 2) { + if (slave.weight <= 130) { + slave.diet = "fattening"; + } else { + slave.diet = "healthy"; + } + } else if (V.dairyWeightSetting === 3) { + if (slave.weight <= 160) { + slave.diet = "fattening"; + } else { + slave.diet = "healthy"; + } + } else if (V.dairyWeightSetting === 4) { + if (slave.weight <= 195) { + slave.diet = "fattening"; + } else { + slave.diet = "healthy"; + } + } else if (V.dairyRestraintsSetting > 1) { + slave.diet = "healthy"; + } + } else if (slave.weight > 10) { + slave.diet = "restricted"; + } else if (slave.diet === "fattening" || slave.diet === "healthy" || V.dairyRestraintsSetting > 1) { + slave.diet = "healthy"; + } + + // Set clothing and accessories + if (V.dairyRestraintsSetting > 1) { + slave.collar = "none"; + slave.faceAccessory = "none"; + slave.mouthAccessory = "none"; + slave.choosesOwnClothes = 0; + slave.clothes = "no clothing"; + slave.vaginalAccessory = "none"; + slave.vaginalAttachment = "none"; + slave.dickAccessory = "none"; + slave.buttplug = "none"; + slave.chastityAnus = 0; + slave.chastityPenis = 0; + slave.chastityVagina = 0; + } + + // Set living standard + switch (V.dairyDecoration) { + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Degradationist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + case "Subjugationist": + case "Supremacist": + slave.rules.living = "spare"; + break; + default: + slave.rules.living = "normal"; + } + + // Set child destination + if (V.dairyPregSetting > 0) { + WombCleanGenericReserve(slave, "incubator", 9999); + WombCleanGenericReserve(slave, "nursery", 9999); + } + + /* General End of Week effects */ + if (V.showEWD !== 0) { + const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", slaveEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + slaveEntry.append(App.EndWeek.favoriteIcon(slave), " "); + r = []; + r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); + if (slave.choosesOwnAssignment === 2) { + r.push(App.SlaveAssignment.choosesOwnJob(slave)); + } else { + r.push(`is serving as a cow in ${V.dairyName}.`); + } + App.Events.addNode(slaveEntry, r, "div"); + milkResults = App.SlaveAssignment.getMilked(slave); + + App.Events.addNode( + slaveEntry, + [ + He, + milkResults.text, + App.SlaveAssignment.standardSlaveReport(slave, false) + ], + "div", + "indent" + ); + } else { + // discard return values silently + App.SlaveAssignment.choosesOwnJob(slave); + milkResults = App.SlaveAssignment.getMilked(slave); + App.SlaveAssignment.standardSlaveReport(slave, true); + } + milkWeek += milkResults.milk; + cumWeek += milkResults.cum; + + /* Facility Specific End of Week effects */ + if (slave.devotion <= 20 && slave.trust >= -20) { + slave.devotion -= 5; + slave.trust -= 5; + } + + // Heal + if (slave.health.condition < -80) { + improveCondition(slave, 20); + } else if (slave.health.condition < -40) { + improveCondition(slave, 10); + } else if (slave.health.condition < 0) { + improveCondition(slave, 7); + } else if (slave.health.condition < 90) { + improveCondition(slave, 3); + } + + // Empty inflation + if (slave.inflation > 0) { + deflate(slave); + } + + // Boobs grow + const gigantomastiaMod = slave.geneticQuirks.gigantomastia === 2 ? (slave.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; + if (slave.lactation > 0 && (V.dairySlimMaintain === 0 || slave.boobs > 700)) { + if (slave.boobs < 2000) { + growth = 100; + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50; + } else if (slave.boobs < 10000 * gigantomastiaMod) { + growth = 25; + } else { + growth = 0; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + + // Prostate growth + if (slave.prostate === 1) { + slave.prostate = 2; + cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); + surgeryDamage(slave, 10); + } + + // Undo Vasectomy + if (slave.vasectomy === 1) { + slave.vasectomy = 0; + cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); + surgeryDamage(slave, 10); + } + + // Force lactation + if (V.dairySlimMaintain === 0) { + if (V.dairyImplantsSetting <= 1) { + if (slave.lactation < 2 && (slave.boobs > 300 || slave.balls === 0 || slave.lactation === 1 || V.dairyImplantsSetting === 1)) { + slave.lactation = 2; + slave.lactationDuration = 2; + cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); + surgeryDamage(slave, 10); + } + } else if (V.dairyImplantsSetting === 3) { + if (slave.lactation < 1 && (slave.boobs > 300 || slave.balls === 0)) { + induceLactation(slave, 9); + } + } + } + + // Hormones + if (V.dairyHormonesSetting >= 0) { + if (slave.lactation > 0) { + slave.hormones = V.dairyHormonesSetting; + } else if (slave.balls > 0) { + slave.hormones = -1 * V.dairyHormonesSetting; + } else { + slave.hormones = V.dairyHormonesSetting; + } + } + + // Feeders + if (V.dairyFeedersUpgrade === 1 && V.dairyFeedersSetting > 0) { + if (V.dairySlimMaintain === 0 && slave.diet === "fattening") { + slave.weight += 2; + if (slave.weightDirection === 1) { + slave.weight += 2; + } + } + if (slave.health.condition < 75) { + improveCondition(slave, 25); + } else { + if (V.dairySlimMaintain === 0 && slave.lactation > 0) { + if (V.dairyStimulatorsSetting > 0) { + if (V.dairyFeedersSetting > 1) { + if (slave.boobs < 50000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } else { + /* slave.boobs = 50000;*/ + } + } else { + if (slave.boobs < 25000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } + } else if (V.dairyFeedersSetting > 1) { + if (slave.boobs < 10000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } else { + if (slave.boobs < 5000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } + } + if (slave.balls > 0) { + const ballFormula = 10 * (slave.balls - restrainedInjected); + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.geneMods.NCS === 0 && slave.balls < 125) { + slave.balls++; + } else if ( + slave.geneMods.NCS === 1 && slave.balls < 125 && + random(1, 600) > (30 + ballFormula) + ) { + slave.balls++; + } + if (slave.balls >= 125) { + balltacular++; + btSlave = slave; + } + } else if (slave.balls < 10) { + if (slave.geneMods.NCS === 0 && random(1, 100) > (40 + ballFormula)) { + slave.balls++; + } else if ( + slave.geneMods.NCS === 1 && slave.balls < 125 && random(1, 50) > (40 + ballFormula)) { + slave.balls++; + } + if (slave.balls >= 10) { + balltacular++; + btSlave = slave; + } + } + if (slave.dick > 0) { + const dickFormula = 10 * (4 + slave.dick - restrainedInjected); + if (slave.dick < 10) { + if (slave.geneMods.NCS === 0 && random(1, 100) > dickFormula) { + slave.dick++; + } else if (slave.geneMods.NCS === 1 && random(1, 50) > dickFormula) { + slave.dick++; + } + } + } + } + } + } + + // Stimulators + if (V.dairyStimulatorsUpgrade === 1 && V.dairyStimulatorsSetting > 0) { + if (V.dairyStimulatorsSetting > 1 && slave.anus < 4) { + slave.anus++; + if (slave.anus >= 4) { + anusesStretched++; + } + } else if (slave.anus < 3) { + slave.anus++; + } + if (slave.health.condition < 60) { + improveCondition(slave, 20); + } else if (V.dairySlimMaintain === 0 && slave.lactation > 0) { + if (V.dairyFeedersSetting > 1) { + if (slave.boobs < 50000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } else if (V.dairyFeedersSetting > 0) { + if (slave.boobs < 25000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } else { + if (slave.boobs < 10000) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (slave.boobs < 2000) { + growth = 75 * boobsMultiplier + (50 / 4); + } else if (slave.boobs < 5000 * gigantomastiaMod) { + growth = 50 * boobsMultiplier + (50 / 4); + } else { + growth = 25 * boobsMultiplier + (50 / 4); + } + } else { + growth = 25 * boobsMultiplier + ((50 - slave.physicalAge) / 4); + } + if (slave.boobs <= 20000 && slave.boobs + growth > 20000) { + boobtacular++; + } + if (slave.geneMods.NCS === 1) { + growth = Math.trunc(growth / 2); + } + slave.boobs += growth; + } + } + } + } + + // Restraints + if (V.dairyRestraintsSetting > 1) { + if (slave.lactation > 0) { + slave.lactationAdaptation += 1; + } + if (slave.muscles > -100) { + slave.muscles -= 1 + slave.geneticQuirks.mLoss; + } + if (slave.fetish === "mindbroken") { + if (slave.boobs > 48000 && (slave.balls >= 10 || slave.balls === 0)) { + V.bioreactorPerfectedID = slave.ID; + } + } else { + if (slave.sexualFlaw !== "self hating") { + if (slave.sexualFlaw !== "cum addict" || V.dairyFeedersSetting === 0) { + if (slave.sexualFlaw !== "anal addict" || V.dairyStimulatorsSetting === 0) { + if (slave.sexualFlaw !== "breeder" || slave.preg < 0 || V.dairyPregSetting === 0) { + if (V.dairyStimulatorsSetting > 1) { + if (slave.sexualFlaw !== "hates anal" && slave.sexualQuirk !== "painal queen") { + slave.sexualFlaw = "hates anal"; + } + } + if (V.dairyPregSetting > 1) { + if (slave.sexualFlaw !== "hates penetration" && slave.sexualQuirk !== "strugglefuck queen") { + slave.sexualFlaw = "hates penetration"; + } + } + if (V.dairyFeedersSetting > 1) { + if (slave.sexualFlaw !== "hates oral" && slave.sexualQuirk !== "gagfuck queen") { + slave.sexualFlaw = "hates oral"; + } + } + } + } + } + } + } + if (slave.chem > 250) { + chemSevere++; + } else if (slave.chem > 100) { + chemMinor++; + cmSlave = slave; + } + } + + // Stimulator + Feeders + Pregnancy + if (dairySettings > 5) { + if (slave.devotion <= 95 && slave.sexualFlaw !== "self hating") { + if (slave.sexualFlaw !== "breeder" || slave.preg < 0) { + if (slave.devotion > -75) { + slave.devotion -= 10; + if (slave.devotion < -65) { + hateFilled++; + hfSlave = slave; + } + } else if (slave.trust > -75) { + slave.trust -= 10; + if (slave.trust < -65) { + horrified++; + hrSlave = slave; + } + } else if (slave.skill.vaginal > 0) { + slave.skill.vaginal -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.oral > 0) { + slave.skill.oral -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.anal > 0) { + slave.skill.anal -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.career !== "a bioreactor") { + slave.career = "a bioreactor"; + careerForgotten++; + cfSlave = slave; + } else if (slave.intelligenceImplant > 0) { + slave.intelligenceImplant = Math.clamp(slave.intelligenceImplant - 5, 0, 30); + skillsLost++; + slSlave = slave; + } else if (slave.intelligence >= -15) { + slave.intelligence -= 5; + intelligenceLost++; + } else if (slave.devotion >= -20) { + slave.devotion -= 10; + } else if (slave.trust >= -20) { + slave.trust -= 10; + } else if (slave.skill.whoring > 0) { + slave.skill.whoring -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.entertainment > 0) { + slave.skill.entertainment -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.intelligence >= -50) { + slave.intelligence -= 5; + if (slave.intelligence < -50) { + stupidified++; + stSlave = slave; + } + } else if (slave.fetish !== "mindbroken") { + slave.fetish = "mindbroken"; + mindbroken++; + } + } + } + if (slave.career !== "a bioreactor" && + ( + (slave.counter.milk > 1000 && slave.boobs > 12000) || + (slave.counter.cum > 1000 && slave.balls >= 10) + ) + ) { + slave.career = "a bioreactor"; + careerForgotten++; + cfSlave = slave; + } + if (V.arcologies[0].FSBodyPuristLaw === 0 && V.healthyDrugsUpgrade === 0) { + slave.chem += 5; + } else { + slave.chem += 2; + } + } else if (dairySettings > 3) { + if (slave.devotion < 75) { + if (slave.devotion > -75) { + slave.devotion -= 5; + if (slave.devotion < -70) { + hateFilled++; + hfSlave = slave; + } + } else if (slave.trust > -75) { + slave.trust -= 5; + if (slave.trust < -70) { + horrified++; + hrSlave = slave; + } + } else if (slave.skill.vaginal >= 20) { + slave.skill.vaginal -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.oral >= 20) { + slave.skill.oral -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.anal >= 20) { + slave.skill.anal -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.career !== "a bioreactor") { + slave.career = "a bioreactor"; + careerForgotten++; + cfSlave = slave; + } else if (slave.intelligenceImplant > 0) { + slave.intelligenceImplant = Math.clamp(slave.intelligenceImplant - 5, 0, 30); + skillsLost++; + slSlave = slave; + } else if (slave.intelligence >= -15) { + slave.intelligence -= 5; + intelligenceLost++; + } else if (slave.devotion >= -20) { + slave.devotion -= 8; + } else if (slave.trust >= -20) { + slave.trust -= 8; + } else if (slave.skill.whoring >= 20) { + slave.skill.whoring -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.skill.entertainment >= 20) { + slave.skill.entertainment -= 10; + skillsLost++; + slSlave = slave; + } else if (slave.intelligence >= -50) { + slave.intelligence -= 5; + if (slave.intelligence < -50) { + stupidified++; + stSlave = slave; + } + } else if (slave.fetish !== "mindbroken") { + slave.fetish = "mindbroken"; + mindbroken++; + } + } else if (slave.career !== "a bioreactor" && + ( + (slave.counter.milk > 1000 && slave.boobs > 12000) || + (slave.counter.cum > 1000 && slave.balls >= 10) + ) + ) { + slave.career = "a bioreactor"; + careerForgotten++; + cfSlave = slave; + } + if (V.arcologies[0].FSBodyPuristLaw === 0 && V.healthyDrugsUpgrade === 0) { + slave.chem += 2; + } else { + slave.chem++; + } + } + + // Pregnancy + if (V.dairyPregUpgrade === 1 && V.dairyPregSetting > 0) { + if (slave.ovaries === 1 && slave.vagina > -1) { + femCumWeek += girlCumAmount(slave); + if (slave.preg === -2) { + slave.preg = 0; + desterilized++; + dsSlave = slave; + } + if (isFertile(slave)) { + if (slave.eggType === "human") { + slave.preg = 1; + slave.pregWeek = 1; + slave.pregKnown = 1; + if (V.dairyPregSetting > 2) { + slave.pregType = random(10, 29); + } else if (V.dairyPregSetting > 1) { + slave.pregType = random(3, 6); + } else { + slave.pregType = either(1, 1, 1, 1, 2, 2, 2, 3, 3, 4); + } + slave.pregSource = -2; + WombImpregnate(slave, slave.pregType, -2, 1); + } /* closes eggType */ + if (slave.vagina === 0) { + slave.vagina++; + } + } else if (slave.pregKnown === 1) { + if (V.dairyPregSetting > 2) { + cashValue = 100; + } else if (V.dairyPregSetting > 1) { + cashValue = 50; + } else { + cashValue = 25; + } + cashX(cashValue, "slaveAssignmentDairy", slave); + if (V.dairyPregSetting > 1 && slave.vagina < 4) { + slave.vagina++; + if (slave.vagina === 4) { + vaginasStretched++; + } + } else if (slave.vagina < 3) { + slave.vagina++; + } + } + } + } + } // End slave loop. + + // Inflation + if (inflatedSlaves.milk > 0) { + milkWeek -= ((8 * inflatedSlaves.milk * 10) + 8); + } + if (inflatedSlaves.cum > 0) { + cumWeek -= ((80 * inflatedSlaves.cum * 10) + 80); + if (cumWeek < 0) { + cumWeek = 0; + } + } + + if (bioreactors > 0) { + r = []; + const tempCash = V.cash; + + let seed; + seed = (BF.XY.cum * V.bioreactorsXY) + (BF.herm.cum * V.bioreactorsHerm); + cumWeek += seed; + if (V.arcologies[0].FSPastoralistLaw === 1) { + cashValue = seed * random(40, 50); + } else if (V.arcologies[0].FSPastoralist !== "unset") { + cashValue = seed * (random(25, 35) + Math.trunc(V.arcologies[0].FSPastoralist / 10)); + } else { + cashValue = seed * random(25, 35); + } + cashX(cashValue, "menialBioreactors"); + + seed = (BF.XX.femCum * V.bioreactorsXX) + (BF.herm.femCum * V.bioreactorsHerm); + femCumWeek += seed; + if (V.arcologies[0].FSPastoralistLaw === 1) { + cashValue = seed * random(40, 50); + } else if (V.arcologies[0].FSPastoralist !== "unset") { + cashValue = seed * (random(25, 35) + Math.trunc(V.arcologies[0].FSPastoralist / 10)); + } else { + cashValue = seed * random(25, 35); + } + cashX(cashValue, "menialBioreactors"); + + seed = (BF.XX.milk * V.bioreactorsXX) + (BF.barren.milk * V.bioreactorsBarren) + (BF.XY.milk * V.bioreactorsXY) + (BF.herm.milk * V.bioreactorsHerm); + milkWeek += seed; + if (V.arcologies[0].FSPastoralist !== "unset" && V.arcologies[0].FSPastoralistLaw === 1) { + cashValue = seed * (13 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + } else if (V.arcologies[0].FSPastoralist !== "unset") { + cashValue = seed * (8 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + } else { + cashValue = seed * 9; + } + cashX(cashValue, "menialBioreactors"); + r.push(`${bioreactors} permanently converted biological`); + if (bioreactors > 1) { + r.push(`"machines" produce`); + } else { + r.push(`"machine" produces`); + } + r.push(`<span class="yellowgreen">${cashFormat(V.cash - tempCash)}</span> income.`); + App.Events.addParagraph(el, r); + } + + if (inflatedSlaves.milk > 0) { + cashX(forceNeg(Math.trunc((600 * (inflatedSlaves.milk) + 8) + random(50, 200))), "slaveAssignmentDairy"); + } + if (inflatedSlaves.cum > 0) { + cashX(forceNeg(Math.trunc((300 * (inflatedSlaves.cum + 8)) + random(25, 100))), "slaveAssignmentDairy"); + } + + profits = V.cash - oldCash; + r = []; + + if (chemSevere > 1) { + r.push(`${chemSevere} cows' productivity is being reduced by the long term effects of industrial use.`); + } else if (chemSevere > 0) { + r.push(`One cow's productivity is being reduced by the long term effects of industrial use.`); + } + + if (chemMinor > 1) { + r.push(`${chemMinor} cows have been drugged and used long enough that they require increased curative doses, slightly reducing their output.`); + } else if (chemMinor > 0) { + ({he, his} = getPronouns(cmSlave)); + r.push(`One cow has been drugged and used long enough that ${he} requires increased curative doses, slightly reducing ${his} output.`); + } + + if (desterilized > 1) { + r.push(`${desterilized} cows had minor health issues preventing their fertile womb from conceiving; the issues have been resolved and they have been impregnated.`); + } else if (desterilized > 0) { + ({he, his} = getPronouns(dsSlave)); + r.push(`One cow had minor health issues preventing ${his} fertile womb from conceiving; they have been resolved and ${he} has been impregnated.`); + } + + if (hateFilled > 1) { + r.push(`${hateFilled} cows stopped struggling so much when fucked by the machines; it seems they have sunk into a fugue.`); + } else if (hateFilled > 0) { + ({he} = getPronouns(hfSlave)); + r.push(`One cow stopped struggling so much when fucked by the machines; it seems ${he} has sunk into a fugue.`); + } + + if (horrified > 1) { + r.push(`${horrified} cows' emotional activity dropped significantly; this indicates acceptance that they are not likely to leave ${V.dairyName}, ever again.`); + } else if (horrified > 0) { + ({he} = getPronouns(hrSlave)); + r.push(`One cow's emotional activity dropped significantly; this indicates acceptance that ${he} is not likely to leave ${V.dairyName}, ever again.`); + } + + if (skillsLost > 1) { + r.push(`${skillsLost} cows forgot skills due to their inability to focus on anything but machine rape.`); + } else if (skillsLost > 0) { + ({his} = getPronouns(slSlave)); + r.push(`One cow forgot skills due to ${his} inability to focus on anything but machine rape.`); + } + + if (careerForgotten > 1) { + r.push(`${careerForgotten} cows forgot the details of their past professional lives; all they can remember now is this.`); + } else if (careerForgotten > 0) { + ({he, his} = getPronouns(cfSlave)); + r.push(`One cow forgot the details of ${his} past professional life; all ${he} can remember now is this.`); + } + + if (vaginasStretched > 1) { + r.push(`${vaginasStretched} cows' vaginas were broken in for machine use, and are unlikely to be any use for anything other than receiving cum and medication, and giving birth.`); + } else if (vaginasStretched > 0) { + r.push(`One cow's vagina was broken in for machine use, and is unlikely to be any use for anything other than receiving cum and medication, and giving birth.`); + } + + if (anusesStretched > 1) { + r.push(`${anusesStretched} cows' anuses were loosened by machine sodomy, and are now permanently gaped.`); + } else if (anusesStretched > 0) { + r.push(`One cow's anus was loosened by machine sodomy, and is now permanently gaped.`); + } + + if (intelligenceLost > 1) { + r.push(`${intelligenceLost} cows suffered some loss of intelligence due to accumulated mental stress from life attached to a milking machine.`); + } else if (intelligenceLost > 0) { + r.push(`One cow suffered some loss of intelligence due to accumulated mental stress from life attached to a milking machine.`); + } + + if (stupidified > 1) { + r.push(`${stupidified} cows were so mentally dulled by use as biological factories that they were reduced to a very low level of intelligence.`); + } else if (stupidified > 0) { + ({he} = getPronouns(stSlave)); + r.push(`One cow was so mentally dulled by use as biological factories that ${he} was reduced to a very low level of intelligence.`); + } + + if (mindbroken > 1) { + r.push(`${mindbroken} cows finally lost higher mental function, and are now nothing more than industrial equipment made of meat.`); + } else if (mindbroken > 0) { + r.push(`One cow finally lost higher mental function, and is now nothing more than industrial equipment made of meat.`); + } + + if (boobtacular > 1) { + r.push(`${boobtacular} cows grew past 30 kilograms of breasts, a remarkable advance in capacity.`); + } else if (boobtacular > 0) { + r.push(`One cow grew past 30 kilograms of breasts, a remarkable advance in capacity.`); + } + + if (balltacular > 1) { + r.push(`${balltacular} cows' testicles reached the largest size drug treatments can produce; the machines will now focus on buttfucking them with extra force.`); + } else if (balltacular > 0) { + ({him} = getPronouns(btSlave)); + r.push(`One cow's testicles reached the largest size drug treatments can produce; the machines will now focus on buttfucking ${him} with extra force.`); + } + + if (V.dairyPregUpgrade === 1) { + if (V.dairyPregSetting >= 2) { + r.push(`Fertile cows make you a significant profit through contract pregnancies.`); + } else if (V.dairyPregSetting === 1) { + r.push(`Fertile cows make you a small profit through contract pregnancies.`); + } + } + cumWeek = Math.trunc(cumWeek / 10); + V.cumPipeline = cumWeek; + V.milkPipeline = milkWeek; + if (inflatedSlaves.milk > 0) { + outputMilk = ((8 * inflatedSlaves.milk * 10) + 8); + } else { + outputMilk = 0; + } + if (inflatedSlaves.cum > 0) { + outputCum = (((80 * inflatedSlaves.cum * 10) + 80) / 10); + } else { + outputCum = 0; + } + r.push(`${dairyNameCaps} produced ${commaNum(milkWeek + outputMilk)} liters of milk`); + if (cumWeek > 0) { + r.push(`and ${commaNum(cumWeek + outputCum)} liters of cum`); + } + r.push(`this week.`); + if (inflatedSlaves.milk > 0) { + r.push(`${commaNum(outputMilk)} liters of milk were pumped into your penthouse for filling slaves this week.`); + } + if (inflatedSlaves.cum > 0) { + if (inflatedSlaves.milk > 0) { + r.push(`and`); + } + r.push(`${commaNum(outputCum)} liters of cum were pumped into your penthouse`); + if (inflatedSlaves.milk > 0) { + r.push(`as well.`); + } else { + r.push(`this week.`); + } + } + if (femCumWeek > 0) { + r.push(`The machines also managed to reclaim ${commaNum(femCumWeek)} liters of salable vaginal secretions.`); + } + if (births > 1) { + r.push(`Additionally, ${birthers} cows gave birth`); + if (births > birthers) { + r.push(`to a total of ${births} calves`); + } + r.push(`this week.`); + } else if (births > 0) { + r.push(`Additionally, one cow gave birth`); + if (births > birthers) { + r.push(`to a total of ${births} calves`); + } + r.push(`this week.`); + } + + if (V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1) { + if (V.dairyPregSetting > 0) { + r.push(`The Societal Elite know what you are doing with your cows. <span class="red">They do not approve.</span>`); + V.failedElite += 5; + } + if (V.milkmaidImpregnates === 1) { + r.push(`The Societal Elite know you've ordered ${S.Milkmaid.slaveName} to impregnate your cows. <span class="red">They are not amused by your disinterest in eugenics.</span>`); + V.failedElite += 10; + } + } + + // Record statistics gathering + let b = State.variables.facility.dairy; + b.whoreIncome = 0; + b.whoreCosts = 0; + b.rep = 0; + for (let si of b.income.values()) { + b.whoreIncome += si.income; + b.whoreCosts += si.cost; + b.rep += si.rep; + } + b.maintenance = (State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren); + if (b.maintenance > 0) { + b.maintenance *= 100; + } else { + b.maintenance = 0; + } + b.maintenance += State.variables.dairy * State.variables.facilityCost * (1.0 + 0.2 * State.variables.dairyFeedersUpgrade + 0.1 * State.variables.dairyPregUpgrade); + b.totalIncome = b.whoreIncome; + b.totalExpenses = b.whoreCosts + b.maintenance; + b.profit = b.totalIncome - b.totalExpenses; + if (profits > 0) { + r.push(`The sale of these products makes a profit of <span class="yellowgreen">${cashFormat(profits)}.</span>`); + } else if (profits < 0) { + r.push(`Due to`); + if (V.dairyImplantsSetting !== 3) { + r.push(`one-off costs of hormonal implants to encourage fluid production,`); + } else { + r.push(`the need to induce lactation in some cows,`); + } + r.push(`your dairy made a loss of <span class="red">${cashFormat(profits)}.</span>`); + } else { + r.push(`Due to`); + if (V.dairyImplantsSetting !== 3) { + r.push(`one-off costs of hormonal implants to encourage fluid production`); + } else { + r.push(`the need to induce lactation in some cows`); + } + r.push(`paired with existing output, your dairy broke even this week.`); + } + + if (V.arcologies[0].FSPastoralistLaw === 1) { + r.push(`Slave products have completely replaced traditional dairy, making the facility extremely lucrative.`); + } + App.Events.addParagraph(el, r); + + if (V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) { + r = []; + if (V.arcologies[0].FSSlimnessEnthusiast > 80) { + r.push(`Because of your arcology's great enthusiasm for small breasted slaves, the dairy's milking systems have been carefully overhauled and optimized for maximum milk extraction from slaves with smaller endowments — providing a significant boost to their otherwise modest output. This also prevents unfashionable breast expansion of already slim slaves through the milking process.`); + } else if (V.arcologies[0].FSSlimnessEnthusiast > 20) { + r.push(`In keeping with your arcology's ideals, ${V.dairyName} has been modified to handle slim slaves with minimal impact to their body shapes. This limits potential profitability, but prevents unfashionable breast expansion of already slim slaves through the milking process.`); + } else { + r.push(`Due to your arcology's lack of enthusiasm for small breasted slaves the dairy has discontinued using milking techniques that prevent breast growth through the milking process.`); + V.dairySlimMaintain = 0; + V.dairySlimMaintainUpgrade = 0; + } + App.Events.addParagraph(el, r); + } + + if (V.createBioreactors === 1 && V.bioreactorPerfectedID !== 0) { + const bioreactor = getSlave(V.bioreactorPerfectedID); + if (bioreactor) { + let gender; + if (bioreactor.ovaries === 1) { + if (bioreactor.balls === 0) { + V.bioreactorsXX++; + gender = "XX"; + } else { + V.bioreactorsHerm++; + gender = "herm"; + } + } else { + if (bioreactor.balls === 0) { + V.bioreactorsBarren++; + gender = "barren"; + } else { + V.bioreactorsXY++; + gender = "XY"; + } + } + ({ + he, him, his, He, His, wife, girl + } = getPronouns(bioreactor)); + const ageInWeeks = 52 * (V.retirementAge - bioreactor.physicalAge); + r = []; + r.push(`${SlaveFullName(bioreactor)}'s breasts,`); + if (bioreactor.balls > 0) { + r.push(`balls,`); + } + if (bioreactor.ovaries === 1) { + r.push(`belly,`); + } + r.push(`body, and mind have been completely adapted to synthesize useful products. ${He} has been reclassified as part of the machine ${he}'s now permanently attached to. This combination is projected to produce approximately`); + if (bioreactor.balls > 0) { + r.push(commaNum(1000 * Math.trunc(BF[gender].cum * ageInWeeks) / 1000)); + r.push(`liters of cum,`); + } + if (bioreactor.ovaries === 1) { + r.push(commaNum(100 * Math.trunc(BF[gender].femCum * ageInWeeks) / 100)); + r.push(`liters of vaginal secretions,`); + if (V.dairyPregSetting === 3) { + r.push((13 * (V.retirementAge - bioreactor.physicalAge)).toString()); + } else { + r.push((5 * (V.retirementAge - bioreactor.physicalAge)).toString()); + } + r.push(`slaves,`); + } + r.push(`and`); + r.push(commaNum(1000 * Math.trunc(BF[gender].milk * ageInWeeks) / 1000)); + r.push(`liters of milk over a ${V.retirementAge - bioreactor.physicalAge} year period before its biological components must be replaced.`); + App.Events.addParagraph(el, r); + removeSlave(bioreactor); + } + } + + if (V.dairyDecoration !== "standard") { + r = []; + r.push(`${dairyNameCaps}'s`); + r.push(App.UI.DOM.makeElement("span", `${V.dairyDecoration} style is well known.`, "green")); + App.Events.addParagraph(el, r); + } + + if (DL > 0) { + // Dairy stats + el.append(App.Facilities.Dairy.Stats(false)); + dairyStats.append(App.Facilities.Dairy.Stats(true)); + } + return el; +}; diff --git a/src/endWeek/reportsTW/dairyReport.tw b/src/endWeek/reportsTW/dairyReport.tw new file mode 100644 index 0000000000000000000000000000000000000000..c299f843e0c2d1a866783854c32efe328bb221be --- /dev/null +++ b/src/endWeek/reportsTW/dairyReport.tw @@ -0,0 +1,3 @@ +:: Dairy Report [nobr] + +<<includeDOM App.EndWeek.dairyReport()>> diff --git a/src/events/eventUtils.js b/src/events/eventUtils.js index da56dda3a448cebf229c30f51f71f2e763546619..6a117d3f283b325621417b3d09bd237fd7d42943 100644 --- a/src/events/eventUtils.js +++ b/src/events/eventUtils.js @@ -144,12 +144,14 @@ App.Events.addParagraph = function(node, sentences) { }; /** assemble an element from an array of DOM nodes, sentences or sentence fragments (which may contain HTML) + * @template {keyof HTMLElementTagNameMap} K * @param {Node} node * @param {Array<string|HTMLElement|DocumentFragment>} sentences - * @param {string} [element] + * @param {K} [element] + * @param {string|Array<string>} [classNames] */ -App.Events.addNode = function(node, sentences, element) { - const el = (element) ? document.createElement(element) : new DocumentFragment(); +App.Events.addNode = function(node, sentences, element, classNames) { + const el = (element) ? App.UI.DOM.makeElement(element, null, classNames) : new DocumentFragment(); $(el).append(...App.Events.spaceSentences(sentences)); node.appendChild(el); }; diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw deleted file mode 100644 index 14409cb005a55d468e4c80bb3a27c6ac6a8493d4..0000000000000000000000000000000000000000 --- a/src/uncategorized/dairyReport.tw +++ /dev/null @@ -1,1212 +0,0 @@ -:: Dairy Report [nobr] - -<span id="dairy-stats"> -</span> - -<<set _MMWorkout = 0>> -<<set _BF = App.Data.misc.bioreactorFluids>> -<<set _slaves = App.Utils.sortedEmployees(App.Entity.facilities.dairy)>> -<<set _DL = _slaves.length, _SL = $slaves.length, $bioreactorPerfectedID = 0, $legendaryBallsID = 0, $legendaryCowID = 0, $milkmaidDevotionBonus = 1, $milkmaidHealthBonus = 0, $milkmaidTrustBonus = 1, $milkmaidDevotionThreshold = 45, $milkmaidTrustThreshold = 35, _anusesStretched = 0, _birthers = 0, _births = 0, _cumWeek = 0, _femCumWeek = 0, _FLsFetish = 0, _milkWeek = 0, _balltacular = 0, _boobtacular = 0, _careerForgotten = 0, _chemMinor = 0, _chemSevere = 0, _desterilized = 0, _hateFilled = 0, _horrified = 0, _intelligenceLost = 0, _mindbroken = 0, _profits = 0, _skillsLost = 0, _stupidified = 0, _vaginasStretched = 0, _cmSlave = 0, _dsSlave = 0, _hfSlave = 0, _hrSlave = 0, _slSlave = 0, _cfSlave = 0, _stSlave = 0, _btSlave = 0, _inflatedSlaves = App.Facilities.Dairy.inflation()>> - -<!-- Statistics gathering --> -<<set $facility = $facility || {}, $facility.dairy = initFacilityStatistics($facility.dairy)>> - -<<set _dairyNameCaps = capFirstChar($dairyName)>> - -<<if ($MilkmaidID != 0)>> - <<set _FLs = $slaveIndices[$MilkmaidID]>> - <<set _milkmaidImpregnated = 0, _milkers = 0, _cummers = 0, _breeders = 0, _prostateStim = 0>> - - <<if (_DL > 0)>> - <<for _slave range _slaves>> - <<if _slave.lactation > 0>> - <<set _milkers++>> - <</if>> - <<if _slave.balls > 0 && _slave.ballType == "human">> - <<set _cummers++>> - <</if>> - <<if (_slave.bellyPreg >= 500 && $dairyPregSetting > 0)>> - <<set _breeders++>> - <</if>> - <<if ($milkmaidImpregnates == 1) && (canPenetrate(_S.Milkmaid)) && _S.Milkmaid.pubertyXY == 1 && !slaveResting(_S.Milkmaid)>> - <<if (canImpreg(_slave, _S.Milkmaid))>> - <<set _slave.preg = 1, _slave.pregSource = $MilkmaidID, _slave.pregKnown = 1, _slave.pregWeek = 1, _milkmaidImpregnated++>> - <<if _slave.mpreg == 1>> - <<set _slave.counter.anal += 10, $analTotal += 10>> - <<else>> - <<set _slave.counter.vaginal += 10, $vaginalTotal += 10>> - <</if>> - <<set _slave.pregType = setPregType(_slave)>> - <<set WombImpregnate(_slave, _slave.pregType, $MilkmaidID, 1)>> - <</if>> - <</if>> - /* how much effort the MM must take to force a slave into a stall */ - <<if _slave.devotion <= 20>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.trust < 20>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.muscles >= 30 || _slave.muscles < -30>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.weight >= 70>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.weight >= 160>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.boobs >= 20000>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.balls >= 30>> - <<set _MMWorkout++>> - <</if>> - <<if _slave.belly >= 5000>> - <<set _MMWorkout++>> - <</if>> - <<if !canMove(_slave)>> /* big bonus if they can't move themselves and are fat as cows */ - <<if _slave.weight >= 70>> - <<set _MMWorkout += 2>> - <</if>> - <<if _slave.weight >= 160>> - <<set _MMWorkout += 2>> - <</if>> - <<if _slave.boobs >= 20000>> - <<set _MMWorkout += 2>> - <</if>> - <<if _slave.balls >= 30>> - <<set _MMWorkout += 2>> - <</if>> - <<if _slave.belly >= 5000>> - <<set _MMWorkout += 2>> - <</if>> - <<elseif !canWalk(_slave)>> /* smaller bonus if they are fat as cows and need assistance with moving */ - <<if _slave.weight >= 70>> - <<set _MMWorkout += 1>> - <</if>> - <<if _slave.weight >= 160>> - <<set _MMWorkout += 1>> - <</if>> - <<if _slave.boobs >= 20000>> - <<set _MMWorkout += 1>> - <</if>> - <<if _slave.balls >= 30>> - <<set _MMWorkout += 1>> - <</if>> - <<if _slave.belly >= 5000>> - <<set _MMWorkout += 1>> - <</if>> - <</if>> - <<if ($dairyStimulatorsSetting < 2) && (_S.Milkmaid.dick > 4) && (canPenetrate(_S.Milkmaid)) && _prostateStim != 1>> - <<if (_slave.balls > 0) && (_slave.prostate > 0)>> - <<set _prostateStim = 1>> - <</if>> - <</if>> - <</for>> - <</if>> - - <<if _S.Milkmaid.health.condition < 90>> - <<set _S.Milkmaid.curatives = 2>> - <<else>> - <<set _S.Milkmaid.curatives = 0>> - <</if>> - <<if (_S.Milkmaid.diet != "healthy")>> - <<set (_S.Milkmaid.diet = "healthy")>> - <</if>> - <<if _S.Milkmaid.devotion <= 60>> - <<set _S.Milkmaid.devotion += 5>> - <</if>> - <<if _S.Milkmaid.trust < 60>> - <<set _S.Milkmaid.trust += 5>> - <</if>> - <<if (_S.Milkmaid.skill.oral > 0)>> - <<set $milkmaidDevotionBonus += Math.trunc(_S.Milkmaid.skill.oral/30)>> - <</if>> - <<if (_S.Milkmaid.health.condition >= 80)>> - <<set $milkmaidHealthBonus++>> - <</if>> - <<if _S.Milkmaid.rules.living != "luxurious">> - <<set _S.Milkmaid.rules.living = "luxurious">> - <</if>> - <<if _S.Milkmaid.rules.rest != "restrictive">> - <<set _S.Milkmaid.rules.rest = "restrictive">> - <</if>> - <<if _S.Milkmaid.fetishStrength <= 95>> - <<if _milkers >= _cummers && _milkers >= _breeders>> - <<if _S.Milkmaid.fetish != "boobs">> - <<if fetishChangeChance(_S.Milkmaid) > random(0,100)>> - <<set _FLsFetish = 1, _S.Milkmaid.fetishKnown = 1, _S.Milkmaid.fetish = "boobs">> - <</if>> - <<elseif _S.Milkmaid.fetishKnown == 0>> - <<set _FLsFetish = 1, _S.Milkmaid.fetishKnown = 1>> - <<else>> - <<set _FLsFetish = 2, _S.Milkmaid.fetishStrength += 4>> - <</if>> - <<elseif _cummers >= _breeders>> - <<if _S.Milkmaid.fetish != "cumslut">> - <<if fetishChangeChance(_S.Milkmaid) > random(0,100)>> - <<set _FLsFetish = 3, _S.Milkmaid.fetishKnown = 1, _S.Milkmaid.fetish = "cumslut">> - <</if>> - <<elseif _S.Milkmaid.fetishKnown == 0>> - <<set _FLsFetish = 3, _S.Milkmaid.fetishKnown = 1>> - <<else>> - <<set _FLsFetish = 4, _S.Milkmaid.fetishStrength += 4>> - <</if>> - <<else>> - <<if _S.Milkmaid.fetish != "pregnancy">> - <<if fetishChangeChance(_S.Milkmaid) > random(0,100)>> - <<set _FLsFetish = 5, _S.Milkmaid.fetishKnown = 1, _S.Milkmaid.fetish = "pregnancy">> - <</if>> - <<elseif _S.Milkmaid.fetishKnown == 0>> - <<set _FLsFetish = 5, _S.Milkmaid.fetishKnown = 1>> - <<else>> - <<set _FLsFetish = 6, _S.Milkmaid.fetishStrength += 4>> - <</if>> - <</if>> - <</if>> - <<run getSlaveStatisticData(_S.Milkmaid, $facility.dairy)>> - <<set $i = _FLs>> - <<setLocalPronouns _S.Milkmaid>> - <<= SlaveFullName(_S.Milkmaid)>> is serving as your Milkmaid. - <<if _S.Milkmaid.relationship == -3 && _S.Milkmaid.devotion > 50>> - <<set $milkmaidDevotionBonus += 2, $milkmaidTrustBonus += 2>> - $He tries $his best to be your perfect farm<<= $wife>>. - <</if>> - <<if _milkmaidImpregnated > 0>> - It's $his responsibility to keep $his charges pregnant, and $he constantly - <<if _milkmaidImpregnated == 1>> - breeds the one fertile cow. - <<else>> - fills the _milkmaidImpregnated cows' cunts with $his cum. - <</if>> - <<if _S.Milkmaid.career == "a breeding bull">> - $He was conditioned to fill empty wombs, so $he takes a @@.hotpink;deep pleasure@@ in $his job. - <<set _S.Milkmaid.devotion++>> - <<elseif (_S.Milkmaid.fetish == "pregnancy" && _S.Milkmaid.fetishKnown == 1)>> - $He has a pregnancy fetish, so $he finds $his job @@.hotpink;quite enjoyable,@@ especially when $he gets to watch the cows swell with $his children. - <<set _S.Milkmaid.devotion += Math.ceil(_S.Milkmaid.fetishStrength/25)>> - <<set _S.Milkmaid.fetishStrength += 2>> - <</if>> - <<set _Tmult = (_milkmaidImpregnated * 10), _S.Milkmaid.counter.penetrative += _Tmult, $penetrativeTotal += _Tmult>> - <<set _S.Milkmaid.need = 0>> - <</if>> - <<if (_FLsFetish == 1)>> - In $his line of work, $he touches more breasts than even you do. $He lives in an atmosphere of quivering, heaving, milky breastflesh; of girls who shudder and moan when $he touches their creamy nipples. $He has @@.lightcoral;become more of a breast $girl.@@ - <<elseif (_FLsFetish == 2)>> - It's a hard life, pulling teats and washing cows, but it does @@.lightsalmon;make $him more of a breast fetishist.@@ - <<elseif (_FLsFetish == 3)>> - In $his line of work, $he touches more dicks and balls than most sluts. $He lives in an atmosphere of constant orgasm and ejaculation; of girls who shudder and moan when $he touches their engorged members. $He has @@.lightcoral;become more of a cum $girl.@@ - <<elseif (_FLsFetish == 4)>> - It's a hard life, cupping balls, cleaning dicks, and observing semen quality, but it does @@.lightsalmon;make $him more of a cum fetishist.@@ - <<elseif (_FLsFetish == 5)>> - In $his line of work, $he fondles more pregnancies than most clinics. $He lives in an atmosphere of swollen, hanging, baby-filled bellies; of girls who shudder and moan when $he runs $his hands across their bellies. $He has @@.lightcoral;grown a taste for girls laden with child.@@ - <<elseif (_FLsFetish == 6)>> - It's a hard life, washing bellies and inspecting pussies, but it does @@.lightsalmon;make $him more of a pregnancy fetishist.@@ - <</if>> - <<if (_S.Milkmaid.muscles > 30)>> - <<set $milkmaidHealthBonus++>> - $His muscles help $him handle the fattest or most reluctant cow. - <</if>> - <<if (_MMWorkout > random(1,30-_S.Milkmaid.geneticQuirks.mLoss+_S.Milkmaid.geneticQuirks.mGain)) && _S.Milkmaid.muscles < 60>> - Constantly having to wrestle unruly or aiding heavy cows into their stalls forces $him to @@.lime;build muscle.@@ - <<set _S.Milkmaid.muscles++>> - <</if>> - <<if (_S.Milkmaid.skill.oral > 30)>> - $His skilled tongue helps $him keep $his cattle happy. - <</if>> - <<if (_S.Milkmaid.skill.oral < 90)>> - <<= slaveSkillIncrease('oral', _S.Milkmaid, 3)>> - <</if>> - <<if (_S.Milkmaid.sexualQuirk == "caring")>> - <<set $milkmaidTrustBonus++>> - $He's very caring, and does $his best to get the cows to trust $him. - <</if>> - <<if (_S.Milkmaid.behavioralQuirk == "funny")>> - <<set $milkmaidTrustBonus++>> - $He's funny, and does $his best to get the cows to trust $him by keeping them laughing. - <</if>> - <<if setup.milkmaidCareers.includes(_S.Milkmaid.career)>> - <<set $milkmaidHealthBonus++>> - $He has career experience dealing with milk animals. - <<elseif _S.Milkmaid.skill.milkmaid >= $masteredXP>> - <<set $milkmaidHealthBonus++>> - $He has experience harvesting slave products from working for you. - <<else>> - <<set _S.Milkmaid.skill.milkmaid += random(1,Math.ceil((_S.Milkmaid.intelligence+_S.Milkmaid.intelligenceImplant)/15) + 8)>> - <</if>> - <<if _prostateStim == 1>> - $He uses $his turgid cock to give prostate stimulation to slaves that need help ejaculating. - <<set _S.Milkmaid.need -= 50>> - <</if>> - <<set $milkmaidDevotionThreshold += (5*$milkmaidDevotionBonus), $milkmaidTrustThreshold += (5*$milkmaidTrustBonus)>> - <<for _slave range _slaves>> - <<set $i = $slaveIndices[_slave.ID]>> - <<if _S.Milkmaid.rivalryTarget == _slave.ID>> - <<setLocalPronouns _slave 2>> - $He either neglects or harasses $his <<print rivalryTerm(_S.Milkmaid)>>, _slave.slaveName, making sure _he2 is unhappy and uncomfortable. - <<set _slave.devotion -= 3, _slave.trust -= 3>> - <<if random(1,100) > 65>> - <<set _S.Milkmaid.rivalry++, _slave.rivalry++>> - <</if>> - <<elseif _S.Milkmaid.relationshipTarget == _slave.ID>> - <<setLocalPronouns _slave 2>> - $He dotes over $his <<print relationshipTerm(_S.Milkmaid)>>, _slave.slaveName, making sure _he2 is happy and comfortable. - <<set _slave.devotion++, _slave.trust++>> - <<elseif areRelated(_S.Milkmaid, _slave)>> - <<setLocalPronouns _slave 2>> - $He pays special attention to $his <<print relativeTerm(_S.Milkmaid,_slave)>>, _slave.slaveName, making sure _he2 is well kept and happy. - <<set _slave.trust++>> - <</if>> - <<if _slave.prestigeDesc == "$He is remembered for winning best in show as a dairy cow.">> - <<if (_slave.lactation > 0) && ((_slave.boobs-_slave.boobsImplant) > 6000)>> - $He spends extra time with _slave.slaveName, the well-known cow. $He is fascinated by _slave.slaveName's massive _slave.boobs cc breasts and spends extra time massaging and kneading them to maximize production. - <<set _slave.devotion += 3, _slave.trust += 3>> - <<else>> - $He is disappointed that the well-known cow _slave.slaveName<<if (_slave.lactation == 0)>> isn't producing milk anymore. <<else>>'s breasts have shrunken considerably from their heyday.<</if>> - <</if>> - <</if>> - <<if _slave.prestigeDesc == "$He is remembered for winning best in show as a cockmilker.">> - <<if ((_slave.balls > 6) && (_slave.dick != 0)) || ((_slave.balls > 4) && (_slave.dick != 0) && (_slave.prostate > 1))>> - $He spends extra time with _slave.slaveName, the massive ejaculating cow. $He can't help but massage the cow's dick and testes to stimulate them further and coax more from them. - <<set _slave.devotion += 3, _slave.trust += 3>> - <<else>> - $He is disappointed that the (formerly) massive ejaculating cow _slave.slaveName<<if _slave.balls == 0 || _slave.dick == 0>> is incapable of giving cum<<elseif _slave.prostate < 2>> no longer possesses a hyperactive prostate<<else>>'s balls are considerably smaller than at their heyday<</if>>. - <</if>> - <</if>> - <<if _slave.prestigeDesc == "$He is remembered for winning best in show as a breeder." && _slave.bellyPreg >= 1500>> - <<setLocalPronouns _slave 2>> - $He spends extra time with _slave.slaveName, the well-known breeder. _S.Milkmaid.slaveName is fascinated by _his2 growing pregnancy and popular womb. $He makes sure _his2 belly and its occupants are nice and comfortable. - <<set _slave.devotion += 3, _slave.trust += 3>> - <</if>> - <</for>> -<</if>> - -<<set _Tadd = ($bioreactorsXY + $bioreactorsXX + $bioreactorsHerm + $bioreactorsBarren)>> -<<if (_DL + _Tadd > 0)>> - <<if ($MilkmaidID != 0)>><br><br><</if>> - <<if (_DL != 1)>>''There are _DL cows in $dairyName.''<<else>>''There is one cow in $dairyName.''<</if>> - <<if ($dairyRestraintsSetting > 1)>> - The facility functions as an industrial slave products factory. - <</if>> - <<if (_Tadd > 0)>> - _Tadd milking machines have permanent biological components, making a total of <<print _Tadd + _DL>> milk-producing bodies. - <</if>> -<</if>> - -<<if ($MilkmaidID != 0)>> - <<set $i = _FLs>> /* apply following SA passages to facility leader */ - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt(_S.Milkmaid, 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <<includeDOM App.EndWeek.favoriteIcon(_S.Milkmaid)>> - <span class='slave-name'><<= SlaveFullName(_S.Milkmaid)>></span> is serving as your Milkmaid. - <br> - <<= App.SlaveAssignment.choosesOwnClothes(_S.Milkmaid)>> - <<run tired(_S.Milkmaid)>> - <<includeDOM App.SlaveAssignment.rules(_S.Milkmaid)>> - <<= App.SlaveAssignment.diet(_S.Milkmaid)>> - <<includeDOM App.SlaveAssignment.longTermEffects(_S.Milkmaid)>> - <<= App.SlaveAssignment.drugs(_S.Milkmaid)>> - <<= App.SlaveAssignment.relationships(_S.Milkmaid)>> - <<= App.SlaveAssignment.rivalries(_S.Milkmaid)>> - <br> <<= App.SlaveAssignment.devotion(_S.Milkmaid)>> - <<else>> - <<run App.SlaveAssignment.choosesOwnClothes(_S.Milkmaid)>> - <<run tired(_S.Milkmaid)>> - <<run App.SlaveAssignment.rules(_S.Milkmaid)>> - <<run App.SlaveAssignment.diet(_S.Milkmaid)>> - <<run App.SlaveAssignment.longTermEffects(_S.Milkmaid)>> - <<run App.SlaveAssignment.drugs(_S.Milkmaid)>> - <<run App.SlaveAssignment.relationships(_S.Milkmaid)>> - <<run App.SlaveAssignment.rivalries(_S.Milkmaid)>> - <<run App.SlaveAssignment.devotion(_S.Milkmaid)>> - <</if>> -<</if>> - -<<set _oldCash = $cash>> -<<for _slave range _slaves>> - <<set $i = $slaveIndices[_slave.ID]>> - <<setLocalPronouns _slave>> - /* Special attention section */ - <<if ($legendaryCowID == 0) && (_slave.lactation > 0) && ((_slave.boobs-_slave.boobsImplant-_slave.boobsMilk) > 6000) && (_slave.devotion > 50) && (_slave.prestige == 0)>> - <<set $legendaryCowID = _slave.ID>> - <</if>> - <<if ($legendaryBallsID == 0) && (_slave.dick != 0) && (_slave.balls > 5 || (_slave.balls > 4 && _slave.prostate > 1)) && (_slave.devotion > 50) && (_slave.prestige == 0)>> - <<set $legendaryBallsID = _slave.ID>> - <</if>> - - /* Perform facility based rule changes */ - <<if ($dairySlimMaintain == 0)>> - <<if $dairyWeightSetting == 0>> - <<if _slave.weight <= 30>> - <<set _slave.diet = "fattening">> - <<else>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif $dairyWeightSetting == 1>> - <<if _slave.weight <= 95>> - <<set _slave.diet = "fattening">> - <<else>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif $dairyWeightSetting == 2>> - <<if _slave.weight <= 130>> - <<set _slave.diet = "fattening">> - <<else>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif $dairyWeightSetting == 3>> - <<if _slave.weight <= 160>> - <<set _slave.diet = "fattening">> - <<else>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif $dairyWeightSetting == 4>> - <<if _slave.weight <= 195>> - <<set _slave.diet = "fattening">> - <<else>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif $dairyRestraintsSetting > 1>> - <<set _slave.diet = "healthy">> - <</if>> - <<elseif _slave.weight > 10>> - <<set _slave.diet = "restricted">> - <<elseif (_slave.diet == "fattening") || _slave.diet == "healthy" || ($dairyRestraintsSetting > 1)>> - <<set _slave.diet = "healthy">> - <</if>> - <<if $dairyRestraintsSetting > 1>> - <<set _slave.collar = "none", _slave.faceAccessory = "none", _slave.mouthAccessory = "none", _slave.choosesOwnClothes = 0, _slave.clothes = "no clothing", _slave.vaginalAccessory = "none", _slave.vaginalAttachment = "none", _slave.dickAccessory = "none", _slave.buttplug = "none", _slave.chastityAnus = 0, _slave.chastityPenis = 0, _slave.chastityVagina = 0>> - <</if>> - <<switch $dairyDecoration>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Degradationist" "Edo Revivalist" "Egyptian Revivalist" "Roman Revivalist" "Subjugationist" "Supremacist">> - <<set _slave.rules.living = "spare">> - <<default>> - <<set _slave.rules.living = "normal">> - <</switch>> - <<if $dairyPregSetting > 0>> - <<set WombCleanGenericReserve(_slave, "incubator", 9999)>> - <<set WombCleanGenericReserve(_slave, "nursery", 9999)>> - <</if>> - - /* General End of Week effects */ - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt(_slave, 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <span class='slave-name'><<= SlaveFullName(_slave)>></span> - <<if _slave.choosesOwnAssignment == 2>> - <<= App.SlaveAssignment.choosesOwnJob(_slave)>> - <<else>> - is serving as a cow in $dairyName. - <</if>> - <<includeDOM App.EndWeek.favoriteIcon(_slave)>> - <<set _milkResults = App.SlaveAssignment.getMilked(_slave)>> - <br> $He <<= _milkResults.text>> - <br> - <<includeDOM App.SlaveAssignment.rules(_slave)>> - <<= App.SlaveAssignment.diet(_slave)>> - <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> - <<= App.SlaveAssignment.drugs(_slave)>> - <<= App.SlaveAssignment.relationships(_slave)>> - <<= App.SlaveAssignment.rivalries(_slave)>> - <br> <<= App.SlaveAssignment.devotion(_slave)>> - <<else>> - <<run App.SlaveAssignment.choosesOwnJob(_slave)>> - <<set _milkResults = App.SlaveAssignment.getMilked(_slave)>> - <<run App.SlaveAssignment.rules(_slave)>> - <<run App.SlaveAssignment.diet(_slave)>> - <<run App.SlaveAssignment.longTermEffects(_slave)>> - <<run App.SlaveAssignment.drugs(_slave)>> - <<run App.SlaveAssignment.relationships(_slave)>> - <<run App.SlaveAssignment.rivalries(_slave)>> - <<run App.SlaveAssignment.devotion(_slave)>> - <</if>> - <<set _milkWeek += _milkResults.milk, _cumWeek += _milkResults.cum>> - - /* Facility Specific End of Week effects */ - <<if (_slave.devotion <= 20) && (_slave.trust >= -20)>> - <<set _slave.devotion -= 5, _slave.trust -= 5>> - <</if>> - <<if (_slave.health.condition < -80)>> - <<run improveCondition(_slave, 20)>> - <<elseif (_slave.health.condition < -40)>> - <<run improveCondition(_slave, 10)>> - <<elseif (_slave.health.condition < 0)>> - <<run improveCondition(_slave, 7)>> - <<elseif (_slave.health.condition < 90)>> - <<run improveCondition(_slave, 3)>> - <</if>> - <<if (_slave.inflation > 0)>> - <<run deflate(_slave)>> - <</if>> - <<set _gigantomastiaMod = _slave.geneticQuirks.gigantomastia == 2 ? (_slave.geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> - <<if (_slave.lactation > 0) && (($dairySlimMaintain == 0) || (_slave.boobs > 700))>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 100>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50>> - <<elseif (_slave.boobs < 10000*_gigantomastiaMod)>> - <<set _growth = 25>> - <<else>> - <<set _growth = 0>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <<if _slave.prostate == 1>> - <<set _slave.prostate = 2>> - <<run cashX(forceNeg($surgeryCost), "slaveSurgery", _slave), surgeryDamage(_slave, 10)>> - <</if>> - <<if _slave.vasectomy == 1>> - <<set _slave.vasectomy = 0>> - <<run cashX(forceNeg($surgeryCost), "slaveSurgery", _slave), surgeryDamage(_slave, 10)>> - <</if>> - <<if ($dairySlimMaintain == 0)>> - <<if $dairyImplantsSetting <= 1>> - <<if (_slave.lactation < 2) && (_slave.boobs > 300 || _slave.balls == 0 || _slave.lactation == 1 || $dairyImplantsSetting == 1)>> - <<set _slave.lactation = 2, _slave.lactationDuration = 2>> - <<run cashX(forceNeg($surgeryCost), "slaveSurgery", _slave), surgeryDamage(_slave, 10)>> - <</if>> - <<elseif $dairyImplantsSetting == 3>> - <<if (_slave.lactation < 1) && (_slave.boobs > 300 || _slave.balls == 0)>> - <<run induceLactation(_slave, 9)>> - <</if>> - <</if>> - <</if>> - <<if $dairyHormonesSetting >= 0>> - <<if _slave.lactation > 0>> - <<set _slave.hormones = $dairyHormonesSetting>> - <<elseif _slave.balls > 0>> - <<set _slave.hormones = -1 * $dairyHormonesSetting>> - <<else>> - <<set _slave.hormones = $dairyHormonesSetting>> - <</if>> - <</if>> - <<if ($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0)>> - <<if $dairySlimMaintain == 0 && _slave.diet == "fattening">> - <<set _slave.weight += 2>> - <<if _slave.weightDirection == 1>> - <<set _slave.weight += 2>> - <</if>> - <</if>> - <<if (_slave.health.condition < 75)>> - <<run improveCondition(_slave, 25)>> - <<else>> - <<if ($dairySlimMaintain == 0) && _slave.lactation > 0>> - <<if $dairyFeedersSetting > 1 && $dairyStimulatorsSetting > 0>> - <<if _slave.boobs < 50000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <<else>> - /*<<set _slave.boobs = 50000>>*/ - <</if>> - <<elseif $dairyFeedersSetting > 0 && $dairyStimulatorsSetting > 0>> - <<if _slave.boobs < 25000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <<elseif $dairyFeedersSetting > 1>> - <<if _slave.boobs < 10000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <<else>> - <<if _slave.boobs < 5000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <</if>> - <</if>> - <<if (_slave.balls > 0)>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.geneMods.NCS == 0) && (_slave.balls < 125)>> - <<set _slave.balls++>> - <<elseif (_slave.geneMods.NCS == 1) && (_slave.balls < 125) && (random(1,600) > (30+(10*_slave.balls)-(10*$dairyRestraintsSetting)-($injectionUpgrade*10)))>> - <<set _slave.balls++>> - <</if>> - <<if (_slave.balls >= 125)>> - <<set _balltacular++>> - <<set _btSlave = _slave>> - <</if>> - <<elseif (_slave.balls < 10)>> - <<if (_slave.geneMods.NCS == 0) && (random(1,100) > (40+(10*_slave.balls)-(10*$dairyRestraintsSetting)-($injectionUpgrade*10)))>> - <<set _slave.balls++>> - <<elseif (_slave.geneMods.NCS == 1) && (_slave.balls < 125) && (random(1,50) > (40+(10*_slave.balls)-(10*$dairyRestraintsSetting)-($injectionUpgrade*10)))>> - <<set _slave.balls++>> - <</if>> - <<if (_slave.balls >= 10)>> - <<set _balltacular++>> - <<set _btSlave = _slave>> - <</if>> - <</if>> - <<if _slave.dick > 0>> - <<if _slave.dick < 10>> - <<if ((_slave.geneMods.NCS == 0) && (random(1,100) > (40+(10*_slave.dick)-(10*$dairyRestraintsSetting)-($injectionUpgrade*10))))>> - <<set _slave.dick++>> - <<elseif ((_slave.geneMods.NCS == 1) && (random(1,50) > (40+(10*_slave.dick)-(10*$dairyRestraintsSetting)-($injectionUpgrade*10))))>> - <<set _slave.dick++>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> /* closes ($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) */ - <<if ($dairyStimulatorsUpgrade == 1) && $dairyStimulatorsSetting > 0>> - <<if ($dairyStimulatorsSetting > 1) && (_slave.anus < 4)>> - <<set _slave.anus++>> - <<if (_slave.anus >= 4)>> - <<set _anusesStretched++>> - <</if>> - <<elseif (_slave.anus < 3)>> - <<set _slave.anus++>> - <</if>> - <<if (_slave.health.condition < 60)>> - <<run improveCondition(_slave, 20)>> - <<elseif $dairySlimMaintain == 0 && _slave.lactation > 0>> - <<if $dairyFeedersSetting > 1>> - <<if _slave.boobs < 50000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <<elseif $dairyFeedersSetting > 0>> - <<if _slave.boobs < 25000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <<else>> - <<if _slave.boobs < 10000>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<if (_slave.boobs < 2000)>> - <<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<elseif (_slave.boobs < 5000*_gigantomastiaMod)>> - <<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>> - <</if>> - <<else>> - <<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50-_slave.physicalAge)/4))>> - <</if>> - <<if _slave.boobs <= 20000 && _slave.boobs+_growth > 20000>> - <<set _boobtacular++>> - <</if>> - <<if (_slave.geneMods.NCS == 1)>> - <<set _growth = Math.trunc(_growth/2)>> - <</if>> - <<set _slave.boobs += _growth>> - <</if>> - <</if>> - <</if>> - <</if>> - <<if ($dairyRestraintsSetting > 1)>> - <<if _slave.lactation > 0>> - <<set _slave.lactationAdaptation += 1>> - <</if>> - <<if (_slave.muscles > -100)>> - <<set _slave.muscles -= 1+_slave.geneticQuirks.mLoss>> - <</if>> - <<if (_slave.fetish == "mindbroken")>> - <<if (_slave.boobs > 48000) && ((_slave.balls >= 10) || (_slave.balls == 0))>> - <<set $bioreactorPerfectedID = _slave.ID>> - <</if>> - <<else>> - <<if (_slave.sexualFlaw != "self hating")>> - <<if (_slave.sexualFlaw != "cum addict") || ($dairyFeedersSetting == 0)>> - <<if (_slave.sexualFlaw != "anal addict") || ($dairyStimulatorsSetting == 0)>> - <<if (_slave.sexualFlaw != "breeder") || (_slave.preg < 0) || ($dairyPregSetting == 0)>> - <<if $dairyStimulatorsSetting > 1>> - <<if (_slave.sexualFlaw != "hates anal") && (_slave.sexualQuirk != "painal queen")>> - <<set _slave.sexualFlaw = "hates anal">> - <</if>> - <</if>> - <<if $dairyPregSetting > 1>> - <<if (_slave.sexualFlaw != "hates penetration") && (_slave.sexualQuirk != "strugglefuck queen")>> - <<set _slave.sexualFlaw = "hates penetration">> - <</if>> - <</if>> - <<if $dairyFeedersSetting > 1>> - <<if (_slave.sexualFlaw != "hates oral") && (_slave.sexualQuirk != "gagfuck queen")>> - <<set _slave.sexualFlaw = "hates oral">> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <<if _slave.chem > 250>> - <<set _chemSevere++>> - <<elseif _slave.chem > 100>> - <<set _chemMinor++>> - <<set _cmSlave = _slave>> - <</if>> - <</if>> - <<if ($dairyStimulatorsSetting + $dairyFeedersSetting + $dairyPregSetting) > 5>> - <<if _slave.devotion <= 95 && _slave.sexualFlaw != "self hating">> - <<if (_slave.sexualFlaw != "breeder") || (_slave.preg < 0)>> - <<if (_slave.devotion > -75)>> - <<set _slave.devotion -= 10>> - <<if (_slave.devotion < -65)>> - <<set _hateFilled++>> - <<set _hfSlave = _slave>> - <</if>> - <<elseif (_slave.trust > -75)>> - <<set _slave.trust -= 10>> - <<if (_slave.trust < -65)>> - <<set _horrified++>> - <<set _hrSlave = _slave>> - <</if>> - <<elseif (_slave.skill.vaginal > 0)>> - <<set _slave.skill.vaginal -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.oral > 0)>> - <<set _slave.skill.oral -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.anal > 0)>> - <<set _slave.skill.anal -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.career != "a bioreactor")>> - <<set _slave.career = "a bioreactor", _careerForgotten++>> - <<set _cfSlave = _slave>> - <<elseif (_slave.intelligenceImplant > 0)>> - <<set _slave.intelligenceImplant = Math.clamp(_slave.intelligenceImplant-5, 0, 30), _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.intelligence >= -15)>> - <<set _slave.intelligence -= 5, _intelligenceLost++>> - <<elseif (_slave.devotion >= -20)>> - <<set _slave.devotion -= 10>> - <<elseif (_slave.trust >= -20)>> - <<set _slave.trust -= 10>> - <<elseif (_slave.skill.whoring > 0)>> - <<set _slave.skill.whoring -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.entertainment > 0)>> - <<set _slave.skill.entertainment -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.intelligence >= -50)>> - <<set _slave.intelligence -= 5>> - <<if _slave.intelligence < -50>> - <<set _stupidified++>> - <<set _stSlave = _slave>> - <</if>> - <<elseif (_slave.fetish != "mindbroken")>> - <<set _slave.fetish = "mindbroken", _mindbroken++>> - <</if>> - <</if>> - <</if>> - <<if ((_slave.counter.milk > 1000) && (_slave.boobs > 12000) || (_slave.counter.cum > 1000) && (_slave.balls >= 10)) && (_slave.career != "a bioreactor")>> - <<set _slave.career = "a bioreactor", _careerForgotten++>> - <<set _cfSlave = _slave>> - <</if>> - <<if ($arcologies[0].FSBodyPuristLaw == 0) && ($healthyDrugsUpgrade == 0)>> - <<set _slave.chem += 5>> - <<else>> - <<set _slave.chem += 2>> - <</if>> - <<elseif ($dairyStimulatorsSetting + $dairyFeedersSetting + $dairyPregSetting) > 3>> - <<if (_slave.devotion < 75)>> - <<if (_slave.devotion > -75)>> - <<set _slave.devotion -= 5>> - <<if (_slave.devotion < -70)>> - <<set _hateFilled++>> - <<set _hfSlave = _slave>> - <</if>> - <<elseif (_slave.trust > -75)>> - <<set _slave.trust -= 5>> - <<if (_slave.trust < -70)>> - <<set _horrified++>> - <<set _hrSlave = _slave>> - <</if>> - <<elseif (_slave.skill.vaginal >= 20)>> - <<set _slave.skill.vaginal -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.oral >= 20)>> - <<set _slave.skill.oral -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.anal >= 20)>> - <<set _slave.skill.anal -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.career != "a bioreactor")>> - <<set _slave.career = "a bioreactor", _careerForgotten++>> - <<set _cfSlave = _slave>> - <<elseif (_slave.intelligenceImplant > 0)>> - <<set _slave.intelligenceImplant = Math.clamp(_slave.intelligenceImplant-5, 0, 30), _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.intelligence >= -15)>> - <<set _slave.intelligence -= 5, _intelligenceLost++>> - <<elseif (_slave.devotion >= -20)>> - <<set _slave.devotion -= 8>> - <<elseif (_slave.trust >= -20)>> - <<set _slave.trust -= 8>> - <<elseif (_slave.skill.whoring >= 20)>> - <<set _slave.skill.whoring -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.skill.entertainment >= 20)>> - <<set _slave.skill.entertainment -= 10, _skillsLost++>> - <<set _slSlave = _slave>> - <<elseif (_slave.intelligence >= -50)>> - <<set _slave.intelligence -= 5>> - <<if _slave.intelligence < -50>> - <<set _stupidified++>> - <<set _stSlave = _slave>> - <</if>> - <<elseif (_slave.fetish != "mindbroken")>> - <<set _slave.fetish = "mindbroken", _mindbroken++>> - <</if>> - <<elseif ((_slave.counter.milk > 1000) && (_slave.boobs > 12000) || (_slave.counter.cum > 1000) && (_slave.balls >= 10)) && (_slave.career != "a bioreactor")>> - <<set _slave.career = "a bioreactor", _careerForgotten++>> - <<set _cfSlave = _slave>> - <</if>> - <<if ($arcologies[0].FSBodyPuristLaw == 0) && ($healthyDrugsUpgrade == 0)>> - <<set _slave.chem += 2>> - <<else>> - <<set _slave.chem++>> - <</if>> - <</if>> /* closes ($dairyStimulatorsSetting + $dairyFeedersSetting + $dairyPregSetting) > 5 */ - <<if ($dairyPregUpgrade == 1) && ($dairyPregSetting > 0)>> - <<if (_slave.ovaries == 1) && (_slave.vagina > -1)>> - <<set _femCumWeek += girlCumAmount(_slave)>> - <<if (_slave.preg == -2)>> - <<set _slave.preg = 0, _desterilized++>> - <<set _dsSlave = _slave>> - <</if>> - <<if isFertile(_slave)>> - <<if _slave.eggType == "human">> - <<set _slave.preg = 1, _slave.pregWeek = 1, _slave.pregKnown = 1>> - <<if ($dairyPregSetting > 2)>> - <<set _slave.pregType = random(10,29)>> - <<elseif ($dairyPregSetting > 1)>> - <<set _slave.pregType = random(3,6)>> - <<else>> - <<set _slave.pregType = either(1, 1, 1, 1, 2, 2, 2, 3, 3, 4)>> - <</if>> - <<set _slave.pregSource = -2>> - <<set WombImpregnate(_slave, _slave.pregType, -2, 1)>> - <</if>> /*closes eggType */ - <<if (_slave.vagina == 0)>> - <<set _slave.vagina++>> - <</if>> - <<elseif (_slave.pregKnown == 1)>> - <<if ($dairyPregSetting > 2)>> - <<run cashX(100, "slaveAssignmentDairy", _slave)>> - <<elseif ($dairyPregSetting > 1)>> - <<run cashX(50, "slaveAssignmentDairy", _slave)>> - <<else>> - <<run cashX(25, "slaveAssignmentDairy", _slave)>> - <</if>> - <<if ($dairyPregSetting > 1) && (_slave.vagina < 4)>> - <<set _slave.vagina++>> - <<if (_slave.vagina == 4)>> - <<set _vaginasStretched++>> - <</if>> - <<elseif (_slave.vagina < 3)>> - <<set _slave.vagina++>> - <</if>> - <</if>> - <</if>> - <</if>> -<</for>> - -<<if _inflatedSlaves.milk > 0>> - <<set _milkWeek -= ((8*_inflatedSlaves.milk*10)+8)>> -<</if>> -<<if _inflatedSlaves.cum > 0>> - <<set _cumWeek -= ((80*_inflatedSlaves.cum*10)+80)>> - <<if _cumWeek < 0>> - <<set _cumWeek = 0>> - <</if>> -<</if>> - -<<if (_Tadd > 0)>> - <<set _tempCash = $cash>> - - <<set _seed = (_BF.XY.cum*$bioreactorsXY) + (_BF.herm.cum*$bioreactorsHerm), _cumWeek += _seed>> - <<if ($arcologies[0].FSPastoralistLaw == 1)>> - <<set _cashX = _seed*random(40,50)>> - <<run cashX(_cashX, "menialBioreactors")>> - <<elseif ($arcologies[0].FSPastoralist != "unset")>> - <<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>> - <<run cashX(_cashX, "menialBioreactors")>> - <<else>> - <<set _cashX = _seed*random(25,35)>> - <<run cashX(_cashX, "menialBioreactors")>> - <</if>> - - <<set _seed = (_BF.XX.femCum*$bioreactorsXX) + (_BF.herm.femCum*$bioreactorsHerm), _femCumWeek += _seed>> - <<if ($arcologies[0].FSPastoralistLaw == 1)>> - <<set _cashX = _seed*random(40,50)>> - <<run cashX(_cashX, "menialBioreactors")>> - <<elseif ($arcologies[0].FSPastoralist != "unset")>> - <<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>> - <<run cashX(_cashX, "menialBioreactors")>> - <<else>> - <<set _cashX = _seed*random(25,35)>> - <<run cashX(_cashX, "menialBioreactors")>> - <</if>> - - <<set _seed = (_BF.XX.milk*$bioreactorsXX) + (_BF.barren.milk*$bioreactorsBarren) + (_BF.XY.milk*$bioreactorsXY) + (_BF.herm.milk*$bioreactorsHerm), _milkWeek += _seed>> - <<if ($arcologies[0].FSPastoralistLaw == 1)>> - <<set _cashX = _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>> - <<run cashX(_cashX, "menialBioreactors")>> - <<elseif ($arcologies[0].FSPastoralist != "unset")>> - <<set _cashX = _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>> - <<run cashX(_cashX, "menialBioreactors")>> - <<else>> - <<set _cashX = _seed*9>> - <<run cashX(_cashX, "menialBioreactors")>> - <</if>> - <br><br>_Tadd permanently converted biological "machine<<if _Tadd > 1>>s<</if>>" produce<<if _Tadd == 1>>s<</if>> @@.yellowgreen;<<print cashFormat($cash-_tempCash)>>@@ income. -<</if>> - -<<if _inflatedSlaves.milk > 0>> - <<set _cashX -= Math.trunc(((600*(_inflatedSlaves.milk)+8)+random(50,200)))>> - <<run cashX(_cashX, "slaveAssignmentDairy")>> -<</if>> -<<if _inflatedSlaves.cum > 0>> - <<set _cashX -= Math.trunc(((300*(_inflatedSlaves.cum+8))+random(25,100)))>> - <<run cashX(_cashX, "slaveAssignmentDairy")>> -<</if>> - -<<set _profits = $cash-_oldCash>> -<br><br> -<<if _chemSevere > 1>> - _chemSevere cows' productivity is being reduced by the long term effects of industrial use. -<<elseif _chemSevere > 0>> - One cow's productivity is being reduced by the long term effects of industrial use. -<</if>> -<<if _chemMinor > 1>> - _chemMinor cows have been drugged and used long enough that they require increased curative doses, slightly reducing their output. -<<elseif _chemMinor > 0>> - <<setLocalPronouns _cmSlave>> - One cow has been drugged and used long enough that $he requires increased curative doses, slightly reducing $his output. -<</if>> -<<if _desterilized > 1>> - _desterilized cows had minor health issues preventing their fertile womb from conceiving; the issues have been resolved and they have been impregnated. -<<elseif _desterilized > 0>> - <<setLocalPronouns _dsSlave>> - One cow had minor health issues preventing $his fertile womb from conceiving; they have been resolved and $he has been impregnated. -<</if>> -<<if _hateFilled > 1>> - _hateFilled cows stopped struggling so much when fucked by the machines; it seems they have sunk into a fugue. -<<elseif _hateFilled > 0>> - <<setLocalPronouns _hfSlave>> - One cow stopped struggling so much when fucked by the machines; it seems $he has sunk into a fugue. -<</if>> -<<if _horrified > 1>> - _horrified cows' emotional activity dropped significantly; this indicates acceptance that they are not likely to leave $dairyName, ever again. -<<elseif _horrified > 0>> - <<setLocalPronouns _hrSlave>> - One cow's emotional activity dropped significantly; this indicates acceptance that $he is not likely to leave $dairyName, ever again. -<</if>> -<<if _skillsLost > 1>> - _skillsLost cows forgot skills due to their inability to focus on anything but machine rape. -<<elseif _skillsLost > 0>> - <<setLocalPronouns _slSlave>> - One cow forgot skills due to $his inability to focus on anything but machine rape. -<</if>> -<<if _careerForgotten > 1>> - _careerForgotten cows forgot the details of their past professional lives; all they can remember now is this. -<<elseif _careerForgotten > 0>> - <<setLocalPronouns _cfSlave>> - One cow forgot the details of $his past professional life; all $he can remember now is this. -<</if>> -<<if _vaginasStretched > 1>> - _vaginasStretched cows' vaginas were broken in for machine use, and are unlikely to be any use for anything other than receiving cum and medication, and giving birth. -<<elseif _vaginasStretched > 0>> - One cow's vagina was broken in for machine use, and is unlikely to be any use for anything other than receiving cum and medication, and giving birth. -<</if>> -<<if _anusesStretched > 1>> - _anusesStretched cows' anuses were loosened by machine sodomy, and are now permanently gaped. -<<elseif _anusesStretched > 0>> - One cow's anus was loosened by machine sodomy, and is now permanently gaped. -<</if>> -<<if _intelligenceLost > 1>> - _intelligenceLost cows suffered some loss of intelligence due to accumulated mental stress from life attached to a milking machine. -<<elseif _intelligenceLost > 0>> - One cow suffered some loss of intelligence due to accumulated mental stress from life attached to a milking machine. -<</if>> -<<if _stupidified > 1>> - _stupidified cows were so mentally dulled by use as biological factories that they were reduced to a very low level of intelligence. -<<elseif _stupidified > 0>> - <<setLocalPronouns _stSlave>> - One cow was so mentally dulled by use as biological factories that $he was reduced to a very low level of intelligence. -<</if>> -<<if _mindbroken > 1>> - _mindbroken cows finally lost higher mental function, and are now nothing more than industrial equipment made of meat. -<<elseif _mindbroken > 0>> - One cow finally lost higher mental function, and is now nothing more than industrial equipment made of meat. -<</if>> -<<if _boobtacular > 1>> - _boobtacular cows grew past 30 kilograms of breasts, a remarkable advance in capacity. -<<elseif _boobtacular > 0>> - One cow grew past 30 kilograms of breasts, a remarkable advance in capacity. -<</if>> -<<if _balltacular > 1>> - _balltacular cows' testicles reached the largest size drug treatments can produce; the machines will now focus on buttfucking them with extra force. -<<elseif _balltacular > 0>> - <<setLocalPronouns _btSlave>> - One cow's testicles reached the largest size drug treatments can produce; the machines will now focus on buttfucking $him with extra force. -<</if>> - -<<if ($dairyPregUpgrade == 1)>> - <<if ($dairyPregSetting >= 2)>> - Fertile cows make you a significant profit through contract pregnancies. - <<elseif ($dairyPregSetting == 1)>> - Fertile cows make you a small profit through contract pregnancies. - <</if>> -<</if>> -<<set _cumWeek = Math.trunc(_cumWeek/10)>> -<<set $cumPipeline = _cumWeek, $milkPipeline = _milkWeek>> -<<if _inflatedSlaves.milk > 0>> - <<set _outputMilk = ((8*_inflatedSlaves.milk*10)+8)>> -<<else>> - <<set _outputMilk = 0>> -<</if>> -<<if _inflatedSlaves.cum > 0>> - <<set _outputCum = (((80*_inflatedSlaves.cum*10)+80)/10)>> -<<else>> - <<set _outputCum = 0>> -<</if>> -_dairyNameCaps produced <<print _milkWeek+_outputMilk>> liters of milk<<if _cumWeek > 0>> and <<print _cumWeek+_outputCum>> liters of cum<</if>> this week. -<<if _inflatedSlaves.milk > 0>> - _outputMilk liters of milk were pumped into your penthouse for filling slaves this week. -<</if>> -<<if _inflatedSlaves.cum > 0>> - <<if _inflatedSlaves.milk > 0>>and <</if>>_outputCum liters of cum were pumped into your penthouse<<if _inflatedSlaves.milk > 0>> as well<<else>> this week<</if>>. -<</if>> -<<if _femCumWeek > 0>> - The machines also managed to reclaim _femCumWeek liters of salable vaginal secretions. -<</if>> -<<if _births > 1>> - Additionally, _birthers cows gave birth<<if _births > _birthers>> to a total of _births calves<</if>> this week. -<<elseif _births > 0>> - Additionally, one cow gave birth<<if _births > _birthers>> to a total of _births calves<</if>> this week. -<</if>> - -<<if $arcologies[0].FSRestart != "unset" && $eugenicsFullControl != 1>> - <<if $dairyPregSetting > 0>> - The Societal Elite know what you are doing with your cows. @@.red;They do not approve.@@ - <<set $failedElite += 5>> - <</if>> - <<if _milkmaidImpregnates == 1>> - The Societal Elite know you've ordered _S.Milkmaid.slaveName to impregnate your cows. @@.red;They are not amused by your disinterest in eugenics.@@ - <<set $failedElite += 10>> - <</if>> -<</if>> - -<!-- Record statistics gathering --> -<<script>> - var b = State.variables.facility.dairy; - b.whoreIncome = 0; - b.whoreCosts = 0; - b.rep = 0; - for (var si of b.income.values()) { - b.whoreIncome += si.income; - b.whoreCosts += si.cost; - b.rep += si.rep; - } - b.maintenance = (State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren); - if (b.maintenance > 0) { - b.maintenance *= 100; - } else { - b.maintenance = 0; - } - b.maintenance += State.variables.dairy * State.variables.facilityCost * (1.0 + 0.2 * State.variables.dairyFeedersUpgrade + 0.1 * State.variables.dairyPregUpgrade); - b.totalIncome = b.whoreIncome; - b.totalExpenses = b.whoreCosts + b.maintenance; - b.profit = b.totalIncome - b.totalExpenses; -<</script>> -<<if (_profits > 0)>> - The sale of these products makes a profit of @@.yellowgreen;<<print cashFormat(_profits)>>.@@ -<<elseif (_profits < 0)>> - Due to <<if $dairyImplantsSetting != 3>>one-off costs of hormonal implants to encourage fluid production<<else>>the need to induce lactation in some cows<</if>>, your dairy made a loss of @@.red;<<print cashFormat(_profits)>>.@@ -<<else>> - Due to <<if $dairyImplantsSetting != 3>>one-off costs of hormonal implants to encourage fluid production<<else>>the need to induce lactation in some cows<</if>> paired with existing output, your dairy broke even this week. -<</if>> - -<<if ($arcologies[0].FSPastoralistLaw == 1)>> - Slave products have completely replaced traditional dairy, making the facility extremely lucrative. -<</if>> - -<<if ($dairySlimMaintainUpgrade == 1 && $dairySlimMaintain == 1)>> - <br> - <<if $arcologies[0].FSSlimnessEnthusiast > 80>> - Because of your arcology's great enthusiasm for small breasted slaves, the dairy's milking systems have been carefully overhauled and optimized for maximum milk extraction from slaves with smaller endowments — providing a significant boost to their otherwise modest output. This also prevents unfashionable breast expansion of already slim slaves through the milking process. - <<elseif $arcologies[0].FSSlimnessEnthusiast > 20>> - In keeping with your arcology's ideals, $dairyName has been modified to handle slim slaves with minimal impact to their body shapes. This limits potential profitability, but prevents unfashionable breast expansion of already slim slaves through the milking process. - <<else>> - Due to your arcology's lack of enthusiasm for small breasted slaves the dairy has discontinued using milking techniques that prevent breast growth through the milking process. - <<set $dairySlimMaintain = 0, $dairySlimMaintainUpgrade = 0>> - <</if>> -<</if>> - -<<if ($createBioreactors == 1) && ($bioreactorPerfectedID != 0)>> - <<for _slave range _slaves>> - <<if (_slave.ID == $bioreactorPerfectedID)>> - <<if (_slave.ovaries == 1)>> - <<if (_slave.balls == 0)>> - <<set $bioreactorsXX++, _gender = "XX">> - <<else>> - <<set $bioreactorsHerm++, _gender = "herm">> - <</if>> - <<else>> - <<if (_slave.balls == 0)>> - <<set $bioreactorsBarren++, _gender = "barren">> - <<else>> - <<set $bioreactorsXY++, _gender = "XY">> - <</if>> - <</if>> - <<setLocalPronouns _slave>> - <<set _ageInWeeks = 52*($retirementAge-_slave.physicalAge)>> - <br><br> <<= SlaveFullName(_slave)>>'s breasts<<if _slave.balls > 0>>, balls<</if>><<if _slave.ovaries == 1>>, belly<</if>>, body, and mind have been completely adapted to synthesize useful products. $He has been reclassified as part of the machine $he's now permanently attached to. This combination is projected to produce approximately - <<if _slave.balls > 0>> - <<print 1000*Math.trunc((_BF[_gender].cum*_ageInWeeks)/1000)>> - liters of cum, - <</if>> - <<if _slave.ovaries == 1>> - <<print 100*Math.trunc((_BF[_gender].femCum*_ageInWeeks)/100)>> - liters of vaginal secretions, - <<if $dairyPregSetting == 3>> - <<print 13*($retirementAge-_slave.physicalAge)>> - <<else>> - <<print 5*($retirementAge-_slave.physicalAge)>> - <</if>> - slaves, - <</if>> - and - <<print 1000*Math.trunc((_BF[_gender].milk*_ageInWeeks)/1000)>> - liters of milk over a - <<print $retirementAge-_slave.physicalAge>> - year period before its biological components must be replaced. - <<= removeSlave(_slave)>> - <<break>> - <</if>> - <</for>> -<</if>> - -<<if $dairyDecoration != "standard">> - <br><br> _dairyNameCaps's @@.green;$dairyDecoration style is well known.@@ -<</if>> - -<<if _DL > 0>> - <!-- Statistics output --> - <<includeDOM App.Facilities.Dairy.Stats(false)>> - <<timed 50ms>> - <<replace #dairy-stats>> - <<includeDOM App.Facilities.Dairy.Stats(true)>> - <</replace>> - <</timed>> -<</if>> -<<if (_DL + _Tadd) > 0 || $MilkmaidID != 0>> - <br><br> -<</if>>