diff --git a/src/npc/interaction/fPCImpreg.js b/src/npc/interaction/fPCImpreg.js
index 7bfd3e45a715876bd3b3096a1b2d9f7d62ff3f69..fa253710cb227ad2d79df7a763494aa9acfc9623 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;
+}