From c28f5161420f22026292ff888ebd15f028078f90 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Sat, 30 Mar 2019 04:38:02 -0400
Subject: [PATCH] Superfetation work

---
 devNotes/VersionChangeLog-Premod+LoliMod.txt |  2 ++
 src/js/pregJS.js                             | 30 ++++++++++++++++----
 src/js/slaveStatsChecker.js                  | 12 ++++++--
 src/uncategorized/nextWeek.tw                | 14 +++++++++
 4 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 30cd54b3c64..05d56cfe700 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -9,6 +9,8 @@ Pregmod
 	-easier to passively gain slaving skill
 	-added overalls outfit
 	-UI changes
+	-slave data structural changes
+	-tanning and skin color tweaks
 	-fixes
 	-code cleaning
 
diff --git a/src/js/pregJS.js b/src/js/pregJS.js
index 29a15658211..8acc9918dea 100644
--- a/src/js/pregJS.js
+++ b/src/js/pregJS.js
@@ -382,6 +382,9 @@ window.setPregType = function(actor) {
 			}
 		}
 	}
+	if (actor geneticQuirks.superfetation === 2 && actor.womb.length > 0) {
+		ovum = Math.ceiling(ovum / 4);
+	}
 	return ovum;
 };
 
@@ -395,7 +398,12 @@ window.setPregType = function(actor) {
 */
 window.knockMeUp = function(target, chance, hole, fatherID, displayOverride) {
 	const V = State.variables;
+	const pronouns;
 	let r = "";
+	if (target.ID !== -1) {
+		pronouns = getPronouns(slave);
+		const He = capFirstChar(pronouns.pronoun);
+	}
 	if (V.seePreg !== 0) {
 		if (jsRandom(0,99) < (chance + (V.reproductionFormula*((target.pregSource <= 0) ? ((target.ID === -1) ? 0 : 10) : 20)))) {
 			if (target.mpreg === hole) {
@@ -416,10 +424,8 @@ window.knockMeUp = function(target, chance, hole, fatherID, displayOverride) {
 					target.pregKnown = 1;
 					if (target.ID === -1) {
 						/* r += "@@.lime;You have gotten pregnant.@@"; */
-					} else if (target.fuckdoll === 0) {
-						r += "@@.lime;She has become pregnant.@@";
 					} else {
-						r += "@@.lime;It has become pregnant.@@";
+						r += `<span class="lime">${He} has become pregnant.</span>`;
 					}
 				} else {
 					target.pregKnown = 1;
@@ -443,13 +449,25 @@ window.knockMeUp = function(target, chance, hole, fatherID, displayOverride) {
 					target.pregKnown = 1;
 					if (target.ID === -1) {
 						/* r += "@@.lime;You have gotten pregnant.@@"; */
-					} else if (target.fuckdoll === 0) {
-						r += "@@.lime;She has become pregnant.@@";
 					} else {
-						r += "@@.lime;It has become pregnant.@@";
+						r += `<span class="lime">${He} has become pregnant.</span>`;
+					}
+					if (target geneticQuirks.superfetation === 2 && target.womb.length > 0) {
+						if (V.seeHyperPreg === 1) {
+							target.fertPeak = 1;
+						} else {
+							target.fertPeak = jsRandom(10, 20);
+						}
 					}
 				} else {
 					target.pregKnown = 1;
+					if (target geneticQuirks.superfetation === 2 && target.womb.length > 0) {
+						if (V.seeHyperPreg === 1) {
+							target.fertPeak = 1;
+						} else {
+							target.fertPeak = jsRandom(10, 20);
+						}
+					}
 				}
 			}
 		}
diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js
index b88a492d73a..16ee9096abd 100644
--- a/src/js/slaveStatsChecker.js
+++ b/src/js/slaveStatsChecker.js
@@ -183,8 +183,6 @@ window.isFertile = function(slave) {
 
 	if (slave.womb.length > 0 && slave.geneticQuirks.superfetation < 2) { /* currently pregnant without superfetation */
 		return false;
-	} else if (slave.womb.length > 0) { /* temp failure condition to prevent current double preg bug */
-		return false;
 	} else if (slave.broodmother > 0) { /* currently broodmother */
 		return false;
 	} else if (slave.preg < -1) { /* sterile */
@@ -200,8 +198,18 @@ window.isFertile = function(slave) {
 	} else if (slave.bellyImplant !== -1) {
 		return false;
 	} else if (slave.mpreg === 1) {
+		if (slave.womb.length > 0) { // superfetation route
+			if (slave.fertPeak !== 0) {
+				return false;
+			}
+		}
 		return true; /* pregmod end */
 	} else if (slave.ovaries === 1) {
+		if (slave.womb.length > 0) { // superfetation route
+			if (slave.fertPeak !== 0) {
+				return false;
+			}
+		}
 		return true;
 	}
 	return false;
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index b1b4d7d45eb..42b71234f41 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -25,6 +25,13 @@
 		<</if>>
 	<</if>>
 <</if>>
+<<if $menstruation == 1>>
+<<elseif $PC.geneticQuirks.superfetation == 2 && $PC.womb.length > 0>>
+	<<if $PC.fertPeak == 0>>
+		<<set $PC.fertPeak = 1>>
+	<</if>>
+	<<set $PC.fertPeak-->>
+<</if>>
 
 /*Adding random changes to the economy*/
 <<if $difficultySwitch == 1>>
@@ -131,6 +138,13 @@
 			<<set $slaves[_i].boobs += $slaves[_i].boobsMilk>>
 		<</if>>
 	<</if>>
+	<<if $menstruation == 1>>
+	<<elseif $slaves[_i].geneticQuirks.superfetation == 2 && $slaves[_i].womb.length > 0>>
+		<<if $slaves[_i].fertPeak == 0>>
+			<<set $slaves[_i].fertPeak = 1>>
+		<</if>>
+		<<set $slaves[_i].fertPeak-->>
+	<</if>>
 	<<set $slaves[_i].trust = Number($slaves[_i].trust.toFixed(1)), $slaves[_i].devotion = Number($slaves[_i].devotion.toFixed(1))>>
 	<<set $slaves[_i].oldDevotion = $slaves[_i].devotion, $slaves[_i].oldTrust = $slaves[_i].trust, $slaves[_i].tired = 0, $slaves[_i].minorInjury = 0>>
 	<<if $slaves[_i].sentence > 1>>
-- 
GitLab