diff --git a/src/interaction/siWork.js b/src/interaction/siWork.js index 6758afc0a2dd96c3317740b6b420553762d6b853..bf97f37f5f3815b46c4a33ac4d1cd58378d884fc 100644 --- a/src/interaction/siWork.js +++ b/src/interaction/siWork.js @@ -353,7 +353,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) { sexOptions.push({text: `Use ${his} mouth`, scene: `FLips`}); sexOptions.push({text: `Kiss ${him}`, scene: `FKiss`}); if (hasAnyLegs(slave)) { - sexOptions.push({text: `Have ${him} dance for you`, get scene() { return App.Interact.dance(slave); }}); + sexOptions.push({text: `Have ${him} dance for you`, get scene() { return App.Interact.fDance(slave); }}); } sexOptions.push({text: `Play with ${his} tits`, scene: `FBoobs`}); @@ -409,7 +409,10 @@ App.UI.SlaveInteract.work = function(slave, refresh) { if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && (slave.fuckdoll === 0) && V.seePreg !== 0) { if (canImpreg(slave, V.PC)) { - sexOptions.push({text: `Impregnate ${him} yourself`, scene: `FPCImpreg`}); + sexOptions.push({ + text: `Impregnate ${him} yourself`, + get scene() { return App.Interact.fPCImpreg(slave); }, + }); } if (canImpreg(slave, slave)) { sexOptions.push({text: `Use ${his} own seed to impregnate ${him}`, scene: `FSlaveSelfImpreg`}); diff --git a/src/npc/interaction/fDance.js b/src/npc/interaction/fDance.js index f1756bcd9b26ee754e109c953999494b5a98ac59..1c2d60f969112e95f728837574cc71c793adedeb 100644 --- a/src/npc/interaction/fDance.js +++ b/src/npc/interaction/fDance.js @@ -3,7 +3,7 @@ * @param {App.Entity.SlaveState} slave * @returns {DocumentFragment} */ -App.Interact.dance = function(slave) { +App.Interact.fDance = function(slave) { const node = new DocumentFragment(); let r = []; @@ -47,7 +47,7 @@ App.Interact.dance = function(slave) { } else if (slave.weight > 0) { r.push(`${His} trim body is highlighted by ${his} dance. Whenever ${he} rolls ${his} ass or sways ${his} hips it highlights the contours of ${his} waist.`); } else if (slave.weight < 0) { - r.push(`Your slave's trim body glides to the music like a ${either("belly dancer", "stripper")}. ${He} is thin and tight, with no bodyfat to speak of,`); + r.push(`Your slave's trim body glides to the music like a ${either("belly dancer", "stripper")}. ${He} is thin and tight, with no body fat to speak of,`); if (slave.boobs > 400) { r.push(`making ${his} tits`); if (slave.butt > 1) { @@ -160,7 +160,7 @@ App.Interact.dance = function(slave) { break; case "feline": if (slave.face < -95) { - r.push(`revolting in its alien cat-like appearance, the mangly fur distracting you tremendously.`); + r.push(`revolting in its alien cat-like appearance, the mangy fur distracting you tremendously.`); } else if (slave.face < -40) { r.push(`ugly and feline, making it hard to do anything but stare at ${his} bizarre cat features.`); } else if (slave.face < -10) { @@ -1952,7 +1952,7 @@ App.Interact.dance = function(slave) { } } else if (random(1, 100) > (110 - slave.devotion)) { if (slave.fetish === "none" && slave.sexualFlaw !== "shamefast") { - r.push(`Being on display for your pleasure has <span class="lightcoral">encouraged ${him} to focus exposing ${himself} more often.</span>`); + r.push(`Being on display for your pleasure has <span class="fetish gain">encouraged ${him} to focus exposing ${himself} more often.</span>`); slave.fetish = "humiliation"; slave.fetishKnown = 1; } diff --git a/src/npc/interaction/fPCImpreg.js b/src/npc/interaction/fPCImpreg.js new file mode 100644 index 0000000000000000000000000000000000000000..2d326bdfe4a115e34e6192567af5be5f2a5cc6ea --- /dev/null +++ b/src/npc/interaction/fPCImpreg.js @@ -0,0 +1,304 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {DocumentFragment} + */ +App.Interact.fPCImpreg = function(slave) { + const frag = new DocumentFragment(); + + const text = []; + + const {He, His, he, his, him, himself} = getPronouns(slave); + + const pregnancyFetish = slave.fetish === 'pregnancy' && slave.fetishStrength > 60 && slave.fetishKnown; + const submissive = slave.fetish === 'submissive' && slave.fetishStrength > 60 && slave.fetishKnown; + const superfetation = slave.geneticQuirks.superfetation === 2 && slave.pregKnown; + const virgin = slave.vagina === 0 || (slave.mpreg && slave.anus === 0); + const hole = slave.mpreg ? `asshole` : `pussy`; + + const accepting = slave.devotion > 20; + const hesitant = slave.devotion >= -20 && slave.devotion <= 20; + const resistant = slave.devotion < -20; + + const loseVirginity = () => { + if (slave.mpreg) { + slave.anus = 1; + } else { + slave.vagina = 1; + } + }; + + 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}`; + } + + text.push(`You call ${him} over so you can`); + + if (slave.mpreg) { + const asshole = slave.geneticQuirks.superfetation === 2 && slave.pregKnown + ? `asshole and put another baby in ${him}` + : `asshole`; + + if (slave.anus > 2) { + text.push(`fuck ${his} gaping, fertile ${asshole}.`); + } else if (slave.anus === 2) { + text.push(`use ${his} whorish, fertile ${asshole}.`); + } else if (slave.anus === 1) { + text.push(`use ${his} tight, fertile ${asshole}.`); + } else if (slave.anus === 0) { + text.push(`take ${his} fertile, virgin ${asshole}.`); + } else { + throw new Error(`Unexpected anus value '${slave.anus}' in fPCImpreg()`); + } + + text.push(`The crest on ${his} abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request?`); + } else { + if (slave.vagina > 2) { + text.push(`fuck ${his} gaping, fertile cunt.`); + } else if (slave.vagina === 2) { + text.push(`use ${his} whorish, fertile cunt.`); + } else if (slave.vagina === 1) { + text.push(`use ${his} tight, fertile cunt.`); + } else if (slave.vagina === 0) { + text.push(`take ${his} fertile, virgin pussy.`); + } else { + throw new Error(`Unexpected vagina value '${slave.vagina}' in fPCImpreg()`); + } + + if (superfetation) { + text.push(`You plan on putting another baby in ${him}.`); + } + + if (slave.vaginaTat) { + if (slave.vaginaTat === "tribal patterns") { + text.push(`The tattoos on ${his} abdomen certainly draw attention there.`); + } else if (slave.vaginaTat === "scenes") { + text.push(`The tattoos on ${his} abdomen nicely illustrate what you mean to do to ${him}.`); + } else if (slave.vaginaTat === "degradation") { + text.push(`The tattoos on ${his} abdomen ask you to, after all.`); + } else if (slave.vaginaTat === "lewd crest") { + text.push(`The crest on ${his} abdomen eagerly awaits a womb stuffed with cum.`); + } + } + + if (slave.clit > 0) { + if (slave.clit === 1) { + text.push(`${His} big clit ${slave.foreskin ? `peeks out from under its hood` : `can't be missed`}.`); + } else if (slave.clit > 1) { + text.push(`${His} huge clit is impossible to miss.`); + } + } + + if (slave.vaginaPiercing > 0) { + if (slave.vaginaPiercing > 1) { + text.push(`${His} pierced lips and clit have ${him} nice and wet.`); + } else if (slave.vaginaPiercing === 1) { + text.push(`${His} pierced clit has ${him} nice and moist.`); + } + } + } + + if (virgin) { + if (pregnancyFetish) { + 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.`); + } else { + text.push(`pussy, 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">${His} ${hole} has been broken in, and there's a good chance 's ${superfetation ? `got another bun in the oven` : `pregnant`}.</span> + `); + + slave.devotion += 15; + + loseVirginity(); + } else if (accepting) { + text.push(`${He} accepts your orders without comment and presents ${his} virgin ${hole} for fertilization. ${He} gasps in shock when ${he} feels your hot seed${fillHim}. ${He} spends the rest of the day struggling with roiling emotions. Since ${he} is already well broken${superfetation ? ` and pregnant` : ``}, this new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss">${His} ${hole} has been broken in, and there's a good chance ${he}'s ${superfetation ? `got another bun in the oven` : `pregnant`}.</span>`); + + slave.devotion += 10; + + loseVirginity(); + } else if (hesitant) { + text.push(`${He} is clearly unhappy at losing ${his} pearl of great price to you; this probably isn't what ${he} imagined ${his} first real sex would be like. Worse, ${he} knows ${he}'s fertile and realizes ${superfetation ? `${his} existing pregnancy is not going to stop you from adding another baby to ${his} womb.` : `${he}'ll likely get pregnant.`} Nevertheless, this new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss">${His} ${hole} has been broken in.</span>`); + + slave.devotion += 4; + + loseVirginity(); + } else if (resistant) { + text.push(`As you anticipated, ${he} refuses to give you ${his} virginity. And as you expected, ${he} is unable to resist you. ${He} cries as you force yourself on ${him}, your cock piercing ${his} fresh, tight hole. Afterwards, ${he} ${hasAnyArms(slave) ? `clutches ${his} ${bellyAdjective(slave)} stomach` : `lies there`} and sobs, horrified by the knowledge that ${superfetation ? `${his} unborn ${slave.pregType === 1 ? `child is` : `children are`} now sharing quarters with ${his} rapist's child.` : `${he}'s probably carrying ${his} rapist's child.`} Being raped pregnant <span class="devotion dec">decreases ${his} devotion to you</span> and <span class="trust dec">fills ${him} with fear.</span> <span class="virginity loss">${His} ${hole} has been broken in.</span>`); + + slave.devotion -= 5; + slave.trust -= 5; + + loseVirginity(); + } + } else { + if (pregnancyFetish) { + 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.`); + } else { + text.push(`pussy, ripe for breeding.`); + } + + text.push(`You waste no time with foreplay as you mount ${him} and get to work. ${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}. ${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; + } else if (isAmputee(slave)) { + text.push(`You have ${his} limbless torso set on the end of the couch, face-${superfetation ? `up` : `down`}, with ${his} hips up in the air. This way, you get the greatest degree of penetration into ${his} fertile ${hole} you can manage. ${He} moans ${superfetation ? `openly` : `into the cushions`}, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (tooBigBelly(slave)) { + if (V.PC.prostate > 1) { + fillHim = ` filling ${him} until ${his} the pressure forces it to spray around your shaft`; + } 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(`Since ${he} already has trouble moving with ${his} ${bellyAdjective(slave)} belly, you just tip ${him} onto it; this leaves ${his} fertile ${hole} exposed and vulnerable. ${He} moans${hasAnyArms(slave) ? ` as ${he} clutches the sides of ${his} stomach` : ``}, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably gotten ${superfetation ? `another bun added to the oven` : `pregnant`}.`); + } else if (tooFatSlave(slave)) { + text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s pinned in place by the weight of ${his} own body, and you get the greatest degree of penetration into ${his} fertile ${hole}; after you push into ${his} soft folds enough to reach it, of course. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (tooBigBreasts(slave)) { + text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s pinned in place by the weight of ${his} ridiculous tits, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (tooBigButt(slave)) { + text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s stuck under ${his} ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (tooBigDick(slave)) { + text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s anchored in place by the weight of ${his} ridiculous cock, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (tooBigBalls(slave)) { + text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s anchored in place by the weight of ${his} ridiculous balls, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`); + } else if (submissive) { + let fillsHim = ''; + + if (V.PC.prostate > 1) { + fillsHim = `fills ${him} until ${his} belly is distended and wobbling with your cum`; + } else if (V.PC.prostate > 0) { + fillsHim = `pours into ${him} until ${he} is stuffed with your cum`; + } else if (V.PC.balls > 8) { + fillsHim = `pours into ${him}`; + } else { + fillsHim = `jets into ${his} welcoming depths`; + } + + text.push(`${He} ${slave.belly >= 10000 ? `waddles` : `comes`} submissively over, smiling a little submissive smile, and spreads ${himself} for you. ${slave.belly < 5000 + ? `You take ${him} on the couch next to your desk in the missionary position. ${He} hugs ${his} torso to you and ${his} breasts press against your chest; you can feel ${his} heart beating hard.` + : `You take ${him} from behind against your desk. ${He} steadies ${himself} as ${he} feels your hands roaming across ${his} ${bellyAdjective(slave)} belly. As the sex reaches its climax, ${his} breaths grow short and ${his} moans passionate.`} + As the sex reaches its climax your semen ${fillsHim} as ${he} begs you to use ${his} unworthy body to make a new slave.`); + } else if (accepting) { + let fillingHim = ''; + + if (V.PC.prostate > 1) { + fillingHim = `flowing into ${him} until ${his} stomach is distended and wobbling with your cum`; + } else if (V.PC.prostate > 0) { + fillingHim = `pouring into ${him} until ${he} is stuffed with your cum`; + } else if (V.PC.balls > 8) { + fillingHim = `pouring into ${him}`; + } else { + fillingHim = `jetting into ${him}`; + } + + text.push(`${slave.belly < 5000 + ? `${He} skips over smiling and gives you a quick kiss. You take ${him} on the couch next to your desk in the missionary position. ${He} hugs ${his} torso to you and ${his} breasts press against your ${V.PC.boobs > 300 ? `own;` : `chest; `} you can feel ${his} heart beating hard. As the sex reaches its climax, ${his} kisses grow urgent and passionate. ${He} clings to you,` + : `${He} waddles over smiling and leans in to give you a quick kiss. You decide to take ${him} from behind against your desk. ${He} steadies ${himself} against the furniture as ${he} feels your hands roaming across ${his} ${bellyAdjective(slave)} belly. You begin to pound into ${him} and as the sex reaches its climax, ${his} breaths grow short and ${his} moans passionate. As you reach your respective peaks, ${he} pushes ${himself} back against you, feeling`} + your semen ${fillingHim} as ${he} rides the downslope of ${his} orgasm. ${He} kisses you and promises to do ${his} best to use ${his} womb to make ${superfetation ? `another` : `a`} good slave for you.`); + } else if (hesitant) { + let full = ''; + + if (V.PC.prostate > 1) { + full = ` far beyond capacity`; + } else if (V.PC.prostate > 0) { + full = ` beyond capacity`; + } else if (V.PC.balls > 8) { + full = ` to capacity`; + } + + text.push(`${He} obeys, lying on the couch next to your desk${hasAnyLegs(slave) ? ` with ${his} leg${hasBothLegs(slave) ? `s spread` : ` moved aside`}` : ``}. You kneel on the ground and enter ${him}${hasAnyLegs(slave) ? `, a hand on ${hasBothLegs(slave) ? `each of ${his} legs` : `${his} leg`} to give you purchase` : ``}. The pounding is hard and fast, and ${he} gasps and whines. ${slave.belly > 100000 ? `You reach a hand up to tease ${his} already taut dome of a pregnancy.` : `You reach a hand down to maul ${his} breasts.`} ${He} begs you not to cum inside ${him}, knowing ${he}'s fertile, but soon loses track of ${his} fears as ${he} enjoys ${himself}. ${He} bites ${his} lip and moans as ${he} climaxes. You follow ${him} over the edge as you give one final, deep thrust before filling ${his} squeezing fuckhole${full} with your cum; ${he} realizes what you've done with a gasp and a worried look.`); + } else if (resistant) { + 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}`; + } else { + fillHim = `blow your load`; + } + + text.push(`${He} tries to refuse, so you bend the disobedient slave over your desk and take ${him} hard from behind. ${His} breasts slide back and forth across the desk. You give ${his} buttocks some nice hard swats as you pound ${him}. ${He} grunts and moans but knows better than to try to get away. ${He} begs you not to cum inside ${him}, knowing ${he}'s fertile, and sobs when ${he} feels you ${fillHim} despite ${his} pleas.`); + } + } + + text.push(`You repeat this ritual throughout the week, ensuring that ${slave.slaveName}`); + + if (superfetation) { + text.push(`has <span class="pregnant">added your child</span> to ${his} pregnancy.`); + } else { + text.push(`is <span class="pregnant">carrying your child.</span>`); + } + + if (V.arcologies[0].FSRestart !== 'unset' && (!slave.breedingMark || !V.propOutcome) && V.eugenicsFullControl) { + text.push(`Rumors spread about you fucking your slaves pregnant; the Societal Elite are <span class="reputation dec">very displeased</span> by these rumors.`); + + V.failedElite += 5; + } + + if (V.arcologies[0].FSGenderRadicalist !== 'unset' && slave.mpreg) { + text.push(`Society <span class="reputation inc">approves</span> of your fucking your slaves' asses pregnant; this advances the ideal all a slave needs is ${his} rear.`); + + // FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. + repX(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderRadicalist / V.FSLockinLevel), 'futureSocieties', slave); + // FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'. + V.arcologies[0].FSGenderRadicalist += 0.05 * V.FSSingleSlaveRep; + } else if (V.arcologies[0].FSGenderFundamentalist !== 'unset') { + if (slave.mpreg) { + text.push(`Society <span class="reputation inc">approves</span> of your putting a new slave in ${him}; this advances the idea that all slaves should bear their masters' babies.`); + + // FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. + repX(forceNeg(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel)), 'futureSocieties', slave); + // FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'. + V.arcologies[0].FSGenderFundamentalist -= 0.05 * V.FSSingleSlaveRep; + } else { + text.push(`Society <span class="reputation dec">is disgusted</span> by this degenerate form of reproduction.`); + + // FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. + repX(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel), 'futureSocieties', slave); + // FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'. + V.arcologies[0].FSGenderFundamentalist += 0.05 * V.FSSingleSlaveRep; + } + } + + addPartner(slave, -1); + knockMeUp(slave, 100, 2, -1, true); + + App.Events.addNode(frag, text); + + return frag; +}; diff --git a/src/npc/interaction/fPCImpreg.tw b/src/npc/interaction/fPCImpreg.tw deleted file mode 100644 index 96a8826dc25857db955f39f02ce1d4335c9cd223..0000000000000000000000000000000000000000 --- a/src/npc/interaction/fPCImpreg.tw +++ /dev/null @@ -1,219 +0,0 @@ -:: FPCImpreg [nobr no-history] - -/* TODO: add reactions for incest */ - -<<run App.Utils.setLocalPronouns(getSlave($AS))>> -<<run addPartner(getSlave($AS), -1)>> -<<set _bonus = random(6,20)>> -<<set _belly = bellyAdjective(getSlave($AS))>> -<<set _superfetation = (getSlave($AS).geneticQuirks.superfetation == 2 && getSlave($AS).pregKnown == 1) ? 1 : 0>> - -<<if getSlave($AS).mpreg == 1>> - <<set getSlave($AS).counter.anal += _bonus+1, $analTotal += _bonus+1>> -<<else>> - <<set getSlave($AS).counter.vaginal += _bonus+1, $vaginalTotal += _bonus+1>> -<</if>> - -You call $him over so you can -<<if getSlave($AS).mpreg == 1>> - <<if (getSlave($AS).anus > 2)>> - fuck $his gaping, fertile - <<elseif (getSlave($AS).anus == 2)>> - use $his whorish, fertile - <<elseif (getSlave($AS).anus == 1)>> - use $his tight, fertile - <<elseif (getSlave($AS).anus == 0)>> - take $his fertile, virgin - <</if>> - <<if _superfetation == 1>> - asshole and put another baby in $him. - <<else>> - asshole. - <</if>> - <<if (getSlave($AS).vaginaTat == "lewd crest")>> - The crest on $his abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request? - <</if>> -<<else>> - <<if (getSlave($AS).vagina > 2)>> - fuck $his gaping, fertile cunt. - <<elseif (getSlave($AS).vagina == 2)>> - use $his whorish, fertile cunt. - <<elseif (getSlave($AS).vagina == 1)>> - use $his tight, fertile cunt. - <<elseif (getSlave($AS).vagina == 0)>> - take $his fertile, virgin pussy. - <</if>> - <<if _superfetation == 1>> - You plan on putting another baby in $him. - <</if>> - - <<if (getSlave($AS).vaginaTat == "tribal patterns")>> - The tattoos on $his abdomen certainly draw attention there. - <<elseif (getSlave($AS).vaginaTat == "scenes")>> - The tattoos on $his abdomen nicely illustrate what you mean to do to $him. - <<elseif (getSlave($AS).vaginaTat == "degradation")>> - The tattoos on $his abdomen ask you to, after all. - <<elseif (getSlave($AS).vaginaTat == "lewd crest")>> - The crest on $his abdomen eagerly awaits a womb stuffed with cum. - <</if>> - - <<if getSlave($AS).clit == 1>> - $His big clit <<if getSlave($AS).foreskin > 0>>peeks out from under its hood<<else>>can't be missed<</if>>. - <<elseif getSlave($AS).clit > 2>> - $His huge clit is impossible to miss. - <</if>> - - <<if (getSlave($AS).vaginaPiercing > 1) && (getSlave($AS).vagina != -1)>> - $His pierced lips and clit have $him nice and wet. - <<elseif (getSlave($AS).vaginaPiercing == 1) && (getSlave($AS).vagina != -1)>> - $His pierced clit has $him nice and moist. - <</if>> -<</if>> - -<<if (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>> - $He cries with joy and presents $his virgin - <<if getSlave($AS).mpreg == 1>> - asshole for fertilization. - <<elseif getSlave($AS).pubicHStyle == "bushy" || getSlave($AS).pubicHStyle == "very bushy" || getSlave($AS).pubicHStyle == "bushy in the front and neat in the rear">> - treasure, barely visible within her tangle of pubic hair, but ready for fertilization. - <<elseif getSlave($AS).pubicHStyle == "in a strip">> - pussy, accented by $his strip of pubic hair, ready for fertilization. - <<elseif getSlave($AS).pubicHStyle == "neat">> - neatly trimmed pussy, ready for fertilization. - <<elseif getSlave($AS).pubicHStyle == "waxed" || getSlave($AS).pubicHStyle == "bald" || getSlave($AS).pubicHStyle == "hairless">> - pussy, smooth and bare, ready for fertilization. - <</if>> - 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<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, knowing that $his first time will always be special to $him. $He spends the rest of the day cherishing $his _belly stomach. This new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in, and there's a good chance $he's <<if _superfetation == 1>>got another bun in the oven<<else>>pregnant<</if>>.@@ - <<if getSlave($AS).mpreg == 1>> - <<set getSlave($AS).anus = 1>> - <<else>> - <<set getSlave($AS).vagina = 1>> - <</if>> - <<set getSlave($AS).devotion += 15>> -<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>> - $He cries with joy and presents $his fertile - <<if getSlave($AS).mpreg == 1>> - asshole for breeding. - <<elseif getSlave($AS).pubicHStyle == "bushy" || getSlave($AS).pubicHStyle == "very bushy" || getSlave($AS).pubicHStyle == "bushy in the front and neat in the rear">> - pussy, barely visible within her tangle of pubic hair but ripe for breeding. - <<elseif getSlave($AS).pubicHStyle == "in a strip">> - pussy, accented by $his strip of pubic hair and ripe for breeding. - <<elseif getSlave($AS).pubicHStyle == "neat">> - neatly trimmed pussy, ripe for breeding. - <<elseif getSlave($AS).pubicHStyle == "waxed" || getSlave($AS).pubicHStyle == "bald" || getSlave($AS).pubicHStyle == "hairless">> - pussy, smooth, bare and ripe for breeding. - <</if>> - You waste no time with foreplay as you mount $him and get to work. $He groans with pleasure as your pelvis 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<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>. $He spends the rest of the day considering $his own _belly stomach with pride. This new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ - <<set getSlave($AS).devotion += 10>> -<<elseif (getSlave($AS).devotion > 20) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>> - $He accepts your orders without comment and presents $his virgin <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> for fertilization. $He gasps in shock when $he feels your hot seed<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>. $He spends the rest of the day struggling with roiling emotions. Since $he is already well broken<<if _superfetation == 1>> and pregnant<</if>>, this new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in, and there's a good chance $he's <<if _superfetation == 1>>got another bun in the oven<<else>>pregnant<</if>>.@@ - <<if getSlave($AS).mpreg == 1>> - <<set getSlave($AS).anus = 1>> - <<else>> - <<set getSlave($AS).vagina = 1>> - <</if>> - <<set getSlave($AS).devotion += 10>> -<<elseif (getSlave($AS).devotion >= -20) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>> - $He is clearly unhappy at losing $his pearl of great price to you; this probably isn't what $he imagined $his first real sex would be like. Worse, $he knows $he's fertile and realizes - <<if _superfetation == 1>> - $his existing pregnancy is not going to stop you from adding another baby to $his womb. - <<else>> - $he'll likely get pregnant. - <</if>> - Nevertheless, this new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in.@@ - <<if getSlave($AS).mpreg == 1>> - <<set getSlave($AS).anus = 1>> - <<else>> - <<set getSlave($AS).vagina = 1>> - <</if>> - <<set getSlave($AS).devotion += 4>> -<<elseif (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>> - As you anticipated, $he refuses to give you $his virginity. And as you expected, $he is unable to resist you. $He cries as you force yourself on $him, your cock piercing $his fresh, tight hole. Afterwards, $he <<if hasAnyArms(getSlave($AS))>>clutches $his _belly stomach<<else>>lies there<</if>> and sobs, horrified by the knowledge that - <<if _superfetation == 1>> - $his unborn <<if getSlave($AS).pregType == 1>>child is<<else>>children are<</if>> now sharing quarters with $his rapist's child. - <<else>> - $he's probably carrying $his rapist's child. - <</if>> - The rape @@.mediumorchid;decreases $his devotion to you@@ and @@.gold;fills $him with fear.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in.@@ - <<set getSlave($AS).devotion -= 5, getSlave($AS).trust -= 5>> - <<if getSlave($AS).mpreg == 1>> - <<set getSlave($AS).anus = 1>> - <<else>> - <<set getSlave($AS).vagina = 1>> - <</if>> -<<elseif isAmputee(getSlave($AS))>> - You have $his limbless torso set on the end of the couch, face-<<if _superfetation == 1>>up<<else>>down<</if>>, with $his hips up in the air. This way, you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>> you can manage. $He moans <<if _superfetation == 1>>openly<<else>>into the cushions<</if>>, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif tooBigBelly(getSlave($AS))>> - Since $he already has trouble moving with $his _belly belly, you just tip $him onto it; this leaves $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>> exposed and vulnerable. $He moans<<if hasAnyArms(getSlave($AS))>> as $he clutches the sides of $his stomach<</if>>, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his the pressure forces it to spray around your shaft<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably gotten <<if _superfetation == 1>> another bun added to the oven<<else>>pregnant<</if>>. -<<elseif tooFatSlave(getSlave($AS))>> - You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his own body, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>; after you push into $his soft folds enough to reach it, of course. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif tooBigBreasts(getSlave($AS))>> - You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his ridiculous tits, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif tooBigButt(getSlave($AS))>> - You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's stuck under $his ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif tooBigDick(getSlave($AS))>> - You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous cock, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif tooBigBalls(getSlave($AS))>> - You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous balls, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>. -<<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>> - $He <<if getSlave($AS).belly >= 10000>>waddles<<else>>comes<</if>> submissively over, smiling a little submissive smile, and spreads $himself for you. - <<if getSlave($AS).belly < 5000>> - You take $him on the couch next to your desk in the missionary position. $He hugs $his torso to you and $his breasts press against your chest; you can feel $his heart beating hard. - <<else>> - You take $him from behind against your desk. $He steadies $himself as $he feels your hands roaming across $his _belly belly. As the sex reaches its climax, $his breaths grow short and $his moans passionate. $He pushed against you, - <</if>> - As the sex reaches its climax your semen<<if $PC.prostate >= 2>> fills $him until $his stomach is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pours into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pours into $him<<else>> jets into $his welcoming depths<</if>> as $he begs you to use $his unworthy body to make a new slave. -<<elseif getSlave($AS).devotion < -20>> - $He tries to refuse, so you bend the disobedient slave over your desk and take $him hard from behind. $His breasts slide back and forth across the desk. You give $his buttocks some nice hard swats as you pound $him. $He grunts and moans but knows better than to try to get away. $He begs you not to cum inside $him, knowing $he's fertile, and sobs when $he feels you<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<<else>> blow your load<</if>> despite $his pleas. -<<elseif getSlave($AS).devotion <= 20>> - $He obeys, lying on the couch next to your desk<<if hasAnyLegs(getSlave($AS))>> with $his leg<<if hasBothLegs(getSlave($AS))>>s spread<<else>> moved aside<</if>><</if>>. You kneel on the ground and enter $him<<if hasAnyLegs(getSlave($AS))>>, a hand on <<if hasBothLegs(getSlave($AS))>>each of $his legs<<else>>$his leg<</if>> to give you purchase<</if>>. The pounding is hard and fast, and $he gasps and whines. - <<if getSlave($AS).belly >= 100000>> - You reach a hand up to tease $his already taut dome of a pregnancy. - <<else>> - You reach a hand down to maul $his breasts. - <</if>> - $He begs you not to cum inside $him, knowing $he's fertile, but soon loses track of $his fears as $he enjoys $himself. $He bites $his lip and moans as $he climaxes. You follow $him over the edge as you give one final, deep thrust before filling $his squeezing fuckhole<<if $PC.prostate >= 2>> far beyond capacity<<elseif $PC.prostate >= 1>> beyond capacity<<elseif $PC.balls >= 9>> to capacity<</if>> with your cum; $he realizes what you've done with a gasp and a worried look. -<<else>> - <<if getSlave($AS).belly < 5000>> - $He skips over smiling and gives you a quick kiss. You take $him on the couch next to your desk in the missionary position. $He hugs $his torso to you and $his breasts press against your - <<if $PC.boobs >= 300>> - own; - <<else>> - chest; - <</if>> - you can feel $his heart beating hard. As the sex reaches its climax, $his kisses grow urgent and passionate. $He clings to you, - <<else>> - $He waddles over smiling and leans in to give you a quick kiss. You decide to take $him from behind against your desk. $He steadies $himself against the furniture as $he feels your hands roaming across $his _belly belly. You begin to pound into $him and as the sex reaches its climax, $his breaths grow short and $his moans passionate. As you reach your respective peaks, $he pushes $himself back against you, feeling - <</if>> - your semen<<if $PC.prostate >= 2>> flowing into $him until $his stomach is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<<else>> jetting into $him<</if>> as $he rides the downslope of $his orgasm. $He kisses you and promises to do $his best to use $his womb to make <<if _superfetation == 1>>another<<else>>a<</if>> good slave for you. -<</if>> - -You repeat this ritual throughout the week, ensuring that <<= getSlave($AS).slaveName>> -<<if _superfetation == 1>> - has @@.lime;added your child@@ to $his pregnancy. -<<else>> - is @@.lime;carrying your child.@@ -<</if>> - - -<<= knockMeUp(getSlave($AS), 100, 2, -1, 1)>> - -<<if $arcologies[0].FSRestart != "unset">> - <<if (getSlave($AS).breedingMark != 1 || $propOutcome == 0) && $eugenicsFullControl != 1>> - Rumors spread about you fucking your slaves pregnant; the Societal Elite are @@.red; very displeased@@ by these rumors. - <<set $failedElite += 5>> - <</if>> -<</if>> -<<if $arcologies[0].FSGenderRadicalist != "unset" && getSlave($AS).mpreg == 1>> - Society @@.green;approves@@ of your fucking your slaves' asses pregnant; this advances the ideal all a slave needs is $his rear. - <<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderRadicalist/$FSLockinLevel), "futureSocieties", getSlave($AS))>> - <<set $arcologies[0].FSGenderRadicalist += 0.05*$FSSingleSlaveRep>> -<<elseif $arcologies[0].FSGenderFundamentalist != "unset" && getSlave($AS).mpreg == 1>> - Society @@.red;is disgusted@@ by this degenerate form of reproduction. - <<run repX(forceNeg($FSSingleSlaveRep*($arcologies[0].FSGenderFundamentalist/$FSLockinLevel)), "futureSocieties", getSlave($AS))>> - <<set $arcologies[0].FSGenderFundamentalist -= 0.05*$FSSingleSlaveRep>> -<<elseif $arcologies[0].FSGenderFundamentalist != "unset">> - Society @@.green;approves@@ of your putting a new slave in $him; this advances the idea that all slaves should bear their masters' babies. - <<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderFundamentalist/$FSLockinLevel), "futureSocieties", getSlave($AS))>> - <<set $arcologies[0].FSGenderFundamentalist += 0.05*$FSSingleSlaveRep>> -<</if>>