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 CapelessTrollSet v0.1.0
plugins\CapelessTrollSet\CapelessTrollSet.dll
Decompiled 2 days agousing 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<ItemDrop>(); 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; } } }