using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("UCHCustomNames")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("UCHCustomNames")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("0d1b656b-fd01-4b18-8792-d987bfceba21")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] [BepInPlugin("com.customnames.uch", "UCH Custom Names", "1.0")] public class CustomNames : BaseUnityPlugin { private class LocalPlayerInfo { public int playerNumber; public string currentName; public string newName; public LobbyPlayer lobbyPlayer; public bool isInLobby; } private static CustomNames instance; private bool menuVisible; private Vector2 scrollPos = Vector2.zero; private Rect menuRect = new Rect((float)(Screen.width / 2 - 200), (float)(Screen.height / 2 - 250), 400f, 500f); private List localPlayers = new List(); private int selectedPlayer; private string newName = ""; private GUIStyle titleStyle; private GUIStyle labelStyle; private GUIStyle buttonStyle; private GUIStyle boxStyle; private bool stylesInitialized; private HashSet autoAppliedPlayers = new HashSet(); private Texture2D cursorTexture; private Vector2 cursorHotspot = new Vector2(16f, 16f); private static void LogInfo(string message) { if ((Object)(object)instance != (Object)null) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } else { Debug.Log((object)("[UCH Custom Names] " + message)); } } private static void LogWarning(string message) { if ((Object)(object)instance != (Object)null) { ((BaseUnityPlugin)instance).Logger.LogWarning((object)message); } else { Debug.LogWarning((object)("[UCH Custom Names] " + message)); } } private static void LogError(string message) { if ((Object)(object)instance != (Object)null) { ((BaseUnityPlugin)instance).Logger.LogError((object)message); } else { Debug.LogError((object)("[UCH Custom Names] " + message)); } } private void Awake() { instance = this; LogInfo("========================================"); LogInfo("UCH Custom Names - Mod Loaded!"); LogInfo("Game version: " + Application.version); LogInfo("Unity version: " + Application.unityVersion); LogInfo("========================================"); SceneManager.sceneLoaded += OnSceneLoaded; CreateStyles(); CreateCursorTexture(); LogInfo("Mod initialization complete. Press F5 to toggle menu."); } private void CreateCursorTexture() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) int num = 32; cursorTexture = new Texture2D(num, num, (TextureFormat)5, false); Color val = default(Color); ((Color)(ref val))..ctor(0f, 0f, 0f, 0f); Color white = Color.white; Color black = Color.black; for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) { cursorTexture.SetPixel(i, j, val); } } int num2 = num / 2; int num3 = 2; for (int k = 0; k < num; k++) { for (int l = -num3; l <= num3; l++) { int num4 = num2 + l; if (num4 >= 0 && num4 < num) { if (l == -num3 || l == num3 || k == 0 || k == num - 1) { cursorTexture.SetPixel(k, num4, black); } else { cursorTexture.SetPixel(k, num4, white); } } } } for (int m = 0; m < num; m++) { for (int n = -num3; n <= num3; n++) { int num5 = num2 + n; if (num5 >= 0 && num5 < num) { if (n == -num3 || n == num3 || m == 0 || m == num - 1) { cursorTexture.SetPixel(num5, m, black); } else { cursorTexture.SetPixel(num5, m, white); } } } } cursorTexture.Apply(); } private void CreateStyles() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00af: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown //IL_00ea: Expected O, but got Unknown try { LogInfo("Creating GUI styles..."); GUIStyle val = new GUIStyle(GUI.skin.label) { fontSize = 24, fontStyle = (FontStyle)1, alignment = (TextAnchor)4 }; val.normal.textColor = Color.white; titleStyle = val; GUIStyle val2 = new GUIStyle(GUI.skin.label) { fontSize = 14 }; val2.normal.textColor = Color.white; labelStyle = val2; buttonStyle = new GUIStyle(GUI.skin.button) { fontSize = 14, margin = new RectOffset(5, 5, 5, 5), padding = new RectOffset(10, 10, 5, 5) }; boxStyle = new GUIStyle(GUI.skin.box) { margin = new RectOffset(10, 10, 10, 10), padding = new RectOffset(10, 10, 10, 10) }; stylesInitialized = true; LogInfo("GUI styles created successfully."); } catch (Exception ex) { LogError("Error creating GUI styles: " + ex.Message); } } private void OnDestroy() { SceneManager.sceneLoaded -= OnSceneLoaded; LogInfo("Mod destroyed."); } private void Update() { //IL_0254: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown((KeyCode)286)) { LogInfo("F5 key pressed!"); menuVisible = !menuVisible; LogInfo($"Menu visible: {menuVisible}"); if (menuVisible) { RefreshLocalPlayers(); LogInfo($"Players found after refresh: {localPlayers.Count}"); if (localPlayers.Count > 0) { newName = localPlayers[selectedPlayer].newName; LogInfo($"Selected player: {selectedPlayer}, Name: {newName}"); } } } if (menuVisible && localPlayers.Count > 0) { if (Input.GetKeyDown((KeyCode)273)) { selectedPlayer = Mathf.Max(0, selectedPlayer - 1); if (selectedPlayer < localPlayers.Count) { newName = localPlayers[selectedPlayer].newName; LogInfo($"Up arrow - Selected player: {selectedPlayer}"); } } else if (Input.GetKeyDown((KeyCode)274)) { selectedPlayer = Mathf.Min(localPlayers.Count - 1, selectedPlayer + 1); if (selectedPlayer < localPlayers.Count) { newName = localPlayers[selectedPlayer].newName; LogInfo($"Down arrow - Selected player: {selectedPlayer}"); } } } if (IsInLobby()) { LobbyPlayer[] array = Object.FindObjectsOfType(); foreach (LobbyPlayer val in array) { if (!((Object)(object)val != (Object)null) || !val.IsLocalPlayer) { continue; } int networkNumber = val.networkNumber; if (autoAppliedPlayers.Contains(networkNumber)) { continue; } string savedName = GetSavedName(networkNumber); if (val.playerName != savedName) { LogInfo($"AUTO-APPLY: Player {networkNumber} has name '{val.playerName}', applying saved name '{savedName}'"); try { val.CallCmdSetPlayerInfo(savedName, val.NetworkSkillMean, val.NetworkSkillStdDev, val.NetworkIsHost, val.NetworkGSID, val.Networkplatform); LogInfo($"SUCCESS: Auto-applied name '{savedName}' to Player {networkNumber}"); } catch (Exception ex) { LogError($"Error auto-applying name to Player {networkNumber}: {ex.Message}"); } } else { LogInfo($"AUTO-APPLY: Player {networkNumber} already has correct name '{savedName}'"); } autoAppliedPlayers.Add(networkNumber); } } else if (autoAppliedPlayers.Count > 0) { autoAppliedPlayers.Clear(); LogInfo("Left lobby, cleared auto-apply tracking."); } } private void OnGUI() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) if (menuVisible) { Vector3 mousePosition = Input.mousePosition; float num = (float)Screen.height - mousePosition.y; GUI.DrawTexture(new Rect(mousePosition.x - cursorHotspot.x, num - cursorHotspot.y, 32f, 32f), (Texture)(object)cursorTexture); } if (!menuVisible) { return; } try { if (Time.frameCount % 60 == 0) { LogInfo($"OnGUI - Menu is visible. Frame: {Time.frameCount}"); } GUI.color = new Color(0f, 0f, 0f, 0.7f); GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), (Texture)(object)Texture2D.whiteTexture); GUI.color = Color.white; if (!stylesInitialized) { LogWarning("Styles not initialized, recreating..."); CreateStyles(); } menuRect = GUI.Window(1, menuRect, new WindowFunction(DrawMenu), "", boxStyle); } catch (Exception ex) { LogError("Error in OnGUI: " + ex.Message + "\n" + ex.StackTrace); menuVisible = false; LogInfo("Menu disabled due to error."); } } private void DrawMenu(int windowID) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) try { GUILayout.BeginVertical(Array.Empty()); GUILayout.Label("CUSTOM NAMES", titleStyle, Array.Empty()); GUILayout.Space(5f); bool flag = IsInLobby(); GUI.color = (flag ? Color.green : Color.yellow); GUILayout.Label("Status: " + (flag ? "IN LOBBY ✅" : "NOT IN LOBBY ⚠\ufe0f"), labelStyle, Array.Empty()); GUI.color = Color.white; GUILayout.Label($"Players: {localPlayers.Count}", labelStyle, Array.Empty()); Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; GUILayout.Label("Scene: " + name, labelStyle, Array.Empty()); GUILayout.Space(5f); scrollPos = GUILayout.BeginScrollView(scrollPos, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(150f) }); if (localPlayers.Count == 0) { GUILayout.Label("No players found. Join a game or press REFRESH.", labelStyle, Array.Empty()); } else { for (int i = 0; i < localPlayers.Count; i++) { LocalPlayerInfo localPlayerInfo = localPlayers[i]; bool flag2 = i == selectedPlayer; GUILayout.BeginHorizontal(Array.Empty()); GUI.color = (flag2 ? Color.cyan : Color.white); if (GUILayout.Button($"P{localPlayerInfo.playerNumber}", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) })) { selectedPlayer = i; newName = localPlayerInfo.newName; LogInfo($"Selected player {i}: P{localPlayerInfo.playerNumber} - {localPlayerInfo.currentName}"); } GUI.color = Color.white; string obj = (localPlayerInfo.isInLobby ? "●" : "○"); GUI.color = (localPlayerInfo.isInLobby ? Color.green : Color.gray); GUILayout.Label(obj, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(20f) }); GUI.color = (flag2 ? Color.cyan : Color.white); GUILayout.Label(localPlayerInfo.currentName, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }); GUI.color = Color.white; GUILayout.EndHorizontal(); } } GUILayout.EndScrollView(); GUILayout.Space(10f); if (selectedPlayer < localPlayers.Count && localPlayers.Count > 0) { GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("New Name:", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) }); newName = GUILayout.TextField(newName, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }); GUILayout.EndHorizontal(); GUILayout.Space(5f); GUILayout.BeginHorizontal(Array.Empty()); if (GUILayout.Button("APPLY", buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LogInfo("APPLY button clicked"); ApplySelectedName(); } if (GUILayout.Button("SAVE", buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LogInfo("SAVE button clicked"); SaveCurrentName(); } if (GUILayout.Button("RESET ALL", buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LogInfo("RESET ALL button clicked"); ResetAllNames(); } if (GUILayout.Button("REFRESH", buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LogInfo("REFRESH button clicked"); RefreshLocalPlayers(); } GUILayout.EndHorizontal(); } GUILayout.FlexibleSpace(); if (GUILayout.Button("CLOSE (F5)", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LogInfo("CLOSE button clicked"); menuVisible = false; } GUILayout.EndVertical(); GUI.DragWindow(); } catch (Exception ex) { LogError("Error in DrawMenu: " + ex.Message + "\n" + ex.StackTrace); } } private string GetSavedName(int playerNumber) { return PlayerPrefs.GetString("UCH_Name_" + playerNumber, $"Player {playerNumber}"); } private void SetSavedName(int playerNumber, string name) { LogInfo($"SetSavedName({playerNumber}) = '{name}'"); PlayerPrefs.SetString("UCH_Name_" + playerNumber, name); PlayerPrefs.Save(); LogInfo("PlayerPrefs saved."); } private void RefreshLocalPlayers() { LogInfo("=== REFRESH LOCAL PLAYERS ==="); localPlayers.Clear(); try { LobbyPlayer[] array = Object.FindObjectsOfType(); LogInfo($"Total LobbyPlayer found: {array.Length}"); List list = (from p in array where (Object)(object)p != (Object)null && p.IsLocalPlayer orderby p.networkNumber select p).ToList(); LogInfo($"Local players found: {list.Count}"); foreach (LobbyPlayer item in list) { LogInfo($" - Player {item.networkNumber}: '{item.playerName}' (IsLocalPlayer: {item.IsLocalPlayer})"); LocalPlayerInfo localPlayerInfo = new LocalPlayerInfo { playerNumber = item.networkNumber, currentName = item.playerName, newName = GetSavedName(item.networkNumber), lobbyPlayer = item, isInLobby = IsInLobby() }; localPlayers.Add(localPlayerInfo); LogInfo($" Added to list: P{localPlayerInfo.playerNumber} - '{localPlayerInfo.currentName}' -> new: '{localPlayerInfo.newName}'"); } if (localPlayers.Count == 0) { LogInfo("No local players found. Checking saved names..."); for (int num = 1; num <= 10; num++) { string savedName = GetSavedName(num); if (savedName != $"Player {num}") { LogInfo($" Saved player {num}: '{savedName}'"); localPlayers.Add(new LocalPlayerInfo { playerNumber = num, currentName = savedName, newName = savedName, lobbyPlayer = null, isInLobby = false }); } } if (localPlayers.Count == 0) { LogInfo("No saved names found. Creating default player."); localPlayers.Add(new LocalPlayerInfo { playerNumber = 1, currentName = "Player 1", newName = "Player 1", lobbyPlayer = null, isInLobby = false }); } } if (selectedPlayer >= localPlayers.Count) { selectedPlayer = 0; } if (localPlayers.Count > 0) { newName = localPlayers[selectedPlayer].newName; } LogInfo($"Refresh complete. Total players in list: {localPlayers.Count}"); LogInfo("====================================="); } catch (Exception ex) { LogError("Error in RefreshLocalPlayers: " + ex.Message + "\n" + ex.StackTrace); } } private void ApplySelectedName() { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) LogInfo("=== APPLY SELECTED NAME ==="); if (selectedPlayer >= localPlayers.Count) { LogWarning($"Selected player {selectedPlayer} out of range (count: {localPlayers.Count})"); return; } LocalPlayerInfo localPlayerInfo = localPlayers[selectedPlayer]; LogInfo($"Applying name to Player {localPlayerInfo.playerNumber}: '{newName}'"); if (string.IsNullOrEmpty(newName)) { LogWarning("Name is empty, ignoring."); return; } if (localPlayerInfo.isInLobby && (Object)(object)localPlayerInfo.lobbyPlayer != (Object)null) { LogInfo("Player is in lobby, updating via network..."); try { localPlayerInfo.lobbyPlayer.CallCmdSetPlayerInfo(newName, localPlayerInfo.lobbyPlayer.NetworkSkillMean, localPlayerInfo.lobbyPlayer.NetworkSkillStdDev, localPlayerInfo.lobbyPlayer.NetworkIsHost, localPlayerInfo.lobbyPlayer.NetworkGSID, localPlayerInfo.lobbyPlayer.Networkplatform); localPlayerInfo.currentName = newName; localPlayerInfo.newName = newName; SetSavedName(localPlayerInfo.playerNumber, newName); autoAppliedPlayers.Add(localPlayerInfo.playerNumber); LogInfo($"SUCCESS: Name updated for Player {localPlayerInfo.playerNumber}: {newName}"); } catch (Exception ex) { LogError("Error updating name via network: " + ex.Message); } } else { LogInfo("Player is offline or not in lobby, saving locally."); SetSavedName(localPlayerInfo.playerNumber, newName); localPlayerInfo.currentName = newName; localPlayerInfo.newName = newName; LogInfo($"SUCCESS: Name saved for offline Player {localPlayerInfo.playerNumber}: {newName}"); } RefreshLocalPlayers(); LogInfo("================================="); } private void SaveCurrentName() { LogInfo("=== SAVE CURRENT NAME ==="); if (selectedPlayer >= localPlayers.Count) { LogWarning($"Selected player {selectedPlayer} out of range (count: {localPlayers.Count})"); return; } LocalPlayerInfo localPlayerInfo = localPlayers[selectedPlayer]; LogInfo($"Saving name for Player {localPlayerInfo.playerNumber}: '{newName}'"); if (string.IsNullOrEmpty(newName)) { LogWarning("Name is empty, ignoring."); return; } SetSavedName(localPlayerInfo.playerNumber, newName); localPlayerInfo.currentName = newName; localPlayerInfo.newName = newName; LogInfo("SUCCESS: Name saved: " + newName); RefreshLocalPlayers(); LogInfo("================================="); } private void ResetAllNames() { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) LogInfo("=== RESET ALL NAMES ==="); foreach (LocalPlayerInfo localPlayer in localPlayers) { string text = $"Player {localPlayer.playerNumber}"; LogInfo($"Resetting Player {localPlayer.playerNumber}: '{localPlayer.currentName}' -> '{text}'"); SetSavedName(localPlayer.playerNumber, text); localPlayer.currentName = text; localPlayer.newName = text; autoAppliedPlayers.Remove(localPlayer.playerNumber); if (localPlayer.isInLobby && (Object)(object)localPlayer.lobbyPlayer != (Object)null) { try { LogInfo($" Updating Player {localPlayer.playerNumber} via network..."); localPlayer.lobbyPlayer.CallCmdSetPlayerInfo(text, localPlayer.lobbyPlayer.NetworkSkillMean, localPlayer.lobbyPlayer.NetworkSkillStdDev, localPlayer.lobbyPlayer.NetworkIsHost, localPlayer.lobbyPlayer.NetworkGSID, localPlayer.lobbyPlayer.Networkplatform); } catch (Exception ex) { LogError($" Error updating Player {localPlayer.playerNumber}: {ex.Message}"); } } } RefreshLocalPlayers(); LogInfo("All names reset to default."); LogInfo("================================="); } private bool IsInLobby() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) try { Scene activeScene = SceneManager.GetActiveScene(); bool num = ((Scene)(ref activeScene)).name == "TreeHouseLobby"; bool flag = (Object)(object)LobbyManager.instance != (Object)null; bool flag2 = flag && LobbyManager.instance.IsInOnlineGame; return num && flag && flag2; } catch { return false; } } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) LogInfo("=== SCENE LOADED ==="); LogInfo($"Scene: '{((Scene)(ref scene)).name}' (buildIndex: {((Scene)(ref scene)).buildIndex})"); LogInfo($"Load mode: {mode}"); if (((Scene)(ref scene)).name == "TreeHouseLobby") { LogInfo("Entered lobby! Refreshing players..."); autoAppliedPlayers.Clear(); RefreshLocalPlayers(); } else { LogInfo("Scene '" + ((Scene)(ref scene)).name + "' is not the lobby. No action taken."); } LogInfo("===================="); } public static void ChangePlayerName(int playerNumber, string newName) { //IL_0092: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)instance == (Object)null) { LogWarning("Instance is null, cannot change name."); return; } LogInfo($"Static call: ChangePlayerName({playerNumber}, '{newName}')"); LobbyPlayer[] array = Object.FindObjectsOfType(); foreach (LobbyPlayer val in array) { if (!((Object)(object)val != (Object)null) || !val.IsLocalPlayer || val.networkNumber != playerNumber) { continue; } LogInfo($"Found local player {playerNumber}, applying name..."); try { val.CallCmdSetPlayerInfo(newName, val.NetworkSkillMean, val.NetworkSkillStdDev, val.NetworkIsHost, val.NetworkGSID, val.Networkplatform); if ((Object)(object)instance != (Object)null) { instance.SetSavedName(playerNumber, newName); instance.autoAppliedPlayers.Add(playerNumber); } LogInfo("Name changed successfully to: " + newName); break; } catch (Exception ex) { LogError("Error in static ChangePlayerName: " + ex.Message); break; } } } }