diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index 80868bdbf88cfe178192f8a559d0b1157fe531f9..62ea88d163ae3c8e1fb13e00e316f4aafdb3140f 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -349,17 +349,6 @@ window.newSlave = /** @param {App.Entity.SlaveState} slave */ function newSlave(
 		V.REReductionCheckinIDs.push(slave.ID);
 	}
 
-	if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.physicalAge >= slave.pubertyAgeXX) {
-		slave.pubertyXX = 1;
-	} else {
-		slave.pubertyXX = 0;
-	}
-	if (slave.balls > 0 && slave.ballType !== "sterile" && slave.physicalAge >= slave.pubertyAgeXY) {
-		slave.pubertyXY = 1;
-	} else {
-		slave.pubertyXY = 0;
-	}
-
 	generatePronouns(slave);
 	SetBellySize(slave);
 	addSlave(slave);
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index a10e638dbb4b4dede910560c01184819bbd180a1..e6c91b9967380cd0f2242293e36bca44deb9c8b6 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -57,6 +57,7 @@ window.GenerateNewSlave = (function(){
 	}
 
 	function postGenCleanup() {
+		generatePuberty(slave);
 		generateBoobTweaks(); /* split this up for female vs. male? */
 		generateSkills();
 		generateDisabilities();
diff --git a/src/js/heroCreator.js b/src/js/heroCreator.js
index 62194ac9182c3397b08e6dbdbba72a9106fbaa93..95f8d0ca54d067122cbbc1819603701b11f4fcc1 100644
--- a/src/js/heroCreator.js
+++ b/src/js/heroCreator.js
@@ -3,5 +3,6 @@ window.getHeroSlave = function (heroSlave, baseHeroSlave) {
 	for (var attrname in heroSlave) {
 		newSlave[attrname] = heroSlave[attrname];
 	}
+	generatePuberty(newSlave);
 	return newSlave;
 };
diff --git a/src/js/slaveGenerationJS.js b/src/js/slaveGenerationJS.js
index 6cbbe9b08178d4777ba52f9111495289936368d6..ced2210614868d45281cb9d7159f837dee9ea47b 100644
--- a/src/js/slaveGenerationJS.js
+++ b/src/js/slaveGenerationJS.js
@@ -1417,3 +1417,16 @@ window.generatePronouns = /** @param {App.Entity.SlaveState} slave*/ function ge
 		slave.noun = "girl";
 	}
 };
+
+window.generatePuberty = function(slave) {
+	if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.physicalAge >= slave.pubertyAgeXX) {
+		slave.pubertyXX = 1;
+	} else {
+		slave.pubertyXX = 0;
+	}
+	if (slave.balls > 0 && slave.ballType !== "sterile" && slave.physicalAge >= slave.pubertyAgeXY) {
+		slave.pubertyXY = 1;
+	} else {
+		slave.pubertyXY = 0;
+	}
+}