Decompiled source of ValHeimMartin3323223 v0.0.5
ValheimAdminTool.dll
Decompiled 3 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; using ValheimAdminTool; using ValheimAdminTool.Controls; using ValheimAdminTool.Menus; using ValheimAdminTool.UI; using ValheimAdminTool.Utils; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ValheimAdminTool")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ValheimAdminTool")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("7533fcaa-3250-4f45-8108-6cc00c17797a")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] internal static class ModDropdown { internal static Dropdown CreateDropdown(Transform parentTransform, string name, Vector2 position, Vector2 size, List<string> options, UnityAction<int> onValueChanged) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_013f: 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_0169: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Expected O, but got Unknown //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Expected O, but got Unknown //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Expected O, but got Unknown //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_0386: Expected O, but got Unknown //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03c1: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0427: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_04a1: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Unknown result type (might be due to invalid IL or missing references) //IL_0559: Unknown result type (might be due to invalid IL or missing references) //IL_0563: Expected O, but got Unknown GameObject val = new GameObject(name); val.transform.SetParent(parentTransform, false); Dropdown val2 = val.AddComponent<Dropdown>(); Image obj = val.AddComponent<Image>(); obj.sprite = ModMenu.sprites["dropdownBackground"]; obj.type = (Type)1; RectTransform component = val.GetComponent<RectTransform>(); component.anchoredPosition = position; component.sizeDelta = size; GameObject val3 = new GameObject("Label"); val3.transform.SetParent(val.transform, false); Text val4 = val3.AddComponent<Text>(); val4.font = Resources.GetBuiltinResource<Font>("Arial.ttf"); val4.alignment = (TextAnchor)3; ((Graphic)val4).color = Color.black; RectTransform component2 = val3.GetComponent<RectTransform>(); component2.anchorMin = new Vector2(0f, 0f); component2.anchorMax = new Vector2(1f, 1f); component2.offsetMin = new Vector2(10f, 0f); component2.offsetMax = new Vector2(-25f, 0f); GameObject val5 = new GameObject("Arrow"); val5.transform.SetParent(val.transform, false); Image val6 = val5.AddComponent<Image>(); val6.sprite = ModMenu.sprites["dropdownArrow"]; ((Graphic)val6).color = Color.white; RectTransform component3 = val5.GetComponent<RectTransform>(); component3.anchorMin = new Vector2(1f, 0.5f); component3.anchorMax = new Vector2(1f, 0.5f); component3.sizeDelta = new Vector2(20f, 20f); component3.anchoredPosition = new Vector2(-15f, 0f); GameObject val7 = new GameObject("Template"); val7.transform.SetParent(val.transform, false); RectTransform val8 = val7.AddComponent<RectTransform>(); val8.anchorMin = new Vector2(0f, 1f); val8.anchorMax = new Vector2(1f, 1f); val8.pivot = new Vector2(0.5f, 1f); val8.sizeDelta = new Vector2(0f, (float)((options.Count > 6) ? 140 : (options.Count * 20 + 10))); ((Graphic)val7.AddComponent<Image>()).color = new Color(1f, 1f, 1f, 0.9f); ScrollRect obj2 = val7.AddComponent<ScrollRect>(); obj2.horizontal = false; obj2.vertical = true; GameObject val9 = new GameObject("Viewport"); val9.transform.SetParent(val7.transform, false); RectTransform val10 = val9.AddComponent<RectTransform>(); val10.anchorMin = new Vector2(0f, 0f); val10.anchorMax = new Vector2(1f, 1f); val10.sizeDelta = new Vector2(0f, 0f); val9.AddComponent<Mask>().showMaskGraphic = false; ((Graphic)val9.AddComponent<Image>()).color = Color.clear; obj2.viewport = val10; GameObject val11 = new GameObject("Content"); val11.transform.SetParent(val9.transform, false); RectTransform val12 = val11.AddComponent<RectTransform>(); val12.anchorMin = new Vector2(0f, 1f); val12.anchorMax = new Vector2(1f, 1f); val12.pivot = new Vector2(0.5f, 1f); val12.sizeDelta = new Vector2(0f, (float)(options.Count * 20)); obj2.content = val12; GameObject val13 = new GameObject("Item"); val13.transform.SetParent(val11.transform, false); RectTransform obj3 = val13.AddComponent<RectTransform>(); obj3.anchorMin = new Vector2(0f, 1f); obj3.anchorMax = new Vector2(1f, 1f); obj3.pivot = new Vector2(0.5f, 1f); obj3.sizeDelta = new Vector2(0f, 20f); Image val14 = val13.AddComponent<Image>(); ((Graphic)val14).color = new Color(1f, 1f, 1f, 0.9f); GameObject val15 = new GameObject("Item Label"); val15.transform.SetParent(val13.transform, false); Text val16 = val15.AddComponent<Text>(); val16.font = Resources.GetBuiltinResource<Font>("Arial.ttf"); val16.alignment = (TextAnchor)3; ((Graphic)val16).color = Color.black; RectTransform component4 = val15.GetComponent<RectTransform>(); component4.anchorMin = new Vector2(0f, 0f); component4.anchorMax = new Vector2(1f, 1f); component4.offsetMin = new Vector2(10f, 0f); component4.offsetMax = new Vector2(-10f, 0f); Toggle obj4 = val13.AddComponent<Toggle>(); ((Selectable)obj4).targetGraphic = (Graphic)(object)val14; obj4.graphic = (Graphic)(object)val14; obj4.isOn = false; val9.AddComponent<RectTransform>(); ((HorizontalOrVerticalLayoutGroup)val11.AddComponent<VerticalLayoutGroup>()).childForceExpandHeight = false; val7.AddComponent<CanvasGroup>().alpha = 0f; val7.SetActive(false); val13.AddComponent<LayoutElement>().preferredHeight = 20f; val2.template = val8; val2.captionText = val4; val2.itemText = val16; val2.options.Clear(); foreach (string option in options) { val2.options.Add(new OptionData(option)); } if (onValueChanged != null) { ((UnityEvent<int>)(object)val2.onValueChanged).AddListener(onValueChanged); } val2.value = 0; val2.RefreshShownValue(); Debug.Log((object)("Dropdown created: " + name)); Debug.Log((object)("Options count: " + options.Count)); Debug.Log((object)("Arrow Image: " + (((Object)(object)val6.sprite != (Object)null) ? "Loaded" : "Not Loaded"))); Debug.Log((object)("Template Active: " + val7.activeSelf)); return val2; } } namespace ValheimAdminTool { public class DragHandler : MonoBehaviour, IBeginDragHandler, IEventSystemHandler, IDragHandler, IEndDragHandler { private Vector2 pointerOffset; private RectTransform canvasRectTransform; private RectTransform panelRectTransform; private bool clampedToLeft; private bool clampedToRight; private bool clampedToTop; private bool clampedToBottom; public void Start() { Canvas componentInParent = ((Component)this).GetComponentInParent<Canvas>(); if ((Object)(object)componentInParent != (Object)null) { ref RectTransform reference = ref canvasRectTransform; Transform transform = ((Component)componentInParent).transform; reference = (RectTransform)(object)((transform is RectTransform) ? transform : null); ref RectTransform reference2 = ref panelRectTransform; Transform transform2 = ((Component)this).transform; reference2 = (RectTransform)(object)((transform2 is RectTransform) ? transform2 : null); } clampedToLeft = false; clampedToRight = false; clampedToTop = false; clampedToBottom = false; } public void OnBeginDrag(PointerEventData eventData) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) ((Transform)panelRectTransform).SetAsLastSibling(); RectTransformUtility.ScreenPointToLocalPointInRectangle(panelRectTransform, eventData.position, eventData.pressEventCamera, ref pointerOffset); } public void OnDrag(PointerEventData eventData) { //IL_0016: 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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); if (!((Object)(object)panelRectTransform == (Object)null) && RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, eventData.position, eventData.pressEventCamera, ref val)) { ((Transform)panelRectTransform).localPosition = Vector2.op_Implicit(val - pointerOffset); ClampToWindow(); Vector2 val2 = Vector2.op_Implicit(((Transform)panelRectTransform).localPosition); Rect rect; if (clampedToRight) { rect = canvasRectTransform.rect; float num = ((Rect)(ref rect)).width * 0.5f; rect = panelRectTransform.rect; val2.x = num - ((Rect)(ref rect)).width * (1f - panelRectTransform.pivot.x); } else if (clampedToLeft) { rect = canvasRectTransform.rect; float num2 = (0f - ((Rect)(ref rect)).width) * 0.5f; rect = panelRectTransform.rect; val2.x = num2 + ((Rect)(ref rect)).width * panelRectTransform.pivot.x; } if (clampedToTop) { rect = canvasRectTransform.rect; float num3 = ((Rect)(ref rect)).height * 0.5f; rect = panelRectTransform.rect; val2.y = num3 - ((Rect)(ref rect)).height * (1f - panelRectTransform.pivot.y); } else if (clampedToBottom) { rect = canvasRectTransform.rect; float num4 = (0f - ((Rect)(ref rect)).height) * 0.5f; rect = panelRectTransform.rect; val2.y = num4 + ((Rect)(ref rect)).height * panelRectTransform.pivot.y; } ((Transform)panelRectTransform).localPosition = Vector2.op_Implicit(val2); } } public void OnEndDrag(PointerEventData eventData) { } private void ClampToWindow() { Vector3[] array = (Vector3[])(object)new Vector3[4]; Vector3[] array2 = (Vector3[])(object)new Vector3[4]; canvasRectTransform.GetWorldCorners(array); panelRectTransform.GetWorldCorners(array2); if (array2[2].x > array[2].x) { if (!clampedToRight) { clampedToRight = true; } } else if (clampedToRight) { clampedToRight = false; } else if (array2[0].x < array[0].x) { if (!clampedToLeft) { clampedToLeft = true; } } else if (clampedToLeft) { clampedToLeft = false; } if (array2[2].y > array[2].y) { if (!clampedToTop) { clampedToTop = true; } } else if (clampedToTop) { clampedToTop = false; } else if (array2[0].y < array[0].y) { if (!clampedToBottom) { clampedToBottom = true; } } else if (clampedToBottom) { clampedToBottom = false; } } } internal class ModConfig { internal static ConfigEntry<bool> _isModEnabled; internal static ConfigEntry<KeyboardShortcut> showMenuHotkey; internal static ConfigEntry<KeyboardShortcut> quickHealKey; internal static ConfigEntry<KeyboardShortcut> godModeHotkey; internal static ConfigEntry<KeyboardShortcut> debugModeKey; internal static ConfigEntry<KeyboardShortcut> staminaModeKey; internal static ConfigEntry<KeyboardShortcut> noClip; internal static ConfigEntry<KeyboardShortcut> flyMode; internal static void CreateConfig(ConfigFile config) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: 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) _isModEnabled = config.Bind<bool>("_Global", "isModEnabled", true, "Globally enable or disable this mod."); showMenuHotkey = config.Bind<KeyboardShortcut>("Hotkeys", "Show Menu", new KeyboardShortcut((KeyCode)284, Array.Empty<KeyCode>()), (ConfigDescription)null); quickHealKey = config.Bind<KeyboardShortcut>("Hotkeys", "Quick Heal", new KeyboardShortcut((KeyCode)104, Array.Empty<KeyCode>()), (ConfigDescription)null); godModeHotkey = config.Bind<KeyboardShortcut>("Hotkeys", "God Mode", new KeyboardShortcut((KeyCode)291, Array.Empty<KeyCode>()), (ConfigDescription)null); debugModeKey = config.Bind<KeyboardShortcut>("Hotkeys", "Debug Mode", new KeyboardShortcut((KeyCode)290, Array.Empty<KeyCode>()), (ConfigDescription)null); staminaModeKey = config.Bind<KeyboardShortcut>("Hotkeys", "Stamina Mode", new KeyboardShortcut((KeyCode)289, Array.Empty<KeyCode>()), (ConfigDescription)null); noClip = config.Bind<KeyboardShortcut>("Hotkeys", "No Clip", new KeyboardShortcut((KeyCode)292, Array.Empty<KeyCode>()), (ConfigDescription)null); flyMode = config.Bind<KeyboardShortcut>("Hotkeys", "Fly Mode", new KeyboardShortcut((KeyCode)293, Array.Empty<KeyCode>()), (ConfigDescription)null); } } public class ModMenu : MonoBehaviour { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__20_0; public static UnityAction <>9__20_1; public static UnityAction <>9__20_2; public static UnityAction <>9__20_3; public static UnityAction <>9__20_4; public static UnityAction <>9__20_5; internal void <SetupMainMenu>b__20_0() { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer01"]).gameObject.SetActive(true); ((Component)containerTransforms["CheatsContainer"]).gameObject.SetActive(true); } internal void <SetupMainMenu>b__20_1() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00e2: Unknown result type (might be due to invalid IL or missing references) DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer02"]).gameObject.SetActive(true); ((Component)containerTransforms["SkillsContainer"]).gameObject.SetActive(true); if ((Object)(object)SkillsMenu.swordsSlider != (Object)null && (Object)(object)SkillsMenu.swordsSlider.handleRect != (Object)null) { SkillsMenu.swordsSlider.handleRect.sizeDelta = new Vector2(20f, 20f); float num = (SkillsMenu.swordsSlider.value - SkillsMenu.swordsSlider.minValue) / (SkillsMenu.swordsSlider.maxValue - SkillsMenu.swordsSlider.minValue) * (((Component)SkillsMenu.swordsSlider).GetComponent<RectTransform>().sizeDelta.x - SkillsMenu.swordsSlider.handleRect.sizeDelta.x); SkillsMenu.swordsSlider.handleRect.anchoredPosition = new Vector2(num, 0f); } } internal void <SetupMainMenu>b__20_2() { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer03"]).gameObject.SetActive(true); ((Component)containerTransforms["ToolsContainer"]).gameObject.SetActive(true); } internal void <SetupMainMenu>b__20_3() { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer04"]).gameObject.SetActive(true); ((Component)containerTransforms["ESPContainer"]).gameObject.SetActive(true); } internal void <SetupMainMenu>b__20_4() { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer05"]).gameObject.SetActive(true); ((Component)containerTransforms["ItemsContainer"]).gameObject.SetActive(true); } internal void <SetupMainMenu>b__20_5() { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer06"]).gameObject.SetActive(true); ((Component)containerTransforms["EntitiesContainer"]).gameObject.SetActive(true); } } public static bool displayMainMenu = false; public static bool manualCursorEnabled = false; public static bool isInitialized = false; public static GameObject canvasObject; public static Canvas mainCanvas; public static GameObject backgroundImageObject; public static RectTransform backgroundImageTransform; public static IDictionary<string, GameObject> containerObjects = new Dictionary<string, GameObject>(); public static IDictionary<string, RectTransform> containerTransforms = new Dictionary<string, RectTransform>(); public static IDictionary<string, Texture2D> textures = new Dictionary<string, Texture2D>(); public static IDictionary<string, Sprite> sprites = new Dictionary<string, Sprite>(); private void Start() { } private void LateUpdate() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) KeyboardShortcut value = ModConfig.showMenuHotkey.Value; if (!((KeyboardShortcut)(ref value)).IsDown() && (Object)(object)ZNet.instance != (Object)null) { ValheimAdminTool.playerIsLocalOrAdmin = ZNet.instance.LocalPlayerIsAdminOrHost(); if (ValheimAdminTool.playerIsLocalOrAdmin) { displayMainMenu = !displayMainMenu; } } if (ValheimAdminTool.playerIsLocalOrAdmin) { HotkeyHandler(); } if (isInitialized) { SkillsMenu.UpdateSkills(); ESPMenu.Update(); ItemsMenu.Update(); } } private void OnGUI() { if ((Object)(object)Player.m_localPlayer == (Object)null || !ValheimAdminTool.playerIsLocalOrAdmin) { return; } if (displayMainMenu) { if ((Object)(object)mainCanvas == (Object)null && !isInitialized) { SetupSprites(); SetupCanvas(); SetupMainBackgroundImage(); SetupMainMenu(); } ((Behaviour)mainCanvas).enabled = true; ShowCursor(flag: true); } else { if ((Object)(object)mainCanvas != (Object)null) { ((Behaviour)mainCanvas).enabled = false; } ShowCursor(flag: false); } ESPMenu.DrawESP(); } private static void HotkeyHandler() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) if (!ValheimAdminTool.playerIsLocalOrAdmin || (Object.op_Implicit((Object)(object)Chat.instance) && Chat.instance.HasFocus()) || Console.IsVisible() || TextInput.IsVisible() || StoreGui.IsVisible() || InventoryGui.IsVisible() || Minimap.IsOpen()) { return; } KeyboardShortcut value = ModConfig.quickHealKey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { ((Character)Player.m_localPlayer).SetHealth(((Character)Player.m_localPlayer).GetMaxHealth()); ((Character)Player.m_localPlayer).Message((MessageType)1, "<color=\"blue\">Healing Player</color>", 0, (Sprite)null); } value = ModConfig.godModeHotkey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { CheatsMenu.sGodMode = !CheatsMenu.sGodMode; Player.m_localPlayer.SetGodMode(CheatsMenu.sGodMode); ((Character)Player.m_localPlayer).Message((MessageType)1, CheatsMenu.sGodMode ? "<color=\"green\">Enabled God Mode</color>" : "<color=\"red\">Disabled God Mode</color>", 0, (Sprite)null); } value = ModConfig.debugModeKey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { CheatsMenu.sDebugMode = !CheatsMenu.sDebugMode; if (CheatsMenu.sDebugMode) { Player.m_debugMode = true; } else { Player.m_debugMode = false; } ((Character)Player.m_localPlayer).Message((MessageType)1, CheatsMenu.sDebugMode ? "<color=\"green\">Enabled Debug Mode</color>" : "<color=\"red\">Disabled Debug Mode</color>", 0, (Sprite)null); } value = ModConfig.staminaModeKey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { CheatsMenu.sUnlimitedStamina = !CheatsMenu.sUnlimitedStamina; ((Character)Player.m_localPlayer).Message((MessageType)1, CheatsMenu.sUnlimitedStamina ? "<color=\"green\">Enabled Unlimited Stamina</color>" : "<color=\"red\">Disabled Unlimited Stamina</color>", 0, (Sprite)null); } value = ModConfig.noClip.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { CheatsMenu.sNoClip = !CheatsMenu.sNoClip; Player.m_localPlayer.m_debugFly = CheatsMenu.sNoClip; Collider[] componentsInChildren = ((Component)Player.m_localPlayer).GetComponentsInChildren<Collider>(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].enabled = !CheatsMenu.sNoClip; } ((Character)Player.m_localPlayer).Message((MessageType)1, CheatsMenu.sNoClip ? "<color=\"green\">Enabled No Clip</color>" : "<color=\"red\">Disabled No Clip</color>", 0, (Sprite)null); } value = ModConfig.flyMode.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { CheatsMenu.sFlyMode = !CheatsMenu.sFlyMode; Player.m_localPlayer.m_debugFly = CheatsMenu.sFlyMode; ((Character)Player.m_localPlayer).Message((MessageType)1, CheatsMenu.sFlyMode ? "<color=\"green\">Enabled Fly Mode</color>" : "<color=\"red\">Disabled Fly Mode</color>", 0, (Sprite)null); } } private static void SetupSprites() { SetupSprite("backgroundImage", "background.png"); SetupSprite("buttonNormal", "button_normal.png"); SetupSprite("buttonHover", "button_highlighted.png"); SetupSprite("buttonPressed", "button_pressed.png"); SetupSprite("scrollForeground", "scroll_thumb.png"); SetupSprite("switchOn", "switch_on.png"); SetupSprite("switchOff", "switch_off.png"); SetupSprite("switchBackground", "switch_background.png"); SetupSprite("switchCircle", "switch_circle.png"); SetupSprite("dropdownArrow", "DropdownArrow.png"); SetupSprite("dropdownBackground", "DropdownBackground.png"); } private static void SetupCanvas() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) canvasObject = new GameObject(); ((Object)canvasObject).name = "MainCanvas"; canvasObject.AddComponent<Canvas>(); CanvasScaler obj = canvasObject.AddComponent<CanvasScaler>(); canvasObject.AddComponent<GraphicRaycaster>(); mainCanvas = canvasObject.GetComponent<Canvas>(); mainCanvas.renderMode = (RenderMode)0; obj.referencePixelsPerUnit = 100f; obj.referenceResolution = new Vector2(1920f, 1080f); } private static void SetupMainBackgroundImage() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) backgroundImageObject = new GameObject(); backgroundImageObject.transform.parent = canvasObject.transform; ((Object)backgroundImageObject).name = "backgroundImage"; Image obj = backgroundImageObject.AddComponent<Image>(); obj.sprite = sprites["backgroundImage"]; ((Graphic)obj).color = Color.white; backgroundImageTransform = ((Component)obj).GetComponent<RectTransform>(); ((Transform)backgroundImageTransform).localPosition = new Vector3(0f, 0f, 0f); backgroundImageTransform.sizeDelta = new Vector2(1100f, 600f); } private static void SetupSprite(string name, string texture) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (!textures.ContainsKey(name)) { Texture2D val = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources." + texture)); Sprite value = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), Vector2.zero); textures.Add(name, val); sprites.Add(name, value); } } private static void DeactivateAllTransforms() { ((Component)containerTransforms["CheatsContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["SkillsContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["ToolsContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["ESPContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["ItemsContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["EntitiesContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["AdminContainer"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer01"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer02"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer03"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer04"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer05"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer06"]).gameObject.SetActive(false); ((Component)containerTransforms["ScrollContainer07"]).gameObject.SetActive(false); } private static void SetupMainMenu() { //IL_002d: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00cc: Expected O, but got Unknown //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Expected O, but got Unknown //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Expected O, but got Unknown //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Expected O, but got Unknown //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_021a: 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_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Expected O, but got Unknown //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03dd: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_046b: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Unknown result type (might be due to invalid IL or missing references) //IL_048e: Unknown result type (might be due to invalid IL or missing references) //IL_0493: Unknown result type (might be due to invalid IL or missing references) //IL_0619: Unknown result type (might be due to invalid IL or missing references) //IL_061e: Unknown result type (might be due to invalid IL or missing references) //IL_0627: Unknown result type (might be due to invalid IL or missing references) //IL_06a6: Unknown result type (might be due to invalid IL or missing references) //IL_06ab: Unknown result type (might be due to invalid IL or missing references) //IL_06b4: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Expected O, but got Unknown //IL_0735: Unknown result type (might be due to invalid IL or missing references) //IL_073a: Unknown result type (might be due to invalid IL or missing references) //IL_0743: Unknown result type (might be due to invalid IL or missing references) //IL_06fa: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_0705: Expected O, but got Unknown //IL_07c4: Unknown result type (might be due to invalid IL or missing references) //IL_07c9: Unknown result type (might be due to invalid IL or missing references) //IL_07d2: Unknown result type (might be due to invalid IL or missing references) //IL_0789: Unknown result type (might be due to invalid IL or missing references) //IL_078e: Unknown result type (might be due to invalid IL or missing references) //IL_0794: Expected O, but got Unknown //IL_0853: Unknown result type (might be due to invalid IL or missing references) //IL_0858: Unknown result type (might be due to invalid IL or missing references) //IL_0861: Unknown result type (might be due to invalid IL or missing references) //IL_0818: Unknown result type (might be due to invalid IL or missing references) //IL_081d: Unknown result type (might be due to invalid IL or missing references) //IL_0823: Expected O, but got Unknown //IL_08e2: Unknown result type (might be due to invalid IL or missing references) //IL_08e7: Unknown result type (might be due to invalid IL or missing references) //IL_08f0: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08ac: Unknown result type (might be due to invalid IL or missing references) //IL_08b2: Expected O, but got Unknown //IL_095f: Unknown result type (might be due to invalid IL or missing references) //IL_096e: Unknown result type (might be due to invalid IL or missing references) //IL_098c: Unknown result type (might be due to invalid IL or missing references) //IL_09a0: Unknown result type (might be due to invalid IL or missing references) //IL_09a5: Unknown result type (might be due to invalid IL or missing references) //IL_09c9: Unknown result type (might be due to invalid IL or missing references) //IL_09d8: Unknown result type (might be due to invalid IL or missing references) //IL_09f6: Unknown result type (might be due to invalid IL or missing references) //IL_0a0a: Unknown result type (might be due to invalid IL or missing references) //IL_0a0f: Unknown result type (might be due to invalid IL or missing references) //IL_0a33: Unknown result type (might be due to invalid IL or missing references) //IL_0a42: Unknown result type (might be due to invalid IL or missing references) //IL_0a60: Unknown result type (might be due to invalid IL or missing references) //IL_0a74: Unknown result type (might be due to invalid IL or missing references) //IL_0a79: Unknown result type (might be due to invalid IL or missing references) //IL_0a9d: Unknown result type (might be due to invalid IL or missing references) //IL_0aac: Unknown result type (might be due to invalid IL or missing references) //IL_0aca: Unknown result type (might be due to invalid IL or missing references) //IL_0ade: Unknown result type (might be due to invalid IL or missing references) //IL_0ae3: Unknown result type (might be due to invalid IL or missing references) //IL_0b07: Unknown result type (might be due to invalid IL or missing references) //IL_0b16: Unknown result type (might be due to invalid IL or missing references) //IL_0b34: Unknown result type (might be due to invalid IL or missing references) //IL_0b48: Unknown result type (might be due to invalid IL or missing references) //IL_0b4d: Unknown result type (might be due to invalid IL or missing references) //IL_0b71: Unknown result type (might be due to invalid IL or missing references) //IL_0b80: Unknown result type (might be due to invalid IL or missing references) //IL_0b9e: Unknown result type (might be due to invalid IL or missing references) //IL_0bb2: Unknown result type (might be due to invalid IL or missing references) //IL_0bb7: Unknown result type (might be due to invalid IL or missing references) //IL_0bdb: Unknown result type (might be due to invalid IL or missing references) //IL_0bea: Unknown result type (might be due to invalid IL or missing references) //IL_0c08: Unknown result type (might be due to invalid IL or missing references) //IL_0c1c: Unknown result type (might be due to invalid IL or missing references) //IL_0c21: Unknown result type (might be due to invalid IL or missing references) //IL_0936: Unknown result type (might be due to invalid IL or missing references) //IL_093b: Unknown result type (might be due to invalid IL or missing references) //IL_0941: Expected O, but got Unknown int num = 303; int num2 = 47; int num3 = 10; int num4 = 0; int num5 = 211; int fontSize = 18; new Color(1f, 0.5686f, 0.0039f, 1f); backgroundImageObject.AddComponent<DragHandler>(); ModContainer.SetupContainer(backgroundImageObject.transform, "MenuContainer", Color.clear, new Vector3(-550f, -300f, 0f), Vector2.op_Implicit(new Vector2(342f, 506f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "CheatsContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "SkillsContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "ToolsContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "ESPContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "ItemsContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "EntitiesContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "AdminContainer", Color.clear, new Vector3(-150f, -750f, 0f), Vector2.op_Implicit(new Vector2(550f, 750f)), scroll: false, new RectTransform()); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer01", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["CheatsContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer02", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["SkillsContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer03", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["ToolsContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer04", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["ESPContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer05", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["ItemsContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer06", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["EntitiesContainer"]); ModContainer.SetupContainer(backgroundImageObject.transform, "ScrollContainer07", Color.white, new Vector3(-207f, -300f, 0f), Vector2.op_Implicit(new Vector2(752f, 506f)), scroll: true, containerTransforms["AdminContainer"]); ((Component)containerTransforms["CheatsContainer"]).transform.SetParent(containerObjects["ScrollContainer01"].transform); ((Component)containerTransforms["SkillsContainer"]).transform.SetParent(containerObjects["ScrollContainer02"].transform); ((Component)containerTransforms["ToolsContainer"]).transform.SetParent(containerObjects["ScrollContainer03"].transform); ((Component)containerTransforms["ESPContainer"]).transform.SetParent(containerObjects["ScrollContainer04"].transform); ((Component)containerTransforms["ItemsContainer"]).transform.SetParent(containerObjects["ScrollContainer05"].transform); ((Component)containerTransforms["EntitiesContainer"]).transform.SetParent(containerObjects["ScrollContainer06"].transform); DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer01"]).gameObject.SetActive(true); ((Component)containerTransforms["CheatsContainer"]).gameObject.SetActive(true); RectTransform transform = containerTransforms["MenuContainer"]; Vector2 position = Vector2.op_Implicit(new Vector3((float)num4, (float)num5, 0f)); Vector2 size = new Vector2((float)num, (float)num2); Sprite normalSprite = sprites["buttonNormal"]; Sprite hoverSprite = sprites["buttonHover"]; Sprite activeSprite = sprites["buttonPressed"]; object obj = <>c.<>9__20_0; if (obj == null) { UnityAction val = delegate { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer01"]).gameObject.SetActive(true); ((Component)containerTransforms["CheatsContainer"]).gameObject.SetActive(true); }; <>c.<>9__20_0 = val; obj = (object)val; } ModButton.CreateButton((Transform)(object)transform, "CheatsMenu", "Cheats", fontSize, position, size, normalSprite, hoverSprite, activeSprite, (UnityAction)obj); RectTransform transform2 = containerTransforms["MenuContainer"]; Vector2 position2 = Vector2.op_Implicit(new Vector3((float)num4, (float)(num5 - (num2 + num3)), 0f)); Vector2 size2 = new Vector2((float)num, (float)num2); Sprite normalSprite2 = sprites["buttonNormal"]; Sprite hoverSprite2 = sprites["buttonHover"]; Sprite activeSprite2 = sprites["buttonPressed"]; object obj2 = <>c.<>9__20_1; if (obj2 == null) { UnityAction val2 = delegate { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00e2: Unknown result type (might be due to invalid IL or missing references) DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer02"]).gameObject.SetActive(true); ((Component)containerTransforms["SkillsContainer"]).gameObject.SetActive(true); if ((Object)(object)SkillsMenu.swordsSlider != (Object)null && (Object)(object)SkillsMenu.swordsSlider.handleRect != (Object)null) { SkillsMenu.swordsSlider.handleRect.sizeDelta = new Vector2(20f, 20f); float num6 = (SkillsMenu.swordsSlider.value - SkillsMenu.swordsSlider.minValue) / (SkillsMenu.swordsSlider.maxValue - SkillsMenu.swordsSlider.minValue) * (((Component)SkillsMenu.swordsSlider).GetComponent<RectTransform>().sizeDelta.x - SkillsMenu.swordsSlider.handleRect.sizeDelta.x); SkillsMenu.swordsSlider.handleRect.anchoredPosition = new Vector2(num6, 0f); } }; <>c.<>9__20_1 = val2; obj2 = (object)val2; } ModButton.CreateButton((Transform)(object)transform2, "SkillsMenu", "Skills", fontSize, position2, size2, normalSprite2, hoverSprite2, activeSprite2, (UnityAction)obj2); RectTransform transform3 = containerTransforms["MenuContainer"]; Vector2 position3 = Vector2.op_Implicit(new Vector3((float)num4, (float)(num5 - 2 * (num2 + num3)), 0f)); Vector2 size3 = new Vector2((float)num, (float)num2); Sprite normalSprite3 = sprites["buttonNormal"]; Sprite hoverSprite3 = sprites["buttonHover"]; Sprite activeSprite3 = sprites["buttonPressed"]; object obj3 = <>c.<>9__20_2; if (obj3 == null) { UnityAction val3 = delegate { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer03"]).gameObject.SetActive(true); ((Component)containerTransforms["ToolsContainer"]).gameObject.SetActive(true); }; <>c.<>9__20_2 = val3; obj3 = (object)val3; } ModButton.CreateButton((Transform)(object)transform3, "ToolsMenu", "Tools", fontSize, position3, size3, normalSprite3, hoverSprite3, activeSprite3, (UnityAction)obj3); RectTransform transform4 = containerTransforms["MenuContainer"]; Vector2 position4 = Vector2.op_Implicit(new Vector3((float)num4, (float)(num5 - 3 * (num2 + num3)), 0f)); Vector2 size4 = new Vector2((float)num, (float)num2); Sprite normalSprite4 = sprites["buttonNormal"]; Sprite hoverSprite4 = sprites["buttonHover"]; Sprite activeSprite4 = sprites["buttonPressed"]; object obj4 = <>c.<>9__20_3; if (obj4 == null) { UnityAction val4 = delegate { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer04"]).gameObject.SetActive(true); ((Component)containerTransforms["ESPContainer"]).gameObject.SetActive(true); }; <>c.<>9__20_3 = val4; obj4 = (object)val4; } ModButton.CreateButton((Transform)(object)transform4, "ESPMenu", "ESP", fontSize, position4, size4, normalSprite4, hoverSprite4, activeSprite4, (UnityAction)obj4); RectTransform transform5 = containerTransforms["MenuContainer"]; Vector2 position5 = Vector2.op_Implicit(new Vector3((float)num4, (float)(num5 - 4 * (num2 + num3)), 0f)); Vector2 size5 = new Vector2((float)num, (float)num2); Sprite normalSprite5 = sprites["buttonNormal"]; Sprite hoverSprite5 = sprites["buttonHover"]; Sprite activeSprite5 = sprites["buttonPressed"]; object obj5 = <>c.<>9__20_4; if (obj5 == null) { UnityAction val5 = delegate { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer05"]).gameObject.SetActive(true); ((Component)containerTransforms["ItemsContainer"]).gameObject.SetActive(true); }; <>c.<>9__20_4 = val5; obj5 = (object)val5; } ModButton.CreateButton((Transform)(object)transform5, "ItemsMenu", "Items", fontSize, position5, size5, normalSprite5, hoverSprite5, activeSprite5, (UnityAction)obj5); RectTransform transform6 = containerTransforms["MenuContainer"]; Vector2 position6 = Vector2.op_Implicit(new Vector3((float)num4, (float)(num5 - 5 * (num2 + num3)), 0f)); Vector2 size6 = new Vector2((float)num, (float)num2); Sprite normalSprite6 = sprites["buttonNormal"]; Sprite hoverSprite6 = sprites["buttonHover"]; Sprite activeSprite6 = sprites["buttonPressed"]; object obj6 = <>c.<>9__20_5; if (obj6 == null) { UnityAction val6 = delegate { DeactivateAllTransforms(); ((Component)containerTransforms["ScrollContainer06"]).gameObject.SetActive(true); ((Component)containerTransforms["EntitiesContainer"]).gameObject.SetActive(true); }; <>c.<>9__20_5 = val6; obj6 = (object)val6; } ModButton.CreateButton((Transform)(object)transform6, "EntitiesMenu", "Entities", fontSize, position6, size6, normalSprite6, hoverSprite6, activeSprite6, (UnityAction)obj6); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["CheatsContainer"], new Vector2(-34f, -10f), new Vector2(260f, 329f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Cheats", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["CheatsContainer"], new Vector2(246f, -10f), new Vector2(160f, 161f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Other", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["ToolsContainer"], new Vector2(-34f, -10f), new Vector2(282f, 138f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Death Menu", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["ToolsContainer"], new Vector2(-34f, -160f), new Vector2(282f, 86f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Ship Hacks", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["ToolsContainer"], new Vector2(-34f, -258f), new Vector2(282f, 86f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Food Hacks", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["ToolsContainer"], new Vector2(-34f, -356f), new Vector2(282f, 63f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Experimental", new Vector2(50f, 2f), Color.black); ModGroupBox.CreateGroupBox((Transform)(object)containerTransforms["ToolsContainer"], new Vector2(268f, -10f), new Vector2(160f, 241f), 2f, new Color(1f, 0.6f, 0.003921569f, 1f), "Boss Powers", new Vector2(50f, 2f), Color.black); CheatsMenu.CreateUI(); SkillsMenu.CreateUI(); ToolsMenu.CreateUI(); ESPMenu.CreateUI(); ItemsMenu.CreateUI(); EntitiesMenu.CreateUI(); isInitialized = true; } public void ShowCursor(bool flag) { if (flag) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; ((Behaviour)GameCamera.instance).enabled = false; ((Behaviour)((Component)Player.m_localPlayer).GetComponent<PlayerController>()).enabled = false; manualCursorEnabled = true; } else if (manualCursorEnabled) { Cursor.lockState = (CursorLockMode)1; Cursor.visible = false; ((Behaviour)GameCamera.instance).enabled = true; ((Behaviour)((Component)Player.m_localPlayer).GetComponent<PlayerController>()).enabled = true; manualCursorEnabled = false; } } } public class Switch : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { private Image background; private Image circle; private bool isOn; public Sprite onBackgroundSprite; public Sprite offBackgroundSprite; public Sprite circleSprite; public UnityEvent OnSwitchOn = new UnityEvent(); public UnityEvent OnSwitchOff = new UnityEvent(); private void Start() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0081: 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) background = ((Component)this).GetComponent<Image>(); if ((Object)(object)background != (Object)null) { background.sprite = offBackgroundSprite; } isOn = false; GameObject val = new GameObject("Circle"); val.transform.SetParent(((Component)this).transform, false); circle = val.AddComponent<Image>(); circle.sprite = circleSprite; ((Graphic)circle).rectTransform.anchoredPosition = new Vector2(-13f, 0f); ((Graphic)circle).rectTransform.sizeDelta = new Vector2(15.28f, 15.28f); } public void OnPointerClick(PointerEventData eventData) { isOn = !isOn; if ((Object)(object)background != (Object)null) { background.sprite = (isOn ? onBackgroundSprite : offBackgroundSprite); } ((MonoBehaviour)this).StartCoroutine(AnimateSwitch(isOn)); } private IEnumerator AnimateSwitch(bool isOn) { float duration = 0.2f; float start = (isOn ? (-13f) : 13f); float end = (isOn ? 13f : (-13f)); float timeElapsed = 0f; while (timeElapsed < duration) { float num = Mathf.Lerp(start, end, timeElapsed / duration); ((Graphic)circle).rectTransform.anchoredPosition = new Vector2(num, 0f); timeElapsed += Time.deltaTime; yield return null; } ((Graphic)circle).rectTransform.anchoredPosition = new Vector2(end, 0f); if (isOn) { UnityEvent onSwitchOn = OnSwitchOn; if (onSwitchOn != null) { onSwitchOn.Invoke(); } } else { UnityEvent onSwitchOff = OnSwitchOff; if (onSwitchOff != null) { onSwitchOff.Invoke(); } } } } [BepInPlugin("icecub.ValheimAdminTool", "ValheimAdminTool", "0.0.7")] public class ValheimAdminTool : BaseUnityPlugin { public const string PluginGUID = "icecub.ValheimAdminTool"; public const string PluginName = "ValheimAdminTool"; public const string PluginVersion = "0.0.7"; public static bool playerIsLocalOrAdmin; private static ModMenu modInstance; public static Harmony harmony; private void Awake() { //IL_000b: 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_0033: Expected O, but got Unknown ModConfig.CreateConfig(((BaseUnityPlugin)this).Config); modInstance = new GameObject().AddComponent<ModMenu>(); Object.DontDestroyOnLoad((Object)(object)modInstance); harmony = new Harmony("icecub.ValheimAdminTool"); harmony.PatchAll(Assembly.GetExecutingAssembly()); } public static void ResetMod() { //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Expected O, but got Unknown //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Expected O, but got Unknown //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Expected O, but got Unknown //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Expected O, but got Unknown //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: 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_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Expected O, but got Unknown //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Expected O, but got Unknown //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Expected O, but got Unknown //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Expected O, but got Unknown //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Expected O, but got Unknown //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Expected O, but got Unknown //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Expected O, but got Unknown //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Expected O, but got Unknown //IL_045e: Unknown result type (might be due to invalid IL or missing references) //IL_0468: Expected O, but got Unknown //IL_046d: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Expected O, but got Unknown //IL_047c: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Expected O, but got Unknown //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_0495: Expected O, but got Unknown //IL_049a: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Expected O, but got Unknown //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Expected O, but got Unknown //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Expected O, but got Unknown CheatsMenu.sGodMode = false; CheatsMenu.sDebugMode = false; CheatsMenu.sUnlimitedStamina = false; CheatsMenu.sUnlimitedEitr = false; CheatsMenu.sFlyMode = false; CheatsMenu.sNoClip = false; CheatsMenu.sFreeCam = false; CheatsMenu.sGhostMode = false; CheatsMenu.sNoCarryLimit = false; CheatsMenu.sNoBuildCost = false; CheatsMenu.sBuildEverywhere = false; CheatsMenu.sNoStructureDmg = false; ModMenu.displayMainMenu = false; ModMenu.manualCursorEnabled = false; ModMenu.isInitialized = false; ModMenu.canvasObject = null; ModMenu.mainCanvas = null; ModMenu.backgroundImageObject = null; ModMenu.backgroundImageTransform = null; ModMenu.containerObjects.Clear(); ModMenu.containerTransforms.Clear(); ModMenu.textures.Clear(); ModMenu.sprites.Clear(); ToolsMenu.noFoodDegrade = false; ToolsMenu.noFoodTimeout = false; ToolsMenu.enableWindInBack = false; ToolsMenu.enableShipSpeedHack = false; ToolsMenu.disableItemLoss = false; ToolsMenu.disableFoodLoss = false; ToolsMenu.disableStatusLoss = false; ToolsMenu.disableSkillLoss = false; ToolsMenu.disableDurabilityLoss = false; ItemsMenu.armorTabPageObject = new GameObject("Armor"); ItemsMenu.toolsTabPageObject = new GameObject("Tools"); ItemsMenu.weaponsTabPageObject = new GameObject("Weapons"); ItemsMenu.ammoTabPageObject = new GameObject("Ammo"); ItemsMenu.resourcesTabPageObject = new GameObject("Resources"); ItemsMenu.foodTabPageObject = new GameObject("Food"); ItemsMenu.potionsTabPageObject = new GameObject("Potions"); ItemsMenu.miscellaneousTabPageObject = new GameObject("Miscellaneous"); ItemsMenu.s_updateTimer = 0f; ItemsMenu.s_updateTimerInterval = 1.5f; ItemsMenu.itemNames.Clear(); ItemsMenu.tabButtons = null; ItemsMenu.customInputField = null; ESPMenu.s_playersColor = Color.magenta; ESPMenu.s_monstersAndOthersColor = Color.red; ESPMenu.s_tamedMonstersColor = new Color(1f, 0.3f, 0f, 1f); ESPMenu.s_pickablesColor = new Color(0.13f, 0.58f, 0.89f, 1f); ESPMenu.s_dropsColor = new Color(0.13f, 0.72f, 0.11f, 1f); ESPMenu.s_depositsColor = Color.yellow; ESPMenu.s_cavesColor = Color.cyan; ESPMenu.s_trollsColor = Color.cyan; ESPMenu.s_mountainCaveColor = Color.cyan; ESPMenu.s_sunkenCryptColor = Color.cyan; ESPMenu.meadowsTabPageObject = new GameObject("Meadows"); ESPMenu.blackForestTabPageObject = new GameObject("Black Forest"); ESPMenu.oceanTabPageObject = new GameObject("Ocean"); ESPMenu.swampTabPageObject = new GameObject("Swamp"); ESPMenu.mountainTabPageObject = new GameObject("Mountain"); ESPMenu.plainsTabPageObject = new GameObject("Plains"); ESPMenu.mistlandsTabPageObject = new GameObject("Mistlands"); ESPMenu.ashlandsTabPageObject = new GameObject("Ashlands"); ESPMenu.deepNorthTabPageObject = new GameObject("Deep North"); ESPMenu.s_characters.Clear(); ESPMenu.s_pickables.Clear(); ESPMenu.s_pickableItems.Clear(); ESPMenu.s_drops.Clear(); ESPMenu.s_depositsDestructible.Clear(); ESPMenu.s_mineRock5s.Clear(); ESPMenu.s_caves.Clear(); ESPMenu.s_trolls.Clear(); ESPMenu.s_mountainCaves.Clear(); ESPMenu.s_sunkenCrypts.Clear(); ESPMenu.tabButtons = null; ESPMenu.s_showESP = false; ESPMenu.s_showPlayerESP = false; ESPMenu.s_showMonsterESP = false; ESPMenu.s_showDroppedESP = false; ESPMenu.s_showDepositESP = false; ESPMenu.s_showPickableESP = false; ESPMenu.s_showCaves = false; ESPMenu.s_showTrolls = false; ESPMenu.s_showMountains = false; ESPMenu.s_showSunken = false; ESPMenu.s_showBoar = false; ESPMenu.s_showNeck = false; ESPMenu.s_showGreyling = false; ESPMenu.s_showGreydwarf = false; ESPMenu.s_showGreydwarfBrute = false; ESPMenu.s_showGreydwarfShaman = false; ESPMenu.s_showTroll = false; ESPMenu.s_showSkeleton = false; ESPMenu.s_showRancidRemains = false; ESPMenu.s_showGhost = false; ESPMenu.s_showRoot = false; ESPMenu.s_showSerpent = false; ESPMenu.s_showAbomination = false; ESPMenu.s_showBlob = false; ESPMenu.s_showOozer = false; ESPMenu.s_showDraugr = false; ESPMenu.s_showDraugrElite = false; ESPMenu.s_showLeech = false; ESPMenu.s_showSurtling = false; ESPMenu.s_showWraith = false; ESPMenu.s_showWolf = false; ESPMenu.s_showDrake = false; ESPMenu.s_showFenring = false; ESPMenu.s_showStoneGolem = false; ESPMenu.s_showBat = false; ESPMenu.s_showUlv = false; ESPMenu.s_showCultist = false; ESPMenu.s_showDeathsquito = false; ESPMenu.s_showLox = false; ESPMenu.s_showFuling = false; ESPMenu.s_showFulingBerserker = false; ESPMenu.s_showFulingShaman = false; ESPMenu.s_showGrowth = false; ESPMenu.s_showSeeker = false; ESPMenu.s_showSeekerSoldier = false; ESPMenu.s_showSeekerBrood = false; ESPMenu.s_showGjall = false; ESPMenu.s_showTick = false; ESPMenu.s_showDvergrRogue = false; ESPMenu.s_showDvergrMage = false; ESPMenu.s_showDeer = false; ESPMenu.s_showFish = false; ESPMenu.s_showGull = false; ESPMenu.s_showLeviathan = false; ESPMenu.s_showHare = false; ESPMenu.s_showChicken = false; ESPMenu.s_showHen = false; EntitiesMenu.meadowsEntitiesObj = new GameObject("MeadowsEntities"); EntitiesMenu.blackForestEntitiesObj = new GameObject("BlackForestEntities"); EntitiesMenu.swampEntitiesObj = new GameObject("SwampEntities"); EntitiesMenu.mountainEntitiesObj = new GameObject("MountainEntities"); EntitiesMenu.plainsEntitiesObj = new GameObject("PlainsEntities"); EntitiesMenu.mistLandsEntitiesObj = new GameObject("MistLandsEntities"); EntitiesMenu.ashlandsEntitiesObj = new GameObject("AshlandsEntities"); EntitiesMenu.tabButtons = null; EntitiesMenu.customInputField = null; } public void OnDestroy() { ResetMod(); Harmony obj = harmony; if (obj != null) { obj.UnpatchSelf(); } } } } namespace ValheimAdminTool.Utils { public static class ResourceUtils { public static byte[] ReadAllBytes(this Stream input) { byte[] array = new byte[16384]; using MemoryStream memoryStream = new MemoryStream(); int count; while ((count = input.Read(array, 0, array.Length)) > 0) { memoryStream.Write(array, 0, count); } return memoryStream.ToArray(); } public static byte[] GetEmbeddedResource(string resourceFileName, Assembly containingAssembly = null) { if (containingAssembly == null) { containingAssembly = Assembly.GetCallingAssembly(); } string name = containingAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(resourceFileName)); using Stream input = containingAssembly.GetManifestResourceStream(name); byte[] array = input.ReadAllBytes(); if (array.Length == 0) { Debug.LogWarning((object)string.Format("The resource %1 was not found", resourceFileName)); } return array; } public static Texture2D LoadTexture(byte[] texData) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown Texture2D val = new Texture2D(1, 1, (TextureFormat)4, false); MethodInfo method = typeof(Texture2D).GetMethod("LoadImage", new Type[1] { typeof(byte[]) }); if (method != null) { method.Invoke(val, new object[1] { texData }); } else { Type? type = Type.GetType("UnityEngine.ImageConversion, UnityEngine.ImageConversionModule"); if (type == null) { throw new ArgumentNullException("converter"); } MethodInfo? method2 = type.GetMethod("LoadImage", new Type[2] { typeof(Texture2D), typeof(byte[]) }); if (method2 == null) { throw new ArgumentNullException("converterMethod"); } method2.Invoke(null, new object[2] { val, texData }); } return val; } } public static class Utilities { public static BindingFlags BindFlags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; public static T GetPrivateField<T>(this object obj, string fieldName) { return (T)obj.GetType().GetField(fieldName, BindFlags).GetValue(obj); } public static void SetPrivateField(this object obj, string fieldName, object value) { obj.GetType().GetField(fieldName, BindFlags).SetValue(obj, value); } public static void SetPrivateProperty(this object obj, string propertyName, object value) { obj.GetType().GetProperty(propertyName, BindFlags).SetValue(obj, value, null); } public static T GetPrivateProperty<T>(this object obj, string propertyName) { return (T)obj.GetType().GetProperty(propertyName, BindFlags).GetValue(obj); } public static void InvokePrivateMethod(this object obj, string methodName, object[] methodParams) { obj.GetType().GetMethod(methodName, BindFlags).Invoke(obj, methodParams); } } } namespace ValheimAdminTool.UI { public class InputManager : MonoBehaviour { private InputField activeInputField; private void Update() { if ((Object)(object)activeInputField != (Object)null) { if (Input.GetKeyDown((KeyCode)9)) { HandleTabKey(activeInputField, activeInputField.text); } else if (Input.GetKeyDown((KeyCode)8)) { HandleBackspaceKey(activeInputField, activeInputField.text); } } } public void SetActiveInputField(InputField inputField) { activeInputField = inputField; } private void HandleTabKey(InputField inputField, string value) { int num = value.IndexOf(' '); if (num != -1) { inputField.caretPosition = num; inputField.selectionAnchorPosition = num; inputField.selectionFocusPosition = num; } else { inputField.caretPosition = value.Length; inputField.selectionAnchorPosition = value.Length; inputField.selectionFocusPosition = value.Length; } } private void HandleBackspaceKey(InputField inputField, string value) { if (inputField.selectionAnchorPosition < inputField.selectionFocusPosition) { inputField.text = value.Substring(0, inputField.selectionAnchorPosition); inputField.caretPosition = inputField.selectionAnchorPosition; inputField.selectionFocusPosition = inputField.selectionAnchorPosition; } } } internal class InterfaceMaker { private static GUISkin s_customSkin; private static Texture2D s_winBackground; private static Texture2D s_winTitleBackground; private static Texture2D s_boxBackground; private static Texture2D s_toggleOffBackground; private static Texture2D s_toggleOnBackground; private static Texture2D s_buttonNormalBackground; private static Texture2D s_buttonHoverBackground; private static Texture2D s_buttonActiveBackground; private static Texture2D s_buttonActiveNormalBackground; private static Texture2D s_buttonActiveHoverBackground; private static Texture2D s_buttonActiveActiveBackground; private static Texture2D s_fieldBackground; private static Texture2D s_scrollBackground; private static Texture2D s_scrollThumbBackground; private static Texture2D s_flatButtonNormalBackground; private static Texture2D s_flatButtonHoverBackground; private static Texture2D s_flatButtonActiveBackground; private static Font s_font; private static GUISkin s_oldSkin; public static GUISkin CustomSkin { get { if ((Object)(object)s_customSkin == (Object)null) { try { s_customSkin = CreateSkin(); } catch (Exception ex) { ZLog.Log((object)("Could not load custom GUISkin - " + ex.Message)); s_customSkin = GUI.skin; } } return s_customSkin; } } public static GUISkin OldSkin => s_oldSkin; private static GUISkin CreateSkin() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Expected O, but got Unknown //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Expected O, but got Unknown //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Expected O, but got Unknown //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_0500: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_0554: Unknown result type (might be due to invalid IL or missing references) //IL_057e: Unknown result type (might be due to invalid IL or missing references) //IL_05a8: Unknown result type (might be due to invalid IL or missing references) //IL_05bc: Unknown result type (might be due to invalid IL or missing references) //IL_05c6: Expected O, but got Unknown //IL_05cc: Unknown result type (might be due to invalid IL or missing references) //IL_0606: Unknown result type (might be due to invalid IL or missing references) //IL_060b: Unknown result type (might be due to invalid IL or missing references) //IL_060c: Unknown result type (might be due to invalid IL or missing references) //IL_0616: Expected O, but got Unknown //IL_0616: Unknown result type (might be due to invalid IL or missing references) //IL_0622: Expected O, but got Unknown //IL_064b: Unknown result type (might be due to invalid IL or missing references) //IL_0655: Expected O, but got Unknown //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_0664: Unknown result type (might be due to invalid IL or missing references) //IL_066b: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_067e: Expected O, but got Unknown s_oldSkin = GUI.skin; GUISkin val = Object.Instantiate<GUISkin>(GUI.skin); Object.DontDestroyOnLoad((Object)(object)val); LoadTextures(); val.font = s_font; val.label.normal.textColor = Color.gray; val.box.onNormal.background = null; val.box.normal.background = s_boxBackground; val.box.normal.textColor = Color.gray; val.window.border = new RectOffset(80, 80, 80, 20); RectOffset padding = val.window.padding; padding.top += 5; val.window.onNormal.background = null; val.window.normal.background = s_winTitleBackground; val.window.normal.textColor = Color.white; val.button.normal.textColor = Color.gray; val.button.normal.background = s_buttonNormalBackground; val.button.hover.textColor = Color.gray; val.button.hover.background = s_buttonHoverBackground; val.button.active.textColor = Color.gray; val.button.active.background = s_buttonActiveBackground; val.button.onNormal.textColor = Color.white; val.button.onNormal.background = s_buttonActiveNormalBackground; val.button.onHover.textColor = Color.white; val.button.onHover.background = s_buttonActiveHoverBackground; val.button.onActive.textColor = Color.white; val.button.onActive.background = s_buttonActiveActiveBackground; val.button.font = s_font; val.button.wordWrap = false; val.horizontalSliderThumb.normal.background = s_buttonNormalBackground; val.horizontalSliderThumb.hover.background = s_buttonHoverBackground; val.horizontalSliderThumb.active.background = s_buttonActiveBackground; val.horizontalSliderThumb.onNormal.background = s_buttonActiveNormalBackground; val.horizontalSliderThumb.onHover.background = s_buttonActiveHoverBackground; val.horizontalSliderThumb.onActive.background = s_buttonActiveActiveBackground; val.horizontalSlider.normal.background = s_scrollBackground; val.toggle.normal.textColor = Color.gray; val.toggle.normal.background = s_toggleOffBackground; val.toggle.onNormal.textColor = Color.gray; val.toggle.onNormal.background = s_toggleOnBackground; val.toggle.hover.textColor = Color.gray; val.toggle.hover.background = s_toggleOffBackground; val.toggle.onHover.textColor = Color.gray; val.toggle.onHover.background = s_toggleOnBackground; val.toggle.active.textColor = Color.gray; val.toggle.active.background = s_toggleOnBackground; val.toggle.onActive.textColor = Color.gray; val.toggle.onActive.background = s_toggleOffBackground; val.toggle.border = new RectOffset(0, 0, 0, 0); val.toggle.overflow = new RectOffset(0, 0, 0, 0); val.toggle.imagePosition = (ImagePosition)2; val.toggle.padding = new RectOffset(0, 0, 0, 0); val.toggle.fixedWidth = 30f; val.toggle.fixedHeight = 30f; RectOffset padding2 = val.button.padding; int top = (val.button.padding.bottom = 6); padding2.top = top; RectOffset border = val.button.border; top = (val.button.border.top = 0); border.bottom = top; RectOffset border2 = val.button.border; top = (val.button.border.right = 10); border2.left = top; val.textField.normal.background = s_fieldBackground; val.textField.normal.textColor = Color.gray; val.textField.onNormal.background = s_fieldBackground; val.textField.onNormal.textColor = Color.gray; val.textField.hover.background = s_fieldBackground; val.textField.hover.textColor = Color.gray; val.textField.onHover.background = s_fieldBackground; val.textField.onHover.textColor = Color.gray; val.textField.active.background = s_fieldBackground; val.textField.active.textColor = Color.gray; val.textField.onActive.background = s_fieldBackground; val.textField.onActive.textColor = Color.gray; val.textField.focused.background = s_fieldBackground; val.textField.focused.textColor = Color.gray; val.textField.onFocused.background = s_fieldBackground; val.textField.onFocused.textColor = Color.gray; val.textField.padding = new RectOffset(8, 8, 5, 5); val.settings.cursorColor = Color.gray; val.verticalScrollbar.normal.background = s_scrollBackground; val.verticalScrollbarThumb.normal.background = s_scrollThumbBackground; GUIStyle val2 = new GUIStyle(val.box) { border = new RectOffset(), name = "popup" }; GUIStyleState normal = val2.normal; Texture2D background = (val2.hover.background = s_winBackground); normal.background = background; val2.border = new RectOffset(30, 30, 30, 30); GUIStyle val4 = new GUIStyle(OldSkin.label) { wordWrap = false, alignment = (TextAnchor)4, name = "flatButton" }; val4.normal.background = s_flatButtonNormalBackground; val4.hover.background = s_flatButtonHoverBackground; val4.onNormal.background = s_flatButtonActiveBackground; val.customStyles = (GUIStyle[])(object)new GUIStyle[2] { val2, val4 }; return val; } private static void LoadTextures() { //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Expected O, but got Unknown //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Expected O, but got Unknown //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Expected O, but got Unknown //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) s_winBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.window.png")); Object.DontDestroyOnLoad((Object)(object)s_winBackground); s_winTitleBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.window_title.png")); Object.DontDestroyOnLoad((Object)(object)s_winTitleBackground); s_boxBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.box.png")); Object.DontDestroyOnLoad((Object)(object)s_boxBackground); s_toggleOffBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.toggle_off.png")); Object.DontDestroyOnLoad((Object)(object)s_toggleOffBackground); s_toggleOnBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.toggle_on.png")); Object.DontDestroyOnLoad((Object)(object)s_toggleOnBackground); s_buttonNormalBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_normal.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonNormalBackground); s_buttonHoverBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_hover.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonHoverBackground); s_buttonActiveBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_active.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonActiveBackground); s_buttonActiveNormalBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_active_normal.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonActiveNormalBackground); s_buttonActiveHoverBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_active_hover.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonActiveHoverBackground); s_buttonActiveActiveBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.button_active_active.png")); Object.DontDestroyOnLoad((Object)(object)s_buttonActiveActiveBackground); s_fieldBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.field.png")); Object.DontDestroyOnLoad((Object)(object)s_fieldBackground); s_scrollBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.scroll_background.png")); Object.DontDestroyOnLoad((Object)(object)s_scrollBackground); s_scrollThumbBackground = ResourceUtils.LoadTexture(ResourceUtils.GetEmbeddedResource("Resources.scroll_thumb.png")); Object.DontDestroyOnLoad((Object)(object)s_scrollThumbBackground); s_flatButtonNormalBackground = new Texture2D(1, 1); s_flatButtonNormalBackground.SetPixels((Color[])(object)new Color[1] { new Color(0.5f, 0.5f, 0.5f, 0.5f) }); s_flatButtonNormalBackground.Apply(); Object.DontDestroyOnLoad((Object)(object)s_flatButtonNormalBackground); s_flatButtonHoverBackground = new Texture2D(1, 1); s_flatButtonHoverBackground.SetPixels((Color[])(object)new Color[1] { new Color(0.5f, 0.5f, 0.5f, 0.2f) }); s_flatButtonHoverBackground.Apply(); Object.DontDestroyOnLoad((Object)(object)s_flatButtonHoverBackground); s_flatButtonActiveBackground = new Texture2D(1, 1); s_flatButtonActiveBackground.SetPixels((Color[])(object)new Color[1] { new Color(0.9f, 0.5f, 0.1f, 0.5f) }); s_flatButtonActiveBackground.Apply(); Object.DontDestroyOnLoad((Object)(object)s_flatButtonActiveBackground); s_font = (Resources.FindObjectsOfTypeAll(typeof(Font)) as Font[]).ToList().First((Font f) => ((Object)f).name.Equals("Norsebold")); if ((Object)(object)s_font != (Object)null) { Object.DontDestroyOnLoad((Object)(object)s_font); } else { ZLog.Log((object)"Error while loading font!"); } } } } namespace ValheimAdminTool.Patches { [HarmonyPatch(typeof(Character), "ApplyDamage")] internal class ApplyCharacterDamage_Patch { private static void Prefix(Character __instance, ref HitData hit, ref bool showDamageText, bool triggerEffects, DamageModifier mod) { if (CheatsMenu.sGodMode && __instance.IsPlayer()) { hit.m_damage.m_damage = 0f; showDamageText = false; } } } [HarmonyPatch(typeof(EnvMan), "SetTargetWind")] internal class PatchTargetWind { private static void Prefix(ref Vector3 dir, ref float intensity) { //IL_0017: 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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Invalid comparison between Unknown and I4 //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Invalid comparison between Unknown and I4 //IL_002b: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Invalid comparison between Unknown and I4 //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Invalid comparison between Unknown and I4 if (ToolsMenu.enableWindInBack) { Ship localShip = Ship.GetLocalShip(); if (!Object.op_Implicit((Object)(object)localShip)) { return; } Speed speedSetting = localShip.GetSpeedSetting(); if ((int)speedSetting == 3 || (int)speedSetting == 4) { Vector3 forward = ((Component)localShip).transform.forward; dir.x = forward.x; dir.z = forward.z; } } if (!ToolsMenu.enableShipSpeedHack) { return; } Ship localShip2 = Ship.GetLocalShip(); if (Object.op_Implicit((Object)(object)localShip2)) { Speed speedSetting2 = localShip2.GetSpeedSetting(); if ((int)speedSetting2 == 2) { localShip2.m_sailForceFactor = 0.05f; } else if ((int)speedSetting2 == 3) { localShip2.m_sailForceFactor = 0.125f; } else if ((int)speedSetting2 == 4) { localShip2.m_sailForceFactor = 0.25f; } } } } [HarmonyPatch(typeof(Humanoid), "UpdateEquipment")] internal class DrainEquipedItemDurability_Patch { private static bool Prefix(float dt) { if (ToolsMenu.disableDurabilityLoss) { if (((Character)Player.m_localPlayer).IsSwimming() && !((Character)Player.m_localPlayer).IsOnGround()) { ((Humanoid)Player.m_localPlayer).HideHandItems(); } return false; } return true; } } [HarmonyPatch(typeof(Humanoid), "BlockAttack")] internal class BlockAttack_Patch { private static void Prefix(Humanoid __instance, ref float __state, ItemData ___m_leftItem) { if (ToolsMenu.disableDurabilityLoss && ((Character)__instance).IsPlayer() && ___m_leftItem != null) { __state = ___m_leftItem.m_durability; } } private static void Postfix(Humanoid __instance, float __state, ref ItemData ___m_leftItem) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 if (ToolsMenu.disableDurabilityLoss && ((Character)__instance).IsPlayer() && __state > 0f && ___m_leftItem != null && __state > ___m_leftItem.m_durability && (int)___m_leftItem.m_shared.m_itemType == 5) { ___m_leftItem.m_durability = Mathf.Max(0f, __state - (__state - ___m_leftItem.m_durability) * 0f); } } } [HarmonyPatch(typeof(InventoryGui), "Show")] internal class Update_Patch { private static bool Prefix(InventoryGui __instance) { if (ModMenu.displayMainMenu && ModMenu.isInitialized) { InputField customInputField = ItemsMenu.customInputField; if ((Object)(object)EventSystem.current.currentSelectedGameObject == (Object)(object)((Component)customInputField).gameObject) { int num = customInputField.text.IndexOf(' '); if (num != -1) { customInputField.caretPosition = num; customInputField.selectionAnchorPosition = num; customInputField.selectionFocusPosition = customInputField.text.Length; } else { customInputField.caretPosition = customInputField.text.Length; customInputField.selectionAnchorPosition = customInputField.text.Length; customInputField.selectionFocusPosition = customInputField.text.Length; } } return false; } return true; } } [HarmonyPatch(typeof(ItemDrop), "Awake")] internal class ItemDrop_Patch { private static void Postfix(ItemDrop __instance) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Invalid comparison between Unknown and I4 //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Invalid comparison between Unknown and I4 //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Invalid comparison between Unknown and I4 //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Invalid comparison between Unknown and I4 //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Invalid comparison between Unknown and I4 if (!ToolsMenu.disableDurabilityLoss) { return; } if (((Object)__instance).name.StartsWith("Pickaxe")) { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; return; } if (((Object)__instance).name.StartsWith("Axe")) { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; return; } ItemType itemType = __instance.m_itemData.m_shared.m_itemType; if ((int)itemType <= 4) { if ((int)itemType != 3) { if ((int)itemType == 4) { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } return; } } else if ((int)itemType != 14) { if ((int)itemType != 15) { if ((int)itemType == 19) { if (((Object)__instance).name.StartsWith("Hammer")) { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } else if (((Object)__instance).name.StartsWith("Hoe")) { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } else { __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } } } else { __instance.m_itemData.m_shared.m_durabilityDrain = 0f; __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } return; } __instance.m_itemData.m_shared.m_useDurabilityDrain = 0f; } } [HarmonyPatch(typeof(Location), "IsInsideNoBuildLocation")] internal class PatchIsInsideNoBuildLocation { private static void Postfix(ref bool __result) { if (CheatsMenu.sBuildEverywhere) { __result = false; } } } internal class MapPatches { [HarmonyPatch(typeof(Minimap), "Update")] private class Minimap_Update_Patch { private static bool Prefix(ref Minimap __instance) { if (ZInputPatches.IsInputFieldFocused()) { return false; } return true; } } [HarmonyPatch(typeof(Minimap), "SetMapMode")] private class Minimap_SetMapMode_Patch { private static bool Prefix(ref Minimap __instance, ref MapMode mode) { if (ZInputPatches.IsInputFieldFocused()) { return false; } return true; } } } [HarmonyPatch(typeof(Player), "UpdateFood")] internal class FoodDegrade_Patch { private static bool Prefix(ref Player __instance, float dt, bool forceUpdate) { Player localPlayer = Player.m_localPlayer; localPlayer.m_foodUpdateTimer += dt; if (Player.m_localPlayer.m_foodUpdateTimer >= 1f || forceUpdate) { Player localPlayer2 = Player.m_localPlayer; localPlayer2.m_foodUpdateTimer -= 1f; foreach (Food food in Player.m_localPlayer.GetFoods()) { if (!ToolsMenu.noFoodTimeout) { food.m_time -= 0.5f; } float num = Mathf.Clamp01(food.m_time / food.m_item.m_shared.m_foodBurnTime); num = Mathf.Pow(num, 0.3f); if (ToolsMenu.noFoodDegrade) { food.m_health = food.m_item.m_shared.m_food; food.m_stamina = food.m_item.m_shared.m_foodStamina; food.m_eitr = food.m_item.m_shared.m_foodEitr; } else { food.m_health = food.m_item.m_shared.m_food * num; food.m_stamina = food.m_item.m_shared.m_foodStamina * num; food.m_eitr = food.m_item.m_shared.m_foodEitr * num; } if (food.m_time <= 0f) { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_food_done", 0, (Sprite)null); Player.m_localPlayer.m_foods.Remove(food); break; } } float num2 = default(float); float num3 = default(float); float num4 = default(float); Player.m_localPlayer.GetTotalFoodValue(ref num2, ref num3, ref num4); Player.m_localPlayer.SetMaxHealth(num2, true); Player.m_localPlayer.SetMaxStamina(num3, true); if (num4 > 0f) { __instance.ShowTutorial("eitr", false); } } if (forceUpdate) { return true; } Player localPlayer3 = Player.m_localPlayer; localPlayer3.m_foodRegenTimer += dt; if (!(Player.m_localPlayer.m_foodRegenTimer >= 10f)) { return true; } Player.m_localPlayer.m_foodRegenTimer = 0f; float num5 = 0f; foreach (Food food2 in Player.m_localPlayer.GetFoods()) { num5 += food2.m_item.m_shared.m_foodRegen; } if (num5 > 0f) { float num6 = 1f; ((Character)Player.m_localPlayer).m_seman.ModifyHealthRegen(ref num6); num5 *= num6; ((Character)Player.m_localPlayer).Heal(num5, true); } return true; } } [HarmonyPatch(typeof(Player), "DamageArmorDurability")] internal class DamageArmorDurability_Patch { private static void Prefix(Player __instance, ref float[] __state, ItemData ___m_chestItem, ItemData ___m_legItem, ItemData ___m_shoulderItem, ItemData ___m_helmetItem) { __state = new float[4]; if (ToolsMenu.disableDurabilityLoss) { __state[0] = ___m_chestItem