Skip to content
Snippets Groups Projects
Commit 37dd410e authored by Anu's avatar Anu
Browse files

Immortal Ovaries surgery infrastructure

parent 78ee9ea5
No related branches found
No related tags found
No related merge requests found
App.Medicine.Surgery.Reactions.ImmortalOvaries = class extends App.Medicine.Surgery.SimpleReaction {
reaction(slave, diff) {
const reaction = super.reaction(slave, diff);
const {He, His, he, his, him} = getPronouns(slave);
const r = [];
if (slave.ovaryAge >= 45 && this._hasEmotion(slave)) { // use same reactions as freshOvaries - slave doesn't know the difference
if (this._strongKnownFetish(slave, "pregnancy") || slave.origin === "$He sold $himself to you in the hope of someday bearing children.") {
r.push(`${He} leaves the surgery with nothing but a nonspecific ache, yet a familiar warmth, in ${his} lower abdomen, but ${he} knows enough about surgery and sex slaves to know that it means ${he} now has a chance to get pregnant once more. ${He} is <span class="devotion inc">filled with joy</span> whenever ${he} thinks about the fact that ${he}'ll have the chance to feel a life growing within ${him} again. ${He}'s so pleased that ${he} now <span class="trust inc">trusts</span> your plans for ${his} body. As with all surgery <span class="health dec">${his} health has been slightly affected.</span>`);
reaction.trust += 4;
reaction.devotion += 5;
} else if (slave.devotion > 50) {
r.push(`${He} leaves the surgery with nothing but a nonspecific ache, yet a familiar warmth, in ${his} lower abdomen, but ${he} knows enough about surgery and sex slaves to know that it means ${he} now has the chance to get pregnant again. ${He}'s <span class="devotion inc">grateful</span> that you think ${him} worthy of extending ${his} fertility, and even a little nervous about how ${he}'ll perform as a mother that has tasted menopause. As with all surgery <span class="health dec">${his} health has been slightly affected.</span>`);
reaction.devotion += 4;
} else if (slave.devotion >= -20) {
r.push(`${He} leaves the surgery with nothing but a nonspecific ache, yet a familiar warmth, in ${his} lower abdomen, but ${he} knows enough about surgery and sex slaves to know that it means ${he} may now be impregnated once more. ${He} understands the realities of ${his} life as a slave, but didn't expect to have ${his} waning fertility renewed. As with all surgery <span class="health dec">${his} health has been slightly affected.</span> ${He} is <span class="trust dec">sensibly fearful</span> of your total power over ${his} body.`);
reaction.trust -= 5;
} else {
r.push(`${He} leaves the surgery with nothing but a nonspecific ache, yet a familiar warmth, in ${his} lower abdomen, but ${he} knows enough about surgery and sex slaves to believe you have forced fertility upon ${him} again. ${He} does not understand the realities of ${his} life as a slave at a core level, so ${he}'s <span class="devotion dec">terrified and angry</span> at the potential that ${he}'ll be forced to carry children. As with all surgery <span class="health dec">${his} health has been slightly affected.</span> ${He} is <span class="trust dec">sensibly fearful</span> of your total power over ${his} body.`);
reaction.trust -= 5;
reaction.devotion -= 5;
}
} else {
r.push(`${He} leaves the surgery with nothing but a nonspecific ache in ${his} lower abdomen; it won't be clear to ${him} that menopause will never be a concern for ${him} again. As with all surgery <span class="health dec">${his} health has been slightly affected.</span>`);
}
if (slave.geneMods.immortality === 1) {
r.push(`${His} immortal body accepts the genetically modified organs as its own without protest.`);
} else {
r.push(`A temporary regimen of anti-rejection drugs is required while ${his} body integrates the extensively genetically modified organs, leaving ${him} feeling <span class="health dec">rather ill</span> over the following week.`);
healthDamage(slave, 10);
slave.chem += 100;
}
reaction.longReaction.push(r);
return reaction;
}
};
App.Medicine.Surgery.Procedures.OFImmortalOvaries = class extends App.Medicine.Surgery.Procedure {
get name() {
return "Implant";
}
get healthCost() {
return 20;
}
apply(cheat) {
this._slave.ovaryAge = -100;
if (this._slave.pubertyXX === 0 && this._slave.physicalAge >= V.fertilityAge) {
if (V.precociousPuberty === 1) {
this._slave.pubertyAgeXX = this._slave.physicalAge + 1;
} else {
this._slave.pubertyXX = 1;
}
}
return this._assemble(new App.Medicine.Surgery.Reactions.ImmortalOvaries());
}
};
......@@ -93,6 +93,27 @@ App.Medicine.OrganFarm.Organs = new Map([
})
]
})],
["immortalOvaries",
new App.Medicine.OrganFarm.Organ({
name: "Immortal Ovaries",
tooltip: "requires a womb for successful implantation",
cost: 50000, time: 20,
canGrow: () => V.immortalOvaries === 1,
dependencies: ["ovaries", "pigOvaries", "dogOvaries", "horseOvaries", "cowOvaries", "mpreg", "mpregPig", "mpregDog", "mpregHorse", "mpregCow"],
actions: [
new App.Medicine.OrganFarm.OrganImplantAction({
name: "Implant",
surgeryProcedure: App.Medicine.Surgery.Procedures.OFImmortalOvaries,
canImplant: s => (s.mpreg !== 0 || s.ovaries !== 0) && s.bellyImplant === -1 && s.physicalAge < 70 && s.ovaryAge >= 0,
implantError: s =>
s.ovaryAge < 0
? "This slave already has immortal ovaries."
: s.physicalAge >= 70
? "This slave's body is too old to handle pregnancy."
: "This slave lacks a viable womb.",
})
]
})],
["asexualReproOvaries",
new App.Medicine.OrganFarm.Organ({
name: "Asexual reproduction modification",
......
......@@ -84,6 +84,17 @@ App.UI.organFarm = function() {
);
}
if (V.immortalOvaries > 0) {
App.UI.DOM.appendNewElement("div", node, "The organ farm is capable of growing genetically modified ovaries that will never undergo menopause.");
} else if (V.immortalityFormula > 0 && V.youngerOvaries > 0) {
upgradeOption(node, 10_000, "Fund research into applying the immortality formula to ovaries",
["Will allow the growth of genetically modified ovaries that continually regenerate their ovarian follicles, thus never undergoing menopause. As long as the body remains young, it shall remain fertile."],
1_000_000, () => { V.immortalOvaries = 1; },
"fund additional fertility-focused research into the immortality project"
);
} else if (V.immortalityFormula > 0) {
appendNote("You must acquire the designs to clone younger ovaries before you can research ovary immortality.", node);
} // invisible without immortality formula
if (V.asexualReproduction === 1) {
App.UI.DOM.appendNewElement("div", node, "The organ farm is capable of growing modified ovary pairs capable of self-fertilization.");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment