From 24a56b9700e636f9c8c3812f9c1f9b1a6dcecf24 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Fri, 28 Apr 2017 23:30:31 -0400
Subject: [PATCH] Accepted content from fcanon.

---
 src/js/storyJS.tw                             |  71 ++++---
 src/pregmod/newChildIntro.tw                  |   6 +-
 src/uncategorized/genericPlotEvents.tw        |  12 +-
 .../personalAssistantAppearance.tw            |  36 ++--
 src/uncategorized/saLiveWithHG.tw             |  37 ++--
 src/uncategorized/saLongTermEffects.tw        | 178 +++++++-----------
 src/uncategorized/saWhore.tw                  |   4 +-
 src/uncategorized/seNonlethalPit.tw           |  33 ++--
 src/uncategorized/slaveInteract.tw            |  12 +-
 src/uncategorized/spaReport.tw                |   2 +-
 src/uncategorized/walkPast.tw                 |   4 +-
 11 files changed, 185 insertions(+), 210 deletions(-)

diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw
index 7924a178b9c..1d2aed3bbe0 100644
--- a/src/js/storyJS.tw
+++ b/src/js/storyJS.tw
@@ -200,10 +200,15 @@ if (typeof FertilityAge == "undefined") {
 	window.FertilityAge = FertilityAge;
 };
 
-window.canGetPregnant = function(slave) {
+/* contraceptives (.preg == -1) do not negate this function */
+window.isFertile = function(slave) {
 	if (!slave) {
 		return null;
-	} else if (slave.pubertyXX == 0){
+	} else if (slave.preg > 0) { /* currently pregnant */
+		return false;
+	} else if (slave.preg < -1) { /* sterile */
+		return false;
+	} else if (slave.pubertyXX == 0) { /* pregmod start */
 		return false;
 	} else if (slave.physicalAge >= 47) {
 		return false;
@@ -211,51 +216,65 @@ window.canGetPregnant = function(slave) {
 		return false;
 	} else if (slave.bellyImplant != 0) {
 		return false;
-	} else if (slave.preg != 0) {
-		return false;
-	} else if ((slave.mpreg == 1) && (canDoAnal(slave) == true)) {
+	} else if (slave.mpreg == 1) {
+		return true;                   /* pregmod end */
+	} else if (slave.ovaries == 1) {
 		return true;
-	} else if (slave.ovaries != 1) {
-		return false;
-	} else if (canDoVaginal(slave) == false) {
-		return false;
 	} else {
-		return true;
+		return false;
 	}
 };
 
-window.isFertile = function(slave) {
+window.canGetPregnant = function(slave) {
 	if (!slave) {
 		return null;
-	} else if (slave.pubertyXX == 0) {
-		return false;
-	} else if (slave.physicalAge >= 47) {
-		return false;
-	} else if (slave.inflation != 0) {
-		return false;
-	} else if (slave.bellyImplant != 0) {
-		return false;
-	} else if (slave.preg > 0) {
+	} else if (slave.preg == -1) { /* contraceptives check */
 		return false;
-	} else if (slave.preg < -1) {
+	} else if (isFertile(slave) == false) { /* check other fertility factors */
 		return false;
-	} else if (slave.mpreg == 1) {
+	} else if ((slave.ovaries == 1) && (canDoVaginal(slave) == true)) {
 		return true;
-	} else if (slave.ovaries != 1) {
-		return false;
-	} else {
+	} else if ((slave.mpreg == 1) && (canDoAnal(slave) == true)) { /* pregmod */
 		return true;
+	} else {
+		return false;
 	}
 };
 
+/* pregmod: are slave2's sperm compatible with slave1's eggs? */
 window.canBreed = function(slave1, slave2) {
-	if (slave1.eggType == slave2.ballType) {
+	if (!slave1 || !slave2) {
+		return null;
+	} else if (slave1.eggType == slave2.ballType) {
 		return true;
 	} else {
 		return false;
 	}
 };
 
+/* assuming slave1 is fertile, could slave2 impregnate slave1? slave2 must have dick and balls with compatible sperm; both slaves must not be in chastity; slave2 need not achieve erection */
+window.canImpreg = function(slave1, slave2) {
+	if (!slave1 || !slave2) {
+		return null;
+	} else if (slave2.dick < 1) {
+		return false;
+	} else if (slave2.balls < 1) {
+		return false;
+	} else if (slave2.dickAccessory == "chastity") {
+		return false;
+	} else if (slave2.dickAccessory == "combined chastity") {
+		return false;
+	} else if (slave2.pubertyXY == 0) { /* pregmod start */
+		return false;
+	} else if (canBreed(slave1, slave2) == false) {
+		return false;                   /* pregmod end */
+	} else if (canGetPregnant(slave1) == false) { /* includes chastity checks */
+		return false;
+	} else {
+		return true;
+	}
+};
+
 //hyperpreg size 2
 window.hyperBellyTwo = function(slave) {
 	if (!slave) {
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index ceb32cbe70e..1f625ff0e02 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -630,16 +630,16 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 <<set $activeSlave.pregSource = -1>>
 <<replace "#result">>
 	<<if $activeSlave.pregType > 0>>
-	You don't need to perfom an exam to tell she is fertile; her nethers are swollen with need and her pussy dripping with desire<<if $activeSlave.pregType > 20>>, and her stomach is already slightly bloated with the number of fertile eggs within her womb<</if>>. She moans with pent up lust as her deeply penetrate her and begin steadily thrusting. Her tight pussy hungrily massages you dick as you near your climax, promting you to hilt yourself in her before seeding the deepest reaches of her pussy. She passed out in ecstasy, so you carry her bred body to the couch to recover and her eggs to take root. She should make the connection once her belly starts to rapidly swell with child.
+	You don't need to perfom an exam to know that she is fertile; her nethers are swollen with need and her pussy dripping with desire<<if $activeSlave.pregType > 20>>, and her stomach is already slightly bloated with the number of fertile eggs within her womb<</if>>. She moans with pent-up lust as you deeply penetrate her and begin steadily thrusting. Her tight pussy hungrily massages your dick as you near your climax, prompting you to hilt yourself in her before seeding the deepest reaches of her pussy. She passed out in ecstasy, so you carry her bred body to the couch to recover. She should make the connection once her belly starts to rapidly swell with child.
 	<<else>>
 	You perform a careful medical examination to verify fertility, and then forcefully take the girl's virginity. Whenever you feel able, you drain your balls into her cunt, only allowing her to wander off when scans verify a fertilized ovum. She didn't properly understand the scans, so she just thought it was sex; she won't realize what happened for some months at least, and in the mean time, will think she is just getting fat. Though once her child starts kicking, she might make the connection between sex and pregnancy.
 	<</if>>
 	<<VaginalVCheck>>
 	<<if $arcologies[0].FSRestart != "unset" && $activeSlave.breedingMark == 0>>
-		The Societal Elite @@.red;disaprove@@ of this breach of eugenics.
+		The Societal Elite @@.red;disapprove@@ of this breach of eugenics.
 		<<set $failedElite += 5>>
 	<<elseif $activeSlave.breedingMark == 1>>
-		The Societal Elite @@.green;are pleased@@ that you are promtly putting a child in her.
+		The Societal Elite @@.green;are pleased@@ that you are promptly putting a child in her.
 		<<set $failedElite -= 5>>
 	<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
 		Society @@.green;approves@@ of your promptly putting a new slave in her; this advances the idea that all slaves should bear their masters' babies.
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 8f182cc2ff0..32df6153260 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -40,9 +40,9 @@ The firm promptly pays @@.yellowgreen;fair compensation@@ for the minor damage t
 
 Early one morning, you hear heaving coming from one of the bathrooms.  On investigation, it seems that $activeSlave.slaveName woke up feeling terribly nauseous.  She's in no danger, but you've hardly checked her over before more slaves stagger in.  Every one of your slaves on A-HGH has been struck by the mysterious malady and has @@.red;sickened.@@
 <br><br>
-It doesn't take much investigation before you find other slaveowners reporting the same thing.  Elementary detective work fingers a particular drug supplier as the culprit, and before long the unfortunate Pharmacuetical concern is drownning under a rain of harsh public comment and harsher private contract warfare.  As the day wears on, the poor slaves feel much better, and appear positively glowing.  However, their breasts swell slightly and their bellies bulge, pointing to the issue being the contamination of the A-HGH production line with fertility agents.
+It doesn't take much investigation before you find other slaveowners reporting the same thing.  Elementary detective work fingers a particular drug supplier as the culprit, and before long the unfortunate Pharmacuetical concern is drowning under a rain of harsh public comment and harsher private contract warfare.  As the day wears on, the poor slaves feel much better, and appear positively glowing.  However, their breasts swell slightly and their bellies bulge, pointing to the issue being the contamination of the A-HGH production line with fertility agents.
 <br><br>
-The firm promptly pays @@.yollowgreen; a large compensation@@ for potentially ruining your slaves.  However, you're left with the matter of all the growing bellies to deal with.  Over the week, all your slaves on breast enhancers show signs of @@.yollew;early pregnancy,@@ and hyper pregnancy at that, save those who aren't fertile. They just experienced some hip and ass growth. You have no idea how much fertility agent was in the enhancers but you feel they may become a problem if left alone!
+The firm promptly pays @@.yellowgreen; a large compensation@@ for potentially ruining your slaves.  However, you're left with the matter of all the growing bellies to deal with.  Over the week, all of your slaves on breast injections show signs of @@.yellow;early pregnancy,@@ and hyper pregnancy at that, save those who aren't fertile. They just experienced some hip and ass growth. You have no idea how much fertility agent was in the enhancers but you feel they may become a problem if left alone!
 
 <<case "strip club closing">>
 
@@ -545,9 +545,9 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<replace "#result">>
 	Since subjecting all the affected slaves to abortions would cause you severe losses, you've decided to let them keep the pregnancies. You hope you are prepared for all the children you'll be producing. Those who couldn't become pregnant @@.lime;gained some breast, hip and ass size@@, as well as @@.lime;began lactating@@.
 	<<for $i = 0; $i < $slaves.length; $i++>>
-		<<if ($slaves[$i].drugs == "breast injections") and isFertile(slaves[$i])>>
-		<<set $slaves[$i].preg = 1>>
-		<<set $slaves[$i].pregType = random(20,29)>>
+		<<if ($slaves[$i].drugs == "breast injections") && canGetPregnant(slaves[$i])>>
+			<<set $slaves[$i].preg = 1>>
+			<<set $slaves[$i].pregType = random(20,29)>>
 		<<elseif $slaves[$i].drugs == "breast injections">>
 			<<set $slaves[$i].lactation = 1>>
 			<<if $slaves[$i].hips < 1>>
@@ -569,7 +569,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <</link>>
 <br><<link "Demand further compensation">>
 	<<replace "#result">>
-	You muster all the contractual remedies available to you and join the crowd fo slaveowners laying into the hapless manufacturer.  Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid.  Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation, plenty to deal with the pregnancies.
+	You muster all the contractual remedies available to you and join the crowd of slaveowners laying into the hapless manufacturer.  Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid.  Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation, plenty to deal with the pregnancies.
 		<<set $cash += 2000*$slaves.length>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/personalAssistantAppearance.tw b/src/uncategorized/personalAssistantAppearance.tw
index 6655f8bc91c..e92d6a21417 100644
--- a/src/uncategorized/personalAssistantAppearance.tw
+++ b/src/uncategorized/personalAssistantAppearance.tw
@@ -1022,7 +1022,7 @@ She's a cute little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0]
 	<<case "pastoralist">>
 		She has begun leaving the top of her white linen dress open to allow her milk laden breasts to hang free. She tends to leave a trail where ever she flies.
 	<<case "maturity preferentialist">>
-		She has recently updated her appearance to be more mature; an air of experience follow her as she flies around. She a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of her panties; polkadotted, oddly enough.
+		She has recently updated her appearance to be more mature; an air of experience follows her as she flies around. She a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of her panties; polkadotted, oddly enough.
 	<<case "youth preferentialist">>
 		She has recently updated her appearance to be more youthful. She frequently flutters by, enojoying her youthful vigor. She a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of her panties; an adorable pair of bloomers.
 	<<case "slimness enthusiast">>
@@ -1044,7 +1044,7 @@ She's a cute little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0]
 <<elseif ($seed == 4)>>
 	A recognizable little representation of one of your slaves is lying before her. The chureb is hovering in front of her chest, head to her breast, listening to her heartbeat; the slave must be getting a checkup. She beams you a smile, the slave must be doing well.
 <<elseif ($seed == 5) && ($invasionVictory > 0)>>
-	She's fluttering around in circles with  a representation of one of your security drones, steadily chasing it. When she sees you looking at her, she giggles and says, "I like this one. He did very well during the invasion."
+	She's fluttering around in circles with a representation of one of your security drones, steadily chasing it. When she sees you looking at her, she giggles and says, "I like this one. He did very well during the invasion."
 <<elseif ($seed == 6) && ($studio == 1)>>
 	She's watching a recognizable little representation of one of your slaves masturbate while holding a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and $assistantName is clearly turning the feed of it into porn.
 <<elseif ($seed == 7) && ($marketAssistantAnnounced == 1)>>
@@ -1091,39 +1091,39 @@ She's a cute little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0]
 	<<case "gender radicalist">>
 		She's recently begun rendering herself more androgynous. Something can be seen commonly tenting her loincloth; when ever if shifts to the side, you catch sight of a thumb sized and heavily pierced clitoris.
 	<<case "gender fundamentalist">>
-		She's recently increased the size of her breast and width of her hips. The belt around her chest tightly binds her new bust and causes its flesh to bulge and jiggle delightfully.
+		She's recently increased the size of her breasts and width of her hips. The belt around her chest tightly binds her new bust and causes its flesh to bulge and jiggle delightfully.
 	<<case "asset expansionist">>
-		She has recently taken to wearing nothing put her panties, having given up on fitting into her dress. She struggles to fly with her massive tits weighing her down and she commonly has to pause to pull her underwear out of her buttcrack.
+		She's had to let out her chest belt to accommodate her new excessive bust, but only a little; the belt creates a deep canyon across her chest with plenty of flesh bulging above and below the straining leather.
 	<<case "transformation fetishist">>
-		She wears a simple white linen dress that struggles to cover both her big fake breasts and ass. Her short skirt feebly rests atop her panty devouring rear, giving you a lovely view.
+		She's had to let out her chest belt to accommodate her new excessive bust, but only a little; the belt creates a deep canyon across her fake chest and threatens to painfully pop the underlying implants.
 	<<case "pastoralist">>
-		She has begun leaving the top of her white linen dress open to allow her milk laden breasts to hang free. She tends to leave a trail where ever she flies.
+		She's exchanged her chest belt for a pair of rings with leather straps. She wears them so tightly every motion she makes forces a gush of milk from her painfully swollen breasts.
 	<<case "maturity preferentialist">>
-		She has recently updated her appearance to be more mature; an air of experience follow her as she flies around. She a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of her panties; polkadotted, oddly enough.
+		She has recently updated her appearance to be more mature; an air of experience follows her as she flies around. You can hear her plotting tortures, many you've never heard of.
 	<<case "youth preferentialist">>
-		She has recently updated her appearance to be more youthful. She frequently flutters by, enojoying her youthful vigor. She a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of her panties; an adorable pair of bloomers.
+		She has recently updated her appearance to be more youthful. She frequently flutters by, enojoying her youthful vigor. She looks so innocent, but looks can be deceiving!
 	<<case "slimness enthusiast">>
-		She a wears simple white linen dress with a short skirt that hangs loosely of her pleasntly thin body. Her panties are obviously a bit loose too, as she frequently has to stop, swoop down and retrieve them whenever they fall off her flat ass.
+		Her new, thinner body gives her plenty of excuses to pull her straps even tighter.
 	<<case "body purist">>
-		She has forgone covering herself to allow her radiant, pure body to be visible to all.
+		She has forgone covering herself to allow her sinful, pure body to be visible to all.
 	<<default>>
-		She wears only a belt, tightly bound, over her tiny breasts and a simple loincloth over her crotch, leaving most of her body in plain, but arousing, view.
+		She wears only a belt, tightly bound, over her tiny breasts and a simple loincloth over her crotch, leaving most of her body in plain, but arousing, sight.
 	<</switch>>
 	<<else>>
-		She wears only a belt, tightly bound, over her tiny breasts and a simple loincloth over her crotch, leaving most of her body in plain, but arousing, view.
+		She wears only a belt, tightly bound, over her tiny breasts and a simple loincloth over her crotch, leaving most of her body in plain, but arousing, sight.
 	<</if>>
 <<if ($cockFeeder == 1) && ($seed == 1)>>
-	A recognizable little representation of one of your slaves is eating her out as she flutters in front of them. The slave must be down in the kitchen, getting a meal out of the food dispensers. The cherub notices you watching and shoots you a thumbs up.
+	She is steadily forcing a dildo the size of your arm down representation of one of your slave's throat. The slave must be down in the kitchen, getting a meal out of the food dispensers. The imp notices you watching, points to the obscene bulge in the slave's throat and laughs maniacally.
 <<elseif ($suppository == 1) && ($seed == 2)>>
-	A recognizable little representation of one of your slaves is before her, ass in the air, as she eagerly fists her rear. The slave must be receiving her drugs from one of the dildo dispensers. The chureb notices you watching and tosses you a thumbs up with her free hand.
+	A recognizable little representation of one of your slaves is before her, ass in the air, as she enthusiastically winds an anal pear. The slave must be receiving her drugs from one of the dildo dispensers. The imp notices you watching and laughs as she gapes the slave's asshole further, enjoying her obvious discomfort.
 <<elseif ($masturbationAllowed == 1) && ($seed == 3)>>
-	A recognizable little representation of one of your slaves is before her, ass in the air, as she eagerly fucks her with a strapon, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. She notices you watching, tosses up a thumbs up at you and increases her thrusting.
+	A recognizable little representation of one of your slaves is before her, perched atop a wooden horse with sexual fluids running down its sides. The slave must be using one of the penthouse's many sex toys. Noticing you watching, the imp flys above her and roughly forces her down, eliciting a scream of surprise from the horny slave. She likly upped the output on whatever toy the slave was using.
 <<elseif ($seed == 4)>>
-	A recognizable little representation of one of your slaves is lying before her. The chureb is hovering in front of her chest, head to her breast, listening to her heartbeat; the slave must be getting a checkup. She beams you a smile, the slave must be doing well.
+	A recognizable little representation of one of your slaves is lying on her side before her; belly painfully distended. The imp is hovering over her holding an enema bag; the slave must be getting a checkup. She notices your gaze and squeezes the bag, forcing a burst of liquid into the slave's gut and drawing a moan of discomfort out of the girl.
 <<elseif ($seed == 5) && ($invasionVictory > 0)>>
-	She's fluttering around in circles with  a representation of one of your security drones, steadily chasing it. When she sees you looking at her, she giggles and says, "I like this one. He did very well during the invasion."
+	She's flapping around in circles chasing a representation of one of your security drones with a mallet. When she sees you looking at her, she quickly hides the hammer behing her back, giggles and says, "He let some get away and needed to be punished!"
 <<elseif ($seed == 6) && ($studio == 1)>>
-	She's watching a recognizable little representation of one of your slaves masturbate while holding a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and $assistantName is clearly turning the feed of it into porn.
+	She's hovering over a recognizable little representation of one of your slaves masturbate while holding a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and $assistantName is clearly turning the feed of it into a PoV porno.
 <<elseif ($seed == 7) && ($marketAssistantAnnounced == 1)>>
 	She's accompanied by your market assistant's slightly taller avatar.
 	<<if $marketAssistantRelationship == "cute">>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index b03e977e191..80ae742874f 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -274,40 +274,29 @@
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].vagina > 0) || (($slaves[$i].mpreg == 0) && ($slaves[$i].anus > 0))>>
-<<if isFertile($slaves[$i])>>
-<<if ($HeadGirl.fetishKnown == 1)>>
-<<if ($HeadGirl.fetish == "pregnancy")>>
-<<if ($HeadGirl.balls > 0)>>
+<<if ($HeadGirl.fetishKnown == 1) && ($HeadGirl.fetish == "pregnancy") && canImpreg($slaves[$i], $HeadGirl)>>
 <<if $arcologies[0].FSRestart == "unset">>
-<<if canPenetrate($HeadGirl)>>
 	$HeadGirl.slaveName promptly @@.lime;impregnates@@ $slaves[$i].slaveName, to your Head Girl's considerable @@.hotpink;satisfaction.@@
-	<<set $slaves[$i].preg = 1>>
+	<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = $HeadGirl.ID, $HeadGirl.devotion += 4>>
 	<<if ($slaves[$i].drugs == "super fertility drugs")>>
-	<<if ($slaves[$i].hormones == 2)>>
-		<<set $slaves[$i].pregType = random(10,20)>>
-	<<else>>
-		<<set $slaves[$i].pregType = either(3, 4, 4, 4, 5, 5, 5, 10, 10, 20)>>
-	<</if>>
+		<<if ($slaves[$i].hormones == 2)>>
+			<<set $slaves[$i].pregType = random(10,20)>>
+		<<else>>
+			<<set $slaves[$i].pregType = either(3, 4, 4, 4, 5, 5, 5, 10, 10, 20)>>
+		<</if>>
 	<<elseif ($slaves[$i].drugs == "fertility drugs")>>
-	<<if ($slaves[$i].hormones == 2)>>
-	  <<set $slaves[$i].pregType = random(2,5)>>
-	<<else>>
-	<<set $slaves[$i].pregType = either(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)>>
-	<</if>>
+		<<if ($slaves[$i].hormones == 2)>>
+			<<set $slaves[$i].pregType = random(2,5)>>
+		<<else>>
+			<<set $slaves[$i].pregType = either(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)>>
+		<</if>>
 	<<else>>
-	<<set $slaves[$i].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
+		<<set $slaves[$i].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
 	<</if>>
-	<<set $slaves[$i].pregSource = $HeadGirl.ID, $HeadGirl.devotion += 4>>
-<</if>>
 <<else>>
 	$HeadGirl.slaveName knows better than to even consider knocking up $slaves[$i].slaveName.
 <</if>>
 <</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
 
 <<if ($slaves[$i].devotion > 50)>>
 <<if (($slaves[$i].fetishStrength <= 95) || ($slaves[$i].fetishKnown == 0)) && ($HeadGirl.fetishKnown == 1) && ($HeadGirl.fetishStrength > 60) && ($slaves[$i].fetish != $HeadGirl.fetish)>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 6d827f14819..bf41776d735 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -3457,7 +3457,7 @@
 			<<elseif $slaves[$i].weight <= -30>>
 				$pronoun's so skinny that natural lactation is unlikely.
 			<<elseif $slaves[$i].preg > random(18,30)>>
-				Pregnancy @@.lime;causes $object = begin lactating.@@
+				Pregnancy @@.lime;causes $object to begin lactating.@@
 				<<set $slaves[$i].lactation = 1>>
 			<</if>>
 		<</if>>
@@ -3523,22 +3523,19 @@
 <</if>>
 <</if>>
 
-<<if canGetPregnant($slaves[$i])>>
-<<if $universalRulesImpregnation == "HG">>
-<<if $HeadGirl != 0>>
-<<if canBreed($slaves[$i], $HeadGirl)>>
-<<if $slaves[$i].HGExclude == 0>>
-<<if $HGCum == 0>>
-	It's $HeadGirl.slaveName's responsibility to impregnate fertile slaves, but your Head Girl can only fuck a limited number of slaves enough to ensure impregnation each week.
-<</if>>
-<<else>>
-	It's $HeadGirl.slaveName's responsibility to impregnate fertile slaves, but your Head Girl is forbidden from impregnating $slaves[$i].slaveName.
-<</if>>
-<<else>>
-	$HeadGirl.slaveName's sperm is unable to fertilize $slaves[$i].slaveName's ova, so she doesn't waste her seed trying.
-<</if>>
-<</if>>
+
+<<if isFertile($slaves[$i]) && $universalRulesImpregnation == "HG" && $HeadGirl != 0 && $HeadGirl.dick > 0>>
+	<<if $slaves[$i].HGExclude == 0>>
+		It's $HeadGirl.slaveName's responsibility to impregnate fertile slaves, but your Head Girl is forbidden from impregnating $slaves[$i].slaveName.
+	<<elseif !canBreed($slaves[$i], $HeadGirl)>>
+		It's $HeadGirl.slaveName's responsibility to impregnate fertile slaves, but $HeadGirl.slaveName's sperm is unable to fertilize $slaves[$i].slaveName's ova, so she doesn't waste her seed trying.
+	<<elseif $HGCum == 0>>
+		It's $HeadGirl.slaveName's responsibility to impregnate fertile slaves, but your Head Girl can only fuck a limited number of slaves enough to ensure impregnation each week.
+	<</if>>
 <</if>>
+
+<<if canGetPregnant($slaves[$i])>>/* CAN GET PREGNANT (fertile, not on contraceptives and not wearing chastity) */
+
 <<if ($universalRulesImpregnation == "PC" && $slaves[$i].eggType == "human")>>
 	$slaves[$i].slaveName is ripe for breeding, so you ejaculate inside $object often. When you bore of $possessive fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>, you keep $object around as you fuck other slaves so you can pull out of them, shove your cock into $object, and fill $object with your seed anyway.
 	<<if $slaves[$i].fuckdoll == 0>>
@@ -3572,13 +3569,13 @@
 	<<set $activeSlave to $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<AnalVCheck 10>><<else>><<VaginalVCheck 10>><</if>><<set $slaves[$i] to $activeSlave>>
 	<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1>>
 	<<for $j = 0; $j < $slaves.length; $j++>>
-	<<if $HeadGirl.ID == $slaves[$j].ID>>
-		<<set $slaves[$j] = $HeadGirl>>
-		<<break>>
-	<</if>>
+		<<if $HeadGirl.ID == $slaves[$j].ID>>
+			<<set $slaves[$j] = $HeadGirl>>
+			<<break>>
+		<</if>>
 	<</for>>
 <<elseif (($slaves[$i].vagina <= 0) || (($slaves[$i].ass <= 0) && ($slaves[$i].mpreg > 0)))>>
-<<elseif ($universalRulesImpregnation == "HG") && ($slaves[$i].HGExclude == 0) && ($HGCum > 0) && ($slaves[$i].ID != $HeadGirl.ID) && canBreed($slaves[$i], $HeadGirl)>>
+<<elseif ($universalRulesImpregnation == "HG") && ($slaves[$i].HGExclude == 0) && ($HGCum > 0) && ($slaves[$i].ID != $HeadGirl.ID) && canImpreg($slaves[$i], $HeadGirl)>>
 	It's $HeadGirl.slaveName's responsibility to get $object pregnant, a task your
 	<<if ($HeadGirl.fetish == "pregnancy") && ($HeadGirl.fetishKnown == 1) && ($HeadGirl.fetishStrength > 60)>>
 	pregnancy fetishist Head Girl is @@.hotpink;extremely pleased@@ to take on.
@@ -3647,7 +3644,7 @@
 			<<set $slaves[$i].fetishStrength += 4>>
 			<</if>>
 		<<else>>
-			$slaves[$i].slaveName is @@.hotpink;quite willing to be bred@@ by the Head Girl, who she respects, and submissively takes her superior's cock bareback until @@.lime;conception@@ is verified.
+			$slaves[$i].slaveName is @@.hotpink;quite willing to be bred@@ by the Head Girl, whom she respects, and submissively takes her superior's cock bareback until @@.lime;conception@@ is verified.
 			<<set $slaves[$i].devotion += 1>>
 		<</if>>
 		<</if>>
@@ -3684,22 +3681,21 @@
 	<</if>>
 <<elseif ($slaves[$i].assignment == "serve in the master suite")>>
 	<<if ($PC.dick == 1) && (random(1,100) > 50) && ($slaves[$i].eggType == "human")>>
-		You frequently avail yourself to her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>. It's no surprise when @@.lime;she has ends up pregnant with your child.@@
+		You frequently avail yourself to her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>. It's no surprise when @@.lime;she ends up pregnant with your child.@@
 		<<set $slaves[$i].preg = 1>>
 		<<set $slaves[$i].pregSource = -1>>
 	<<else>>
 		<<for $j = 0; $j < $MastSiIDs.length; $j++>>
-			<<if $MastSiIDs[$j].dick > 0 && $MastSiIDs[$j].balls > 0 && $MastSiIDs[$j].dickAccessory != "chastity" && $MastSiIDs.pubertyXY == 1 && canBreed($slaves[$i], $MastSiIDs[$j])>>
-				<<if $slaves[$i].ID == $MastSiIDs[$j].ID>>
+			<<if canImpreg($slaves[$i], $MastSiIDs[$j])>>
 				/* catch for self-impregnation */
-					<<if random(1,100) > 95>>
-					<<set $slaves[$i].pregSource = $slaves[$j].ID>>
-					<<break>>
+				<<if $slaves[$i].ID == $MastSiIDs[$j].ID>>
+					<<if random(1,100) <= 95>>
+						<<continue>> /* failed 5% chance; keep looking */
 					<</if>>
-				<<else>>
-					<<set $slaves[$i].pregSource = $MastSiIDs[$j].ID>>
-					<<break>>
 				<</if>>
+				/* found eligible father */
+				<<set $slaves[$i].pregSource = $MastSiIDs[$j].ID>>
+				<<break>>
 			<</if>>
 		<</for>>
 	<</if>>
@@ -3713,87 +3709,57 @@
 		Due to all the customers cumming in $possessive fertile, restrained <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, @@.lime;$pronoun has gotten pregnant.@@
 		<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2>>
 <<elseif (random(1,100) > 80)>>
-	<<if ($slaves[$i].vaginalCount > 0) || (($slaves[$i].analCount > 0) && ($slaves[$i].mpreg > 0))>>
-	<<if ($slaves[$i].assignment != "rest")>>
-	<<if ($slaves[$i].assignment != "stay confined")>>
-		@@.lime;$pronounCap has gotten pregnant.@@
-		<<set $slaves[$i].preg = 1>>
-		<<for $m = 0; $m < $slaves.length; $m++>>
-			<<if $slaves[$i].relationshipTarget == $slaves[$m].ID>>
-				<<set $tempLover = $slaves[$m]>>
-			<<elseif $slaves[$i].rivalryTarget == $slaves[$m].ID>>
-				<<set $tempRival = $slaves[$m]>>
-			<<elseif $slaves[$i].subTarget == $slaves[$m].ID>>
-				<<set $tempSub = $slaves[$m]>>
-			<</if>>
-		<</for>>
-		<<set $seed = random(1,100)>>
-		<<if ($slaves[$i].relationship == -3 || $slaves[$i].relationship == -2) && $PC.dick == 1 && $slaves[$i].eggType == "human">>
-			<<set $slaves[$i].pregSource = -1>>
-		<<elseif $slaves[$i].relationship > 2 && canAchieveErection($tempLover) && $tempLover.dickAccessory != "chastity" && $tempLover.pubertyXY == 1 && canBreed($slaves[$i], $tempLover)>>
-			<<set $slaves[$i].pregSource = $tempLover.ID>>
-		<<elseif $slaves[$i].rivalry > 2 && canAchieveErection($tempRival) && $tempRival.dickAccessory != "chastity" && $tempRival.pubertyXY == 1 && canBreed($slaves[$i], $tempRival) && $seed > 95>>/* raped and knocked up by rival */
-			<<set $slaves[$i].pregSource = $tempRival.ID>>
-		<<elseif $slaves[$i].subTarget != 0 && $slaves[$i].assignment == "be a subordinate slave">>
-			<<if canAchieveErection($tempSub) && $slaves[$m].dickAccessory != "chastity" && $tempSub.pubertyXY == 1 && canBreed($slaves[$i], $tempSub)>>
-			<<set $slaves[$i].pregSource = $tempSub.ID>>
-			<</if>>
-		<<elseif $seed > 60 && $PC.dick == 1 && $slaves[$i].eggType == "human">>
-			<<set $slaves[$i].pregSource = -1>>
-		<<elseif $seed <= 10 && $slaves[$i].eggType == "human">>
-			<<if $slaves[$i].assignment == "please you" && $PC.dick == 1>>
+	<<if ($slaves[$i].vaginalCount > 0) || (($slaves[$i].analCount > 0) && ($slaves[$i].mpreg > 0))>> /* TODO: compare to previous week totals? */
+		<<if ($slaves[$i].assignment != "rest) && ($slaves[$i].assignment != "stay confined") && ($slaves[$i].assignment != "be confined in the cellblock")>>
+			<<for $m = 0; $m < $slaves.length; $m++>>
+				<<if $slaves[$i].relationshipTarget == $slaves[$m].ID>>
+					<<set $tempLover = $slaves[$m]>>
+				<<elseif $slaves[$i].rivalryTarget == $slaves[$m].ID>>
+					<<set $tempRival = $slaves[$m]>>
+				<<elseif $slaves[$i].subTarget == $slaves[$m].ID>>
+					<<set $tempSub = $slaves[$m]>>
+				<</if>>
+			<</for>>
+			<<set $seed = random(1,100)>>
+			<<if ($slaves[$i].relationship == -3 || $slaves[$i].relationship == -2) && $PC.dick == 1 && $slaves[$i].eggType == "human">>
+				<<set $slaves[$i].pregSource = -1>>
+			<<elseif $slaves[$i].relationship > 2 && canImpreg($slaves[$i], $tempLover)>> /* erection not needed for impregnation via consensual sex play (FWB or better) */
+				<<set $slaves[$i].pregSource = $tempLover.ID>>
+			<<elseif $slaves[$i].rivalry > 2 && $seed > 95 && canAchieveErection($tempRival) && canImpreg($slaves[$i], $tempRival)>> /* 4% chance to be raped and knocked up by bitter rival - erection needed */
+				/* TODO: implement a scene for this event */
+				<<set $slaves[$i].pregSource = $tempRival.ID>>
+			<<elseif $slaves[$i].subTarget != 0 && $slaves[$i].assignment == "be a subordinate slave" && canAchieveErection($tempSub) && canImpreg($slaves[$i], $tempSub)>> /* slave acting as top must have erection to impregnate - but gets first dibs (after relationships) if so */
+				<<set $slaves[$i].pregSource = $tempSub.ID>>
+			<<elseif $PC.dick == 1 && $slaves[$i].eggType == "human" && ($seed > 60 || ($slaves[$i].assignment == "please you" && ($slaves[$i].toyHole == "all her holes" || $slaves[$i].toyHole == "pussy" || ($slaves[$i].mpreg == 1 && $slaves[$i].toyHole == "ass")) ))>>
 				<<set $slaves[$i].pregSource = -1>>
+			<<elseif $seed <= 10 && $slaves[$i].eggType == "human">> /* TODO: make this optional for players who want random fathers from among their own slaves only */
+				<<set $slaves[$i].pregSource = -2>>
 			<<else>>
+				/* default pregSource to a random citizen in case no eligible father is found below */
 				<<set $slaves[$i].pregSource = -2>>
-			<</if>>
-		<<elseif $slaves[$i].eggType != "human">>
-			<<for $j = 0; $j < $slaves.length; $j++>>
-				<<if $slaves[$j].dick > 0 && $slaves[$j].balls > 0 && $slaves[$j].dickAccessory != "chastity" && $slaves[$j].dickAccessory != "combined chastity" && $slaves[$j].pubertyXY == 1 && canBreed($slaves[$i], $slaves[$j])>>
-					<<if $slaves[$i].ID is $slaves[$j].ID>>
-					/* catch for self-impregnation */
-						<<if random(1,100) > 95>>
-						<<set $slaves[$i].pregSource = $slaves[$j].ID>>
-						<<break>>
+				/* pick a random starting point in the slave array and iterate (wrapping around) until finding eligible father or coming back to starting point */
+				<<set $sourceSeed = random(0,$slaves.length-1)>>
+				<<for $m = $sourceSeed + 1; $m != $sourceSeed; $m++>>
+					<<if $m == $slaves.length>><<set $m = 0>><</if>> /* wrap around */
+					<<if canImpreg($slaves[$m], $slaves[$i])>>
+						/* self-impregnation check */
+						<<if $slaves[$m].ID == $slaves[$i].ID && random(1,100) < 95>>
+							<<continue>> /* 95% chance not to self-impregnate */
 						<</if>>
-					<<else>>
-						<<set $slaves[$i].pregSource = $slaves[$j].ID>>
+						<<set $slaves[$i].pregSource = $slaves[$m].ID>> /* passed the checks above, so this is an eligible father */
 						<<break>>
 					<</if>>
-				<</if>>
-			<</for>>
-			<<if $slaves[$i].pregSource < 1>>
-				<<set $slaves[$i].preg = 0>>
-				<<set $slaves[$i].pregType = 0>>
+				<</for>>
+			<</if>>
+			/* pregmod: random citizens cannot father non-human children */
+			<<if $slaves[$i].pregSource == -2 && $slaves[$i].eggType != "human">> 
 				<<set $slaves[$i].pregSource = 0>>
+			<<else>>
+				<<set $slaves[$i].preg = 1>>
+				@@.lime;$pronounCap has gotten pregnant.@@
 			<</if>>
-		<<else>>
-			<<set $sourceSeed = random(0,$slaves.length-1)>>
-			/* random starting point in the slave array */
-			<<set $slaves[$i].pregSource = -2>>
-			/* temp .pregSource incase no matches are found */
-/*starts one above starting point and advances until it reaches starting point again or finds a suitable slave. */
-			<<for $m = $sourceSeed+1; $m != $sourceSeed; $m++>>
-				<<if $m >= $slaves.length>> /* oob catch */
-					<<set $m = -1>>
-				<<elseif $slaves[$m].dick > 0 && $slaves[$m].balls > 0 && $slaves[$m].dickAccessory != "chastity" && $slaves[$j].dickAccessory != "combined chastity" && $slaves[$m].pubertyXY == 1 && canBreed($slaves[$i], $slaves[$j])>>
-					<<if $slaves[$i].ID == $slaves[$m].ID>>
-					/* catch for self-impregnation */
-						<<if random(1,100) > 95>>
-						<<set $slaves[$i].pregSource = $slaves[$m].ID>>
-						<<set $m = $sourceSeed-1>>
-						<</if>>
-					<<else>>
-					<<set $slaves[$i].pregSource = $slaves[$m].ID>>
-					<<set $m = $sourceSeed-1>>
-					<</if>>
-				<<elseif $m >= $slaves.length-1>>
-					<<set $m = -1>>
-				<</if>>
-			<</for>>
-		<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
+		<</if>> /* closes invalid assignments check */
+	<</if>> /* closes non-zero sex acts check */
 <</if>>
 <</if>> /* CLOSES CAN GET PREGNANT */
 <<if $slaves[$i].preg < 1>>
@@ -4284,7 +4250,7 @@
 	<<elseif $fakeBellies.includes($bellyAccessory)>>
 		Society is @@.green;placated@@ by $slaves[$i].slaveName's fake belly.
 		<<set $repGain += 0.01*$FSSingleSlaveRep>>
-	<<elseif !isFertile($slaves[$i]) && ($slaves[$i].preg == 0 || $slaves[$i].preg == -1)>>
+	<<elseif ($slaves[$i].ovaries == 0 && $slaves[$i].mpreg == 0) || ($slaves[$i].preg < -1) || ($slaves[$i].pubertyXX == 0)>>
 		Society is @@.red;mildly disappointed@@ that $slaves[$i].slaveName is unable to become pregnant.
 		<<FSChangePorn "Repopulationist" -1>>
 	<<else>>
@@ -6200,7 +6166,7 @@
 <<if $slaves[$i].breedingMark == 1>>
 	<<if $slaves[$i].preg > 5>>
 		<<if $slaves[$i].pregSource != -1>>
-			$slaves[$i].slaveName's weekly health checkup revealed she is pregnant with an unacceptable child. @@.red;Its life has been terminated, you have been fined ¤100000, and your rep amoung the Elite has been severely damaged.@@
+			$slaves[$i].slaveName's weekly health checkup revealed she is pregnant with an unacceptable child. @@.red;Its life has been terminated, you have been fined ¤100000, and your rep among the Elite has been severely damaged.@@
 			<<set $slaves[$i].preg = 0>>
 			<<set $slaves[$i].pregType = 0>>
 			<<set $slaves[$i].pregSource = 0>>
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 842684a446f..0f858fe5a5d 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -818,9 +818,9 @@ Her appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a da
 <<elseif ($slaves[$i].behavioralQuirk == "funny")>>
 	She brings unintentional comic relief to the hard work  of prostitution.
 <<elseif ($slaves[$i].behavioralQuirk == "adores women")>>
-	She's a favorite among female customers, who she greets with real enthusiasm.
+	She's a favorite among female customers, whom she greets with real enthusiasm.
 <<elseif ($slaves[$i].behavioralQuirk == "adores men")>>
-	She's a favorite among male customers, who she greets with frank and open lust.
+	She's a favorite among male customers, whom she greets with frank and open lust.
 <<elseif ($slaves[$i].behavioralQuirk == "fitness")>>
 	She's eager to please customers because she finds validation in their willingness to pay for sex with her.
 <<elseif ($slaves[$i].behavioralQuirk == "insecure")>>
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index 026f726e4ae..347da71e87d 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -407,7 +407,7 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 	<</if>>
 <<elseif (_loser.eyebrowPiercing > 0)>>
 	The fight starts slowly, with the girls trading jabs. Just as the spectators are getting bored, _loser.slaveName takes a glancing blow to the eyebrow. Her piercing catches on _winner.slaveName's glove and tears out. _loser.slaveName goes after her tormentor in fury, streaming blood, the piercing forgotten on the mat. Any tendency _winner.slaveName might have had to feel badly about this is extinguished by the assault, and soon _winner.slaveName is even willing to follow up on the success by targeting pierced body parts. The fight ends with poor _loser.slaveName writhing in pain on the mat, @@.red;leaking blood@@ from several terribly shredded areas.
-	<<set _loser.health -= 10>>
+	<<set _loser.health -= 10, _loser.eyebrowPiercing = 0>>
 	<<if $pitAudience == "paid">>
 		The audience is reasonably impressed by the gory spectacle, and your @@.yellowgreen;cut of the betting@@ is reasonable.
 		<<set $cash += 1000>>
@@ -452,7 +452,7 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 		The audience is @@.green;not very impressed@@ by this easy win.
 		<<set $rep += 25>>
 	<</if>>
-<<else>>
+<<elseif canDoVaginal(_loser)>>
 	_winner.slaveName wants to win badly enough that she takes an extremely unpleasant shortcut to victory. The instant the fight starts, she furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends herself with her arms, at which point _winner.slaveName delivers a mighty cunt punt. _loser.slaveName goes straight down, her mouth soundlessly opening and closing and tears leaking from her closed eyes while her hands desperately shield her outraged pussy. _winner.slaveName follows her down and puts the unresisting girl's head in a simple lock.
 	<<if $pitAudience == "paid">>
 		The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
@@ -461,6 +461,15 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 		The audience is @@.green;not very impressed@@ by this easy win.
 		<<set $rep += 25>>
 	<</if>>
+<<else>>
+	_winner.slaveName wants to win badly enough that she takes an extremely unpleasant shortcut to victory. The instant the fight starts, she furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends herself with her arms, at which point _winner.slaveName delivers a clenched fist to _loser.slaveName's throat. _loser.slaveName staggers back, wheezing for breath with tears leaking from her closed eyes. _winner.slaveName takes advantage of _loser.slaveName's vulnerability to quickly trip and pin the coughing loser.
+	<<if $pitAudience == "paid">>
+		The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
+		<<set $cash += 500>>
+	<<elseif $pitAudience == "free">>
+		The audience is @@.green;not very impressed@@ by this easy win.
+		<<set $rep += 25>>
+	<</if>>
 <</if>>
 
 <</nobr>>
@@ -482,31 +491,29 @@ You throw the victor's strap-on down to _winner.slaveName.
 	She respects _loser.slaveName's anal virginity, and hauls the loser to her knees for a facefuck.
 	<<set _loser.oralCount += 1>>
 	<<set $oralTotal += 1>>
-<<elseif (_loser.vagina < 0)>>
-	She shoves _loser.slaveName's face into the mat, spreads her buttocks, and spits on her asshole before penetrating it roughly.
-	<<set _loser.analCount += 1>>
-	<<set $analTotal += 1>>
 <<elseif (_loser.vagina == 0) && (_loser.anus == 0)>>
 	She respects _loser.slaveName's virgin holes, and hauls the loser to her knees for a facefuck.
 	<<set _loser.oralCount += 1>>
 	<<set $oralTotal += 1>>
-<<elseif (_loser.vagina == 0)>>
+<<elseif (_loser.vagina <= 0) && canDoAnal(_loser)>>
 	She shoves _loser.slaveName's face into the mat, spreads her buttocks, and spits on her asshole before penetrating it roughly.
 	<<set _loser.analCount += 1>>
 	<<set $analTotal += 1>>
-<<else>>
+<<elseif canDoVaginal(_loser)>>
 	She pushes _loser.slaveName's back down onto the mat, forces her legs apart, and penetrates the loser's cunt.
 	<<set _loser.vaginalCount += 1>>
 	<<set $vaginalTotal += 1>>
-	<<if (_winner.dick > 0) && (_winner.balls > 0) && (_winner.hormones < 1)>>
-		<<if isFertile(_loser)>>
+	<<if canAchieveErection(_winner) && canImpreg(_loser, _winner)>>
 		<<if canTalk(_loser) == false>>_loser.slaveName tries to gesture a protest before _winner.slaveName fills her fertile pussy with cum, but _winner.slaveName grabs her hands and pins them to keep her from complaining.<<else>>_loser.slaveName starts to scream a protest to stop _winner.slaveName raping her pregnant, but _winner.slaveName grinds her face into the mat to shut her up.<</if>>
 		<<if random(1,100) > 50>>
 			<<set (_loser.preg = 1)>>
 			<<set (_loser.pregSource = _winner.ID)>>
 		<</if>>
-		<</if>>
 	<</if>>
+<<else>>
+	She considers her options briefly, then hauls the loser to her knees for a facefuck.
+	<<set _loser.oralCount += 1>>
+	<<set $oralTotal += 1>>
 <</if>>
 
 <<if (_winner.energy > 95)>>
@@ -529,7 +536,7 @@ You throw the victor's strap-on down to _winner.slaveName.
 	<<set _winner.devotion -= 2>>
 <</if>>
 <<if (_winner.rivalry > 0) && (_loser.ID == _winner.rivalryTarget)>>
-	She @@.hotpink;relishes@@ the chance to abuse _loser.slaveName, who she dislikes.
+	She @@.hotpink;relishes@@ the chance to abuse _loser.slaveName, whom she dislikes.
 	<<set _winner.devotion += 5>>
 <<elseif (_winner.relationship >= 0) && (_loser.ID == _winner.relationshipTarget) && (_winner.devotion >= 20)>>
 	She accepts having to abuse _loser.slaveName, and plans to make it up to her later.
@@ -599,7 +606,7 @@ You throw the victor's strap-on down to _winner.slaveName.
 	<<set _loser.trust -= 10>>
 <</if>>
 <<if (_loser.rivalry > 0) && (_winner.ID == _loser.rivalryTarget)>>
-	She is @@.mediumorchid;embarrassed@@ by losing to and being raped by _winner.slaveName, who she dislikes, and @@.gold;fears@@ that it will happen again.
+	She is @@.mediumorchid;embarrassed@@ by losing to and being raped by _winner.slaveName, whom she dislikes, and @@.gold;fears@@ that it will happen again.
 	<<set _loser.devotion -= 10>>
 	<<set _loser.trust -= 10>>
 <<elseif (_loser.relationship >= 0) && (_winner.ID == _loser.relationshipTarget) && (_loser.devotion >= 4)>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index b68900a9e2b..1c002b6f04c 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -819,17 +819,11 @@ __Contraception__: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<
 <</if>>
 
 <<if $propOutcome == 1>>
-<<if $activeSlave.fuckdoll == 0>>
-	<<if $activeSlave.breedingMark == 0>>
-		<<if isFertile($activeSlave)>>
-			<<if $activeSlave.eggType == "human">>
-				<br>&nbsp;&nbsp;&nbsp;&nbsp;
-				[[Breeder Eligibility Exam|BreedingTest]]
-			<</if>>
-		<</if>>
+	<<if $activeSlave.breedingMark == 0 && $activeSlave.fuckdoll == 0 && $activeSlave.eggType == "human" && isFertile($activeSlave)>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		[[Breeder Eligibility Exam|BreedingTest]]
 	<</if>>
 <</if>>
-<</if>>
 
 <span id="bloating">
 <<if $activeSlave.inflation > 0>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 4a9222019c5..41c918be1ca 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -92,7 +92,7 @@
 		She's so intelligent she can suss out the cause of slaves' emotional issues and counsel them effectively.
 		<<set _idleBonus++>>
 	<</if>>
-	<<if isFertile($Attendant) || ($Attendant.preg > 0) || ($Attendant.birthsTotal > 0)|| ($Attendant.bellyImplant >= 2000)>>
+	<<if isFertile($Attendant) || ($Attendant.preg > 0) || ($Attendant.birthsTotal > 0) || ($Attendant.bellyImplant >= 2000)>>
 		She has a natural mothering instinct and really makes her girls feel at home.
 		<<set _idleBonus++, _healthBonus++>>
 	<</if>>
diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw
index 8475b937f75..f2fcbdb07e8 100644
--- a/src/uncategorized/walkPast.tw
+++ b/src/uncategorized/walkPast.tw
@@ -394,11 +394,11 @@
 
 	Meanwhile,
 	<<if $activeSlave.rivalry >= 3>>
-		_partnerSlave.slaveName, who she hates,
+		_partnerSlave.slaveName, whom she hates,
 	<<elseif $activeSlave.rivalry >= 2>>
 		her rival _partnerSlave.slaveName
 	<<else>>
-		_partnerSlave.slaveName, who she dislikes,
+		_partnerSlave.slaveName, whom she dislikes,
 	<</if>>
 
 	<<switch _partnerSlave.assignment>>
-- 
GitLab