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 SoftDiamondLootBug v1.6.9
SoftDiamondTinySoftHoarderBug.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("SoftDiamondTinySoftHoarderBug")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Replaces Hoarder Bug with Tiny Softs")] [assembly: AssemblyFileVersion("1.0.8.0")] [assembly: AssemblyInformationalVersion("1.0.8")] [assembly: AssemblyProduct("SoftDiamond's Tiny Soft Hoarder Bug Mod")] [assembly: AssemblyTitle("SoftDiamondTinySoftHoarderBug")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.8.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.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 SoftDiamondHoarderBug { [BepInPlugin("SoftDiamondHoarderBug", "SoftDiamond's Tiny Soft Hoarder Bug Mod", "1.0.8")] public class TinySoftModBase : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("SoftDiamondHoarderBug"); private static TinySoftModBase Instance; public static ManualLogSource mls; internal static ConfigEntry<bool> configIncreaseTinySoftSpawns; internal static ConfigEntry<int> configMaxEnemyPowerCount; internal static ConfigEntry<int> configNecoArcRarityWeight; internal static ConfigEntry<int> configNecoArcDay; public static GameObject TinySoftPrefab; public static GameObject NecoArcObject; private AssetBundle TinySoftAssetBundle; public static int DaysPassed; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("SoftDiamondHoarderBug"); mls.LogInfo((object)"--=== SOFTDIAMOND's TINY SOFT MOD LOADED ===--"); configIncreaseTinySoftSpawns = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Increase Tiny Soft Spawns", true, "Determines whether or not to increase the chance of Tiny Softs spawning."); configMaxEnemyPowerCount = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Max Enemy Power Count", 10, "Power Count determines the maximum number of enemies that may spawn. The normal value for Experiment, for example, is 4."); configNecoArcRarityWeight = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Tiny Soft Rarity Weight", 100, "Increases the chance of Tiny Softs spawning. A normal value is 10-80. Higher = more likely."); configNecoArcDay = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Tiny Soft Day", 3, "Tiny Softs will have increased spawn rate on this day. -1 means all days. First day is day 1. 99 means normal spawn rates at all times... unless you reach a 99th day."); harmony.PatchAll(typeof(TinySoftModBase)); string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "softdiamondlootbug"); mls.LogDebug((object)text); TinySoftAssetBundle = AssetBundle.LoadFromFile(text); if ((Object)(object)TinySoftAssetBundle == (Object)null) { mls.LogError((object)"Could not find Tiny Softs Asset Bundle! File \"softdiamondlootbug\" needs to be moved to the same folder as the .dll"); } TinySoftPrefab = TinySoftAssetBundle.LoadAsset<GameObject>("Assets/wolf_01_mxo.prefab"); SkinnedMeshRenderer[] componentsInChildren = TinySoftPrefab.GetComponentsInChildren<SkinnedMeshRenderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { ((Component)componentsInChildren[i]).gameObject.layer = LayerMask.NameToLayer("Enemies"); } mls.LogMessage((object)"\r\n @@@@@ @@@@@@ \r\n @@%%%%%@@ @@%%%%%%@@ \r\n @@%%%%%%%%%@@ @@%%%%%%%%%%@@ \r\n @%%%%#=+%%%%%@@ @@%%%%%+-=#%%%@@ \r\n @@%%%%=:::+%%%%%@@ @@%%%%%#:::-*%%%%@ \r\n @%%%%-::::-%%%%%%%@ @%%%%%%%+:::::+%%%%@ \r\n @%%%%-::::::@%%%%%%%@ @@@ @%%%%%%%%=::::::+%%%@@ \r\n @%%%%=:::::::#%%%%%%%%@@ @@@ @%%%%@ @@%%%%%%%%%-:::::::*%%%@@ \r\n @@%%%+::::::::*%%%%%%%%%%@ @@ @%%%@%%%%%%%@@@ @%%%%%%%%%%%-:::::::-%%%%@ \r\n @%%%#-::::::::*%%%%%%%%%%%@@ @@%@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%-::::::::=%%%@@ \r\n @@%%%=:::::::::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-:::::::::#%%%@ \r\n @%%%#::::::::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-:::::::::=%%%@@ \r\n @@%%%=::::::::::%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%=:::::::::-%%%%@ \r\n @%%%%-:::::::::-@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%=::::::::::+%%%@ \r\n @%%%*::::::::::-%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%+::::::::::=%%%@ \r\n @%%%+:::::::-=-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%==+-::::::-%%%@@ \r\n @%%%=::::::=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#::::::-%%%%@ \r\n @%%%=:::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%=::::::#%%%@ \r\n @%%%=:::::-%%%%%%%%@@#===+%@@%%%%%%%%%%%%%%%%%%%%%%%@%#+-::=#@%%%%%%%%+:-::::#%%%@ \r\n @%%%=-===##%%%%%%%@+:.:-=+*#@@%%%%%%%%%%%%%%%%%%%%%@%+=++--..:#@%%%%%%#%#=*+-%%%@@ \r\n @%%%#%%%%%%%%%%%%@- .--=:..-%%@%%%%%%%%%%%%%%%%%%%@*:..:*%=-: .*@%%%%%%%%%%%@%%%@ \r\n @%%%@%%%%%%%%%%%@- --*-....*%@%%%%%%%%%%%%%%%%%%%@=...:+#%-=. .%@%%%%%%%%%%%%%%@ \r\n @%%%@%%%%%%%%%%%#. .--%#-:::.+%%%%%%%%%%%%%%%%%@%%%%#=++..##.: -@%%%%%%%%%%%@%%@ \r\n @%%@%%%%%%%%%%%+ ::+%%%%%##%%%%%%#***********#%%%%%%%%**%%.: :@%%%%%%%%%%%@%%@ \r\n @%%@%%%%%%%%%%%+ .:-%%%%%%%%%%#*****************#%%%%%%%%+.: :%%%%%%%%%%%@%%@ \r\n @@%@%%%%%%%%%%%#: .-*%%%%%%%%%%%%%%%%%%##*********#%@%%%%%%*. .#%%%%%%%%%%%@%%@@ \r\n @%%%%%%%%%%%%%%%%%=+%%%%%%%%%%%%%%%%%%%%%%%%********%%%%%%%%%%+%%%%%%%%%%%%%%%%%@\r\n @%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%*******%@%%%%%%%%%@%%%%%%%%%%%%%%%%@ \r\n @%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%******%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@ \r\n @%%%%%%%%%%%%%%-%%%%%%%%%%%%%%%%%%%%%%%%%%#****#%%%%%%%%%%%%%%%=*%%%%%%%%%%%%%@@ \r\n @@%%%%%%%%%%%#-:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--*%%%%%%%%%%%%@ \r\n @@%%%%%%%%%%%=:+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:-#%%%%%%%%%%@@ \r\n @@%%%%%%%%%%=-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=-#%%%%%%%%%@@ \r\n @@%%%%%%%%%%%%+=@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%+-%%%%%%%%%%%%%@@ \r\n @@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%@ \r\n @@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%@@ \r\n @@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@ \r\n @@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@ \r\n @@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@ \r\n @%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@ \r\n @%%%%%%%@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@"); } private void Start() { mls.LogInfo((object)"--=== START ===--"); } [HarmonyPatch(typeof(HoarderBugAI), "Start")] [HarmonyPostfix] public static void PluginDetectSummonBug(HoarderBugAI __instance) { //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) mls.LogInfo((object)"--=== Hoarder Bug Summoned ===--"); mls.LogInfo((object)"--=== Convert to Tiny Soft ===--"); if ((Object)(object)((Component)__instance).transform.Find("HoarderBugModel") == (Object)null) { mls.LogInfo((object)"--=== NOT FOUND ===--"); } else { mls.LogInfo((object)"--=== FOUND ===--"); } ((Renderer)((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("Cube")).gameObject.GetComponent<SkinnedMeshRenderer>()).enabled = false; ((Renderer)((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("Cube.001")).gameObject.GetComponent<SkinnedMeshRenderer>()).enabled = false; ((Renderer)((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("AnimContainer").Find("Armature") .Find("Abdomen") .Find("Chest") .Find("Head") .Find("LeftWing")).gameObject.GetComponent<MeshRenderer>()).enabled = false; ((Renderer)((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("AnimContainer").Find("Armature") .Find("Abdomen") .Find("Chest") .Find("Head") .Find("RightWing")).gameObject.GetComponent<MeshRenderer>()).enabled = false; ((Component)((Component)__instance).gameObject.transform.Find("ScanNode")).gameObject.GetComponent<ScanNodeProperties>().headerText = "Tiny Soft"; NecoArcObject = Object.Instantiate<GameObject>(TinySoftPrefab); NecoArcObject.transform.SetParent(((Component)__instance).transform); NecoArcObject.transform.localPosition = Vector3.zero; NecoArcObject.transform.localRotation = Quaternion.identity; ((EnemyAI)__instance).creatureAnimator = ((Component)NecoArcObject.transform).GetComponent<Animator>(); } [HarmonyPatch(typeof(HoarderBugAI), "CalculateAnimationDirection")] [HarmonyPostfix] public static void OnCalculateAnimationDirection(HoarderBugAI __instance, float maxSpeed, ref float ___velX, ref float ___velZ) { Animator component = ((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("AnimContainer")).gameObject.GetComponent<Animator>(); if (!((Object)(object)component == (Object)null)) { component.SetFloat("VelocityX", Mathf.Clamp(___velX, 0f - maxSpeed, maxSpeed)); component.SetFloat("VelocityZ", Mathf.Clamp(___velZ, 0f - maxSpeed, maxSpeed)); } } [HarmonyPatch(typeof(HoarderBugAI), "KillEnemy")] [HarmonyPrefix] public static void OnKillEnemy(HoarderBugAI __instance, ref float ___velX, ref float ___velZ) { Animator component = ((Component)((Component)__instance).gameObject.transform.Find("HoarderBugModel").Find("AnimContainer")).gameObject.GetComponent<Animator>(); if (!((Object)(object)component == (Object)null)) { component.SetFloat("VelocityX", Mathf.Clamp(___velX, 0f, 0f)); component.SetFloat("VelocityZ", Mathf.Clamp(___velZ, 0f, 0f)); } } [HarmonyPatch(typeof(RoundManager), "LoadNewLevel")] [HarmonyPrefix] private static bool ModifiedLoad(ref SelectableLevel newLevel) { mls.LogInfo((object)("Client is host: " + ((NetworkBehaviour)RoundManager.Instance).IsHost)); if (!((NetworkBehaviour)RoundManager.Instance).IsHost) { return true; } if (newLevel.levelID == 3) { mls.LogInfo((object)"Level is company, skipping"); DaysPassed = 0; return true; } DaysPassed++; mls.LogInfo((object)$"Days passed: {DaysPassed}"); SelectableLevel val = newLevel; Dictionary<Type, int> dictionary = new Dictionary<Type, int>(); dictionary.Clear(); if (configIncreaseTinySoftSpawns.Value && (configNecoArcDay.Value == -1 || configNecoArcDay.Value == DaysPassed)) { val.maxEnemyPowerCount = configMaxEnemyPowerCount.Value; dictionary.Add(typeof(HoarderBugAI), configNecoArcRarityWeight.Value); UpdateRarity(newLevel.Enemies, dictionary); mls.LogInfo((object)"Increased Max Power Counter and Hoarder Bug Spawns"); } else { mls.LogInfo((object)"Using default spawn rate settings"); } newLevel = val; return true; } private static void UpdateRarity(List<SpawnableEnemyWithRarity> enemies, Dictionary<Type, int> componentRarity) { if (componentRarity.Count <= 0) { return; } foreach (SpawnableEnemyWithRarity enemy in enemies) { foreach (KeyValuePair<Type, int> item in componentRarity) { if (!((Object)(object)enemy.enemyType.enemyPrefab.GetComponent(item.Key) == (Object)null)) { enemy.rarity = item.Value; componentRarity.Remove(item.Key); break; } } } } public static bool Dummy(string code) { return true; } } public static class PluginInfo { public const string PLUGIN_GUID = "SoftDiamondHoarderBug"; public const string PLUGIN_NAME = "SoftDiamond's Tiny Soft Hoarder Bug Mod"; public const string PLUGIN_VERSION = "1.0.8"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }