From eb2442a04d0539b53a1eecfadc3e6d20e652c337 Mon Sep 17 00:00:00 2001 From: humungusluver <82497-humungusluver@users.noreply.gitgud.io> Date: Sun, 23 Feb 2025 18:57:31 -0500 Subject: [PATCH] handle rest of surgery --- js/medicine/surgery/addGenitals/addOvaries.js | 6 ++++++ .../surgery/addGenitals/asexualReproOvaries.js | 3 +++ js/medicine/surgery/addGenitals/freshOvaries.js | 3 +++ js/medicine/surgery/addGenitals/immortalOvaries.js | 3 +++ js/medicine/surgery/addGenitals/mpreg.js | 3 +++ js/medicine/surgery/genitals/mpregRemoved.js | 3 +++ js/medicine/surgery/genitals/preg.js | 3 +++ js/medicine/surgery/genitals/pregRemove.js | 3 +++ src/facilities/surgery/surgeryPassageLower.js | 2 +- src/js/statsChecker/statsChecker.js | 8 +++++--- src/npc/surgery/surgery.js | 5 ++++- src/player/electiveSurgery.js | 12 ++++++++++++ 12 files changed, 49 insertions(+), 5 deletions(-) diff --git a/js/medicine/surgery/addGenitals/addOvaries.js b/js/medicine/surgery/addGenitals/addOvaries.js index 65ed2767854..4432b54dd5e 100644 --- a/js/medicine/surgery/addGenitals/addOvaries.js +++ b/js/medicine/surgery/addGenitals/addOvaries.js @@ -97,6 +97,9 @@ App.Medicine.Surgery.Procedures.OFAddOvaries = class extends App.Medicine.Surger this._slave.pubertyXX = 1; } } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } if (this.eggType === "human") { return this._assemble(new App.Medicine.Surgery.Reactions.AddOvaries()); @@ -147,6 +150,9 @@ App.Medicine.Surgery.Procedures.OFReplaceOvaries = class extends App.Medicine.Su this._slave.pubertyXX = 1; } } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } if (this.eggType === "human") { return this._assemble(new App.Medicine.Surgery.Reactions.AddOvaries()); diff --git a/js/medicine/surgery/addGenitals/asexualReproOvaries.js b/js/medicine/surgery/addGenitals/asexualReproOvaries.js index 737aa95b212..5b2b1135037 100644 --- a/js/medicine/surgery/addGenitals/asexualReproOvaries.js +++ b/js/medicine/surgery/addGenitals/asexualReproOvaries.js @@ -57,6 +57,9 @@ App.Medicine.Surgery.Procedures.OFAsexualReproOvaries = class extends App.Medici apply(cheat) { if (this._slave.preg < -1) { this._slave.preg = 0; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } } this._slave.eggType = "human"; this._slave.pregData = _.cloneDeep(App.Data.misc.pregData.human); diff --git a/js/medicine/surgery/addGenitals/freshOvaries.js b/js/medicine/surgery/addGenitals/freshOvaries.js index ec557c0c796..8c9d34ef003 100644 --- a/js/medicine/surgery/addGenitals/freshOvaries.js +++ b/js/medicine/surgery/addGenitals/freshOvaries.js @@ -50,6 +50,9 @@ App.Medicine.Surgery.Procedures.OFFreshOvaries = class extends App.Medicine.Surg this._slave.pubertyXX = 1; } } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } return this._assemble(new App.Medicine.Surgery.Reactions.FreshOvaries()); } }; diff --git a/js/medicine/surgery/addGenitals/immortalOvaries.js b/js/medicine/surgery/addGenitals/immortalOvaries.js index b62335ba319..3fbeb98b7cf 100644 --- a/js/medicine/surgery/addGenitals/immortalOvaries.js +++ b/js/medicine/surgery/addGenitals/immortalOvaries.js @@ -57,6 +57,9 @@ App.Medicine.Surgery.Procedures.OFImmortalOvaries = class extends App.Medicine.S this._slave.pubertyXX = 1; } } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } return this._assemble(new App.Medicine.Surgery.Reactions.ImmortalOvaries()); } }; diff --git a/js/medicine/surgery/addGenitals/mpreg.js b/js/medicine/surgery/addGenitals/mpreg.js index a70a347e259..adcb211ce1e 100644 --- a/js/medicine/surgery/addGenitals/mpreg.js +++ b/js/medicine/surgery/addGenitals/mpreg.js @@ -66,6 +66,9 @@ App.Medicine.Surgery.Procedures.OFAddMPreg = class extends App.Medicine.Surgery. this._slave.pubertyXX = 1; } } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } return this._assemble(new App.Medicine.Surgery.Reactions.AddMPreg()); } }; diff --git a/js/medicine/surgery/genitals/mpregRemoved.js b/js/medicine/surgery/genitals/mpregRemoved.js index 319dbf22562..d5416c61319 100644 --- a/js/medicine/surgery/genitals/mpregRemoved.js +++ b/js/medicine/surgery/genitals/mpregRemoved.js @@ -24,6 +24,9 @@ App.Medicine.Surgery.Procedures.RemoveMPreg = class extends App.Medicine.Surgery this._slave.mpreg = 0; this._slave.ovaImplant = OvaryImplantType.NONE; this._slave.wombImplant = "none"; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } return this._assemble(new App.Medicine.Surgery.Reactions.MPregRemoved()); } }; diff --git a/js/medicine/surgery/genitals/preg.js b/js/medicine/surgery/genitals/preg.js index a1c108538d2..078a1132dd3 100644 --- a/js/medicine/surgery/genitals/preg.js +++ b/js/medicine/surgery/genitals/preg.js @@ -77,6 +77,9 @@ App.Medicine.Surgery.Procedures.ImplantPregGenerator = class extends App.Medicin this._slave.broodmother = 1; this._slave.broodmotherFetuses = 1; this._slave.pregControl = "none"; + if (V.menstruation === 1) { + this._slave.fertPeak = 0; + } return this._assemble(new App.Medicine.Surgery.Reactions.Preg()); } }; diff --git a/js/medicine/surgery/genitals/pregRemove.js b/js/medicine/surgery/genitals/pregRemove.js index 8ed5c2e3f45..ad56e6259e9 100644 --- a/js/medicine/surgery/genitals/pregRemove.js +++ b/js/medicine/surgery/genitals/pregRemove.js @@ -47,6 +47,9 @@ App.Medicine.Surgery.Procedures.RemovePregGenerator = class extends App.Medicine this._slave.broodmotherFetuses = 0; this._slave.broodmotherOnHold = 0; this._slave.pregControl = "none"; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } return this._assemble(new App.Medicine.Surgery.Reactions.PregRemove()); } }; diff --git a/src/facilities/surgery/surgeryPassageLower.js b/src/facilities/surgery/surgeryPassageLower.js index 1ff5e3e4cb8..4926fe32a8f 100644 --- a/src/facilities/surgery/surgeryPassageLower.js +++ b/src/facilities/surgery/surgeryPassageLower.js @@ -387,7 +387,7 @@ App.UI.surgeryPassageLower = function(slave, refresh, cheat = false) { App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); } else if (slave.breedingMark === 1 && V.propOutcome === 1 && V.eugenicsFullControl !== 1 && FutureSocieties.isActive('FSRestart')) { App.UI.DOM.appendNewElement("div", el, `${He} is protected from extreme surgery`, ["choices", "note"]); - } else if (isFertile(slave) && slave.ovaryAge <= 46) { + } else if (isFertile(slave, true) && slave.ovaryAge <= 46) { r.push(`${He} could be made into a broodmother.`); linkArray.push(App.Medicine.Surgery.makeLink( new App.Medicine.Surgery.Procedures.ImplantPregGenerator(slave), diff --git a/src/js/statsChecker/statsChecker.js b/src/js/statsChecker/statsChecker.js index 78f31773730..f72785b623f 100644 --- a/src/js/statsChecker/statsChecker.js +++ b/src/js/statsChecker/statsChecker.js @@ -600,11 +600,13 @@ globalThis.canGetPregnant = function(slave) { return false; }; -/** contraceptives (.preg === -1) do not negate this function +/** + * contraceptives (.preg === -1) do not negate this function * @param {FC.HumanState} slave + * @param {boolean} ignoreCycle ignoreCycle=true will not take into account menstruation * @returns {boolean} */ -globalThis.isFertile = function(slave) { +globalThis.isFertile = function(slave, ignoreCycle=false) { if (!slave) { return null; } @@ -636,7 +638,7 @@ globalThis.isFertile = function(slave) { } } // Menstruation route. - if (V.menstruation === 1 && slave.fertPeak > 0 ) { + if (!ignoreCycle && V.menstruation === 1 && slave.fertPeak > 0 ) { return false; } return true; diff --git a/src/npc/surgery/surgery.js b/src/npc/surgery/surgery.js index 5f6e3966780..29ea21f03c3 100644 --- a/src/npc/surgery/surgery.js +++ b/src/npc/surgery/surgery.js @@ -561,7 +561,10 @@ globalThis.surgeryAmp = function(slave, part, cheat = false) { } if (slave.drugs === "clitoris enhancement" || slave.drugs === "intensive clitoris enhancement") { slave.drugs = "no drugs"; - } + } + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } surgeryDamage(slave, 20, cheat); break; case "voicebox": diff --git a/src/player/electiveSurgery.js b/src/player/electiveSurgery.js index 731891d40db..5e9627d4ea0 100644 --- a/src/player/electiveSurgery.js +++ b/src/player/electiveSurgery.js @@ -3174,6 +3174,9 @@ App.UI.electiveSurgery = function() { V.PC.preg = 0; V.PC.ovaImplant = 0; V.PC.wombImplant = "none"; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } cashX(forceNeg(50000), "PCmedical"); }))); return el; @@ -3190,6 +3193,9 @@ App.UI.electiveSurgery = function() { el.append(App.UI.DOM.makeElement("div", surgeryLink("Fix your fertility concerns", "replaceOvaries", () => { healthDamage(V.PC, 10); V.PC.preg = 0; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } cashX(forceNeg(applyDiscount(500)), "PCmedical"); }))); return el; @@ -3213,6 +3219,9 @@ App.UI.electiveSurgery = function() { V.PC.eggType = "human"; V.PC.ovaImplant = 0; V.PC.wombImplant = "none"; + if (V.menstruation === 1) { + this._slave.fertPeak = 1; + } cashX(forceNeg(50000), "PCmedical"); }))); } @@ -3233,6 +3242,9 @@ App.UI.electiveSurgery = function() { V.PC.ovaries = 1; V.PC.preg = 0; V.PC.eggType = "human"; + if (V.menstruation === 1) { + V.PC.fertPeak = 1; + } cashX(forceNeg(50000), "PCmedical"); })); el.append(App.UI.DOM.makeElement("div", App.UI.DOM.generateLinksStrip(linkArray))); -- GitLab