diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 85f94bc7fd4f82564d95bf74b638caf46f106288..e4fa33dafeaaf954b60b46a8fe12fdbd9bf5c05d 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -1219,6 +1219,8 @@ App.Data.resetOnNGPlus = { bellyImplants: 0, /** @type {0|1|2} */ cervixImplants: 0, + /** @type {0|1} */ + cervixImplantUpgrade: 0, /** @type {FC.Bool} */ meshImplants: 0, /** @type {FC.Bool} */ diff --git a/js/medicine/surgery/assets/01-sizingImplants.js b/js/medicine/surgery/assets/01-sizingImplants.js index 7be866f3a3080fa69d4c039056d82fae8654c2cb..7ff8a31d947c9a283117dcdc213693f1dee1b3d0 100644 --- a/js/medicine/surgery/assets/01-sizingImplants.js +++ b/js/medicine/surgery/assets/01-sizingImplants.js @@ -251,12 +251,12 @@ App.Medicine.Surgery.Procedures.RemoveSizingImplantProcedure = class extends App } get name() { - return `Remove ${this._targetName} implants`; + return `Remove implants`; } get description() { const {his} = getPronouns(this._slave); - return `remove ${his} ${this._oldImplantsDescription} ${this._targetName} implants`; + return `remove ${his} ${this._oldImplantsDescription} implants`; } get _materialCost() { @@ -287,7 +287,7 @@ App.Medicine.Surgery.Procedures.ReplaceSizingImplantProcedure = class extends Ap get description() { const {his} = getPronouns(this._slave); - return `replace ${his} ${this._oldImplantsDescription} ${this._targetName} implants with ${this._describeImplant(this._implantType, this._size)} ones`; + return `replace ${his} ${this._oldImplantsDescription} implants with ${this._describeImplant(this._implantType, this._size)} ones`; } get note() { @@ -340,7 +340,7 @@ App.Medicine.Surgery.Procedures.FillSizingImplantProcedure = class extends App.M get description() { const {his} = getPronouns(this._slave); const volumeStr = this._volumeStr(this._size); - return `add ${volumeStr ? `${volumeStr} of` : 'some'} inert filler to each of ${his} ${this._oldImplantsDescription} ${this._targetName} implants`; + return `add ${volumeStr ? `${volumeStr} of` : 'some'} inert filler to each of ${his} ${this._oldImplantsDescription} implants`; } get _materialCost() { @@ -369,7 +369,7 @@ App.Medicine.Surgery.Procedures.DrainSizingImplantProcedure = class extends App. get description() { const {his} = getPronouns(this._slave); const volumeStr = this._volumeStr(this._size); - return `drain ${volumeStr ? `${volumeStr} of` : 'some'} inert filler from ${his} ${this._oldImplantsDescription} ${this._targetName} implants`; + return `drain ${volumeStr ? `${volumeStr} of` : 'some'} inert filler from ${his} ${this._oldImplantsDescription} implants`; } get _materialCost() { diff --git a/js/medicine/surgery/belly/cervixPumpTubing.js b/js/medicine/surgery/belly/cervixPumpTubing.js index 0a1ea372b481b57f130bf66b746eeeecb3887943..dd02748f34a887f1a11a1b82183aad62074a5bc6 100644 --- a/js/medicine/surgery/belly/cervixPumpTubing.js +++ b/js/medicine/surgery/belly/cervixPumpTubing.js @@ -40,6 +40,6 @@ App.Medicine.Surgery.Procedures.CervixPumpTubing = class extends App.Medicine.Su apply(cheat) { this._slave.cervixImplantTubing = 1; this._slave.cervixImplantTarget = "none"; - return this._assemble(new App.Medicine.Surgery.Reactions.CervixPump()); + return this._assemble(new App.Medicine.Surgery.Reactions.CervixPumpTubing()); } }; diff --git a/src/facilities/implantManufactory.js b/src/facilities/implantManufactory.js index 4c8185cfe81479ab0247d340c34bda82e9595fc8..60579c3383d863606b94c687cbf3845f4b2ebcc4 100644 --- a/src/facilities/implantManufactory.js +++ b/src/facilities/implantManufactory.js @@ -64,6 +64,14 @@ App.UI.implantManufactory = function() { } else if (V.cervixImplants > 1) { App.UI.DOM.appendNewElement("div", node, "The manufactory is capable of crafting cervix and rectal filter micropumps for fillable abdominal implants."); } + if (V.cervixImplantUpgrade !== 1 && V.cervixImplants > 0) { + upgradeOption(node, 6000, "micropump system extension", ["will allow micropumps to be upgraded to transfer filler to other fillable implants"], + 120000, () => { V.cervixImplantUpgrade = 1; }, + "obtain schematics for a filler circulation system" + ); + } else if (V.cervixImplantUpgrade) { + App.UI.DOM.appendNewElement("div", node, "The manufactory is capable of crafting a network of tubes and pumps capable of moving inert filler to fillable implants."); + } } if (V.seePreg !== 0) { diff --git a/src/facilities/surgery/surgeryPassageUpper.js b/src/facilities/surgery/surgeryPassageUpper.js index 7a3cce247bd4f6db0346ce5793c08aecdfd9f16d..d8015e61522eb14487ca9721d96e0ddfa492e36c 100644 --- a/src/facilities/surgery/surgeryPassageUpper.js +++ b/src/facilities/surgery/surgeryPassageUpper.js @@ -528,7 +528,7 @@ App.UI.surgeryPassageUpper = function(slave, refresh, cheat = false) { refresh, cheat)); } } - if (slave.cervixImplant > 0 && slave.cervixImplantTubing === 0 && V.cervixImplants >= 1) { + if (slave.cervixImplant > 0 && slave.cervixImplantTubing === 0 && V.cervixImplantUpgrade > 0) { linkArray.push(App.Medicine.Surgery.makeLink( new App.Medicine.Surgery.Procedures.CervixPumpTubing(slave), refresh, cheat)); diff --git a/src/interaction/siPhysicalRegimen.js b/src/interaction/siPhysicalRegimen.js index c00d1ec59bc9875bfa11613c10dbd2847b883315..2c9903b6ad9fb82e0925d3996767666b43d60dd0 100644 --- a/src/interaction/siPhysicalRegimen.js +++ b/src/interaction/siPhysicalRegimen.js @@ -577,7 +577,7 @@ App.UI.SlaveInteract.physicalRegimen = function(slave, refresh) { } App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices"); } - if (slave.cervixPump > 0 && slave.cervixPumpTubing > 0) { + if (slave.cervixImplant > 0 && slave.cervixImplantTubing > 0) { const hasFillableBellyImplant = slave.bellyImplant >= 0; const hasFillableBoobsImplant = slave.boobsImplant > 0 && ["fillable", "advanced fillable", "hyper fillable"].includes(slave.boobsImplantType); const hasFillableButtImplant = slave.buttImplant > 0 && ["fillable", "advanced fillable", "hyper fillable"].includes(slave.buttImplantType) && slave.cervixPump === 0; // Forced impossible due to butt implants not being compatible. @@ -589,21 +589,21 @@ App.UI.SlaveInteract.physicalRegimen = function(slave, refresh) { titleCervix.appendChild(underlineCervix); titleCervix.append(": "); - if (slave.cervixPumpTarget === "all") { + if (slave.cervixImplantTarget === "all") { titleCervix.append("Pump to all fillable implants. "); - } else if (slave.pregControl === "TnA") { + } else if (slave.cervixImplantTarget === "TnA") { titleCervix.append("Pump to breast and butt implants. "); - } else if (slave.pregControl === "mombod") { + } else if (slave.cervixImplantTarget === "mombod") { titleCervix.append("Pump to belly and breast implants, simulating pregnancy. "); - } else if (slave.pregControl === "bottomHeavy") { + } else if (slave.cervixImplantTarget === "bottomHeavy") { titleCervix.append("Pump most to butt implants and some to belly implant. "); - } else if (slave.pregControl === "boobsImplant") { + } else if (slave.cervixImplantTarget === "boobsImplant") { titleCervix.append("Pump to breast implants. "); - } else if (slave.pregControl === "buttImplant") { + } else if (slave.cervixImplantTarget === "buttImplant") { titleCervix.append("Pump to butt implants. "); - } else if (slave.pregControl === "bellyImplant") { + } else if (slave.cervixImplantTarget === "bellyImplant") { titleCervix.append("Pump to belly implant. "); - } else if (slave.pregControl === "none") { + } else if (slave.cervixImplantTarget === "none") { titleCervix.append("Pump disabled. "); } fertilityBlock.appendChild(titleCervix);