From ca418c2122032cbff2915b529b7c7304081fe28c Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Wed, 19 Dec 2018 01:05:54 -0500
Subject: [PATCH] better name handling and cloning variable init

---
 devNotes/VersionChangeLog-Premod+LoliMod.txt |  1 +
 devNotes/twine JS.txt                        | 84 +++++++++++++++++++-
 src/init/storyInit.tw                        |  1 +
 src/js/generateGenetics.tw                   | 84 +++++++++++++++++++-
 src/pregmod/incubator.tw                     |  2 +-
 src/uncategorized/BackwardsCompatibility.tw  |  3 +
 6 files changed, 166 insertions(+), 9 deletions(-)

diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index b141fc4fc44..0328e4f4fde 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -5,6 +5,7 @@
 	0
 	-dispensary broken down into pharm fabricator, organ farm, implant manufactory and gene lab
 	-lots of SF work
+	-better naming support in childgen
 	-fixes
 	-cleaning
 
diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 32841e6e974..ec79cb2935b 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -10643,7 +10643,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10714,7 +10733,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10843,7 +10881,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10915,7 +10972,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 9eae092daed..e6e8af97ca5 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1008,6 +1008,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $prostheticsUpgrade = 0>>
 <<set $geneticMappingUpgrade = 0>>
 <<set $pregnancyMonitoringUpgrade = 0>>
+<<set $cloningSystem = 0>>
 
 <<set $surgeryUpgrade = 0>>
 
diff --git a/src/js/generateGenetics.tw b/src/js/generateGenetics.tw
index eeee9419b8e..7de1243a7b0 100644
--- a/src/js/generateGenetics.tw
+++ b/src/js/generateGenetics.tw
@@ -574,7 +574,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -645,7 +664,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -774,7 +812,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -846,7 +903,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index bc9fa5881f2..89f29527b3b 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -444,7 +444,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 				Reproduction management systems are offline; $he will undergo normal puberty.
 			<</if>>
 		<</if>>
-		<br>Rename $him: <<textbox "_tempName" _tempName >> [[Apply |incubator][$tanks[$i].slaveName = _tempName]] // Given name only //
+		<br>Rename $him: <<textbox "_tempName" _tempName >> [[Apply |Incubator][$tanks[$i].slaveName = _tempName]] // Given name only //
 		<<if $cheatMode == 1>>
 			<br>''Cheatmode:''
 			<<link "Retrieve immediately">>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 38d97b0ba24..fbc141b5a20 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2264,6 +2264,9 @@ Setting missing global variables:
 <<if ndef $animalMpreg>>
 	<<set $animalMpreg = 0>>
 <</if>>
+<<if ndef $cloningSystem>>
+	<<set $cloningSystem = 0>>
+<</if>>
 
 <<if ndef $pregInventor>>
 	<<set $pregInventor = 0>>
-- 
GitLab