From f09f4966cf709c0603d7d39c4990497488a1fd0d Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Wed, 28 Jul 2021 00:39:02 -0400
Subject: [PATCH] PC cheat

---
 src/005-passages/optionsPassages.js           | 18 ++++++++++++++++++
 src/cheats/PCCheatMenu.js                     | 19 +++++++++++++++++++
 src/cheats/PCCheatMenu.tw                     | 15 ---------------
 src/cheats/PCCheatMenuCheatDatatypeCleanup.js |  7 +++++++
 src/cheats/PCCheatMenuCheatDatatypeCleanup.tw | 17 -----------------
 5 files changed, 44 insertions(+), 32 deletions(-)
 create mode 100644 src/cheats/PCCheatMenu.js
 delete mode 100644 src/cheats/PCCheatMenu.tw
 create mode 100644 src/cheats/PCCheatMenuCheatDatatypeCleanup.js
 delete mode 100644 src/cheats/PCCheatMenuCheatDatatypeCleanup.tw

diff --git a/src/005-passages/optionsPassages.js b/src/005-passages/optionsPassages.js
index b96603fa26e..dc39958b5c6 100644
--- a/src/005-passages/optionsPassages.js
+++ b/src/005-passages/optionsPassages.js
@@ -92,3 +92,21 @@ new App.DomPassage("MOD_Edit Neighbor Arcology Cheat Datatype Cleanup",
 		return App.UI.Cheat.neighborArcologyCheatDatatypeCleanup();
 	}
 );
+
+new App.DomPassage("PCCheatMenu",
+	() => {
+		V.nextButton = "Apply";
+		V.nextLink = "PCCheatMenuCheatDatatypeCleanup";
+		V.encyclopedia = "Design Your Master";
+		return App.UI.Cheat.PCCheatMenu();
+	}
+);
+
+
+new App.DomPassage("PCCheatMenuCheatDatatypeCleanup",
+	() => {
+		V.nextButton = "Continue";
+		V.nextLink = "Manage Personal Affairs";
+		return App.UI.Cheat.PCCheatMenuCheatDatatypeCleanup();
+	}
+);
diff --git a/src/cheats/PCCheatMenu.js b/src/cheats/PCCheatMenu.js
new file mode 100644
index 00000000000..e969f356f74
--- /dev/null
+++ b/src/cheats/PCCheatMenu.js
@@ -0,0 +1,19 @@
+App.UI.Cheat.PCCheatMenu = function() {
+	const node = new DocumentFragment();
+
+	App.UI.DOM.appendNewElement("h2", node, "Cheat Editing Player Character");
+
+	App.UI.DOM.appendNewElement("div", node, App.UI.DOM.passageLink(
+		"Cancel",
+		"Manage Personal Affairs",
+		() => {
+			delete V.tempSlave;
+			delete V.customEvalCode;
+			V.PC = clone(V.backupSlave);
+		}
+	));
+
+
+	node.append(App.UI.Player.design());
+	return node;
+};
diff --git a/src/cheats/PCCheatMenu.tw b/src/cheats/PCCheatMenu.tw
deleted file mode 100644
index 8b5cddb2cae..00000000000
--- a/src/cheats/PCCheatMenu.tw
+++ /dev/null
@@ -1,15 +0,0 @@
-:: PCCheatMenu [nobr]
-
-<<set $nextButton = "Apply", $nextLink = "PCCheatMenuCheatDatatypeCleanup", $encyclopedia = "Design Your Master">>
-
-''Cheat Editing Player Character''
-<<link "[Cancel]" "Manage Personal Affairs">>
-	<<unset $tempSlave, $customEvalCode>>
-	<<set $PC = clone($backupSlave)>>
-<</link>>
-
-<<includeDOM App.UI.Player.design()>>
-
-<br><br>Custom Cheat:
-<br><<textarea "$customEvalCode" "">>
-<br>//Any JavaScript function will be automatically run using the PC as an argument when "Apply" is clicked. For example, entering "(PC) => PC.slaveName = 'Fancy Name' " will change your name to "Fancy Name".//
diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.js b/src/cheats/PCCheatMenuCheatDatatypeCleanup.js
new file mode 100644
index 00000000000..ba0a7ab00f0
--- /dev/null
+++ b/src/cheats/PCCheatMenuCheatDatatypeCleanup.js
@@ -0,0 +1,7 @@
+App.UI.Cheat.PCCheatMenuCheatDatatypeCleanup = function() {
+	delete V.backupSlave;
+
+	App.Entity.Utils.PCCheatCleanup();
+
+	return App.Events.makeNode([`You perform the dark rituals, pray to the dark gods, and sell your soul for the power to reshape your body and life at will. What a cheater!`]);
+};
diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw
deleted file mode 100644
index 46c8957c0af..00000000000
--- a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw
+++ /dev/null
@@ -1,17 +0,0 @@
-:: PCCheatMenuCheatDatatypeCleanup [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">>
-
-<<if $customEvalCode>>
-	<<if $customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
-		<<set $customEvalCode = "(" + $customEvalCode + ")">>
-	<</if>>
-	<<if typeof eval($customEvalCode) === "function">>
-		<<run (eval($customEvalCode))($PC)>>
-	<</if>>
-<</if>>
-<<unset $customEvalCode, $backupSlave>>
-
-<<run App.Entity.Utils.PCCheatCleanup()>>
-
-You perform the dark rituals, pray to the dark gods, and sell your soul for the power to reshape your body and life at will. What a cheater!
-- 
GitLab