Please disclose if any significant portion of your mod was created 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 WeaponAttributes v1.0.0
WeaponAttributes.dll
Decompiled 17 hours 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.IO; using System.IO.Compression; using System.Reflection; using System.Runtime.CompilerServices; using System.Text; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyVersion("0.0.0.0")] namespace WeaponAttributesMod; [BepInPlugin("com.valheim.weaponattributes", "WeaponAttributes", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class WeaponAttributesPlugin : BaseUnityPlugin { public const string PluginGUID = "com.valheim.weaponattributes"; public const string PluginName = "WeaponAttributes"; public const string PluginVersion = "1.0.0"; public const string CUSTOM_DATA_KEY = "WeaponAttributes_Enchant"; public const string CUSTOM_DATA_BOSS_KEY = "WeaponAttributes_Boss"; public const string CUSTOM_DATA_LEVEL_KEY = "WeaponAttributes_Level"; public static ConfigEntry<float> BaseAttributeDamage; public static ConfigEntry<bool> DualAttributeSplit; private Harmony m_harmony; public static readonly Dictionary<string, string[]> BossEnchantMap = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase) { { "TrophyEikthyr", new string[1] { "lightning" } }, { "TrophyTheElder", new string[1] { "physical" } }, { "TrophyBonemass", new string[1] { "poison" } }, { "TrophyDragonQueen", new string[1] { "frost" } }, { "TrophyGoblinKing", new string[1] { "fire" } }, { "TrophySeekerQueen", new string[2] { "poison", "lightning" } }, { "TrophyFader", new string[2] { "fire", "spirit" } } }; public static readonly Dictionary<string, string> BossNameMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { { "TrophyEikthyr", "eikthyr" }, { "TrophyTheElder", "elder" }, { "TrophyBonemass", "bonemass" }, { "TrophyDragonQueen", "moder" }, { "TrophyGoblinKing", "yagluth" }, { "TrophySeekerQueen", "queen" }, { "TrophyFader", "fader" } }; public static readonly Dictionary<string, string> BossKeyToTrophyPrefab = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { { "eikthyr", "TrophyEikthyr" }, { "elder", "TrophyTheElder" }, { "bonemass", "TrophyBonemass" }, { "moder", "TrophyDragonQueen" }, { "yagluth", "TrophyGoblinKing" }, { "queen", "TrophySeekerQueen" }, { "fader", "TrophyFader" } }; public static readonly Dictionary<string, string> BossMobTrophyMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { { "eikthyr", "TrophyDeer" }, { "elder", "TrophyForestTroll" }, { "bonemass", "TrophyBlob" }, { "moder", "TrophyHatchling" }, { "yagluth", "TrophyGoblinShaman" }, { "queen", "TrophySeekerBrute" }, { "fader", "TrophyAsksvin" } }; public static readonly Dictionary<string, string[]> BossKeyAttributesMap = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase) { { "eikthyr", new string[1] { "lightning" } }, { "elder", new string[1] { "physical" } }, { "bonemass", new string[1] { "poison" } }, { "moder", new string[1] { "frost" } }, { "yagluth", new string[1] { "fire" } }, { "queen", new string[2] { "poison", "lightning" } }, { "fader", new string[2] { "fire", "spirit" } } }; public static readonly Dictionary<string, Sprite> BossSprites = new Dictionary<string, Sprite>(StringComparer.OrdinalIgnoreCase); public static string m_upgradingEnchant = null; public static string m_upgradingBoss = null; public static string m_upgradingLevel = null; private static void RegisterIcon(string key, string base64Data) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) try { byte[] array = Convert.FromBase64String(base64Data); Texture2D val = new Texture2D(64, 64, (TextureFormat)4, false); if (ImageConversion.LoadImage(val, array)) { Sprite value = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); BossSprites[key] = value; } } catch (Exception) { } } private static void LoadEmbeddedIcons() { RegisterIcon("bonemass", "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"); RegisterIcon("eikthyr", "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"); RegisterIcon("elder", "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAU5SURBVHhe7Zt7bFNVHMdP27W962tbu3Z9rutj6+1aRqeMGcSpgYHgQCOJQjDOKUaJc/hM8PkPOMwijj26EKYsBCdEiSgTVAIhi8+FIMQwY8zYhhenaGJQL0pct5/53fQachOUsfbevr7JJ9k5TXbO/X3v99xzT1pCcsopp5xykkZBQur8hDiF/VmjACEDNCH9wv6sEE1IPU3ISJw1ws8zXuj+XRoN81BBwQRNyHBWRYF3/6DPx46Ew7FahWI0q6KA7t+p0TA/RyKA7HG7f8+aKPDuH/B62Z8iEeB5MFuigO7fodEwE3PnwuUMh0KxmkyPAu/+ux4Py1RVgZDdpaWZHQV0fyWlYc7OqYIr0WQwZGYUePffcZexY+E5cCVO0sHMjAK6v4KimJFQGP6PPqcrs6LAu7/X7Wa/C4XhamjU6zMnCrz731aG4WoZqqAzIwq8+/0uN/tNMAQzYYfDmf5RQPcbKIo5TYfgWrhPl8ZR4N3f5Sxlvw5UwrXwia8iNk+eplFA929XU8zJiiDMhqjNkX5R4N3f6XCxJyqCMFvuTbcooPvL1RRzvJyGRHDU60+fKPDu99qd7Jf+ACSKDqstPaKA7i9Tq5nPfQFINGu0utSOAu/+dquD/dRbAYnmQ7c3dr1cnrpRQPeXqtTMoKccksVWizU1o8C73221s8c85ZBM7snXpl4U0P0lKjVztMwPyeY9lye1osC732G2sYfdPhCDLcUlXBQChKwSzkd08e5/VOoDMcECBAlpEc5HVPHuv1ZsZQ+5vCAmKVEAdL9eqWIGnB4QG8kLwLvfZrKyA24/HAqE4X2nRzQkLwC6v1ipYvY7ymDw1nr4MdoDp5tbANtiIGkBePdbjWZ2n90NQ6vXcgU40fgAYFsMJC0Aur9IqWLetrkBGX7iaZjo7oFji5ZybTGQrAC8+5uLzOxeaykgo5tb4YfuHjgQqubaYiBZAXDzgYPvMNtj/SUuQIaf2cgV4OD8G7m2GEhWAPx+D/fsN1kv7S5xAXLqscfhHBZgwc1cO9m8bnFMxXeC9wvnl3SFCAni4JsKzRd3WVyAHF/3CDBdPXBk2UqunWzaTda/4wUQfyvsJ8SMg7foii70mZ2AfLx4OTBdUTi14SmunWxeNJjYeARqhfMTRdyZv4qaeKPYCUif1Q3j7Z3wfVcU3iwLcH3JZDWlOx9/JVYL5yaKcPEJy2Rnuo22qV6TA5Chh5u5AnzWuI5rJ5MauWKMJmSncF6iqZKQCBcDbcFv2412QN6qrIbR9g442xmF/Qtu4fqSwbM6I3f7S34qRBOyb55cPtZZZJvuMdoB+WBJA4x3RrlC9Nq9XF+iqVMomSAhX0h2+/PinwZN+fpfu4tswHPk7rWwp/qGf9uJZIO2MLXOBGlC2nAteEFv+quj0ArJ5GWDeTIik4/iAiych2TyE2KgCRmslSvGWw2WWHuBFZLBqwUl0zcplAyu/OWEeIXzkFTxKAwvVOQxW/SWqa2GEkgkbQbL9G15KjwJxlu/Xjh+SogmpAGLMF+uGH9Oa7zUprdAInhJa5pcKM9D56XZ989E+GjE1TlEZGea1LoLr+gtMBvW5xv+iMhkePw9jAUWjpeSim+T+9ExvBsepQxsq84MM+HJ/MI/6xTKc3HXD2PEhOOkvPCNESePF3GdTD62Io86v54ysBs1xslN2mK4nOc1xlgzZbi4Spn/S41MMR7P+leSvOklWvGzg23x25j/kcR/0Y8Xjk8X4f9Ke+GbG14cLma4f8DC4N9xajPyonPKKaecckpR/QPTVzoMS1L/iwAAAABJRU5ErkJggg=="); RegisterIcon("fader", "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"); RegisterIcon("moder", "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"); RegisterIcon("queen", "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"); RegisterIcon("yagluth", "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"); } private void Awake() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown BaseAttributeDamage = ((BaseUnityPlugin)this).Config.Bind<float>("General", "BaseAttributeDamage", 10f, "Amount of additional damage granted by enchantment (level 1)"); DualAttributeSplit = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "DualAttributeSplit", false, "Split total base attribute damage among multi-attributes or apply base damage to each"); m_harmony = new Harmony("com.valheim.weaponattributes"); m_harmony.PatchAll(); PrefabManager.OnPrefabsRegistered += CustomEnchantingTable.RegisterCustomTable; ((BaseUnityPlugin)this).Logger.LogInfo((object)"WeaponAttributes 1.0.0 loaded successfully!"); } private void OnDestroy() { if (m_harmony != null) { m_harmony.UnpatchSelf(); } } public static bool IsWeapon(ItemData item) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Invalid comparison between Unknown and I4 //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Invalid comparison between Unknown and I4 //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Invalid comparison between Unknown and I4 //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Invalid comparison between Unknown and I4 if (item == null || item.m_shared == null) { return false; } ItemType itemType = item.m_shared.m_itemType; return (int)itemType == 3 || (int)itemType == 14 || (int)itemType == 22 || (int)itemType == 4; } public static string GetBossKeyFromItem(ItemData item) { if (item == null) { return null; } if ((Object)(object)item.m_dropPrefab != (Object)null && BossNameMap.TryGetValue(((Object)item.m_dropPrefab).name, out var value)) { return value; } if (item.m_shared != null && !string.IsNullOrEmpty(item.m_shared.m_name)) { foreach (KeyValuePair<string, string> item2 in BossNameMap) { string key = item2.Key; if (IsItemMatch(item, key)) { return item2.Value; } } } return null; } public static string[] GetBossAttributesFromItem(ItemData item) { if (item == null) { return null; } if ((Object)(object)item.m_dropPrefab != (Object)null && BossEnchantMap.TryGetValue(((Object)item.m_dropPrefab).name, out var value)) { return value; } if (item.m_shared != null && !string.IsNullOrEmpty(item.m_shared.m_name)) { foreach (KeyValuePair<string, string[]> item2 in BossEnchantMap) { string key = item2.Key; if (IsItemMatch(item, key)) { return item2.Value; } } } return null; } public static bool IsItemMatch(ItemData item, string prefabName) { if (item == null || string.IsNullOrEmpty(prefabName)) { return false; } if ((Object)(object)item.m_dropPrefab != (Object)null && string.Equals(((Object)item.m_dropPrefab).name, prefabName, StringComparison.OrdinalIgnoreCase)) { return true; } if ((Object)(object)ObjectDB.instance != (Object)null) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(prefabName); if ((Object)(object)itemPrefab != (Object)null) { ItemDrop component = itemPrefab.GetComponent<ItemDrop>(); if ((Object)(object)component != (Object)null && component.m_itemData != null && component.m_itemData.m_shared != null && item.m_shared != null && string.Equals(item.m_shared.m_name, component.m_itemData.m_shared.m_name, StringComparison.OrdinalIgnoreCase)) { return true; } } } return false; } public static int CountInventoryItem(Inventory inv, string prefabName) { if (inv == null || string.IsNullOrEmpty(prefabName)) { return 0; } int num = 0; List<ItemData> allItems = inv.GetAllItems(); for (int i = 0; i < allItems.Count; i++) { ItemData val = allItems[i]; if (val != null && IsItemMatch(val, prefabName)) { num += val.m_stack; } } return num; } public static ItemData FindInventoryItem(Inventory inv, string prefabName) { if (inv == null || string.IsNullOrEmpty(prefabName)) { return null; } List<ItemData> allItems = inv.GetAllItems(); for (int i = 0; i < allItems.Count; i++) { ItemData val = allItems[i]; if (val != null && IsItemMatch(val, prefabName)) { return val; } } return null; } public static int RemoveInventoryItem(Inventory inv, string prefabName, int amount) { if (inv == null || string.IsNullOrEmpty(prefabName) || amount <= 0) { return 0; } int num = amount; List<ItemData> allItems = inv.GetAllItems(); int num2 = allItems.Count - 1; while (num2 >= 0 && num > 0) { if (num2 < allItems.Count) { ItemData val = allItems[num2]; if (val != null && IsItemMatch(val, prefabName)) { int num3 = Mathf.Min(val.m_stack, num); inv.RemoveItem(val, num3); num -= num3; } } num2--; } return amount - num; } public static string GetAttributeEnchantString(ItemData item) { if (item == null || item.m_customData == null) { return null; } if (item.m_customData.TryGetValue("WeaponAttributes_Enchant", out var value)) { return value; } return null; } public static string GetEnchantBossKey(ItemData item) { if (item == null || item.m_customData == null) { return null; } if (item.m_customData.TryGetValue("WeaponAttributes_Boss", out var value)) { return value; } return null; } public static int GetEnchantLevel(ItemData item) { if (item == null || item.m_customData == null) { return 0; } if (item.m_customData.TryGetValue("WeaponAttributes_Level", out var value) && int.TryParse(value, out var result)) { return Mathf.Clamp(result, 1, 5); } if (!string.IsNullOrEmpty(GetAttributeEnchantString(item))) { return 1; } return 0; } public static int GetMobTrophyCountForLevel(int targetLevel) { return targetLevel switch { 1 => 1, 2 => 5, 3 => 10, 4 => 15, 5 => 20, _ => 1, }; } public static string GetMobTrophyPrefab(string bossKey) { if (string.IsNullOrEmpty(bossKey)) { return null; } if (BossMobTrophyMap.TryGetValue(bossKey, out var value)) { return value; } return null; } public static void SetAttributeEnchant(ItemData item, string bossKey, string[] attrs, int level) { if (item != null && attrs != null && attrs.Length != 0) { if (item.m_customData == null) { item.m_customData = new Dictionary<string, string>(); } item.m_customData["WeaponAttributes_Enchant"] = string.Join(",", attrs); if (!string.IsNullOrEmpty(bossKey)) { item.m_customData["WeaponAttributes_Boss"] = bossKey; } item.m_customData["WeaponAttributes_Level"] = Mathf.Clamp(level, 1, 5).ToString(); } } public static void ApplyEnchantDamage(ItemData item, ref DamageTypes dmg) { string attributeEnchantString = GetAttributeEnchantString(item); if (string.IsNullOrEmpty(attributeEnchantString)) { return; } string[] array = attributeEnchantString.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (array.Length == 0) { return; } int num = Mathf.Clamp(GetEnchantLevel(item), 1, 5); float num2 = BaseAttributeDamage.Value * (float)num; float num3 = (DualAttributeSplit.Value ? (num2 / (float)array.Length) : num2); for (int i = 0; i < array.Length; i++) { switch (array[i].Trim().ToLower()) { case "lightning": dmg.m_lightning += num3; break; case "poison": dmg.m_poison += num3; break; case "frost": dmg.m_frost += num3; break; case "fire": dmg.m_fire += num3; break; case "spirit": dmg.m_spirit += num3; break; case "physical": dmg.m_damage += num3; break; } } } public static string GetAttributeNameLocalized(string attr) { return attr.Trim().ToLower() switch { "lightning" => Localization.instance.Localize("$inventory_lightning"), "poison" => Localization.instance.Localize("$inventory_poison"), "frost" => Localization.instance.Localize("$inventory_frost"), "fire" => Localization.instance.Localize("$inventory_fire"), "spirit" => Localization.instance.Localize("$inventory_spirit"), "physical" => Localization.instance.Localize("$inventory_damage"), _ => attr, }; } public static string GetBossEnchantColor(string bossKey, string enchantStr) { string text = ((bossKey != null) ? bossKey.Trim().ToLower() : ""); if (string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(enchantStr)) { string text2 = enchantStr.ToLower(); if (text2.Contains("fire") && text2.Contains("spirit")) { text = "fader"; } else if (text2.Contains("poison") && text2.Contains("lightning")) { text = "queen"; } else if (text2.Contains("lightning")) { text = "eikthyr"; } else if (text2.Contains("physical")) { text = "elder"; } else if (text2.Contains("poison")) { text = "bonemass"; } else if (text2.Contains("frost")) { text = "moder"; } else if (text2.Contains("fire")) { text = "yagluth"; } } return text switch { "eikthyr" => "#FFD700", "elder" => "#707070", "bonemass" => "#48D858", "moder" => "#1E90FF", "yagluth" => "#FF453A", "queen" => "#BA55D3", "fader" => "#8B4513", _ => null, }; } } [HarmonyPatch(typeof(ItemData), "GetDamage", new Type[] { typeof(int), typeof(float) })] public static class Patch_ItemData_GetDamage { public static void Postfix(ItemData __instance, ref DamageTypes __result) { WeaponAttributesPlugin.ApplyEnchantDamage(__instance, ref __result); } } [HarmonyPatch(typeof(ItemData), "GetTooltip", new Type[] { typeof(ItemData), typeof(int), typeof(bool), typeof(float), typeof(int), typeof(bool) })] public static class Patch_ItemData_GetTooltip { public static void Postfix(ItemData item, ref string __result) { if (item == null) { return; } string attributeEnchantString = WeaponAttributesPlugin.GetAttributeEnchantString(item); if (string.IsNullOrEmpty(attributeEnchantString)) { return; } string[] array = attributeEnchantString.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (array.Length != 0) { int enchantLevel = WeaponAttributesPlugin.GetEnchantLevel(item); float num = WeaponAttributesPlugin.BaseAttributeDamage.Value * (float)Mathf.Clamp(enchantLevel, 1, 5); float num2 = (WeaponAttributesPlugin.DualAttributeSplit.Value ? (num / (float)array.Length) : num); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append($"\n<color=#A020F0>◆ Enchantment (Lv.{enchantLevel}/5):</color>"); for (int i = 0; i < array.Length; i++) { string attributeNameLocalized = WeaponAttributesPlugin.GetAttributeNameLocalized(array[i]); stringBuilder.Append($"\n {attributeNameLocalized}: <color=#00FFFF>+{num2:0}</color>"); } __result += stringBuilder.ToString(); } } } [HarmonyPatch(typeof(InventoryGrid), "UpdateGui")] public static class Patch_InventoryGrid_UpdateGui { private const string OLD_BADGE_NAME = "WeaponAttributes_BossBadge"; private static FieldInfo m_elementsField = typeof(InventoryGrid).GetField("m_elements", BindingFlags.Instance | BindingFlags.NonPublic); private static FieldInfo m_qualityField = typeof(InventoryElement).GetField("m_quality", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); private static FieldInfo m_iconField = typeof(InventoryElement).GetField("m_icon", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); public static void Postfix(InventoryGrid __instance, Player player, ItemData dragItem) { if ((Object)(object)__instance == (Object)null || m_elementsField == null || m_qualityField == null) { return; } Inventory inventory = __instance.GetInventory(); if (inventory == null || !(m_elementsField.GetValue(__instance) is IList list)) { return; } int width = inventory.GetWidth(); if (width <= 0) { return; } for (int i = 0; i < list.Count; i++) { object obj = list[i]; if (obj == null) { continue; } object? value = m_qualityField.GetValue(obj); TMP_Text val = (TMP_Text)((value is TMP_Text) ? value : null); if (m_iconField != null) { object? value2 = m_iconField.GetValue(obj); Image val2 = (Image)((value2 is Image) ? value2 : null); if ((Object)(object)val2 != (Object)null) { Transform val3 = ((Component)val2).transform.Find("WeaponAttributes_BossBadge"); if ((Object)(object)val3 != (Object)null) { Object.Destroy((Object)(object)((Component)val3).gameObject); } } } int num = i % width; int num2 = i / width; ItemData itemAt = inventory.GetItemAt(num, num2); if (itemAt == null || !WeaponAttributesPlugin.IsWeapon(itemAt)) { continue; } string attributeEnchantString = WeaponAttributesPlugin.GetAttributeEnchantString(itemAt); if (!string.IsNullOrEmpty(attributeEnchantString) && (Object)(object)val != (Object)null) { string enchantBossKey = WeaponAttributesPlugin.GetEnchantBossKey(itemAt); string bossEnchantColor = WeaponAttributesPlugin.GetBossEnchantColor(enchantBossKey, attributeEnchantString); if (!string.IsNullOrEmpty(bossEnchantColor)) { int quality = itemAt.m_quality; int enchantLevel = WeaponAttributesPlugin.GetEnchantLevel(itemAt); ((Component)val).gameObject.SetActive(true); ((Behaviour)val).enabled = true; val.enableWordWrapping = false; val.overflowMode = (TextOverflowModes)0; val.text = $"{quality}<color={bossEnchantColor}>+{enchantLevel}</color>"; } } } } } public static class CustomEnchantingTable { public static GameObject m_enchantingTablePrefab = null; public static void RegisterCustomTable() { //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Expected O, but got Unknown //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Expected O, but got Unknown //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Expected O, but got Unknown //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Expected O, but got Unknown try { if ((Object)(object)m_enchantingTablePrefab != (Object)null) { return; } GameObject val = PrefabManager.Instance.CreateClonedPrefab("piece_enchanting_table", "piece_artisanstation"); if ((Object)(object)val == (Object)null) { val = PrefabManager.Instance.CreateClonedPrefab("piece_enchanting_table", "piece_workbench"); } if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)"[WeaponAttributes] Could not clone base table for piece_enchanting_table"); return; } Shader val2 = Shader.Find("Standard"); if ((Object)(object)val2 == (Object)null) { Renderer componentInChildren = val.GetComponentInChildren<Renderer>(true); val2 = (((Object)(object)componentInChildren != (Object)null && (Object)(object)componentInChildren.sharedMaterial != (Object)null) ? componentInChildren.sharedMaterial.shader : null); } int num = LayerMask.NameToLayer("piece"); if (num < 0) { num = val.layer; } Collider[] componentsInChildren = val.GetComponentsInChildren<Collider>(true); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)val3 == (Object)null) && !val3.isTrigger && !((Object)(object)((Component)val3).GetComponent<EffectArea>() != (Object)null)) { num = ((Component)val3).gameObject.layer; val3.enabled = false; } } Renderer[] componentsInChildren2 = val.GetComponentsInChildren<Renderer>(true); foreach (Renderer val4 in componentsInChildren2) { if ((Object)(object)val4 != (Object)null && (Object)(object)((Component)val4).gameObject != (Object)(object)val) { val4.enabled = false; } } CraftingStation component = val.GetComponent<CraftingStation>(); if ((Object)(object)component != (Object)null) { component.m_name = "Enchanting Table"; component.m_rangeBuild = 10f; component.m_useDistance = 2.8f; } BuildCustomBlenderModel(val, val2, num); Sprite val5 = LoadEmbeddedSprite("BossSoulTableIcon.png"); PieceConfig val6 = new PieceConfig(); val6.PieceTable = "Hammer"; val6.Category = "Crafting"; val6.Name = "Enchanting Table"; val6.Description = "An ancient boss soul forge with a runic anvil and crystal brazier for enchanting weapons."; if ((Object)(object)val5 != (Object)null) { val6.Icon = val5; } val6.AddRequirement(new RequirementConfig("RoundLog", 8, 0, true)); val6.AddRequirement(new RequirementConfig("Tin", 10, 0, true)); val6.AddRequirement(new RequirementConfig("SurtlingCore", 4, 0, true)); val6.AddRequirement(new RequirementConfig("Stone", 4, 0, true)); CustomPiece val7 = new CustomPiece(val, false, val6); PieceManager.Instance.AddPiece(val7); m_enchantingTablePrefab = val; Debug.Log((object)"[WeaponAttributes] Successfully registered piece_enchanting_table with custom 3D model via Jotunn!"); if ((Object)(object)component != (Object)null) { RegisterStationExtensions(component, val2, num); } } catch (Exception ex) { Debug.LogError((object)("[WeaponAttributes] Exception in RegisterCustomTable: " + ex)); } } private static void RegisterStationExtensions(CraftingStation targetStation, Shader baseShader, int pieceLayer) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00de: 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_0106: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Expected O, but got Unknown //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Expected O, but got Unknown //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Expected O, but got Unknown //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Expected O, but got Unknown //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Expected O, but got Unknown //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Expected O, but got Unknown //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Expected O, but got Unknown RegisterSingleExtension("piece_enchant_ext_elder", "Elder's Root Totem", "An ancient magical root bound in bronze runic rings, infused with the energy of the Black Forest. Increases Enchanting Table level (+1).", "Ext1_ElderMesh.bin.gz", "Ext1_ElderIcon.png", targetStation, baseShader, pieceLayer, new Color(0.18f, 0.95f, 0.52f, 1f), new Vector3(0f, 1.05f, 0f), new Vector3(0.95f, 1.35f, 0.95f), (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Bronze", 6, 0, true), new RequirementConfig("AncientSeed", 3, 0, true), new RequirementConfig("GreydwarfEye", 10, 0, true), new RequirementConfig("Wood", 10, 0, true) }); RegisterSingleExtension("piece_enchant_ext_bonemass", "Bonemass Poison Urn", "A dark forged iron cauldron adorned with skulls and boiling toxic swamp ooze. Increases Enchanting Table level (+1).", "Ext2_BonemassMesh.bin.gz", "Ext2_BonemassIcon.png", targetStation, baseShader, pieceLayer, new Color(0.42f, 1f, 0.12f, 1f), new Vector3(0f, 0.95f, 0f), new Vector3(1.05f, 1.15f, 1.05f), (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("ElderBark", 10, 0, true), new RequirementConfig("Ooze", 10, 0, true), new RequirementConfig("BoneFragments", 10, 0, true) }); RegisterSingleExtension("piece_enchant_ext_moder", "Moder's Crystal Altar", "A silver pedestal with dragon wings and a cluster of glowing frost crystals. Increases Enchanting Table level (+1).", "Ext3_ModerMesh.bin.gz", "Ext3_ModerIcon.png", targetStation, baseShader, pieceLayer, new Color(0.22f, 0.85f, 1f, 1f), new Vector3(0f, 0.95f, 0f), new Vector3(1.05f, 1.25f, 1.05f), (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Silver", 10, 0, true), new RequirementConfig("Crystal", 8, 0, true), new RequirementConfig("FreezeGland", 4, 0, true), new RequirementConfig("Obsidian", 10, 0, true) }); RegisterSingleExtension("piece_enchant_ext_yagluth", "Yagluth's Eternal Flame", "A ritual platform of black metal and gold burning with the undying arcane flame of the Goblin King. Increases Enchanting Table level (+1).", "Ext4_YagluthMesh.bin.gz", "Ext4_YagluthIcon.png", targetStation, baseShader, pieceLayer, new Color(0.95f, 0.18f, 0.62f, 1f), new Vector3(0f, 0.95f, 0f), new Vector3(1.15f, 1.15f, 1.15f), (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BlackMetal", 10, 0, true), new RequirementConfig("GoblinTotem", 2, 0, true), new RequirementConfig("Tar", 10, 0, true), new RequirementConfig("SurtlingCore", 5, 0, true) }); } private static void RegisterSingleExtension(string prefabName, string displayName, string description, string meshResName, string iconResName, CraftingStation targetStation, Shader baseShader, int pieceLayer, Color lightColor, Vector3 lightLocalPos, Vector3 colliderSize, RequirementConfig[] reqs) { //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Expected O, but got Unknown //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: 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_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Expected O, but got Unknown //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Expected O, but got Unknown //IL_03ae: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Expected O, but got Unknown try { GameObject val = PrefabManager.Instance.CreateClonedPrefab(prefabName, "piece_workbench_ext1"); if ((Object)(object)val == (Object)null) { val = PrefabManager.Instance.CreateClonedPrefab(prefabName, "forge_ext1"); } if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("[WeaponAttributes] Could not clone base extension prefab for " + prefabName)); return; } Collider[] componentsInChildren = val.GetComponentsInChildren<Collider>(true); foreach (Collider val2 in componentsInChildren) { if (!((Object)(object)val2 == (Object)null) && !val2.isTrigger && !((Object)(object)((Component)val2).GetComponent<EffectArea>() != (Object)null)) { val2.enabled = false; } } Renderer[] componentsInChildren2 = val.GetComponentsInChildren<Renderer>(true); foreach (Renderer val3 in componentsInChildren2) { if ((Object)(object)val3 != (Object)null && (Object)(object)((Component)val3).gameObject != (Object)(object)val) { val3.enabled = false; } } StationExtension val4 = val.GetComponent<StationExtension>(); if ((Object)(object)val4 == (Object)null) { val4 = val.AddComponent<StationExtension>(); } val4.m_craftingStation = targetStation; val4.m_maxStationDistance = 6f; GameObject val5 = new GameObject(prefabName + "_Model"); val5.layer = pieceLayer; val5.transform.SetParent(val.transform, false); val5.transform.localPosition = Vector3.zero; val5.transform.localRotation = Quaternion.identity; val5.transform.localScale = Vector3.one; BoxCollider val6 = val5.AddComponent<BoxCollider>(); val6.center = new Vector3(0f, colliderSize.y * 0.5f, 0f); val6.size = colliderSize; BoxCollider val7 = val.GetComponent<BoxCollider>(); if ((Object)(object)val7 == (Object)null) { val7 = val.AddComponent<BoxCollider>(); } val7.center = new Vector3(0f, colliderSize.y * 0.5f, 0f); val7.size = colliderSize; ((Collider)val7).enabled = true; WearNTear component = val.GetComponent<WearNTear>(); if ((Object)(object)component != (Object)null) { component.m_new = val5; component.m_worn = val5; component.m_broken = val5; } GameObject val8 = new GameObject("ExtMagicLight"); val8.transform.SetParent(val5.transform, false); val8.transform.localPosition = lightLocalPos; Light val9 = val8.AddComponent<Light>(); val9.type = (LightType)2; val9.color = lightColor; val9.range = 4.2f; val9.intensity = 1.45f; LoadEmbeddedMeshIntoRoot(val5, meshResName, baseShader, pieceLayer); if (prefabName == "piece_enchant_ext_yagluth") { AttachAnimatedValheimFireToYagluth(val5, val9); } Sprite val10 = LoadEmbeddedSprite(iconResName); PieceConfig val11 = new PieceConfig(); val11.PieceTable = "Hammer"; val11.Category = "Crafting"; val11.CraftingStation = "piece_enchanting_table"; val11.Name = displayName; val11.Description = description; if ((Object)(object)val10 != (Object)null) { val11.Icon = val10; } if (reqs != null) { for (int j = 0; j < reqs.Length; j++) { val11.AddRequirement(reqs[j]); } } CustomPiece val12 = new CustomPiece(val, false, val11); PieceManager.Instance.AddPiece(val12); Debug.Log((object)("[WeaponAttributes] Registered station extension: " + prefabName)); } catch (Exception ex) { Debug.LogError((object)("[WeaponAttributes] Failed to register extension " + prefabName + ": " + ex)); } } private static void AttachAnimatedValheimFireToYagluth(GameObject modelRoot, Light magicLight) { //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: 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_0365: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)magicLight != (Object)null) { YagluthFireLightFlicker yagluthFireLightFlicker = ((Component)magicLight).gameObject.AddComponent<YagluthFireLightFlicker>(); yagluthFireLightFlicker.m_light = magicLight; } string[] array = new string[5] { "piece_groundtorch_wood", "piece_groundtorch", "fire_pit", "hearth", "bonfire" }; GameObject val = null; for (int i = 0; i < array.Length; i++) { val = PrefabManager.Instance.GetPrefab(array[i]); if ((Object)(object)val != (Object)null) { break; } } if (!((Object)(object)val != (Object)null)) { return; } Transform val2 = null; Transform[] componentsInChildren = val.GetComponentsInChildren<Transform>(true); foreach (Transform val3 in componentsInChildren) { if ((Object)(object)val3 == (Object)null) { continue; } string text = ((Object)val3).name.ToLowerInvariant(); switch (text) { default: if (!(text == "flames")) { continue; } break; case "_enabled": case "_enabled_high": case "fire": break; } val2 = val3; break; } if ((Object)(object)val2 == (Object)null) { val2 = val.transform; } GameObject val4 = Object.Instantiate<GameObject>(((Component)val2).gameObject); ((Object)val4).name = "YagluthRealAnimatedFireFX"; val4.transform.SetParent(modelRoot.transform, false); val4.transform.localPosition = new Vector3(0f, 0.5f, 0f); val4.transform.localRotation = Quaternion.identity; val4.transform.localScale = new Vector3(0.75f, 0.78f, 0.75f); val4.SetActive(true); componentsInChildren = val4.GetComponentsInChildren<Transform>(true); foreach (Transform val5 in componentsInChildren) { if ((Object)(object)val5 != (Object)null) { ((Component)val5).gameObject.SetActive(true); } } Color val6 = default(Color); ((Color)(ref val6))..ctor(0.72f, 0.14f, 0.88f, 1f); Color val7 = default(Color); ((Color)(ref val7))..ctor(0.88f, 0.12f, 0.48f, 1f); Renderer[] componentsInChildren2 = val4.GetComponentsInChildren<Renderer>(true); foreach (Renderer val8 in componentsInChildren2) { if ((Object)(object)val8 == (Object)null) { continue; } if (val8 is MeshRenderer && !((Object)val8).name.ToLowerInvariant().Contains("flame") && !((Object)val8).name.ToLowerInvariant().Contains("fire") && !((Object)val8).name.ToLowerInvariant().Contains("glow")) { val8.enabled = false; continue; } Material[] materials = val8.materials; if (materials == null) { continue; } foreach (Material val9 in materials) { if (!((Object)(object)val9 == (Object)null)) { if (val9.HasProperty("_Color")) { val9.SetColor("_Color", val6); } if (val9.HasProperty("_TintColor")) { val9.SetColor("_TintColor", val7); } if (val9.HasProperty("_EmissionColor")) { val9.SetColor("_EmissionColor", val6 * 2.2f); } } } val8.materials = materials; } } catch (Exception ex) { Debug.LogWarning((object)("[WeaponAttributes] AttachAnimatedValheimFireToYagluth warning: " + ex.Message)); } } private static Sprite LoadEmbeddedSprite(string resName) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_007b: 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) try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); using Stream stream = executingAssembly.GetManifestResourceStream(resName); if (stream == null) { return null; } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false); if (ImageConversion.LoadImage(val, array)) { return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); } } catch (Exception ex) { Debug.LogWarning((object)("[WeaponAttributes] Failed to load icon " + resName + ": " + ex.Message)); } return null; } private static Material CreatePBRMaterial(Shader shader, string matName) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0f20: Unknown result type (might be due to invalid IL or missing references) //IL_0f27: Expected O, but got Unknown //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_0507: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: 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_0651: Unknown result type (might be due to invalid IL or missing references) //IL_065b: Unknown result type (might be due to invalid IL or missing references) //IL_0660: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06dd: Unknown result type (might be due to invalid IL or missing references) //IL_06e2: Unknown result type (might be due to invalid IL or missing references) //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_078c: Unknown result type (might be due to invalid IL or missing references) //IL_0791: Unknown result type (might be due to invalid IL or missing references) //IL_0804: Unknown result type (might be due to invalid IL or missing references) //IL_080e: Unknown result type (might be due to invalid IL or missing references) //IL_0813: Unknown result type (might be due to invalid IL or missing references) //IL_0859: Unknown result type (might be due to invalid IL or missing references) //IL_0863: Unknown result type (might be due to invalid IL or missing references) //IL_0868: Unknown result type (might be due to invalid IL or missing references) //IL_08ae: Unknown result type (might be due to invalid IL or missing references) //IL_08b8: Unknown result type (might be due to invalid IL or missing references) //IL_08bd: Unknown result type (might be due to invalid IL or missing references) //IL_0903: Unknown result type (might be due to invalid IL or missing references) //IL_090d: Unknown result type (might be due to invalid IL or missing references) //IL_0912: Unknown result type (might be due to invalid IL or missing references) //IL_0958: Unknown result type (might be due to invalid IL or missing references) //IL_0962: Unknown result type (might be due to invalid IL or missing references) //IL_0967: Unknown result type (might be due to invalid IL or missing references) //IL_09da: Unknown result type (might be due to invalid IL or missing references) //IL_09e4: Unknown result type (might be due to invalid IL or missing references) //IL_09e9: Unknown result type (might be due to invalid IL or missing references) //IL_0a2f: Unknown result type (might be due to invalid IL or missing references) //IL_0a39: Unknown result type (might be due to invalid IL or missing references) //IL_0a3e: Unknown result type (might be due to invalid IL or missing references) //IL_0a84: Unknown result type (might be due to invalid IL or missing references) //IL_0a8e: Unknown result type (might be due to invalid IL or missing references) //IL_0a93: Unknown result type (might be due to invalid IL or missing references) //IL_0ad9: 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_0ae8: Unknown result type (might be due to invalid IL or missing references) //IL_0b2e: Unknown result type (might be due to invalid IL or missing references) //IL_0b38: Unknown result type (might be due to invalid IL or missing references) //IL_0b3d: Unknown result type (might be due to invalid IL or missing references) //IL_0b83: Unknown result type (might be due to invalid IL or missing references) //IL_0b8d: Unknown result type (might be due to invalid IL or missing references) //IL_0b92: Unknown result type (might be due to invalid IL or missing references) //IL_0bd8: Unknown result type (might be due to invalid IL or missing references) //IL_0be2: Unknown result type (might be due to invalid IL or missing references) //IL_0be7: Unknown result type (might be due to invalid IL or missing references) //IL_0c2d: Unknown result type (might be due to invalid IL or missing references) //IL_0c37: Unknown result type (might be due to invalid IL or missing references) //IL_0c3c: Unknown result type (might be due to invalid IL or missing references) //IL_0c82: Unknown result type (might be due to invalid IL or missing references) //IL_0c8c: Unknown result type (might be due to invalid IL or missing references) //IL_0c91: Unknown result type (might be due to invalid IL or missing references) //IL_0d5e: Unknown result type (might be due to invalid IL or missing references) //IL_0d68: Unknown result type (might be due to invalid IL or missing references) //IL_0d6d: Unknown result type (might be due to invalid IL or missing references) //IL_0db3: Unknown result type (might be due to invalid IL or missing references) //IL_0dbd: Unknown result type (might be due to invalid IL or missing references) //IL_0dc2: Unknown result type (might be due to invalid IL or missing references) //IL_0e08: Unknown result type (might be due to invalid IL or missing references) //IL_0e12: Unknown result type (might be due to invalid IL or missing references) //IL_0e17: Unknown result type (might be due to invalid IL or missing references) //IL_0e5d: Unknown result type (might be due to invalid IL or missing references) //IL_0e67: Unknown result type (might be due to invalid IL or missing references) //IL_0e6c: Unknown result type (might be due to invalid IL or missing references) //IL_0eb2: Unknown result type (might be due to invalid IL or missing references) //IL_0ebc: Unknown result type (might be due to invalid IL or missing references) //IL_0ec1: Unknown result type (might be due to invalid IL or missing references) //IL_0f04: Unknown result type (might be due to invalid IL or missing references) //IL_0f0e: Unknown result type (might be due to invalid IL or missing references) //IL_0f13: Unknown result type (might be due to invalid IL or missing references) //IL_1433: Unknown result type (might be due to invalid IL or missing references) //IL_1458: Unknown result type (might be due to invalid IL or missing references) //IL_1056: Unknown result type (might be due to invalid IL or missing references) //IL_1058: Unknown result type (might be due to invalid IL or missing references) //IL_105c: Unknown result type (might be due to invalid IL or missing references) //IL_1118: Unknown result type (might be due to invalid IL or missing references) //IL_111a: Unknown result type (might be due to invalid IL or missing references) //IL_111e: Unknown result type (might be due to invalid IL or missing references) //IL_13e9: Unknown result type (might be due to invalid IL or missing references) //IL_14ee: Unknown result type (might be due to invalid IL or missing references) //IL_12c7: Unknown result type (might be due to invalid IL or missing references) //IL_12c9: Unknown result type (might be due to invalid IL or missing references) //IL_12d3: Unknown result type (might be due to invalid IL or missing references) //IL_12d8: Unknown result type (might be due to invalid IL or missing references) //IL_11f1: Unknown result type (might be due to invalid IL or missing references) //IL_1512: Unknown result type (might be due to invalid IL or missing references) //IL_1309: Unknown result type (might be due to invalid IL or missing references) //IL_130b: Unknown result type (might be due to invalid IL or missing references) //IL_131b: Unknown result type (might be due to invalid IL or missing references) //IL_1320: Unknown result type (might be due to invalid IL or missing references) //IL_12ee: Unknown result type (might be due to invalid IL or missing references) //IL_12f0: Unknown result type (might be due to invalid IL or missing references) //IL_1300: Unknown result type (might be due to invalid IL or missing references) //IL_1305: Unknown result type (might be due to invalid IL or missing references) //IL_1328: Unknown result type (might be due to invalid IL or missing references) Material val = new Material(shader); ((Object)val).name = matName; Color val2 = default(Color); ((Color)(ref val2))..ctor(0.25f, 0.2f, 0.16f, 1f); float num = 0f; float num2 = 0.25f; Color val3 = Color.black; bool flag = false; switch (matName) { case "DarkYggdrasilWood": ((Color)(ref val2))..ctor(0.22f, 0.15f, 0.11f, 1f); num = 0.05f; num2 = 0.22f; break; case "CarvedDarkStone": ((Color)(ref val2))..ctor(0.28f, 0.29f, 0.34f, 1f); num = 0.1f; num2 = 0.3f; break; case "ForgedBlackIron": ((Color)(ref val2))..ctor(0.24f, 0.25f, 0.29f, 1f); num = 0.85f; num2 = 0.62f; break; case "PolishedSteelEdge": ((Color)(ref val2))..ctor(0.68f, 0.72f, 0.78f, 1f); num = 0.92f; num2 = 0.8f; break; case "AgedBoneSkull": ((Color)(ref val2))..ctor(0.76f, 0.68f, 0.54f, 1f); num = 0.02f; num2 = 0.35f; break; case "DarkHorn": ((Color)(ref val2))..ctor(0.18f, 0.14f, 0.11f, 1f); num = 0.08f; num2 = 0.45f; break; case "GlowingSoulCrystal": ((Color)(ref val2))..ctor(0.72f, 0.22f, 0.98f, 1f); num = 0.2f; num2 = 0.88f; val3 = new Color(0.75f, 0.18f, 1f, 1f) * 2.2f; flag = true; break; case "GlowingArcaneRune": ((Color)(ref val2))..ctor(0.9f, 0.35f, 1f, 1f); num = 0.1f; num2 = 0.8f; val3 = new Color(0.88f, 0.25f, 1f, 1f) * 3.8f; flag = true; break; case "ArcaneEmberCoal": ((Color)(ref val2))..ctor(0.35f, 0.1f, 0.48f, 1f); num = 0.05f; num2 = 0.2f; val3 = new Color(0.62f, 0.12f, 0.92f, 1f) * 1.6f; flag = true; break; case "PurpleLeatherWrap": ((Color)(ref val2))..ctor(0.32f, 0.14f, 0.38f, 1f); num = 0.05f; num2 = 0.3f; break; case "AncientBronze": ((Color)(ref val2))..ctor(0.55f, 0.36f, 0.16f, 1f); num = 0.88f; num2 = 0.68f; break; case "GlowingEmeraldLeaf": ((Color)(ref val2))..ctor(0.15f, 0.88f, 0.48f, 1f); num = 0.1f; num2 = 0.75f; val3 = new Color(0.12f, 0.92f, 0.5f, 1f) * 2.2f; flag = true; break; case "GlowingToxicAcid": ((Color)(ref val2))..ctor(0.38f, 0.95f, 0.08f, 1f); num = 0.05f; num2 = 0.85f; val3 = new Color(0.4f, 1f, 0.08f, 1f) * 2.6f; flag = true; break; case "ShiningSilver": ((Color)(ref val2))..ctor(0.76f, 0.82f, 0.9f, 1f); num = 0.92f; num2 = 0.8f; break; case "GlowingFrostCrystal": ((Color)(ref val2))..ctor(0.18f, 0.82f, 1f, 1f); num = 0.2f; num2 = 0.88f; val3 = new Color(0.18f, 0.85f, 1f, 1f) * 2.2f; flag = true; break; case "GreenBlackMetal": ((Color)(ref val2))..ctor(0.12f, 0.2f, 0.15f, 1f); num = 0.88f; num2 = 0.72f; break; case "YagluthGold": ((Color)(ref val2))..ctor(0.82f, 0.62f, 0.2f, 1f); num = 0.9f; num2 = 0.75f; break; case "GlowingEternalFlame": ((Color)(ref val2))..ctor(0.92f, 0.15f, 0.58f, 1f); num = 0.05f; num2 = 0.8f; val3 = new Color(0.95f, 0.18f, 0.62f, 1f) * 2.8f; flag = true; break; case "MossyForestPatch": ((Color)(ref val2))..ctor(0.2f, 0.34f, 0.14f, 1f); num = 0.02f; num2 = 0.18f; break; case "GlowingElderRune": ((Color)(ref val2))..ctor(0.15f, 0.96f, 0.58f, 1f); num = 0.05f; num2 = 0.85f; val3 = new Color(0.12f, 1f, 0.58f, 1f) * 2.8f; flag = true; break; case "DeepIndigoLeaf": ((Color)(ref val2))..ctor(0.24f, 0.18f, 0.46f, 1f); num = 0.12f; num2 = 0.62f; val3 = new Color(0.28f, 0.18f, 0.56f, 1f) * 0.7f; flag = true; break; case "ElderOrbCoreInner": ((Color)(ref val2))..ctor(0.22f, 0.96f, 0.64f, 1f); num = 0.05f; num2 = 0.92f; val3 = new Color(0.18f, 0.98f, 0.62f, 1f) * 2.1f; flag = true; break; case "ElderOrbVortexGreen": ((Color)(ref val2))..ctor(0.1f, 0.96f, 0.55f, 1f); num = 0.08f; num2 = 0.9f; val3 = new Color(0.08f, 1f, 0.56f, 1f) * 2.8f; flag = true; break; case "ElderOrbVortexPurple": ((Color)(ref val2))..ctor(0.52f, 0.16f, 0.92f, 1f); num = 0.08f; num2 = 0.88f; val3 = new Color(0.56f, 0.18f, 0.95f, 1f) * 2.2f; flag = true; break; case "SkullEyeCavity": ((Color)(ref val2))..ctor(0.03f, 0.03f, 0.03f, 1f); num = 0f; num2 = 0.05f; break; case "GlowingAcidRune": ((Color)(ref val2))..ctor(0.42f, 0.88f, 0.14f, 1f); num = 0.08f; num2 = 0.8f; val3 = new Color(0.38f, 0.92f, 0.12f, 1f) * 2f; flag = true; break; case "BonemassAcidSurface": ((Color)(ref val2))..ctor(0.28f, 0.88f, 0.04f, 1f); num = 0.05f; num2 = 0.9f; val3 = new Color(0.3f, 0.92f, 0.05f, 1f) * 2.1f; flag = true; break; case "BonemassBubblesA": ((Color)(ref val2))..ctor(0.42f, 0.96f, 0.1f, 1f); num = 0.05f; num2 = 0.92f; val3 = new Color(0.4f, 0.98f, 0.12f, 1f) * 2.5f; flag = true; break; case "BonemassBubblesB": ((Color)(ref val2))..ctor(0.5f, 0.98f, 0.16f, 1f); num = 0.05f; num2 = 0.92f; val3 = new Color(0.48f, 1f, 0.18f, 1f) * 2.7f; flag = true; break; case "BonemassRisingDroplets": ((Color)(ref val2))..ctor(0.62f, 1f, 0.25f, 1f); num = 0f; num2 = 0.95f; val3 = new Color(0.58f, 1f, 0.24f, 1f) * 3.4f; flag = true; break; case "GlowingIceRune": ((Color)(ref val2))..ctor(0.18f, 0.88f, 1f, 1f); num = 0.08f; num2 = 0.85f; val3 = new Color(0.15f, 0.9f, 1f, 1f) * 2.5f; flag = true; break; case "ModerCrystalCyan": ((Color)(ref val2))..ctor(0.12f, 0.82f, 1f, 1f); num = 0.22f; num2 = 0.94f; val3 = new Color(0.1f, 0.85f, 1f, 1f) * 2.1f; flag = true; break; case "ModerCrystalAzure": ((Color)(ref val2))..ctor(0.12f, 0.45f, 0.96f, 1f); num = 0.22f; num2 = 0.94f; val3 = new Color(0.12f, 0.48f, 1f, 1f) * 1.9f; flag = true; break; case "ModerCrystalViolet": ((Color)(ref val2))..ctor(0.54f, 0.18f, 0.96f, 1f); num = 0.22f; num2 = 0.94f; val3 = new Color(0.56f, 0.2f, 1f, 1f) * 1.9f; flag = true; break; case "YagluthPinkStone": ((Color)(ref val2))..ctor(0.35f, 0.25f, 0.27f, 1f); num = 0.06f; num2 = 0.22f; break; case "DarkCarvedRune": ((Color)(ref val2))..ctor(0.04f, 0.04f, 0.05f, 1f); num = 0.1f; num2 = 0.12f; break; case "YagluthCharcoal": ((Color)(ref val2))..ctor(0.08f, 0.05f, 0.07f, 1f); num = 0.04f; num2 = 0.08f; break; case "YagluthLavaBed": ((Color)(ref val2))..ctor(1f, 0.42f, 0.08f, 1f); num = 0f; num2 = 0f; val3 = new Color(1f, 0.36f, 0.05f, 1f) * 2.2f; flag = true; break; case "GlowingFireRune": ((Color)(ref val2))..ctor(1f, 0.48f, 0.26f, 1f); num = 0f; num2 = 0f; val3 = new Color(1f, 0.4f, 0.22f, 1f) * 2.1f; flag = true; break; case "YagluthFlameCore": ((Color)(ref val2))..ctor(0.95f, 0.28f, 0.46f, 1f); num = 0f; num2 = 0f; val3 = new Color(1f, 0.35f, 0.48f, 1f) * 2.3f; flag = true; break; case "YagluthFlameMid": ((Color)(ref val2))..ctor(0.58f, 0.12f, 0.72f, 1f); num = 0f; num2 = 0f; val3 = new Color(0.62f, 0.14f, 0.76f, 1f) * 1.85f; flag = true; break; case "YagluthFlameOuter": ((Color)(ref val2))..ctor(0.46f, 0.06f, 0.24f, 1f); num = 0f; num2 = 0f; val3 = new Color(0.52f, 0.08f, 0.28f, 1f) * 1.45f; flag = true; break; case "YagluthFireSparks": ((Color)(ref val2))..ctor(1f, 0.55f, 0.28f, 1f); num = 0f; num2 = 0f; val3 = new Color(1f, 0.45f, 0.62f, 1f) * 3.4f; flag = true; break; } Texture2D val4 = new Texture2D(64, 64, (TextureFormat)4, false); ((Texture)val4).wrapMode = (TextureWrapMode)0; int hashCode = matName.GetHashCode(); bool flag2 = matName == "ElderOrbCoreInner"; bool flag3 = matName == "BonemassAcidSurface" || matName == "BonemassBubblesA" || matName == "BonemassBubblesB"; bool flag4 = matName == "ModerCrystalCyan" || matName == "ModerCrystalAzure" || matName == "ModerCrystalViolet"; bool flag5 = matName == "YagluthFlameCore" || matName == "YagluthFlameMid" || matName == "YagluthFlameOuter"; Color val5 = default(Color); Color val6 = default(Color); Color val7 = default(Color); Color val8 = default(Color); Color val9 = default(Color); Color val10 = default(Color); Color val11 = default(Color); Color val12 = default(Color); for (int i = 0; i < 64; i++) { for (int j = 0; j < 64; j++) { if (flag2) { float num3 = Mathf.Sin((float)j * 0.18f + Mathf.Cos((float)i * 0.18f) * 2.5f) * 0.5f + 0.5f; ((Color)(ref val5))..ctor(0.28f, 0.08f, 0.58f, 1f); ((Color)(ref val6))..ctor(0.1f, 0.96f, 0.58f, 1f); val4.SetPixel(j, i, Color.Lerp(val5, val6, num3)); } else if (flag3) { float num4 = Mathf.Sin((float)j * 0.28f + Mathf.Sin((float)i * 0.22f) * 2.2f) * Mathf.Cos((float)i * 0.28f - Mathf.Cos((float)j * 0.22f) * 2.2f); float num5 = Mathf.Clamp01(num4 * 0.5f + 0.5f); ((Color)(ref val7))..ctor(0.14f, 0.58f, 0.02f, 1f); ((Color)(ref val8))..ctor(0.65f, 1f, 0.22f, 1f); val4.SetPixel(j, i, Color.Lerp(val7, val8, num5)); } else if (flag4) { float num6 = Mathf.Abs(Mathf.Sin(((float)j + (float)i * 0.7f) * 0.32f + (float)(hashCode & 7))); float num7 = Mathf.Abs(Mathf.Cos(((float)j * 0.6f - (float)i) * 0.28f + (float)(hashCode & 0xD))); float num8 = ((num6 < 0.14f || num7 < 0.12f) ? 1.35f : Mathf.Lerp(0.75f, 1.12f, num6 * num7)); val4.SetPixel(j, i, new Color(Mathf.Clamp01(val2.r * num8), Mathf.Clamp01(val2.g * num8), Mathf.Clamp01(val2.b * num8), 1f)); } else if (flag5) { float num9 = (float)j / 63f; float num10 = (float)i / 63f; float num11 = Mathf.Clamp01((1f - num10) * 0.48f + num9 * 0.62f); ((Color)(ref val9))..ctor(0.24f, 0.015f, 0.06f, 1f); ((Color)(ref val10))..ctor(0.42f, 0.06f, 0.68f, 1f); ((Color)(ref val11))..ctor(0.86f, 0.14f, 0.48f, 1f); ((Color)(ref val12))..ctor(1f, 0.44f, 0.1f, 1f); Color val13 = ((num11 < 0.38f) ? Color.Lerp(val9, val10, num11 / 0.38f) : ((!(num11 < 0.72f)) ? Color.Lerp(val11, val12, (num11 - 0.72f) / 0.28f) : Color.Lerp(val10, val11, (num11 - 0.38f) / 0.34f))); val4.SetPixel(j, i, val13); } else { float num12 = Mathf.Sin((float)j * 0.35f + Mathf.Sin((float)i * 0.2f) * 2f + (float)(hashCode & 0xF)) * 0.06f; float num13 = ((float)((j * 37 + i * 131 + hashCode) & 0xFF) / 255f - 0.5f) * 0.08f; float num14 = Mathf.Clamp(1f + num12 + num13, 0.82f, 1.18f); val4.SetPixel(j, i, new Color(Mathf.Clamp01(val2.r * num14), Mathf.Clamp01(val2.g * num14), Mathf.Clamp01(val2.b * num14), 1f)); } } } val4.Apply(); val.mainTexture = (Texture)(object)val4; val.color = Color.white; if (val.HasProperty("_Color")) { val.SetColor("_Color", Color.white); } if (val.HasProperty("_MainTex")) { val.SetTexture("_MainTex", (Texture)(object)val4); } if (val.HasProperty("_Metallic")) { val.SetFloat("_Metallic", num); } if (val.HasProperty("_Glossiness")) { val.SetFloat("_Glossiness", num2); } if (flag) { if (val.HasProperty("_EmissionColor")) { val.SetColor("_EmissionColor", val3); } if (val.HasProperty("_EmissiveColor")) { val.SetColor("_EmissiveColor", val3); } val.EnableKeyword("_EMISSION"); } return val; } private static void BuildCustomBlenderModel(GameObject root, Shader baseShader, int pieceLayer) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_002d: 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_004f: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0106: 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_0161: 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_01b4: Expected O, but got Unknown //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("BossSoulForgeModel"); val.layer = pieceLayer; val.transform.SetParent(root.transform, false); val.transform.localPosition = Vector3.zero; val.transform.localRotation = Quaternion.identity; val.transform.localScale = Vector3.one; BoxCollider val2 = val.AddComponent<BoxCollider>(); val2.center = new Vector3(0f, 0.48f, 0f); val2.size = new Vector3(2.22f, 0.96f, 1.16f); BoxCollider val3 = val.AddComponent<BoxCollider>(); val3.center = new Vector3(0f, 1.32f, 0.42f); val3.size = new Vector3(2.35f, 0.72f, 0.28f); BoxCollider val4 = val.AddComponent<BoxCollider>(); val4.center = new Vector3(-0.05f, 1.12f, -0.02f); val4.size = new Vector3(1.65f, 0.34f, 0.68f); BoxCollider val5 = root.GetComponent<BoxCollider>(); if ((Object)(object)val5 == (Object)null) { val5 = root.AddComponent<BoxCollider>(); } val5.center = new Vector3(0f, 0.55f, 0f); val5.size = new Vector3(2.22f, 1.1f, 1.16f); ((Collider)val5).enabled = true; WearNTear component = root.GetComponent<WearNTear>(); if ((Object)(object)component != (Object)null) { component.m_new = val; component.m_worn = val; component.m_broken = val; } GameObject val6 = new GameObject("SoulBrazierLight"); val6.transform.SetParent(val.transform, false); val6.transform.localPosition = new Vector3(-0.5f, 1.32f, -0.04f); Light val7 = val6.AddComponent<Light>(); val7.type = (LightType)2; val7.color = new Color(0.78f, 0.22f, 1f, 1f); val7.range = 5.5f; val7.intensity = 1.65f; LoadEmbeddedMeshIntoRoot(val, "BossSoulTableMesh.bin.gz", baseShader, pieceLayer); } private static void LoadEmbeddedMeshIntoRoot(GameObject modelRoot, string resourceName, Shader baseShader, int pieceLayer) { //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_027e: 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) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_0276: 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_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Expected O, but got Unknown //IL_037b: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_04e4: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_0421: Unknown result type (might be due to invalid IL or missing references) //IL_05a3: Unknown result type (might be due to invalid IL or missing references) //IL_05a5: Unknown result type (might be due to invalid IL or missing references) //IL_0453: Unknown result type (might be due to invalid IL or missing references) //IL_0458: Unknown result type (might be due to invalid IL or missing references) //IL_080a: Unknown result type (might be due to invalid IL or missing references) //IL_0811: Expected O, but got Unknown //IL_069a: Unknown result type (might be due to invalid IL or missing references) //IL_069c: Unknown result type (might be due to invalid IL or missing references) //IL_05e2: Unknown result type (might be due to invalid IL or missing references) //IL_05e7: Unknown result type (might be due to invalid IL or missing references) //IL_049f: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Unknown result type (might be due to invalid IL or missing references) //IL_06ed: Unknown result type (might be due to invalid IL or missing references) //IL_06f2: Unknown result type (might be due to invalid IL or missing references) //IL_062a: Unknown result type (might be due to invalid IL or missing references) //IL_062f: Unknown result type (might be due to invalid IL or missing references) //IL_0876: Unknown result type (might be due to invalid IL or missing references) //IL_0878: Unknown result type (might be due to invalid IL or missing references) //IL_0749: Unknown result type (might be due to invalid IL or missing references) //IL_074e: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Unknown result type (might be due to invalid IL or missing references) //IL_0674: Unknown result type (might be due to invalid IL or missing references) //IL_07a5: Unknown result type (might be due to invalid IL or missing references) //IL_07aa: Unknown result type (might be due to invalid IL or missing references) //IL_07fe: Unknown result type (might be due to invalid IL or missing references) //IL_0803: Unknown result type (might be due to invalid IL or missing references) try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); using Stream stream = executingAssembly.GetManifestResourceStream(resourceName); if (stream != null) { using (GZipStream gZipStream = new GZipStream(stream, CompressionMode.Decompress)) { using MemoryStream memoryStream = new MemoryStream(); byte[] array = new byte[16384]; int count; while ((count = gZipStream.Read(array, 0, array.Length)) > 0) { memoryStream.Write(array, 0, count); } memoryStream.Position = 0L; using BinaryReader binaryReader = new BinaryReader(memoryStream); uint num = binaryReader.ReadUInt32(); Vector3 val = default(Vector3); Vector3 val2 = default(Vector3); Vector3 val3 = default(Vector3); Vector3 val4 = default(Vector3); Vector3 val6 = default(Vector3); Color32 val9 = default(Color32); for (int i = 0; i < num; i++) { byte count2 = binaryReader.ReadByte(); string text = Encoding.UTF8.GetString(binaryReader.ReadBytes(count2)); uint num2 = binaryReader.ReadUInt32(); uint num3 = binaryReader.ReadUInt32(); Vector3[] array2 = (Vector3[])(object)new Vector3[num2]; Vector3[] array3 = (Vector3[])(object)new Vector3[num2]; Vector2[] array4 = (Vector2[])(object)new Vector2[num2]; int[] array5 = new int[num3]; bool flag = text == "ElderOrbCoreInner" || text == "ElderOrbVortexGreen" || text == "ElderOrbVortexPurple"; int num4; switch (text) { default: num4 = ((text == "BonemassRisingDroplets") ? 1 : 0); break; case "BonemassAcidSurface": case "BonemassBubblesA": case "BonemassBubblesB": num4 = 1; break; } bool flag2 = (byte)num4 != 0; bool flag3 = text == "ModerCrystalCyan" || text == "ModerCrystalAzure" || text == "ModerCrystalViolet"; int num5; switch (text) { default: num5 = ((text == "YagluthFireSparks") ? 1 : 0); break; case "YagluthFlameCore": case "YagluthFlameMid": case "YagluthFlameOuter": num5 = 1; break; } bool flag4 = (byte)num5 != 0; ((Vector3)(ref val))..ctor(0f, 0.88f, 0f); ((Vector3)(ref val2))..ctor(0f, 0.885f, 0f); ((Vector3)(ref val3))..ctor(0f, 0.5f, 0f); ((Vector3)(ref val4))..ctor(0f, 0.46f, 0f); Vector3 val5 = (flag ? val : (flag2 ? val2 : (flag3 ? val3 : (flag4 ? val4 : Vector3.zero)))); for (int j = 0; j < num2; j++) { ((Vector3)(ref val6))..ctor(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()); ref Vector3 reference = ref array2[j]; reference = ((flag || flag2 || flag3 || flag4) ? (val6 - val5) : val6); } for (int j = 0; j < num2; j++) { ref Vector3 reference2 = ref array3[j]; reference2 = new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()); } for (int j = 0; j < num2; j++) { ref Vector2 reference3 = ref array4[j]; reference3 = new Vector2(binaryReader.ReadSingle(), binaryReader.ReadSingle()); } for (int k = 0; k < num3; k++) { array5[k] = binaryReader.ReadUInt16(); } GameObject val7 = new GameObject("Part_" + text); val7.layer = pieceLayer; val7.transform.SetParent(modelRoot.transform, false); val7.transform.localPosition = val5; val7.transform.localRotation = Quaternion.identity; val7.transform.localScale = Vector3.one; if (flag) { ElderOrbVortexAnimator elderOrbVortexAnimator = val7.AddComponent<ElderOrbVortexAnimator>(); switch (text) { case "ElderOrbCoreInner": elderOrbVortexAnimator.m_rotSpeed = new Vector3(18f, 38f, 12f); elderOrbVortexAnimator.m_pulseScale = 0.06f; elderOrbVortexAnimator.m_pulseSpeed = 2.6f; elderOrbVortexAnimator.m_scrollUV = true; elderOrbVortexAnimator.m_uvSpeed = new Vector2(0.18f, 0.12f); break; case "ElderOrbVortexGreen": elderOrbVortexAnimator.m_rotSpeed = new Vector3(45f, -85f, 32f); elderOrbVortexAnimator.m_pulseScale = 0.045f; elderOrbVortexAnimator.m_pulseSpeed = 3.4f; break; case "ElderOrbVortexPurple": elderOrbVortexAnimator.m_rotSpeed = new Vector3(-55f, 72f, -42f); elderOrbVortexAnimator.m_pulseScale = 0.05f; elderOrbVortexAnimator.m_pulseSpeed = 2.9f; break; } } else if (flag2) { BonemassAcidBubbler bonemassAcidBubbler = val7.AddComponent<BonemassAcidBubbler>(); bonemassAcidBubbler.m_baseLocalPos = val5; switch (text) { case "BonemassAcidSurface": bonemassAcidBubbler.m_mode = 0; break; case "BonemassBubblesA": bonemassAcidBubbler.m_mode = 1; bonemassAcidBubbler.m_phaseOffset = 0f; break; case "BonemassBubblesB": bonemassAcidBubbler.m_mode = 1; bonemassAcidBubbler.m_phaseOffset = 3.14159f; break; case "BonemassRisingDroplets": bonemassAcidBubbler.m_mode = 2; break; } } else if (flag3) { ModerCrystalPulseAnimator moderCrystalPulseAnimator = val7.AddComponent<ModerCrystalPulseAnimator>(); moderCrystalPulseAnimator.m_baseLocalPos = val5; switch (text) { case "ModerCrystalCyan": moderCrystalPulseAnimator.m_phaseOffset = 0f; moderCrystalPulseAnimator.m_baseEmission = new Color(0.1f, 0.85f, 1f, 1f); break; case "ModerCrystalAzure": moderCrystalPulseAnimator.m_phaseOffset = 2.09f; moderCrystalPulseAnimator.m_baseEmission = new Color(0.12f, 0.48f, 1f, 1f); break; case "ModerCrystalViolet": moderCrystalPulseAnimator.m_phaseOffset = 4.18f; moderCrystalPulseAnimator.m_baseEmission = new Color(0.56f, 0.2f, 1f, 1f); break; } } else if (flag4) { YagluthEternalFlameAnimator yagluthEternalFlameAnimator = val7.AddComponent<YagluthEternalFlameAnimator>(); yagluthEternalFlameAnimator.m_baseLocalPos = val5; switch (text) { case "YagluthFlameCore": yagluthEternalFlameAnimator.m_layerMode = 0; yagluthEternalFlameAnimator.m_rotSpeedY = 36f; yagluthEternalFlameAnimator.m_phaseOffset = 0f; yagluthEternalFlameAnimator.m_baseEmission = new Color(1f, 0.35f, 0.48f, 1f); break; case "YagluthFlameMid": yagluthEternalFlameAnimator.m_layerMode = 1; yagluthEternalFlameAnimator.m_rotSpeedY = -28f; yagluthEternalFlameAnimator.m_phaseOffset = 2.1f; yagluthEternalFlameAnimator.m_baseEmission = new Color(0.62f, 0.14f, 0.76f, 1f); break; case "YagluthFlameOuter": yagluthEternalFlameAnimator.m_layerMode = 2; yagluthEternalFlameAnimator.m_rotSpeedY = 20f; yagluthEternalFlameAnimator.m_phaseOffset = 4.2f; yagluthEternalFlameAnimator.m_baseEmission = new Color(0.52f, 0.08f, 0.28f, 1f); break; case "YagluthFireSparks": yagluthEternalFlameAnimator.m_layerMode = 3; yagluthEternalFlameAnimator.m_rotSpeedY = 52f; yagluthEternalFlameAnimator.m_phaseOffset = 1.05f; yagluthEternalFlameAnimator.m_baseEmission = new Color(1f, 0.48f, 0.62f, 1f); break; } } Mesh val8 = new Mesh(); ((Object)val8).name = "Mesh_" + text; val8.vertices = array2; val8.normals = array3; val8.uv = array4; Vector2[] uv = (Vector2[])(object)new Vector2[num2]; Color32[] array6 = (Color32[])(object)new Color32[num2]; ((Color32)(ref val9))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue); for (int j = 0; j < num2; j++) { array6[j] = val9; } val8.uv2 = uv; val8.colors32 = array6; val8.triangles = array5; val8.RecalculateBounds(); val8.RecalculateTangents(); MeshFilter val10 = val7.AddComponent<MeshFilter>(); val10.sharedMesh = val8; MeshRenderer val11 = val7.AddComponent<MeshRenderer>(); ((Renderer)val11).sharedMaterial = CreatePBRMaterial(baseShader, text); } return; } } Debug.LogWarning((object)("[WeaponAttributes] Resource " + resourceName + " not found in assembly!")); } catch (Exception ex) { Debug.LogError((object)("[WeaponAttributes] Failed to load mesh " + resourceName + ": " + ex)); } } } public class ElderOrbVortexAnimator : MonoBehaviour { public Vector3 m_rotSpeed = new Vector3(30f, 60f, 20f); public float m_pulseScale = 0.05f; public float m_pulseSpeed = 3f; public bool m_scrollUV = false; public Vector2 m_uvSpeed = new Vector2(0.15f, 0.1f); private Material m_instMat; private float m_phaseOffset; private void Start() { m_phaseOffset = Random.Range(0f, 6.28f); if (m_scrollUV) { MeshRenderer component = ((Component)this).GetComponent<MeshRenderer>(); if ((Object)(object)component != (Object)null && (Object)(object)((Renderer)component).material != (Object)null) { m_instMat = ((Renderer)component).material; } } } private void Update() { //IL_001b: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) float deltaTime = Time.deltaTime; float num = Time.time + m_phaseOffset; ((Component)this).transform.Rotate(m_rotSpeed * deltaTime, (Space)1); float num2 = 1f + Mathf.Sin(num * m_pulseSpeed) * m_pulseScale; ((Component)this).transform.localScale = new Vector3(num2, num2, num2); if (m_scrollUV && (Object)(object)m_instMat != (Object)null) { Vector2 mainTextureOffset = default(Vector2); ((Vector2)(ref mainTextureOffset))..ctor(num * m_uvSpeed.x % 1f, num * m_uvSpeed.y % 1f); m_instMat.mainTextureOffset = mainTextureOffset; } } } public class BonemassAcidBubbler : MonoBehaviour { public int m_mode = 0; public Vector3 m_baseLocalPos = new Vector3(0f, 0.885f, 0f); public float m_phaseOffset = 0f; private Material m_instMat; private void Start() { MeshRenderer component = ((Component)this).GetComponent<MeshRenderer>(); if ((Object)(object)component != (Object)null && (Object)(object)((Renderer)component).material != (Object)null) { m_instMat = ((Renderer)component).material; } } private void Update() { //IL_0084: 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_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_026a: 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) float deltaTime = Time.deltaTime; float num = Time.time + m_phaseOffset; if (m_mode == 0) { ((Component)this).transform.Rotate(0f, 14f * deltaTime, 0f, (Space)1); float num2 = Mathf.Sin(num * 2.2f) * 0.006f; ((Component)this).transform.localPosition = new Vector3(m_baseLocalPos.x, m_baseLocalPos.y + num2, m_baseLocalPos.z); if ((Object)(object)m_instMat != (Object)null) { m_instMat.mainTextureOffset = new Vector2(num * 0.09f % 1f, Mathf.Sin(num * 0.6f) * 0.12f % 1f); } } else if (m_mode == 1) { float num3 = Mathf.Sin(num * 3.6f); float num4 = Mathf.Cos(num * 2.3f); float num5 = 1f + num3 * 0.24f + num4 * 0.08f; float num6 = 1f - num3 * 0.06f; ((Component)this).transform.localScale = new Vector3(num6, Mathf.Max(0.55f, num5), num6); ((Component)this).transform.Rotate(0f, ((m_phaseOffset > 1f) ? (-12f) : 12f) * deltaTime, 0f, (Space)1); ((Component)this).transform.localPosition = new Vector3(m_baseLocalPos.x, m_baseLocalPos.y + num3 * 0.01f, m_baseLocalPos.z); } else if (m_mode == 2) { float num7 = Time.time * 0.75f % 1f; float num8 = num7 * 0.11f; float num9 = Mathf.Sin(num7 * (float)Math.PI); float num10 = Mathf.Lerp(0.65f, 1.18f, num9); ((Component)this).transform.localPosition = new Vector3(m_baseLocalPos.x, m_baseLocalPos.y + num8, m_baseLocalPos.z); ((Component)this).transform.localScale = new Vector3(1f, num10, 1f); ((Component)this).transform.Rotate(0f, 38f * deltaTime, 0f, (Space)1); } } } public class ModerCrystalPulseAnimator : MonoBehaviour { public Vector3 m_baseLocalPos = new Vector3(0f, 0.5f, 0f); public float m_phaseOffset = 0f; public Color m_baseEmission = new Color(0.15f, 0.85f, 1f, 1f); private Material m_instMat; private void Start() { MeshRenderer component = ((Component)this).GetComponent<MeshRenderer>(); if ((Object)(object)component != (Object)null && (Object)(object)((Renderer)component).material != (Object)null) { m_instMat = ((Renderer)component).material; } } private void Update() { //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) float num = Time.time * 2.2f + m_phaseOffset; float num2 = Mathf.Sin(num) * 0.5f + 0.5f; float num3 = 1f + Mathf.Sin(num) * 0.025f; float num4 = Mathf.Sin(num * 0.8f) * 0.008f; ((Component)this).transform.localPosition = new Vector3(m_baseLocalPos.x, m_baseLocalPos.y + num4, m_baseLocalPos.z); ((Component)this).transform.localScale = new Vector3(1f, num3, 1f); if ((Object)(object)m_instMat != (Object)null) { float num5 = Mathf.Lerp(1.35f, 3.1f, num2); Color val = m_baseEmission * num5; if (m_instMat.HasProperty("_EmissionColor")) { m_instMat.SetColor("_EmissionColor", val); } m_instMat.mainTextureOffset = new Vector2(Time.time * 0.04f % 1f, Time.time * 0.06f % 1f); } } } public class YagluthEternalFlameAnimator : MonoBehaviour { public int m_layerMode = 0; public Vector3 m_baseLocalPos = new Vector3(0f, 0.46f, 0f); public float m_rotSpeedY = 25f; public float m_phaseOffset = 0f; public Color m_baseEmission = new Color(0.85f, 0.2f, 0.65f, 1f); private Material m_instMat; private Mesh m_instMesh; private Vector3[] m_baseVerts; private Vector3[] m_workVerts; private float m_accumYaw = 0f; private void Start() { MeshRenderer component = ((Component)this).GetComponent<MeshRenderer>(); if ((Object)(object)component != (Object)null && (Object)(object)((Renderer)component).material != (Object)null) { m_instMat = ((Renderer)component).material; if (m_instMat.HasProperty("_Glossiness")) { m_instMat.SetFloat("_Glossiness", 0f); } if (m_instMat.HasProperty("_Metallic")) { m_instMat.SetFloat("_Metallic", 0f); } } if (m_layerMode >= 0 && m_layerMode <= 2) { MeshFilter component2 = ((Component)this).GetComponent<MeshFilter>(); if ((Object)(object)component2 != (Object)null && (Object)(object)component2.mesh != (Object)null) { m_instMesh = component2.mesh; m_baseVerts = m_instMesh.vertices; m_workVerts = (Vector3[])(object)new Vector3[m_baseVerts.Length]; } } } private void Update() { //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0361: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) float deltaTime = Time.deltaTime; float num = Time.time * 4.2f + m_phaseOffset; if (m_layerMode == 3) { float num2 = Time.time * 0.85f % 1f; float num3 = num2 * 0.16f; float num4 = Mathf.Lerp(0.7f, 1.25f, Mathf.Sin(num2 * (float)Math.PI)); m_accumYaw = (m_accumYaw + m_rotSpeedY * deltaTime) % 360f; ((Component)this).transform.localPosition = new Vector3(m_baseLocalPos.x, m_baseLocalPos.y + num3, m_baseLocalPos.z); ((Component)this).transform.localRotation = Quaternion.Euler(0f, m_accumYaw, 0f); ((Component)this).transform.localScale = new Vector3(1f, num4, 1f); return; } m_accumYaw = (m_accumYaw + m_rotSpeedY * deltaTime) % 360f; float num5 = Mathf.Sin(num * 1.15f) * 3.5f; float num6 = Mathf.Cos(num * 0.92f) * 3.5f; ((Component)this).transform.localRotation = Quaternion.Euler(num5, m_accumYaw, num6); if ((Object)(object)m_instMesh != (Object)null && m_baseVerts != null) { int num7 = m_baseVerts.Length; for (int i = 0; i < num7; i++) { Vector3 val = m_baseVerts[i]; float num8 = Mathf.Clamp01(val.y / 0.56f); float num9 = num8 * num8; float num10 = val.y * 15f - num * 2.2f + (val.x - val.z) * 9f; float num11 = Mathf.Sin(num10) * 0.022f * num9; float num12 = Mathf.Cos(num10 * 0.88f + 1.3f) * 0.022f * num9; float num13 = Mathf.Sin(num * 1.7f + (val.x + val.z) * 12f) * 0.028f * num8; ref Vector3 reference = ref m_workVerts[i]; reference = new Vector3(val.x + num11, val.y + num13, val.z + num12); } m_instMesh.vertices = m_workVerts; } if ((Object)(object)m_instMat != (Object)null) { float num14 = Time.time * ((m_layerMode == 1) ? (-0.16f) : 0.18f) % 1f; float num15 = (0f - Time.time) * (0.48f + (float)m_layerMode * 0.1f) % 1f; m_instMat.mainTextureOffset = new Vector2(num14, num15); float num16 = 0.5f + 0.5f * Mathf.Sin(num * 2.1f + Mathf.Cos(num * 3.3f)); float num17 = Mathf.Lerp(1.45f, 2.75f, num16); Color val2 = m_baseEmission * num17; if (m_instMat.HasProperty("_EmissionColor")) { m_instMat.SetColor("_EmissionColor", val2); } } } } public class YagluthFireLightFlicker : MonoBehaviour { public Light m_light; private void Update() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due t