From 57b66de634bdf0b80be56952d362b30f27f89fa0 Mon Sep 17 00:00:00 2001
From: Frankly George <54015-franklygeorge@users.noreply.gitgud.io>
Date: Thu, 3 Oct 2024 00:43:20 +0000
Subject: [PATCH] Fix 5426

---
 src/002-config/fc-version.js                           |  2 +-
 src/cheats/cheatEditActor.js                           |  7 +++++--
 .../releases/1265_fixSlavesBeingDetecedAsTankSlaves.js | 10 ++++++++++
 src/facilities/facilityRetrievalWorkaround.js          |  4 +++-
 4 files changed, 19 insertions(+), 4 deletions(-)
 create mode 100644 src/data/patches/releases/1265_fixSlavesBeingDetecedAsTankSlaves.js

diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 92a02befb44..e8d4759972f 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -10,5 +10,5 @@ App.Version = {
 	 * The release numbers got messed up, this is corrected in `src/js/eventHandlers.js` and `/src/data/patches/patch.js`.
 	 * The two line above and this line should be safe to remove after release 2001.
 	 */
-	release: 1264,
+	release: 1265,
 };
diff --git a/src/cheats/cheatEditActor.js b/src/cheats/cheatEditActor.js
index 07c856e6883..88619d83183 100644
--- a/src/cheats/cheatEditActor.js
+++ b/src/cheats/cheatEditActor.js
@@ -24,7 +24,7 @@ App.UI.Cheat.cheatEditActor = function(actor) {
 	const realInfant = V.cribsIndices[actor.ID] !== undefined ? infant : undefined;
 
 	/** null if the actor isn't a ChildState object, otherwise a ChildState object */
-	const child = undefined; // TODO: replace undefined once ChildState is actually implemented
+	const child = null; // TODO: replace null once ChildState is actually implemented
 	/** a ChildState object if baseActor has an ID that exists in ???, otherwise undefined */
 	const realChild = undefined; // TODO: replace undefined once ChildState is actually implemented
 
@@ -39,10 +39,13 @@ App.UI.Cheat.cheatEditActor = function(actor) {
 	const realSlave = V.slaveIndices[actor.ID] !== undefined ? slave : undefined;
 
 	/** null if the actor isn't a [this is a placeholder] object, otherwise a [this is a placeholder] object */
-	const citizen = undefined; // placeholder for when/if persistant citizens are added
+	const citizen = null; // placeholder for when/if persistant citizens are added
 	/** a [this is a placeholder] object if baseActor has an ID that exists in ???, otherwise undefined */
 	const realCitizen = undefined; // placeholder for when/if persistant citizens are added
 
+	console.log(`type; player: ${player !== null}, infant: ${infant !== null}, child: ${child !== null}, tankSlave: ${tankSlave !== null}, slave: ${slave !== null}, citizen: ${citizen !== null}`);
+	console.log(`real; player: ${realPlayer !== undefined}, infant: ${realInfant !== undefined}, child: ${realChild !== undefined}, tankSlave: ${realTankSlave !== undefined}, slave: ${realSlave !== undefined}, citizen: ${realCitizen !== undefined}`);
+
 	App.UI.DOM.appendNewElement("h1", el, `Cheat edit ${actor.slaveName}`);
 
 	if (player) {
diff --git a/src/data/patches/releases/1265_fixSlavesBeingDetecedAsTankSlaves.js b/src/data/patches/releases/1265_fixSlavesBeingDetecedAsTankSlaves.js
new file mode 100644
index 00000000000..abc167930b9
--- /dev/null
+++ b/src/data/patches/releases/1265_fixSlavesBeingDetecedAsTankSlaves.js
@@ -0,0 +1,10 @@
+App.Patch.register({
+	releaseID: 1265,
+	descriptionOfChanges: "Remove incubatorSettings from all HumanStates except for TankSlaveStates",
+	humanState: (div, actor, location) => {
+		if (location !== "V.incubator.tanks" && "incubatorSettings" in actor) {
+			deleteProps(actor, "incubatorSettings");
+		}
+		return actor;
+	}
+});
diff --git a/src/facilities/facilityRetrievalWorkaround.js b/src/facilities/facilityRetrievalWorkaround.js
index b6113482705..22f9d43a983 100644
--- a/src/facilities/facilityRetrievalWorkaround.js
+++ b/src/facilities/facilityRetrievalWorkaround.js
@@ -36,13 +36,15 @@ App.UI.facilityRetrievalWorkaround = function(facility) {
 					App.UI.DOM.appendNewElement("span", node, `You can't sustain ${him} and thus must sell ${him} for ${cashFormat(price)}.`, "note");
 				}
 			}
+			V.readySlave = App.Entity.TankSlaveState.fromTank(/** @type {FC.TankSlaveState} */ (V.readySlave));
 		} else {
 			App.UI.DOM.appendNewElement("div", node, App.Desc.longSlave(V.readySlave));
 			App.UI.DOM.appendNewElement("div", node, App.UI.newChildIntro(V.readySlave));
 		}
 	} else if (V.newSlavePool) {
 		App.UI.DOM.appendNewElement("p", node, `The following slaves were discharged from ${facilityName}:`);
-		for (const slave of V.newSlavePool) {
+		for (const TankSlave of V.newSlavePool) {
+			const slave =  isIncubator ? App.Entity.TankSlaveState.fromTank(/** @type {FC.TankSlaveState} */ (TankSlave)) : TankSlave;
 			App.UI.DOM.appendNewElement("div", node, `Name: ${SlaveFullName(slave)}`);
 			App.UI.DOM.appendNewElement("div", node, parent(slave, "mother"));
 			App.UI.DOM.appendNewElement("div", node, parent(slave, "father"));
-- 
GitLab