diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js
index d64b59e3fccabaaeb7f1e69995c2805c263dbdf7..7e8ac6f35a90f60c627e2be970a17d7729b6f332 100644
--- a/src/endWeek/player/prPregnancy.js
+++ b/src/endWeek/player/prPregnancy.js
@@ -471,10 +471,10 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) {
 	function impregnation() {
 		if (PC.vagina === 0 || (PC.anus === 0 && PC.mpreg > 0)) {
 			// You aren't putting out.
-			if (isVirile(PC) && PC.geneMods.aggressiveSperm === 1 && canFemImpreg(PC, PC)) {
+			if (PC.geneMods.aggressiveSperm === 1) {
 				// But ejaculating with the sperm mod can result in splashback. More sex, more chances.
 				if (random(1, 100) > (99 - (PC.energy / 2))) {
-					knockMeUp(PC, 0, 2, -1); // 0% chance is correct. Gene mod adds 75% in knockMeUp().
+					tryKnockMeUp(PC, 0, 2, PC); // 0% chance is correct. Gene mod adds 75% in tryKnockMeUp().
 				}
 			}
 		} else if (random(1, 100) > (70 - (V.reproductionFormula * 10))) {
@@ -515,29 +515,29 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) {
 				return weight;
 			};
 
-			let dadHash;
+			let eligibleSlaves;
 			if (V.policies.sexualOpenness === 1) {
-				dadHash = V.slaves.filter(s => canImpreg(V.PC, s) && App.Utils.sexAllowed(V.PC, s) && isSlaveAvailable(s) && canAchieveErection(s) && s.devotion > 20 && raceIsAcceptable);
+				eligibleSlaves = V.slaves.filter(s => canImpreg(V.PC, s) && App.Utils.sexAllowed(V.PC, s) && isSlaveAvailable(s) && canAchieveErection(s) && s.devotion > 20 && raceIsAcceptable);
 			} else {
-				dadHash = V.slaves.filter(s => canImpreg(V.PC, s) && isSlaveAvailable(s) && s.toyHole === "dick");
+				eligibleSlaves = V.slaves.filter(s => canImpreg(V.PC, s) && isSlaveAvailable(s) && s.toyHole === "dick");
 			}
-			dadHash.reduce((acc, cur) => Object.assign(acc, {[cur.ID]: score(cur)}), {});
-			const chosenDadID = hashChoice(dadHash);
-			if (chosenDadID) {
-				knockMeUp(PC, 100, 2, chosenDadID);
+			const dadHash = eligibleSlaves.reduce((acc, cur, i) => Object.assign(acc, {[i]: score(cur)}), {});
+			const chosenDadIndex = hashChoice(dadHash);
+			if (chosenDadIndex) {
+				tryKnockMeUp(PC, 100, 2, eligibleSlaves[chosenDadIndex]);
 			}
 		}
 		if (canGetPregnant(PC) && !onBedRest(PC, true) && !isPCCareerInCategory("servant")) {
 			// Sperm mod leavings around the penthouse. Gives servants more of a point too.
-			let slobs = V.slaves.filter(s => canFemImpreg(PC, s) && isSlaveAvailable(s) && s.geneMods.aggressiveSperm === 1 && (s.fetish === "mindbroken" || s.energy > 95 || (s.devotion < -20 && s.trust > 20) || (s.intelligence + s.intelligenceImplant < -10)));
+			let slobs = V.slaves.filter(s => isSlaveAvailable(s) && s.geneMods.aggressiveSperm === 1 && (s.fetish === "mindbroken" || s.energy > 95 || (s.devotion < -20 && s.trust > 20) || (s.intelligence + s.intelligenceImplant < -10)));
 			if (slobs.length > (totalServantCapacity() / 5)) {
-				knockMeUp(PC, -50, 2, slobs.random());
+				tryKnockMeUp(PC, -50, 2, slobs.random());
 			}
 		}
 	}
 
 	function autoImpregnation() {
-		knockMeUp(PC, 100, 2, PC.ID);
+		tryKnockMeUp(PC, 100, 2, PC);
 		if (PC.geneticQuirks.superfetation === 2 && PC.pregKnown === 1) {
 			if (V.geneticMappingUpgrade === 0 && PC.counter.birthsTotal === 0) {
 				r.push(`You are wracked with frequent spontaneous orgasms from your asexual reproduction modifications despite already being pregnant.`);
diff --git a/src/js/pregJS.js b/src/js/pregJS.js
index 8c27ea85d5ad03512ab2ec84c37ca4aff4889d6b..6b6136b3294cab58f4a7f4362de3f3ba1c1f8e88 100644
--- a/src/js/pregJS.js
+++ b/src/js/pregJS.js
@@ -528,9 +528,9 @@ globalThis.tryKnockMeUp = function(mother, chance, hole, father) {
 						if (mother.ID === -1) {
 							/* r += "<span class="lime">You have gotten pregnant.</span>"; */
 						} else {
-							const {him} = getPronouns(mother);
+							const {He, him} = getPronouns(mother);
 							if (father.ID === -1) {
-								r += `<span class="lime">You have gotten ${him} pregnant.</span>`;
+								r += `<span class="lime">${He} has become pregnant.</span>`;
 							} else {
 								r += `<span class="lime">${father.slaveName} has gotten ${him} pregnant.</span>`;
 							}
diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js
index 61fb5d1e0c91728fb25d54728a792b838cdd37e0..bc5183d404c853220675e15c5414502aae02878b 100644
--- a/src/js/sexActsJS.js
+++ b/src/js/sexActsJS.js
@@ -29,36 +29,36 @@ globalThis.VCheck = (function() {
 		let r = '';
 		setScopedPronouns(slave);
 
-		if (canDoAnal(slave) && slave.anus === 0) {
-			r += `<span class="lime">This breaks in ${slave.slaveName}'s virgin ass.</span> `;
-			if (slave.devotion > 50 || slave.career === "a slave since birth") {
-				r += `Since it's ${his} first time, you gently ease yourself into ${his} butthole and gradually increase the intensity of your thrusts. Before long ${he}'s moaning loudly as you continue working away at ${his} butthole. `;
-				if (slave.tankBaby === 2) {
-					r += `${He} thinks of losing ${his} anal virginity to ${his} ${getWrittenTitle(slave)} a <span class="hotpink">necessity.</span> ${He} expects ${his} asshole to be seeing a lot more attention now.`;
-				} else {
-					r += `${He} thinks of losing ${his} anal virginity to you as a <span class="hotpink">connection</span> with ${his} beloved ${getWrittenTitle(slave)}. `;
-					if ((slave.fetishKnown && slave.fetish === "buttslut") || (slave.energy > 95) || (slave.attrXX >= 85 && V.PC.dick === 0)) {
-						r += `${He} can't wait to be fucked in the ass by you again.`;
+		if (canDoAnal(slave)) {
+			if (slave.anus === 0) {
+				r += `<span class="lime">This breaks in ${slave.slaveName}'s virgin ass.</span> `;
+				if (slave.devotion > 50 || slave.career === "a slave since birth") {
+					r += `Since it's ${his} first time, you gently ease yourself into ${his} butthole and gradually increase the intensity of your thrusts. Before long ${he}'s moaning loudly as you continue working away at ${his} butthole. `;
+					if (slave.tankBaby === 2) {
+						r += `${He} thinks of losing ${his} anal virginity to ${his} ${getWrittenTitle(slave)} a <span class="hotpink">necessity.</span> ${He} expects ${his} asshole to be seeing a lot more attention now.`;
 					} else {
-						r += `${He} looks forward to having ${his} asshole fucked by you again.`;
+						r += `${He} thinks of losing ${his} anal virginity to you as a <span class="hotpink">connection</span> with ${his} beloved ${getWrittenTitle(slave)}. `;
+						if ((slave.fetishKnown && slave.fetish === "buttslut") || (slave.energy > 95) || (slave.attrXX >= 85 && V.PC.dick === 0)) {
+							r += `${He} can't wait to be fucked in the ass by you again.`;
+						} else {
+							r += `${He} looks forward to having ${his} asshole fucked by you again.`;
+						}
 					}
+					slave.devotion += 4;
+				} else if (slave.devotion > 20) {
+					r += `Since it's ${his} first time, you gently ease yourself into ${his} butthole and gradually increase the intensity of your thrusts. ${His} moans become louder and louder as you continue working away at ${his} butthole. ${He} accepts the pain and humiliation of anal sex as part of ${his} sexual servitude, though ${he} hopes that ${his} next time will be less painful.`;
+				} else if (slave.devotion >= -20) {
+					r += `You force yourself into ${his} butthole. ${He} sobs and cries with disgust while you continue thrusting into ${his} ass. ${He} <span class="gold">fears</span> ${his} next anal sex, remembering the pain of losing ${his} anal virginity. ${He} dreads having ${his} ass violated by you again.`;
+					slave.trust -= 5;
+				} else {
+					r += `You force yourself into ${his} butthole. ${He} sobs and cries with disgust while you continue thrusting into ${his} ass. ${He} <span class="mediumorchid">hates</span> and <span class="gold">fears</span> you for violating ${his} virgin butt. ${He} dreads having ${his} ass fucked by you again.`;
+					slave.trust -= 5;
+					slave.devotion -= 5;
 				}
-				slave.devotion += 4;
-			} else if (slave.devotion > 20) {
-				r += `Since it's ${his} first time, you gently ease yourself into ${his} butthole and gradually increase the intensity of your thrusts. ${His} moans become louder and louder as you continue working away at ${his} butthole. ${He} accepts the pain and humiliation of anal sex as part of ${his} sexual servitude, though ${he} hopes that ${his} next time will be less painful.`;
-			} else if (slave.devotion >= -20) {
-				r += `You force yourself into ${his} butthole. ${He} sobs and cries with disgust while you continue thrusting into ${his} ass. ${He} <span class="gold">fears</span> ${his} next anal sex, remembering the pain of losing ${his} anal virginity. ${He} dreads having ${his} ass violated by you again.`;
-				slave.trust -= 5;
-			} else {
-				r += `You force yourself into ${his} butthole. ${He} sobs and cries with disgust while you continue thrusting into ${his} ass. ${He} <span class="mediumorchid">hates</span> and <span class="gold">fears</span> you for violating ${his} virgin butt. ${He} dreads having ${his} ass fucked by you again.`;
-				slave.trust -= 5;
-				slave.devotion -= 5;
+				slave.anus = 1;
 			}
-			slave.anus = 1;
-		}
-		if (canDoAnal(slave)) {
-			if (canImpreg(slave, V.PC)) {
-				knockMeUp(slave, 10, 1, -1);
+			if (canPenetrate(V.PC)) {
+				tryKnockMeUp(slave, 10, 1, V.PC);
 			}
 			seX(slave, "anal", V.PC, "penetrative", times);
 		}
@@ -74,37 +74,37 @@ globalThis.VCheck = (function() {
 		let r = '';
 		setScopedPronouns(slave);
 
-		if (canDoVaginal(slave) && slave.vagina === 0) {
-			r += `<span class="lime">This breaks in ${slave.slaveName}'s virgin pussy.</span> `;
-			if (slave.devotion > 50 || slave.career === "a slave since birth") {
-				r += `You ease yourself into ${his} pussy, since it's ${his} first time, then gradually speed up your thrusts while ${he} slowly learns to move ${his} hips along with you. ${He} moans loudly. `;
-				if (slave.tankBaby === 2) {
-					r += `${He} thinks of losing ${his} virginity to ${his} ${getWrittenTitle(slave)} a <span class="hotpink">necessity to be happy.</span> ${He} expects ${his} pussy to be seeing a lot more attention in the future.`;
-				} else {
-					r += `<span class="hotpink">${He} enjoys losing ${his} cherry to you,</span> and `;
-					if ((slave.fetishKnown && slave.fetish === "pregnancy") || (slave.energy > 95) || (slave.attrXY >= 85 && V.PC.dick > 0)) {
-						r += `can't wait to have ${his} pussy fucked by you again.`;
+		if (canDoVaginal(slave)) {
+			if (slave.vagina === 0) {
+				r += `<span class="lime">This breaks in ${slave.slaveName}'s virgin pussy.</span> `;
+				if (slave.devotion > 50 || slave.career === "a slave since birth") {
+					r += `You ease yourself into ${his} pussy, since it's ${his} first time, then gradually speed up your thrusts while ${he} slowly learns to move ${his} hips along with you. ${He} moans loudly. `;
+					if (slave.tankBaby === 2) {
+						r += `${He} thinks of losing ${his} virginity to ${his} ${getWrittenTitle(slave)} a <span class="hotpink">necessity to be happy.</span> ${He} expects ${his} pussy to be seeing a lot more attention in the future.`;
 					} else {
-						r += `looks forward to having ${his} pussy fucked by you again.`;
+						r += `<span class="hotpink">${He} enjoys losing ${his} cherry to you,</span> and `;
+						if ((slave.fetishKnown && slave.fetish === "pregnancy") || (slave.energy > 95) || (slave.attrXY >= 85 && canPenetrate(V.PC))) {
+							r += `can't wait to have ${his} pussy fucked by you again.`;
+						} else {
+							r += `looks forward to having ${his} pussy fucked by you again.`;
+						}
 					}
+					slave.devotion += 4;
+				} else if (slave.devotion > 20) {
+					r += `You ease yourself into ${his} pussy, since it's ${his} first time, then gradually speed up your thrusts while ${he} slowly learns to move ${his} hips along with you. ${He} accepts losing ${his} virginity to ${his} owner and ${he} looks forward to having ${his} pussy fucked by you again.`;
+				} else if (slave.devotion >= -20) {
+					r += `You force yourself into ${his} pussy. ${He} sobs and cries with disgust while you continue thrusting into ${his} fuck hole. ${He} <span class="mediumorchid">hates</span> losing ${his} virginity this way and <span class="gold">fears</span> the next time you'll conquer ${him}. ${He} dreads getting violated by you again.`;
+					slave.trust -= 5;
+					slave.devotion -= 5;
+				} else {
+					r += `You force yourself into ${his} pussy. ${He} sobs and cries with disgust while you continue working ${his} fuck hole. ${He} tries to struggle, but you only pound harder. ${He} <span class="mediumorchid">hates</span> and <span class="gold">fears</span> you for robbing ${his} of ${his} virginity. ${He} dreads getting fucked by you again.`;
+					slave.trust -= 10;
+					slave.devotion -= 15;
 				}
-				slave.devotion += 4;
-			} else if (slave.devotion > 20) {
-				r += `You ease yourself into ${his} pussy, since it's ${his} first time, then gradually speed up your thrusts while ${he} slowly learns to move ${his} hips along with you. ${He} accepts losing ${his} virginity to ${his} owner and ${he} looks forward to having ${his} pussy fucked by you again.`;
-			} else if (slave.devotion >= -20) {
-				r += `You force yourself into ${his} pussy. ${He} sobs and cries with disgust while you continue thrusting into ${his} fuck hole. ${He} <span class="mediumorchid">hates</span> losing ${his} virginity this way and <span class="gold">fears</span> the next time you'll conquer ${him}. ${He} dreads getting violated by you again.`;
-				slave.trust -= 5;
-				slave.devotion -= 5;
-			} else {
-				r += `You force yourself into ${his} pussy. ${He} sobs and cries with disgust while you continue working ${his} fuck hole. ${He} tries to struggle, but you only pound harder. ${He} <span class="mediumorchid">hates</span> and <span class="gold">fears</span> you for robbing ${his} of ${his} virginity. ${He} dreads getting fucked by you again.`;
-				slave.trust -= 10;
-				slave.devotion -= 15;
+				slave.vagina = 1;
 			}
-			slave.vagina = 1;
-		}
-		if (canDoVaginal(slave)) {
-			if (canImpreg(slave, V.PC)) {
-				knockMeUp(slave, 10, 0, -1);
+			if (canPenetrate(V.PC)) {
+				tryKnockMeUp(slave, 10, 0, V.PC);
 			}
 			seX(slave, "vaginal", V.PC, "penetrative", times);
 		}
@@ -185,13 +185,13 @@ globalThis.VCheck = (function() {
 			if (canDoAnal(slave)) {
 				seX(slave, "vaginal", V.PC, "penetrative", bothTimes);
 				seX(slave, "anal", V.PC, "penetrative", bothTimes);
-				if (canImpreg(slave, V.PC)) {
-					knockMeUp(slave, 10, 2, -1);
+				if (canPenetrate(V.PC)) {
+					tryKnockMeUp(slave, 10, 2, V.PC);
 				}
 			} else {
 				seX(slave, "vaginal", V.PC, "penetrative", bothTimes);
-				if (canImpreg(slave, V.PC)) {
-					knockMeUp(slave, 10, 0, -1);
+				if (canPenetrate(V.PC)) {
+					tryKnockMeUp(slave, 10, 0, V.PC);
 				}
 			}
 		} else if (canDoAnal(slave)) {
@@ -218,8 +218,8 @@ globalThis.VCheck = (function() {
 				slave.anus = 1;
 			}
 			seX(slave, "anal", V.PC, "penetrative", analTimes);
-			if (canImpreg(slave, V.PC)) {
-				knockMeUp(slave, 10, 1, -1);
+			if (canPenetrate(V.PC)) {
+				tryKnockMeUp(slave, 10, 1, V.PC);
 			}
 		}
 		return r;
@@ -266,13 +266,13 @@ globalThis.VCheck = (function() {
 			if (canDoAnal(partner)) {
 				actX(partner, "vaginal", bothTimes);
 				actX(partner, "anal", bothTimes);
-				if (canImpreg(partner, V.PC)) {
-					r += knockMeUp(partner, 10, 2, -1);
+				if (canPenetrate(V.PC)) {
+					r += tryKnockMeUp(partner, 10, 2, V.PC);
 				}
 			} else {
 				actX(partner, "vaginal", bothTimes);
-				if (canImpreg(partner, V.PC)) {
-					r += knockMeUp(partner, 10, 0, -1);
+				if (canPenetrate(V.PC)) {
+					r += tryKnockMeUp(partner, 10, 0, V.PC);
 				}
 			}
 		} else if (canDoAnal(partner)) {
@@ -281,8 +281,8 @@ globalThis.VCheck = (function() {
 				partner.anus = 1;
 			}
 			actX(partner, "anal", analTimes);
-			if (canImpreg(partner, V.PC)) {
-				r += knockMeUp(partner, 10, 1, -1);
+			if (canPenetrate(V.PC)) {
+				r += tryKnockMeUp(partner, 10, 1, V.PC);
 			}
 		}
 		return r;
@@ -326,48 +326,44 @@ globalThis.SimpleSexAct = (function() {
 
 		for (let i = 0; i < fuckCount; i++) {
 			playerSex = sexArray.random();
-			fuckTarget = jsRandom(1, 100);
+			fuckTarget = random(1, 100);
 			if (V.policies.sexualOpenness === 1 || slave.toyHole === "dick") {
 				if (slave.nipples === "fuckable" && pPenetrates && fuckTarget > 90) {
 					seX(slave, "mammary", V.PC, "penetrative");
 				} else if (sPenetrates && V.PC.vagina > 0 && fuckTarget > 66) {
 					seX(V.PC, "vaginal", slave, "penetrative");
-					if (canImpreg(V.PC, slave)) {
-						knockMeUp(V.PC, 10, 0, slave.ID);
-					}
+					tryKnockMeUp(V.PC, 10, 0, slave);
 				} else if (canDoVaginal(slave) && (slave.vagina > 0 || (slave.vagina >= 0 && playerSex === "vaginal")) && fuckTarget > 33) {
 					seX(slave, "vaginal", V.PC, playerSex);
-					if ((canImpreg(slave, V.PC) && playerSex === "penetrative") || (canFemImpreg(slave, V.PC) && playerSex === "vaginal")) {
-						knockMeUp(slave, 10, 0, -1);
+					if (playerSex === "penetrative" || playerSex === "vaginal") {
+						tryKnockMeUp(slave, 10, 0, V.PC);
 					}
-					if (canFemImpreg(V.PC, slave) && playerSex === "vaginal") {
-						knockMeUp(V.PC, 10, 0, slave.ID);
+					if (playerSex === "vaginal") {
+						tryKnockMeUp(V.PC, 10, 0, slave);
 					}
 				} else if (canDoAnal(slave) && slave.anus > 0 && fuckTarget > 15) {
 					seX(slave, "anal", V.PC, "penetrative");
-					if (canImpreg(slave, V.PC)) {
-						knockMeUp(slave, 10, 1, -1);
+					if (canPenetrate(V.PC)) {
+						tryKnockMeUp(slave, 10, 1, V.PC);
 					}
 				} else if (sPenetrates && V.PC.anus > 0 && fuckTarget > 5) {
 					seX(V.PC, "anal", slave, "penetrative");
-					if (canImpreg(V.PC, slave)) {
-						knockMeUp(V.PC, 10, 1, slave.ID);
-					}
+					tryKnockMeUp(V.PC, 10, 1, slave);
 				} else {
 					seX(slave, "oral", V.PC, playerSex);
 				}
 			} else {
 				if (slave.nipples === "fuckable" && pPenetrates && fuckTarget > 80) {
 					seX(slave, "mammary", V.PC, "penetrative");
-				} else if (canDoVaginal(slave) && slave.vagina > 0 && fuckTarget > 33) {
+				} else if (canDoVaginal(slave) && (slave.vagina > 0 || (slave.vagina >= 0 && playerSex === "vaginal")) && fuckTarget > 33) {
 					seX(slave, "vaginal", V.PC, playerSex);
-					if ((canImpreg(slave, V.PC) && playerSex === "penetrative") || (canFemImpreg(slave, V.PC) && playerSex === "vaginal")) {
-						knockMeUp(slave, 10, 0, -1);
+					if (playerSex === "penetrative" || playerSex === "vaginal") {
+						tryKnockMeUp(slave, 10, 0, V.PC);
 					}
 				} else if (canDoAnal(slave) && slave.anus > 0 && fuckTarget > 10) {
 					seX(slave, "anal", V.PC, "penetrative");
-					if (canImpreg(slave, V.PC)) {
-						knockMeUp(slave, 10, 1, -1);
+					if (canPenetrate(V.PC)) {
+						tryKnockMeUp(slave, 10, 1, V.PC);
 					}
 				} else {
 					seX(slave, "oral", V.PC, playerSex);
@@ -389,7 +385,7 @@ globalThis.SimpleSexAct = (function() {
 		let fuckTarget = 0;
 
 		for (let i = 0; i < fuckCount; i++) {
-			fuckTarget = jsRandom(1, 100);
+			fuckTarget = random(1, 100);
 			if (slave.nipples === "fuckable" && fuckTarget > 80) {
 				actX(slave, "mammary");
 			} else if (canDoVaginal(slave) && slave.vagina > 0 && fuckTarget > 33) {
@@ -421,26 +417,20 @@ globalThis.SimpleSexAct = (function() {
 			let sex;
 			/** @type {FC.SlaveActs} */
 			let sex2 = "penetrative";
-			fuckTarget = jsRandom(1, 100);
+			fuckTarget = random(1, 100);
 			if (subSlave.nipples === "fuckable" && canPenetrate(domSlave) && fuckTarget > 80) {
 				sex = "mammary";
 			} else if (canDoVaginal(subSlave) && canDoVaginal(domSlave) && subSlave.dick === 0 && domSlave.dick === 0 && fuckTarget > 80) {
 				sex = "vaginal";
 				sex2 = "vaginal";
-				if (canFemImpreg(subSlave, domSlave)) {
-					knockMeUp(subSlave, 3, 0, domSlave.ID);
-				}
+				tryKnockMeUp(subSlave, 3, 0, domSlave);
+				tryKnockMeUp(domSlave, 3, 0, subSlave);
 			} else if (canDoVaginal(subSlave) && subSlave.vagina > 0 && canPenetrate(domSlave) && fuckTarget > 33) {
 				sex = "vaginal";
-				if (canImpreg(subSlave, domSlave)) {
-					knockMeUp(subSlave, 3, 0, domSlave.ID);
-				}
+				tryKnockMeUp(subSlave, 3, 0, domSlave);
 			} else if (canDoAnal(subSlave) && subSlave.anus > 0 && canPenetrate(domSlave) && fuckTarget > 10) {
-				// i think would impregnate from anal here even without .mpreg? same in original widget too
 				sex = "anal";
-				if (canImpreg(subSlave, domSlave) && subSlave.mpreg === 1) {
-					knockMeUp(subSlave, 3, 1, domSlave.ID);
-				}
+				tryKnockMeUp(subSlave, 3, 1, domSlave);
 			} else {
 				sex = "oral";
 			}