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 CoronerSirenHead v1.0.1
Coroner - SirenHead.dll
Decompiled 7 months agousing System; using System.Collections; 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.Logging; using Coroner; using CoronerSirenHead.Patch; using GameNetcodeStuff; using HarmonyLib; using LethalSirenHead.Enemy; using Microsoft.CodeAnalysis; [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: AssemblyCompany("Turkeysteaks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Provides integration between Coroner and Siren Head.")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Coroner - Siren Head")] [assembly: AssemblyTitle("Coroner - SirenHead")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.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 CoronerSirenHead { public static class PluginInfo { public const string PLUGIN_ID = "coroner.sirenhead"; public const string PLUGIN_NAME = "Coroner - Siren Head"; public const string PLUGIN_VERSION = "1.0.0"; public const string PLUGIN_GUID = "Turkeysteaks.coroner.sirenhead"; } [BepInPlugin("Turkeysteaks.coroner.sirenhead", "Coroner - Siren Head", "1.0.0")] public class Plugin : BaseUnityPlugin { public ManualLogSource PluginLogger; public string KEY = "DeathEnemySirenHead"; public AdvancedCauseOfDeath SIREN_HEAD; public static Plugin Instance { get; private set; } private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) Instance = this; PluginLogger = ((BaseUnityPlugin)this).Logger; Harmony val = new Harmony("Turkeysteaks.coroner.sirenhead"); val.PatchAll(); val.PatchAll(typeof(SirenHeadEatPlayerPatch)); PluginLogger.LogInfo((object)"Plugin Coroner - Siren Head (Turkeysteaks.coroner.sirenhead) is loaded!"); if (!API.IsRegistered(KEY)) { SIREN_HEAD = API.Register(KEY); } } } } namespace CoronerSirenHead.Patch { [HarmonyPatch(typeof(SirenHeadAI))] [HarmonyPatch("EatPlayer")] internal class SirenHeadEatPlayerPatch { private static ulong playerID; public static void Postfix(SirenHeadAI __instance, ulong player, ref IEnumerator __result) { playerID = player; } [HarmonyPostfix] [HarmonyPatch(/*Could not decode attribute arguments.*/)] private static void Postfix_MoveNext(bool __result) { try { if (!__result) { HandleSirenHeadKill(playerID); } } catch (Exception ex) { Plugin.Instance.PluginLogger.LogError((object)("Error in SirenHeadEatPlayerPatch: " + ex)); Plugin.Instance.PluginLogger.LogError((object)ex.StackTrace); } } private static void HandleSirenHeadKill(ulong playerId) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) Plugin.Instance.PluginLogger.LogDebug((object)"Player was killed by Siren Head! Processing..."); PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId]; Plugin.Instance.PluginLogger.LogDebug((object)$"Player {playerId} was killed by Siren Head! Setting cause of death..."); API.SetCauseOfDeath(val, (AdvancedCauseOfDeath?)Plugin.Instance.SIREN_HEAD); playerID = 100000uL; } } internal class SimpleEnumerator : IEnumerable { public IEnumerator enumerator; public Action prefixAction; public Action postfixAction; public Action<object> preItemAction; public Action<object> postItemAction; public Func<object, object> itemAction; IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public IEnumerator GetEnumerator() { prefixAction(); while (enumerator.MoveNext()) { object item = enumerator.Current; preItemAction(item); yield return itemAction(item); postItemAction(item); } postfixAction(); } } }