From 11d0446db80199ef899d3fb4ac21c941eddcdea0 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Fri, 10 Aug 2018 03:02:36 -0400
Subject: [PATCH] major childgen fix

---
 devNotes/VersionChangeLog-Premod+LoliMod.txt |  3 +++
 src/pregmod/csec.tw                          |  6 +++++-
 src/pregmod/generateChild.tw                 |  9 +++------
 src/pregmod/sePlayerBirth.tw                 | 11 ++++++++++-
 src/pregmod/widgets/seBirthWidgets.tw        |  4 ++++
 5 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 9ad4bc488c5..04528982f38 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -4,6 +4,9 @@
 
 8/10/2018
 
+	27
+	-critical fix to missing parents in childgen (now only done once instead for each child)
+
 	26
 	-skin color tweaking
 	-fixes
diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index 842e09dfd50..0347c6aedcd 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -114,7 +114,11 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 		<<set _incubated = 1>>
 	<</if>>
 	<<set $mom = $activeSlave>>
-	<<set _identicalChildGen = 0, _shiftDegree = 0>>
+	<<set _identicalChildGen = 0, _shiftDegree = 0 && _cToIncub > 0>>
+	<<if $mom.pregSource < 1 && $mom.pregSource != -1>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _cb = 0; _cb < _cToIncub; _cb++>> /* if there is no reserved children, code in loop will not trigger */
 			<<if _identicalChildGen == 0>>
 				<<if _cb == $mom.curBabies.length-1 && $mom.curBabies.length > 1 && $mom.curBabies[_cb].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
diff --git a/src/pregmod/generateChild.tw b/src/pregmod/generateChild.tw
index 333ac352132..f97226511c5 100644
--- a/src/pregmod/generateChild.tw
+++ b/src/pregmod/generateChild.tw
@@ -29,8 +29,7 @@
 		<<set $activeSlave.slaveName = "Your daughter">>
 		<<set $activeSlave.mother = -1>>
 		<<if $PC.pregSource != -6>>
-			<<set $activeSlave.father = $missingParentID>>
-			<<set $missingParentID-->>
+			<<set $activeSlave.father = $missingParent>>
 			<<set $activeSlave.nationality = "Stateless">>
 		<<else>>
 			<<set $activeSlave.father = -1>>
@@ -160,8 +159,7 @@
 		<<set $activeSlave.slaveName = "Your son">>
 		<<set $activeSlave.mother = -1>>
 		<<if $PC.pregSource != -6>>
-			<<set $activeSlave.father = $missingParentID>>
-			<<set $missingParentID-->>
+			<<set $activeSlave.father = $missingParent>>
 			<<set $activeSlave.nationality = "Stateless">>
 		<<else>>
 			<<set $activeSlave.father = -1>>
@@ -302,8 +300,7 @@
 		<<set $activeSlave.slaveName = String($mom.slaveName + " and my child")>>
 		<<set $activeSlave.slaveSurname = $PC.surname>>
 	<<else>>
-		<<set $activeSlave.father = $missingParentID>>
-		<<set $missingParentID-->>
+		<<set $activeSlave.father = $missingParent>>
 		<<set $activeSlave.slaveName = String($mom.slaveName + "'s slut child")>>
 		<<if def $mom.slaveSurname && $mom.slaveSurname != "">><<set $activeSlave.slaveSurname = $mom.slaveSurname>><<else>><<set $activeSlave.slaveSurname = 0>><</if>>
 	<</if>>
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 7f3f7f9a0ce..c50ea37f684 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -404,6 +404,11 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 
 <<if _curBabies == 1>>
 
+	<<if $PC.pregSource < 1 && $PC.pregSource != -6 && $PC.reservedChildren > 0>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
+
 	<<include "Generate Child">>
 
 	<<if $activeSlave.race == $PC.race>>
@@ -440,7 +445,11 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 	<</if>>
 
 <<elseif _curBabies > 1>>
-	<<set _identicalChildGen = 0, _shiftDegree = 0>>
+	<<set _identicalChildGen = 0, _shiftDegree = 0 && $PC.reservedChildren > 0>>
+	<<if $PC.pregSource < 1 && $PC.pregSource != -6>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _p = 0; _p < _curBabies; _p++>>
 		<<if _identicalChildGen == 0>>
 			<<if _p == $PC.curBabies.length-1 && $PC.curBabies.length > 1 && $PC.curBabies[_p].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index c506be3ec8f..b22a418b733 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -770,6 +770,10 @@ All in all,
 	<<set _identicalChildGen = 0, _shiftDegree = 0>>
 	<br><br>
 	Of $his _curBabies child<<if $slaves[$i].pregType > 1>>ren<</if>>; _cToIncub <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
+	<<if $slaves[$i].pregSource < 1 && $slaves[$i].pregSource != -1 && _cToIncub > 0>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _k = 0; _k < _cToIncub; _k++>> 
 		<<if _identicalChildGen == 0>>
 			<<if _k == $slaves[$i].curBabies.length-1 && $slaves[$i].curBabies.length > 1 && $slaves[$i].curBabies[_k].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
-- 
GitLab