using 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; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("PesticideRework")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("PesticideRework")] [assembly: AssemblyTitle("PesticideRework")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [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; } } } [HarmonyPatch] public static class PesticideReworkPatches { public static float TurbochargeRangeMultiplier = 2f; public static float MissingHealthDamageMultiplier = 1.25f; [HarmonyPatch(typeof(BounceShotgun), "OnUpgradesEnabled")] [HarmonyPostfix] public static void OnUpgradesEnabledPostfix(BounceShotgun __instance) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown if (!SparrohPlugin.enablePesticideRework.Value || !(__instance.ShotgunData.flamethrowerRange > 0f)) { return; } bool flag = false; foreach (UpgradeInstance activeUpgrade in ((Gun)__instance).ActiveUpgrades) { if (activeUpgrade.IsTurbocharged && (activeUpgrade.Upgrade.Name.Contains("Pesticide") || activeUpgrade.Upgrade.Name.Contains("Flamethrower"))) { flag = true; break; } } if (flag) { __instance.ShotgunData.flamethrowerRange *= TurbochargeRangeMultiplier; } ((Gun)__instance).OnBeforeDamage = (MutableDamageCallback)Delegate.Combine((Delegate?)(object)((Gun)__instance).OnBeforeDamage, (Delegate?)new MutableDamageCallback(OnBeforeFlamethrowerDamage)); } [HarmonyPatch(typeof(BounceShotgun), "OnUpgradesDisabled")] [HarmonyPostfix] public static void OnUpgradesDisabledPostfix(BounceShotgun __instance) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown if (SparrohPlugin.enablePesticideRework.Value && __instance.ShotgunData.flamethrowerRange > 0f) { ((Gun)__instance).OnBeforeDamage = (MutableDamageCallback)Delegate.Remove((Delegate?)(object)((Gun)__instance).OnBeforeDamage, (Delegate?)new MutableDamageCallback(OnBeforeFlamethrowerDamage)); } } private static void OnBeforeFlamethrowerDamage(ref DamageCallbackData data) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 if ((data.damageData.damageFlags & 0x11) != 17) { return; } IDamageSource source = data.source; BounceShotgun val = (BounceShotgun)(object)((source is BounceShotgun) ? source : null); if (val == null) { return; } bool flag = false; foreach (UpgradeInstance activeUpgrade in ((Gun)val).ActiveUpgrades) { if (activeUpgrade.IsTurbocharged && (activeUpgrade.Upgrade.Name.Contains("Pesticide") || activeUpgrade.Upgrade.Name.Contains("Flamethrower"))) { flag = true; break; } } if (flag) { float num = 1f - ((ISelectable)data.target).Health / data.target.MaxHealth; data.damageData.damage *= 1f + num * MissingHealthDamageMultiplier; } } } [BepInPlugin("sparroh.pesticiderework", "PesticideRework", "1.0.1")] [MycoMod(/*Could not decode attribute arguments.*/)] public class SparrohPlugin : BaseUnityPlugin { public const string PluginGUID = "sparroh.pesticiderework"; public const string PluginName = "PesticideRework"; public const string PluginVersion = "1.0.1"; internal static ManualLogSource Logger; internal static ConfigEntry enablePesticideRework; private Harmony harmony; private void Awake() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; enablePesticideRework = ((BaseUnityPlugin)this).Config.Bind("General", "Enable Pesticide Rework", true, "Enhances Pesticide flamethrower with turbocharged range boost and damage scaling with enemy missing health."); harmony = new Harmony("sparroh.pesticiderework"); harmony.PatchAll(typeof(PesticideReworkPatches)); Logger.LogInfo((object)"PesticideRework v1.0.1 loaded successfully."); } private void OnDestroy() { Harmony obj = harmony; if (obj != null) { obj.UnpatchSelf(); } } } namespace PesticideRework { public static class MyPluginInfo { public const string PLUGIN_GUID = "PesticideRework"; public const string PLUGIN_NAME = "PesticideRework"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }