From b11400984abc96feb41965fc8583acb8958d6096 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Fri, 28 Apr 2017 03:52:48 -0400
Subject: [PATCH] Fixes and more impregnation tweaks.

---
 src/pregmod/widgets/extendedFamilyWidgets.tw |   2 +
 src/uncategorized/fsDevelopments.tw          |   2 +-
 src/uncategorized/saLongTermEffects.tw       | 127 +++++++++++--------
 3 files changed, 79 insertions(+), 52 deletions(-)

diff --git a/src/pregmod/widgets/extendedFamilyWidgets.tw b/src/pregmod/widgets/extendedFamilyWidgets.tw
index 5b4d91e5773..20d6bc154c2 100644
--- a/src/pregmod/widgets/extendedFamilyWidgets.tw
+++ b/src/pregmod/widgets/extendedFamilyWidgets.tw
@@ -1031,6 +1031,7 @@
 <<for _i = 0; _i < $slaves.length; _i++>>
 <<if $slaves[_i].mother == $activeSlave.ID>><<set $slaves[_i].mother = 0>><</if>>
 <</for>>
+<<if $PC.mother == $activeSlave.ID>><<set $PC.mother = 0>><</if>>
 <<redisplayFamily>>
 <</link>>
 <<if $activeSlave.vagina >= 0>>
@@ -1061,6 +1062,7 @@
 <<for _i = 0; _i < $slaves.length; _i++>>
 <<if $slaves[_i].father == $activeSlave.ID>><<set $slaves[_i].father = 0>><</if>>
 <</for>>
+<<if $PC.father == $activeSlave.ID>><<set $PC.father = 0>><</if>>
 <<redisplayFamily>>
 <</link>>
 <<if $activeSlave.dick > 0>>
diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw
index 48324ef0481..d898b522a2f 100644
--- a/src/uncategorized/fsDevelopments.tw
+++ b/src/uncategorized/fsDevelopments.tw
@@ -871,7 +871,7 @@ With her $assistantAppearance appearance, $assistantName's public visibility mes
 <<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
 <<if $arcologies[0].FSSlimnessEnthusiast < 0>>
 	<<set $arcologies[0].FSSlimnessEnthusiast = "unset">><<set $FSCredits += 1>>
-	<<set $arcologies[0].FSSlimnessEnthusiastSMR = 0, $arcologies[0].FSSlimnessEnthusiastSMR = 0>>
+	<<set $arcologies[0].FSSlimnessEnthusiastSMR = 0, $arcologies[0].FSSlimnessEnthusiastLaw = 0>>
 	<<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>>
 	<<ClearFacilityDecorations>>
 	@@.red;One of your future society projects has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index a7d5403d09d..97be55459f7 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -3604,8 +3604,8 @@ and ($slaves[$i].clothes != "a slutty qipao") and ($slaves[$i].clothes != "restr
 		<</if>>
 	<</if>>
 	<</if>>
-	<<set $slaves[$i].preg to 1>>
-	<<set $slaves[$i].pregSource to $HeadGirl.ID>>
+	<<set $slaves[$i].preg = 1>>
+	<<set $slaves[$i].pregSource = $HeadGirl.ID>>
 	<<set $HGCum -= 1>>
 	<<set $HeadGirl.penetrativeCount += 10>>
 	<<set $penetrativeTotal += 10>>
@@ -3616,73 +3616,98 @@ and ($slaves[$i].clothes != "a slutty qipao") and ($slaves[$i].clothes != "restr
 	<<set $slaves[$i].vaginalCount += 10>>
 	<<set $vaginalTotal += 10>>
 	<</if>>
-	<<set $activeSlave to $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<AnalVCheck 10>><<else>><<VaginalVCheck 10>><</if>><<set $slaves[$i] to $activeSlave>>
-	<<for $j to 0; $j < $slaves.length; $j++>>
+	<<set $activeSlave = $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<AnalVCheck 10>><<else>><<VaginalVCheck 10>><</if>><<set $slaves[$i] = $activeSlave>>
+	<<for $j = 0; $j < $slaves.length; $j++>>
 	<<if $HeadGirl.ID == $slaves[$j].ID>>
-		<<set $slaves[$j] to $HeadGirl>>
+		<<set $slaves[$j] = $HeadGirl>>
 		<<break>>
 	<</if>>
 	<</for>>
-<<elseif ($slaves[$i].assignment is "be your Concubine")>>
+<<elseif ($slaves[$i].assignment == "be your Concubine") && ($slaves[$i].eggType == "human")>>
 	<<if $slaves[$i].fuckdoll == 0>>
 	<<if $slaves[$i].fetish != "mindbroken">>
 	<<if ($PC.dick == 1) && (random(1,100) > 50)>>
 		As your concubine, she takes care to only share her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>> with you. Her efforts paid off; @@.lime;she has gotten pregnant with your child.@@
-		<<set $slaves[$i].preg to 1>>
-		<<set $slaves[$i].pregSource to -1>>
+		<<set $slaves[$i].preg = 1>>
+		<<set $slaves[$i].pregSource = -1>>
 	<</if>>
 	<</if>>
 	<</if>>
-<<elseif ($slaves[$i].assignment is "whore") && (random(1,100) > 50) && ($slaves[$i].eggType is "human")>>
+<<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.@@
+		<<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>>
+				/* catch for self-impregnation */
+					<<if random(1,100) > 95>>
+					<<set $slaves[$i].pregSource = $slaves[$j].ID>>
+					<<break>>
+					<</if>>
+				<<else>>
+					<<set $slaves[$i].pregSource = $MastSiIDs[$j].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
+		<</for>>
+	<</if>>
+<<elseif ($slaves[$i].assignment == "whore") && (random(1,100) > 50) && ($slaves[$i].eggType == "human")>>
 		Due to all the customers cumming in $possessive fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, @@.lime;$pronoun has gotten pregnant.@@
-		<<set $slaves[$i].preg to 1, $slaves[$i].pregSource to -2>>
-<<elseif ($slaves[$i].assignment is "serve the public") && (random(1,100) > 50) && ($slaves[$i].eggType is "human")>>
+		<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2>>
+<<elseif ($slaves[$i].assignment == "serve the public") && (random(1,100) > 50) && ($slaves[$i].eggType == "human")>>
 		Due to all the guys cumming in $possessive fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, @@.lime;$pronoun has gotten pregnant.@@
-		<<set $slaves[$i].preg to 1, $slaves[$i].pregSource to -2>>
-<<elseif ($slaves[$i].assignment is "work a glory hole") && (random(1,100) > 10) && ($slaves[$i].eggType is "human")>>
+		<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2>>
+<<elseif ($slaves[$i].assignment == "work a glory hole") && (random(1,100) > 10) && ($slaves[$i].eggType == "human")>>
 		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 to 1, $slaves[$i].pregSource to -2>>
+		<<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 to 1>>
-		<<for $m to 0; $m < $slaves.length; $m++>>
-			<<if $slaves[$i].relationshipTarget is $slaves[$m].ID>>
-				<<set $tempLover to $slaves[$m]>>
-			<<elseif $slaves[$i].rivalryTarget is $slaves[$m].ID>>
-				<<set $tempRival to $slaves[$m]>>
-			<<elseif $slaves[$i].subTarget is $slaves[$m].ID>>
-				<<set $tempSub to $slaves[$m]>>
+		<<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 to random(1,100)>>
-		<<if ($slaves[$i].relationship is -3 or $slaves[$i].relationship is -2) and $PC.dick == 1 && $slaves[$i].eggType == "human">>
-			<<set $slaves[$i].pregSource to -1>>
-		<<elseif $slaves[$i].relationship > 2 and canAchieveErection($tempLover) and $tempLover.dickAccessory != "chastity" && $tempLover.pubertyXY == 1 and canBreed($slaves[$i], $tempLover)>>
-			<<set $slaves[$i].pregSource to $tempLover.ID>>
-		<<elseif $slaves[$i].rivalry > 2 and canAchieveErection($tempRival) and $tempRival.dickAccessory != "chastity" && $tempRival.pubertyXY == 1 and canBreed($slaves[$i], $tempRival) and $seed > 95>>/* raped and knocked up by rival */
-			<<set $slaves[$i].pregSource to $tempRival.ID>>
-		<<elseif $slaves[$i].subTarget != 0 and $slaves[$i].assignment is "be a subordinate slave">>
-			<<if canAchieveErection($tempSub) and $slaves[$m].dickAccessory != "chastity" && $tempSub.pubertyXY == 1 and canBreed($slaves[$i], $tempSub)>>
-			<<set $slaves[$i].pregSource to $tempSub.ID>>
-			<</if>>
-		<<elseif $seed > 60 and $PC.dick == 1 && $slaves[$i].eggType == "human">>
-			<<set $slaves[$i].pregSource to -1>>
+		<<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">>
-			<<set $slaves[$i].pregSource to -2>>
+			<<if $slaves[$i].assignment == "please you" && $PC.dick == 1>>
+				<<set $slaves[$i].pregSource = -1>>
+			<<else>>
+				<<set $slaves[$i].pregSource = -2>>
+			<</if>>
 		<<elseif $slaves[$i].eggType != "human">>
-			<<for $j to 0; $j < $slaves.length; $j++>>
-				<<if $slaves[$j].dick > 0 and $slaves[$j].balls > 0 and $slaves[$j].dickAccessory != "chastity" && $slaves[$j].pubertyXY == 1 && canBreed($slaves[$i], $slaves[$j])>>
+			<<for $j = 0; $j < $slaves.length; $j++>>
+				<<if $slaves[$j].dick > 0 && $slaves[$j].balls > 0 && $slaves[$j].dickAccessory != "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 to $slaves[$j].ID>>
+						<<set $slaves[$i].pregSource = $slaves[$j].ID>>
 						<<break>>
 						<</if>>
 					<<else>>
-						<<set $slaves[$i].pregSource to $slaves[$j].ID>>
+						<<set $slaves[$i].pregSource = $slaves[$j].ID>>
 						<<break>>
 					<</if>>
 				<</if>>
@@ -3693,27 +3718,27 @@ and ($slaves[$i].clothes != "a slutty qipao") and ($slaves[$i].clothes != "restr
 				<<set $slaves[$i].pregSource = 0>>
 			<</if>>
 		<<else>>
-			<<set $sourceSeed to random(0,$slaves.length-1)>>
+			<<set $sourceSeed = random(0,$slaves.length-1)>>
 			/* random starting point in the slave array */
-			<<set $slaves[$i].pregSource to -2>>
+			<<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 to $sourceSeed+1; $m is $sourceSeed; $m++>>
+			<<for $m = $sourceSeed+1; $m == $sourceSeed; $m++>>
 				<<if $m >= $slaves.length>> /* oob catch */
-					<<set $m to -1>>
-				<<elseif $slaves[$m].dick > 0 and $slaves[$m].balls > 0 and $slaves[$m].dickAccessory != "chastity" && $slaves[$m].pubertyXY == 1>>
-					<<if $slaves[$i].ID is $slaves[$m].ID>>
+					<<set $m = -1>>
+				<<elseif $slaves[$m].dick > 0 && $slaves[$m].balls > 0 && $slaves[$m].dickAccessory != "chastity" && $slaves[$m].pubertyXY == 1>>
+					<<if $slaves[$i].ID == $slaves[$m].ID>>
 					/* catch for self-impregnation */
 						<<if random(1,100) > 95>>
-						<<set $slaves[$i].pregSource to $slaves[$m].ID>>
-						<<set $m to $sourceSeed-1>>
+						<<set $slaves[$i].pregSource = $slaves[$m].ID>>
+						<<set $m = $sourceSeed-1>>
 						<</if>>
 					<<else>>
-					<<set $slaves[$i].pregSource to $slaves[$m].ID>>
-					<<set $m to $sourceSeed-1>>
+					<<set $slaves[$i].pregSource = $slaves[$m].ID>>
+					<<set $m = $sourceSeed-1>>
 					<</if>>
 				<<elseif $m >= $slaves.length-1>>
-					<<set $m to -1>>
+					<<set $m = -1>>
 				<</if>>
 			<</for>>
 		<</if>>
-- 
GitLab