From 35d0a4281aae68a56e6770389b0c6e6b1632ed1d Mon Sep 17 00:00:00 2001 From: Devin Zuczek Date: Mon, 29 Jun 2026 15:21:43 -0400 Subject: [PATCH] disable cheatmanager to preserve DUID function --- CannedNet.Client/Plugin.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/CannedNet.Client/Plugin.cs b/CannedNet.Client/Plugin.cs index edf4d9f..e8a4484 100644 --- a/CannedNet.Client/Plugin.cs +++ b/CannedNet.Client/Plugin.cs @@ -46,14 +46,18 @@ public class Plugin : BasePlugin private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { - if (scene.name != "TitleScreen" && scene.name != "empty") + // CheatManager boots us out of rooms when it runs, but it's ALSO the DUID service the DI + // container resolves for account creation / login (destroying it removes that service). + // So instead of destroying it, *deactivate* the GameObject: it stops running (no Update / + // coroutines, so no boot) while the component still exists, so the DI container can still + // resolve PGECJHKNIEN and call its DUID methods. It's recreated per scene, so deactivate + // each freshly-spawned (active) instance on every load. (GameObject.Find only returns active + // objects, so once deactivated it isn't found again.) + var cheatMgr = GameObject.Find("GameRoot/(Startup)(Clone)/Core Systems/[CheatManager]"); + if (cheatMgr != null) { - var cheatMgr = GameObject.Find("GameRoot/(Startup)(Clone)/Core Systems/[CheatManager]"); - if (cheatMgr != null) - { - GameObject.Destroy(cheatMgr); - Log.LogInfo("cheatmanager destroyed"); - } + cheatMgr.SetActive(false); + Log.LogInfo("cheatmanager deactivated"); } } }