Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Glitnir Expanded v1.0.0
HeadElfGlitnir.dll
Decompiled a year agousing System; 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 BepInEx; using HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("HeadElfGlitnir")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("HeadElfGlitnir")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("6c70859c-a9c3-4d51-b6d8-896b306390d0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace HeadElfGlitnir; [BepInPlugin("jotav.grit", "HelmetElf", "1.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class HeadElfGlitnir : BaseUnityPlugin { public const string PluginGUID = "jotav.grit"; public const string PluginName = "HelmetElf"; public const string PluginVersion = "1.0.2"; private Harmony _harmony; public static AssetBundle ArmorBundle; public static List<string> headList = new List<string> { "HeadElf" }; private void Awake() { PrefabManager.OnVanillaPrefabsAvailable += LoadHelmetElf; _harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "jotav.grit"); } private void LoadHelmetElf() { ArmorBundle = GetAssetBundleFromResources("helmetElf"); if ((Object)(object)ArmorBundle == (Object)null) { Debug.LogError((object)"Failed to load AssetBundle!"); return; } headList.ForEach(delegate(string x) { AddItemsWithRenderedIcons(x, recipe.HelmetElfRequirements); }); Debug.Log((object)"<color=green>HelmetElf loaded</color>"); } public void AddItemsWithRenderedIcons(string itemName, RequirementConfig[] requirements, bool setSkill = false) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Expected O, but got Unknown try { GameObject val = ArmorBundle.LoadAsset<GameObject>("HeadElf"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"Failed to load GameObject from AssetBundle."); return; } Debug.Log((object)("Successfully loaded GameObject '" + ((Object)val).name + "' from AssetBundle.")); ItemDrop component = val.GetComponent<ItemDrop>(); if ((Object)(object)component != (Object)null) { Object.DestroyImmediate((Object)(object)component); } GameObject prefab = PrefabManager.Instance.GetPrefab("HelmetLeather"); if ((Object)(object)prefab == (Object)null) { Debug.LogError((object)"Failed to find HelmetLeather prefab for reference."); return; } ItemDrop val2 = val.AddComponent<ItemDrop>(); ItemDrop component2 = prefab.GetComponent<ItemDrop>(); val2.m_itemData = component2.m_itemData.Clone(); val2.m_itemData.m_shared.m_itemType = (ItemType)6; val2.m_itemData.m_shared.m_helmetHideHair = (HelmetHairType)0; ItemConfig val3 = new ItemConfig(); val3.Name = "Elven Ears"; val3.Description = "A stylish elven ear headpiece"; val3.Amount = 1; val3.CraftingStation = "forge"; val3.MinStationLevel = 1; val3.Icons = (Sprite[])(object)new Sprite[1] { component2.m_itemData.GetIcon() }; val3.Requirements = requirements; ItemConfig val4 = val3; CustomItem val5 = new CustomItem(val, true, val4); ItemManager.Instance.AddItem(val5); Debug.Log((object)("Item " + itemName + " adicionado ao jogo.")); } catch (Exception arg) { Logger.LogError((object)$"Error while adding item: {arg}"); } } public static AssetBundle GetAssetBundleFromResources(string fileName) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string[] manifestResourceNames = executingAssembly.GetManifestResourceNames(); string[] array = manifestResourceNames; foreach (string text in array) { Debug.Log((object)("Resource found: " + text)); } string text2 = manifestResourceNames.FirstOrDefault((string str) => str == "HeadElfGlitnir.Resources.helmetElf"); if (string.IsNullOrEmpty(text2)) { Debug.LogError((object)"Could not find resource with name: HeadElfGlitnir.Resources.helmetElf "); return null; } using Stream stream = executingAssembly.GetManifestResourceStream(text2); return AssetBundle.LoadFromStream(stream); } [HarmonyPatch] private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } } internal class recipe { public static RequirementConfig[] HelmetElfRequirements = (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig { Item = "SwordCheat", Amount = 10 }, new RequirementConfig { Item = "SwordCheat", Amount = 5 }, new RequirementConfig { Item = "SwordCheat", Amount = 5 } }; }