using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Jotunn.Managers; using Jotunn.Utils; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CapelessTrollSet")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("CapelessTrollSet")] [assembly: AssemblyTitle("CapelessTrollSet")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace CapelessTrollSet { [BepInPlugin("sunray.capelesstrollset", "CapelessTrollSet", "0.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public sealed class Plugin : BaseUnityPlugin { public const string ModGuid = "sunray.capelesstrollset"; public const string ModName = "CapelessTrollSet"; public const string ModVersion = "0.1.0"; private const string TrollSetName = "troll"; private const int TrollSetSize = 3; private const float TrollSneakBonus = 10f; private Harmony _harmony; internal static Plugin Instance { get; private set; } private void Awake() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown Instance = this; _harmony = new Harmony("sunray.capelesstrollset"); _harmony.PatchAll(); ItemManager.OnItemsRegistered += ApplyCapelessTrollSet; ((BaseUnityPlugin)this).Logger.LogInfo((object)"CapelessTrollSet 0.1.0 loaded."); } private void OnDestroy() { ItemManager.OnItemsRegistered -= ApplyCapelessTrollSet; Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private static void ApplyCapelessTrollSet() { if ((Object)(object)ObjectDB.instance == (Object)null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)"Cannot modify Troll Armor: ObjectDB.instance is null."); return; } ((BaseUnityPlugin)Instance).Logger.LogInfo((object)"Applying capeless Troll Armor set configuration..."); SharedData sharedData = GetSharedData("HelmetTrollLeather"); SharedData sharedData2 = GetSharedData("ArmorTrollLeatherChest"); SharedData sharedData3 = GetSharedData("ArmorTrollLeatherLegs"); SharedData sharedData4 = GetSharedData("CapeTrollHide"); if (sharedData == null || sharedData2 == null || sharedData3 == null || sharedData4 == null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)"Capeless Troll Armor set configuration was incomplete."); return; } ConfigureRequiredSetItem("HelmetTrollLeather", sharedData); ConfigureRequiredSetItem("ArmorTrollLeatherChest", sharedData2); ConfigureRequiredSetItem("ArmorTrollLeatherLegs", sharedData3); RemoveCapeFromSet("CapeTrollHide", sharedData4); if (!ConfigureTrollSetEffect(sharedData)) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)"Troll Armor pieces were updated, but the Sneak bonus could not be changed."); } else { ((BaseUnityPlugin)Instance).Logger.LogInfo((object)"Capeless Troll Armor set configured successfully."); } } private static void ConfigureRequiredSetItem(string prefabName, SharedData shared) { shared.m_setName = "troll"; shared.m_setSize = 3; string text = (((Object)(object)shared.m_setStatusEffect != (Object)null) ? ((Object)shared.m_setStatusEffect).name : "null"); ((BaseUnityPlugin)Instance).Logger.LogInfo((object)("Configured '" + prefabName + "': setName='" + shared.m_setName + "', " + $"setSize={shared.m_setSize}, " + "setStatusEffect='" + text + "'")); } private static void RemoveCapeFromSet(string prefabName, SharedData shared) { shared.m_setName = string.Empty; shared.m_setSize = 0; shared.m_setStatusEffect = null; ((BaseUnityPlugin)Instance).Logger.LogInfo((object)("Removed '" + prefabName + "' from Troll Armor set.")); } private static bool ConfigureTrollSetEffect(SharedData shared) { if ((Object)(object)shared.m_setStatusEffect == (Object)null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)"Troll Armor set has no StatusEffect."); return false; } StatusEffect setStatusEffect = shared.m_setStatusEffect; SE_Stats val = (SE_Stats)(object)((setStatusEffect is SE_Stats) ? setStatusEffect : null); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)("Troll Armor set effect is not SE_Stats. Actual type: " + ((object)shared.m_setStatusEffect).GetType().FullName)); return false; } float skillLevelModifier = val.m_skillLevelModifier; val.m_skillLevelModifier = 10f; ((BaseUnityPlugin)Instance).Logger.LogInfo((object)("Updated Troll Armor Sneak bonus: " + $"{skillLevelModifier} -> " + $"{val.m_skillLevelModifier}")); return true; } private static SharedData GetSharedData(string prefabName) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(prefabName); if ((Object)(object)itemPrefab == (Object)null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)("Prefab not found: " + prefabName)); return null; } ItemDrop component = itemPrefab.GetComponent(); if ((Object)(object)component == (Object)null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)("Prefab has no ItemDrop component: " + prefabName)); return null; } SharedData shared = component.m_itemData.m_shared; if (shared == null) { ((BaseUnityPlugin)Instance).Logger.LogWarning((object)("Prefab has no SharedData: " + prefabName)); return null; } return shared; } } }