Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of BossController v1.0.0
plugins/BossControll.dll
Decompiled a year agousing System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("AntiRush")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AntiRush")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("d2dc9ef5-4589-4ad0-a18c-6e5054a0a946")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace BossControll; [BepInPlugin("EnderBombz_Holanda.AntiRush", "BossControll", "1.0.0")] [BepInProcess("valheim.exe")] public class AntiRush : BaseUnityPlugin { public class ControlBossConfig { public string NameTranslate { get; set; } public int Days { get; set; } public string PlaceName { get; set; } public int ItemAmount { get; set; } public ControlBossConfig() { } public ControlBossConfig(string name) { PlaceName = name; } } [HarmonyPatch(typeof(OfferingBowl), "Interact")] public static class AntiRushInteraction_patch { private static bool Prefix(OfferingBowl __instance, Humanoid user) { foreach (ControlBossConfig boss in bossList) { if (__instance.m_name == boss.PlaceName && boss.ItemAmount > 0) { __instance.m_bossItems = boss.ItemAmount; } } currentDay = EnvMan.instance.GetDay(ZNet.instance.GetTimeSeconds()); Debug.Log((object)"Interact debugging..."); Debug.Log((object)$"Current day is: {currentDay}"); Debug.Log((object)("Current boss is: " + Localization.instance.Localize(__instance.m_name))); Debug.Log((object)("Current boss altar name: " + __instance.m_name)); return CheckBossAccess(__instance.m_name, __instance, user); } } [HarmonyPatch(typeof(OfferingBowl), "UseItem")] public static class AntiRushUseItem_patch { private static bool Prefix(OfferingBowl __instance, Humanoid user, ItemData item) { foreach (ControlBossConfig boss in bossList) { if (__instance.m_name == boss.PlaceName && boss.ItemAmount > 0) { __instance.m_bossItems = boss.ItemAmount; } } currentDay = EnvMan.instance.GetDay(ZNet.instance.GetTimeSeconds()); Debug.Log((object)"UseItem debugging..."); Debug.Log((object)$"{currentDay}<{realDay} && {__instance.m_name}=={bosses[0]}?"); return !CheckBossAccess(__instance.m_name, __instance, user); } } private readonly Harmony harmony = new Harmony("EnderBombz_Holanda.BossControll"); public static int realDay = 31; public static int currentDay; public static string[] bosses = new string[5] { "$piece_offerbowl_eikthyr", "$prop_eldersummoningbowl_name", "$piece_offerbowl_bonemass", "$prop_dragonsummoningbowl_name", "$piece_offerbowl_yagluth" }; public static ConfigEntry<bool> Real; public static ConfigEntry<int> EikthyrInvokeDay; public static ConfigEntry<int> EikthyrItemAmount; public static ConfigEntry<int> ElderInvokeDay; public static ConfigEntry<int> ElderItemAmount; public static ConfigEntry<int> BoneMassInvokeDay; public static ConfigEntry<int> BoneMassItemAmount; public static ConfigEntry<int> ModerInvokeDay; public static ConfigEntry<int> YagluthInvokeDay; public static List<ControlBossConfig> bossList; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown ConfigFile val = new ConfigFile(Path.Combine(Paths.ConfigPath, "bossControll_config.cfg"), true); Real = val.Bind<bool>("Real", "realLife", true, "This option changes the calculation method, one day in real life, there are 31 days in the game, turn false this option if you want the normal game days.'"); EikthyrInvokeDay = val.Bind<int>("EikthyrInvokeDay", "spawnDay", 1, "Eikthyr day to be invoked "); EikthyrItemAmount = val.Bind<int>("EikthyrItemAmount", "amountItem", 2, "Amout of items to invoke"); ElderInvokeDay = val.Bind<int>("ElderInvokeDay", "spawnDay", 4, "Elder day to be invoked "); ElderItemAmount = val.Bind<int>("ElderItemAmount", "amountItem", 3, "Amout of items to invoke"); BoneMassInvokeDay = val.Bind<int>("BoneMassInvokeDay", "spawnDay", 10, "BoneMass day to be invoked"); BoneMassItemAmount = val.Bind<int>("BoneMassItemAmount", "amountItem", 3, "Amout of items to invoke"); ModerInvokeDay = val.Bind<int>("ModerInvokeDay", "spawnDay", 20, "Moder day to be invoked"); YagluthInvokeDay = val.Bind<int>("YagluthInvokeDay", "spawnDay", 30, "Yagluth day to be invoked "); bossList = new List<ControlBossConfig> { new ControlBossConfig { NameTranslate = "Eikthyr", PlaceName = "$piece_offerbowl_eikthyr", Days = EikthyrInvokeDay.Value, ItemAmount = EikthyrItemAmount.Value }, new ControlBossConfig { NameTranslate = "Ancião", PlaceName = "$prop_eldersummoningbowl_name", Days = ElderInvokeDay.Value, ItemAmount = ElderItemAmount.Value }, new ControlBossConfig { NameTranslate = "Massa Óssea", PlaceName = "$piece_offerbowl_bonemass", Days = BoneMassInvokeDay.Value, ItemAmount = BoneMassItemAmount.Value }, new ControlBossConfig { NameTranslate = "Moder", PlaceName = "$prop_dragonsummoningbowl_name", Days = ModerInvokeDay.Value, ItemAmount = 0 }, new ControlBossConfig { NameTranslate = "Yagluth", PlaceName = "$piece_offerbowl_yagluth", Days = YagluthInvokeDay.Value, ItemAmount = 0 } }; harmony.PatchAll(); } public static bool CheckBossAccess(string bossPlace, OfferingBowl __instance, Humanoid user) { foreach (ControlBossConfig boss in bossList) { if (Real.Value) { int num = realDay * boss.Days; if (currentDay < num && bossPlace == boss.PlaceName) { Debug.Log((object)"Yes he is entering in exeption"); ((Character)user).Message((MessageType)2, $"O {boss.NameTranslate} só pode ser invocado em {currentDay} / {num} dias!", 0, (Sprite)null); return true; } } else if (currentDay < boss.Days && bossPlace == boss.PlaceName) { Debug.Log((object)"Yes he is entering in exeption"); ((Character)user).Message((MessageType)2, $"O {boss.NameTranslate} só pode ser invocado em {currentDay} / {boss.Days} dias!", 0, (Sprite)null); return true; } } return false; } }