From 9ab12b72bd89fd60be377f1e37a9e44efbba8c25 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Sat, 17 Apr 2021 11:54:30 -0400 Subject: [PATCH] Added consummation for pregnancy fetishists --- src/npc/interaction/fPCImpreg.js | 132 +++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 5 deletions(-) diff --git a/src/npc/interaction/fPCImpreg.js b/src/npc/interaction/fPCImpreg.js index 7bfd3e45a71..fa253710cb2 100644 --- a/src/npc/interaction/fPCImpreg.js +++ b/src/npc/interaction/fPCImpreg.js @@ -5,7 +5,10 @@ App.Interact.fPCImpreg = function(slave) { const frag = new DocumentFragment(); - frag.append(intro(slave)); + frag.append( + intro(slave), + consummation(slave), + ); addPartner(slave, -1); @@ -13,7 +16,7 @@ App.Interact.fPCImpreg = function(slave) { }; /** @param {App.Entity.SlaveState} slave */ -function impregnateAnus(slave) { +function introAnus(slave) { const {his, him} = getPronouns(slave); const asshole = slave.geneticQuirks.superfetation === 2 && slave.pregKnown @@ -34,7 +37,7 @@ function impregnateAnus(slave) { } /** @param {App.Entity.SlaveState} slave */ -function impregnateVagina(slave) { +function introVagina(slave) { const {his} = getPronouns(slave); if (slave.vagina > 2) { @@ -103,11 +106,11 @@ function intro(slave) { text.push(`You call ${him} over so you can`); if (slave.mpreg) { - text.push(impregnateAnus(slave)); + text.push(introAnus(slave)); text.push(`The crest on ${his} abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request?`); } else { - text.push(impregnateVagina(slave)); + text.push(introVagina(slave)); if (superfetation) { text.push(`You plan on putting another baby in ${him}.`); @@ -130,3 +133,122 @@ function intro(slave) { return frag; } + +/** @param {App.Entity.SlaveState} slave */ +function consummationPregnancyFetishVirgin(slave) { + const {He, he, his, him} = getPronouns(slave); + + const text = []; + + const superfetation = slave.geneticQuirks.superfetation === 2 && slave.pregKnown; + + let fillHim = ''; + let firstTime = ''; + + if (V.PC.prostate > 1) { + fillHim = ` filling ${him} until ${his} belly is distended and wobbling with your cum`; + } else if (V.PC.prostate > 0) { + fillHim = ` pouring into ${him} until ${he} is stuffed with your cum`; + } else if (V.PC.balls > 8) { + fillHim = ` pouring into ${him}`; + } + + if (isSexuallyPure(slave)) { + firstTime = `, knowing that ${his} first time will always be special to ${him}`; + } + + text.push(`${He} cries with joy and presents ${his} virgin`); + + if (slave.mpreg) { + text.push(`asshole for fertilization.`); + } else if (['bushy', 'very bushy', 'bushy in the front and neat in the rear'].includes(slave.pubicHStyle)) { + text.push(`treasure, barely visible within her tangle of pubic hair, but ready for fertilization.`); + } else if (slave.pubicHStyle === 'in a strip') { + text.push(`pussy, accented by ${his} strip of pubic hair, ready for fertilization.`); + } else if (slave.pubicHStyle === 'neat') { + text.push(`neatly trimmed pussy, ready for fertilization.`); + } else if (slave.pubicHStyle === 'waxed') { + text.push(`pussy, smooth and bare, ready for fertilization.`); + } + + text.push(`You waste no time with foreplay as you mount ${him} and get to work. As you claim ${his} pearl, ${his} breath hitches in ${his} throat, but pleasure quickly overcomes the pain. ${He} groans as your pelvis repeatedly slaps against ${him} over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within ${him}, signaling that it's time. ${He} sobs with happiness when ${he} finally feels your hot seed${fillHim}${firstTime}. ${He} spends the rest of the day cherishing ${his} ${bellyAdjective(slave)} stomach. This new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss"> ${slave.mpreg ? `asshole` : `pussy`} has been broken in, and there's a good chance ${he}'s ${superfetation ? `got another bun in the oven` : `pregnant`}.</span>`); + + slave.devotion += 15; + + if (slave.mpreg) { + slave.anus = 1; + } else { + slave.vagina = 1; + } + + return App.UI.DOM.toSentence(text); +} + +/** @param {App.Entity.SlaveState} slave */ +function consummationPregnancyFetishNonvirgin(slave) { + const {He, he, his, him} = getPronouns(slave); + + const text = []; + + let fillHim = ''; + + if (V.PC.prostate > 1) { + fillHim = ` filling ${him} until ${his} belly is distended and wobbling with your cum`; + } else if (V.PC.prostate > 0) { + fillHim = ` pouring into ${him} until ${he} is stuffed with your cum`; + } else if (V.PC.balls > 8) { + fillHim = ` pouring into ${him}`; + } + + text.push(`${He} cries with joy and presents ${his} fertile`); + + if (slave.mpreg) { + text.push(`asshole for breeding.`); + } else if (['bushy', 'very bushy', 'bushy in the front and neat in the rear'].includes(slave.pubicHStyle)) { + text.push(`pussy, barely visible within her tangle of pubic hair but ripe for breeding.`); + } else if (slave.pubicHStyle === 'in a strip') { + text.push(`pussy, accented by ${his} strip of pubic hair and ripe for breeding.`); + } else if (slave.pubicHStyle === 'neat') { + text.push(`neatly trimmed pussy, ripe for breeding.`); + } else if (slave.pubicHStyle === 'waxed') { + text.push(`pussy, smooth, bare, and ripe for breeding.`); + } + + text.push(`You waste no time with foreplay as you mount ${him} and get to work. As you claim ${his} pearl, ${his} breath hitches in ${his} throat, but pleasure quickly overcomes the pain. ${He} groans as your pelvis repeatedly slaps against ${him} over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within ${him}, signaling that it's time. ${He} sobs with happiness when ${he} finally feels your hot seed${fillHim}, knowing that ${his} first time will always be special to ${him}. ${He} spends the rest of the day cherishing ${his} ${bellyAdjective(slave)} stomach. This new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span>`); + + slave.devotion += 10; + + return App.UI.DOM.toSentence(text); +} + +/** @param {App.Entity.SlaveState} slave */ +function consummationPregnancyFetish(slave) { + const virgin = slave.vagina === 0 || (slave.mpreg && slave.anus === 0); + + if (virgin) { + return consummationPregnancyFetishVirgin(slave); + } else { + return consummationPregnancyFetishNonvirgin(slave); + } +} + +/** + * @param {App.Entity.SlaveState} slave + * @returns {DocumentFragment} + */ +function consummation(slave) { + const frag = new DocumentFragment(); + + const text = []; + + const pregnancyFetish = slave.fetish === 'pregnancy' && slave.fetishStrength > 60 && slave.fetishKnown; + + + if (pregnancyFetish) { + text.push(consummationPregnancyFetish(slave)); + } + + App.UI.DOM.appendNewElement('div', frag, App.UI.DOM.toSentence(text)); + + return frag; +} -- GitLab