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 BuffCompany v1.1.7
elskie.BuffCompany.dll
Decompiled 8 months agousing System; using System.Diagnostics; 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 UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("elskie.BuffCompany")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.1.6.0")] [assembly: AssemblyInformationalVersion("1.1.6")] [assembly: AssemblyProduct("BuffCompany")] [assembly: AssemblyTitle("elskie.BuffCompany")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.6.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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 BuffCompany { internal static class BCConfig { public static ConfigEntry<int> hoardingBugHP; public static ConfigEntry<int> snareFleaHP; public static ConfigEntry<bool> snareFleaInvincible; public static ConfigEntry<bool> snareFleaNoSoloGrace; public static ConfigEntry<int> bunkerSpiderHP; public static ConfigEntry<bool> bunkerSpiderIncreasedWebs; public static ConfigEntry<bool> bunkerSpiderBigWebs; public static ConfigEntry<bool> bunkerSpiderFast; public static ConfigEntry<int> thumperHP; public static ConfigEntry<bool> thumperSpeed; public static ConfigEntry<int> brackenHP; public static ConfigEntry<bool> brackenAnger; public static ConfigEntry<int> maskedHP; public static ConfigEntry<bool> coilHeadNoCooldown; public static ConfigEntry<int> nutcrackerHP; public static ConfigEntry<bool> nutcrackerMoveAndShoot; public static ConfigEntry<bool> girlChase; public static ConfigEntry<bool> butlerNoSoloGrace; public static ConfigEntry<int> maneaterHP; public static ConfigEntry<int> baboonHawkHP; public static ConfigEntry<bool> eyelessDogSuspicion; public static ConfigEntry<bool> forestGiantInvincible; public static ConfigEntry<float> forestGiantAggroMod; private static bool isLoaded; public static void Load(ConfigFile config) { if (!isLoaded) { hoardingBugHP = config.Bind<int>("Entities", "HoardingBugHP", 5, "Vanilla: 3"); snareFleaHP = config.Bind<int>("Entities", "SnareFleaHP", 6, "Vanilla: 3"); snareFleaNoSoloGrace = config.Bind<bool>("Entities", "SnareFleaNoSoloGrace", true, "Vanilla: false"); snareFleaInvincible = config.Bind<bool>("Entities", "SnareFleaInvincible", true, "Vanilla: false - If SnareFleaHP is less than 6 Snare Flea will not be immune to being shot"); bunkerSpiderHP = config.Bind<int>("Entities", "BunkerSpiderHP", 7, "Vanilla: 5"); bunkerSpiderFast = config.Bind<bool>("Entities", "BunkerSpiderFast", true, "Vanilla: false"); bunkerSpiderIncreasedWebs = config.Bind<bool>("Entities", "BunkerSpiderIncreasedWebs", true, "Vanilla: false"); bunkerSpiderBigWebs = config.Bind<bool>("Entities", "BunkerSpiderBigWebs", true, "Vanilla: false"); thumperHP = config.Bind<int>("Entities", "ThumperHP", 5, "Vanilla: 4"); thumperSpeed = config.Bind<bool>("Entities", "ThumperHP", true, "Vanilla: false"); brackenHP = config.Bind<int>("Entities", "BrackenHP", 7, "Vanilla: 5"); brackenAnger = config.Bind<bool>("Entities", "BrackenAnger", true, "Vanilla: false"); maskedHP = config.Bind<int>("Entities", "MaskedEnemyHP", 5, "Vanilla: 4"); nutcrackerHP = config.Bind<int>("Entities", "NutcrackerHP", 7, "Vanilla: 5"); nutcrackerMoveAndShoot = config.Bind<bool>("Entities", "NutcrackerMoveAndShoot", true, "Vanilla: false"); maneaterHP = config.Bind<int>("Entities", "ManeaterHP", 7, "Vanilla: 5"); baboonHawkHP = config.Bind<int>("Entities", "BaboonHawkHP", 6, "Vanilla: 4"); coilHeadNoCooldown = config.Bind<bool>("Entities", "CoilHeadNoCooldown", true, "Vanilla: false"); girlChase = config.Bind<bool>("Entities", "GhostGirlChase", true, "Vanilla: false"); butlerNoSoloGrace = config.Bind<bool>("Entities", "ButlerNoSoloGrace", true, "Vanilla: false"); eyelessDogSuspicion = config.Bind<bool>("Entities", "EyelessDogSuspicion", true, "Vanilla: false"); forestGiantInvincible = config.Bind<bool>("Entities", "ForestGiantInvincible", true, "Vanilla: false"); forestGiantAggroMod = config.Bind<float>("Entities", "ForestGiantAggroModifier", 1.2f, "Vanilla: 1"); isLoaded = true; } } } [BepInPlugin("elskie.BuffCompany", "BuffCompany", "1.1.6")] public class BuffCompany : BaseUnityPlugin { public static BuffCompany Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } private void Awake() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Instance = this; if (Harmony == null) { Harmony = new Harmony("elskie.BuffCompany"); } BCConfig.Load(((BaseUnityPlugin)this).Config); Harmony.PatchAll(); Logger.LogInfo((object)"elskie.BuffCompany v1.1.6 has loaded. Good luck."); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "elskie.BuffCompany"; public const string PLUGIN_NAME = "BuffCompany"; public const string PLUGIN_VERSION = "1.1.6"; } } namespace BuffCompany.Patches { [HarmonyPatch(typeof(BaboonBirdAI), "Start")] internal class BaboonBirdPatch { private static void Postfix(BaboonBirdAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.baboonHawkHP.Value; } } [HarmonyPatch(typeof(ButlerEnemyAI), "Start")] internal class ButlerEnemyStartPatch { private static void Postfix(ButlerEnemyAI __instance) { if (StartOfRound.Instance.connectedPlayersAmount == 0 && BCConfig.butlerNoSoloGrace.Value) { ((EnemyAI)__instance).enemyHP = 8; __instance.idleMovementSpeedBase = 3.5f; } } } [HarmonyPatch(typeof(CaveDwellerAI), "Start")] internal class CaveDwellerPatch { private static void Postfix(CaveDwellerAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.maneaterHP.Value; } } [HarmonyPatch(typeof(CentipedeAI), "Update")] internal class CentipedeHitPatch { private static void Postfix(CentipedeAI __instance) { if (((EnemyAI)__instance).enemyHP < BCConfig.snareFleaHP.Value + 6 && ((EnemyAI)__instance).enemyHP >= 1 && !((EnemyAI)__instance).isEnemyDead && BCConfig.snareFleaInvincible.Value) { ((EnemyAI)__instance).enemyHP = BCConfig.snareFleaHP.Value + 6; } } } [HarmonyPatch(typeof(CentipedeAI), "Start")] internal class CentipedeStartPatch { private static void Postfix(CentipedeAI __instance) { if (BCConfig.snareFleaInvincible.Value) { ((EnemyAI)__instance).enemyHP = BCConfig.snareFleaHP.Value + 6; } else { ((EnemyAI)__instance).enemyHP = BCConfig.snareFleaHP.Value; } if (StartOfRound.Instance.connectedPlayersAmount == 0 && BCConfig.snareFleaNoSoloGrace.Value) { __instance.singlePlayerSecondChanceGiven = true; } } } [HarmonyPatch(typeof(CrawlerAI), "Start")] internal class CrawlerPatch { private static void Postfix(CrawlerAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.thumperHP.Value; if (BCConfig.thumperSpeed.Value) { __instance.SpeedAccelerationEffect = 4f; } } } [HarmonyPatch(typeof(DressGirlAI), "Update")] internal class DressGirlPatch { private static void Postfix(DressGirlAI __instance) { if (BCConfig.girlChase.Value && __instance.seenByPlayerThisTime) { __instance.seenByPlayerThisTime = false; __instance.BeginChasing(); } } } [HarmonyPatch(typeof(FlowermanAI), "Start")] internal class FlowermanStartPatch { private static void Postfix(FlowermanAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.brackenHP.Value; if (BCConfig.brackenAnger.Value) { __instance.angerMeter = 11f; } } } [HarmonyPatch(typeof(FlowermanAI), "Update")] internal class FlowermanUpdatePatch { private static void Postfix(FlowermanAI __instance) { if (__instance.angerMeter <= 11f && BCConfig.brackenAnger.Value) { __instance.angerMeter = 11f; } } } [HarmonyPatch(typeof(FlowerSnakeEnemy), "Update")] internal class FlowerSnakePatch { private static void Prefix(FlowerSnakeEnemy __instance, EnemyAI enemyAI) { enemyAI.creatureAnimator.SetBool("leaving", false); } private static bool Cling(FlowerSnakeEnemy __instance, EnemyAI enemyAI) { bool flag = Object.op_Implicit((Object)(object)__instance.clingingToPlayer); return true; } } [HarmonyPatch(typeof(ForestGiantAI), "Start")] internal class ForestGiantStartPatch { private static void Postfix(ForestGiantAI __instance) { __instance.scrutiny = BCConfig.forestGiantAggroMod.Value; } } [HarmonyPatch(typeof(ForestGiantAI), "Update")] internal class ForestGiantUpdatePatch { private static void Postfix(ForestGiantAI __instance) { if (((EnemyAI)__instance).enemyHP < 38 && ((EnemyAI)__instance).enemyHP >= 1 && !((EnemyAI)__instance).isEnemyDead && BCConfig.forestGiantInvincible.Value) { ((EnemyAI)__instance).enemyHP = 38; } } } [HarmonyPatch(typeof(HoarderBugAI), "Start")] internal class HoarderBugPatch { private static void Postfix(HoarderBugAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.hoardingBugHP.Value; } } [HarmonyPatch(typeof(MaskedPlayerEnemy), "Start")] internal class MaskedPlayerEnemyPatch { private static void Postfix(MaskedPlayerEnemy __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.maskedHP.Value; } } [HarmonyPatch(typeof(MouthDogAI), "Start")] internal class MouthDogStartPatch { private static void Postfix(MouthDogAI __instance) { if (BCConfig.eyelessDogSuspicion.Value) { __instance.suspicionLevel = 2; } } } [HarmonyPatch(typeof(MouthDogAI), "Update")] internal class MouthDogUpdatePatch { private static void Postfix(MouthDogAI __instance) { if (__instance.suspicionLevel <= 2 && BCConfig.eyelessDogSuspicion.Value) { __instance.suspicionLevel = 2; } } } [HarmonyPatch(typeof(NutcrackerEnemyAI), "Start")] internal class NutcrackerStartPatch { private static void Postfix(NutcrackerEnemyAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.nutcrackerHP.Value; if (BCConfig.nutcrackerMoveAndShoot.Value) { __instance.timesSeeingSamePlayer = 4; } } } [HarmonyPatch(typeof(TimeOfDay), "Update")] internal class RadMechPatch { private static void Postfix(RoundManager __instance, LungProp lungProp) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) __instance.SpawnEnemyGameObject(__instance.outsideAINodes[0].transform.position, 0f, -1, lungProp.radMechEnemyType); } } [HarmonyPatch(typeof(SandSpiderAI), "Start")] internal class SandSpiderStartPatch { private static void Postfix(SandSpiderAI __instance) { ((EnemyAI)__instance).enemyHP = BCConfig.bunkerSpiderHP.Value; if (BCConfig.bunkerSpiderIncreasedWebs.Value) { __instance.maxWebTrapsToPlace = Random.Range(9, 12); } } } [HarmonyPatch(typeof(SandSpiderAI), "Update")] internal class SandSpiderUpdatePatch { private static void Postfix(SandSpiderAI __instance) { if (((EnemyAI)__instance).movingTowardsTargetPlayer && BCConfig.bunkerSpiderFast.Value) { ((EnemyAI)__instance).agent.speed = 5.04f; __instance.spiderSpeed = 5.04f; } } } [HarmonyPatch(typeof(SpringManAI), "Update")] internal class SpringManPatch { private static void Postfix(SpringManAI __instance) { if (__instance.timeSpentMoving >= 1f && BCConfig.coilHeadNoCooldown.Value) { __instance.timeSpentMoving = 1f; } } } [HarmonyPatch(typeof(SandSpiderWebTrap), "Awake")] internal class WebTrapPatch { private static void Postfix(SandSpiderWebTrap __instance) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) if (BCConfig.bunkerSpiderBigWebs.Value) { ((Component)__instance).transform.localScale = new Vector3(1.4f, 1.4f, 0.04f); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }