diff --git a/src/events/intro/acquisition.js b/src/events/intro/acquisition.js
index 6d9800668b95c7b63f0aae4ea75cefbb57e5b93a..dae2e7c7cb30d218bfd1c9b930cf74657ca832d6 100644
--- a/src/events/intro/acquisition.js
+++ b/src/events/intro/acquisition.js
@@ -185,17 +185,21 @@ App.Intro.acquisition = function() {
 		}
 		let addFamilyMember = false;
 		let secondMember = baseSlave();
+		let slaveDatabaseID = 0;
 		let secondMemberDatabaseID = 0; // We initialize this here so that we use it to set incestuous relationships.
+		let isSecondMember = false;
 		for (let j = 0; j < heroSlaves.length; j++) {
 			let slave;
 			if (addFamilyMember) {
 				slave = secondMember;
+				isSecondMember = true;
 				addFamilyMember = false;
 			} else if (valueOwed - valueGiven <= 5000) {
 				break;
 			} else {
+				isSecondMember = false;
 				const heroSlaveTemplate = heroSlaves[j];
-				const slaveDatabaseID = heroSlaveTemplate.ID;
+				slaveDatabaseID = heroSlaveTemplate.ID;
 				heroSlaves.splice(j, 1);
 				j--;
 				slave = App.Utils.getHeroSlave(heroSlaveTemplate);
@@ -248,6 +252,12 @@ App.Intro.acquisition = function() {
 			slave.oldDevotion = slave.devotion;
 			slave.oldTrust = slave.trust;
 			slave.health.tired = 0;
+			if (isSecondMember) {
+				V.heroSlavesPurchased.push(secondMemberDatabaseID);
+			} else {
+				V.heroSlavesPurchased.push(slaveDatabaseID);
+			}
+
 			newSlave(slave);
 
 			// Set incestuous relationship. Checking "addFamilyMember" makes sure we only do this after both family members have been added.
diff --git a/src/npc/databases/cheatmodeDatabase.js b/src/npc/databases/cheatmodeDatabase.js
index 09db66a30337d22487cbf325d670bf646ee7145c..d89edb30af11bc02b8baa456dec5c1f8dd2714e0 100644
--- a/src/npc/databases/cheatmodeDatabase.js
+++ b/src/npc/databases/cheatmodeDatabase.js
@@ -12,6 +12,7 @@ App.Intro.cheatModeSlaves = function() {
 		const templates = App.Utils.buildHeroArray().pluckMany(jsRandom(3, 6));
 		for (const template of templates) {
 			const HS = App.Utils.getHeroSlave(template);
+			V.heroSlavesPurchased.push(template.ID);
 			newSlave(HS);
 			slaveNames.push(HS.slaveName);
 		}
diff --git a/src/npc/generate/heroCreator.js b/src/npc/generate/heroCreator.js
index 6d22c630da6f9b85cd3eefd0dc565d4398468e30..dbf3c8f647f74fc8f9e88eb11cb689b344a7e8bb 100644
--- a/src/npc/generate/heroCreator.js
+++ b/src/npc/generate/heroCreator.js
@@ -1,7 +1,7 @@
 // cSpell:ignore Dextreme, Dincest, lolify, lolifying, lolification
 
 /** creates an array from App.Data.HeroSlaves that will be similar to the old $heroSlaves.
- * @returns {Array}
+ * @returns {FC.HeroSlaveTemplate[]}
  */
 App.Utils.buildHeroArray = function() {
 	let chunks = [];
@@ -90,13 +90,14 @@ App.Utils.getHeroFamilies = function() {
 };
 
 /**
- * @param {FC.HeroSlaveTemplate} template
+ * @param {FC.HeroSlaveTemplate} heroTemplate
  * @param {number} [newAge=undefined]
  * @returns {FC.SlaveState}
  * The optional newAge parameter is used for maintaining age gaps between siblings during arcology acquisition, and to make sure
  * one sibling isn't lolified if the other isn't. It has no effect outside of pedo mode, but in pedo m [The rest of this is missing for some reason]
  */
-App.Utils.getHeroSlave = function(template, newAge = undefined) {
+App.Utils.getHeroSlave = function(heroTemplate, newAge = undefined) {
+	const template = clone(heroTemplate);
 	/**
 	 * @param {FC.SlaveState & FC.HeroSlaveTemplate} slave
 	 */