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 VeryLethal v1.1.0
plugins/VeryLethal.dll
Decompiled 7 months agousing System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Networking; [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: AssemblyCompany("VeryLethal")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("VeryLethal")] [assembly: AssemblyTitle("VeryLethal")] [assembly: AssemblyVersion("1.0.0.0")] [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 very_lethal { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resource1 { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("very_lethal.Resource1", typeof(Resource1).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static UnmanagedMemoryStream jester => ResourceManager.GetStream("jester", resourceCulture); internal Resource1() { } } } namespace VeryLethal { [BepInPlugin("com.scriptifid.verylethal", "VeryLethal", "1.0.0")] public class Plugin : BaseUnityPlugin { [CompilerGenerated] private sealed class <Init>d__3 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Plugin <>4__this; private string <cacheDir>5__1; private string <outPath>5__2; private Stream <s>5__3; private FileStream <fs>5__4; private string <uri>5__5; private UnityWebRequest <uwr>5__6; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <Init>d__3(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <cacheDir>5__1 = null; <outPath>5__2 = null; <s>5__3 = null; <fs>5__4 = null; <uri>5__5 = null; <uwr>5__6 = null; <>1__state = -2; } private bool MoveNext() { //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Invalid comparison between Unknown and I4 //IL_01e8: Unknown result type (might be due to invalid IL or missing references) try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <cacheDir>5__1 = Path.Combine(Paths.BepInExRootPath, "cache", "jesterreplacer"); if (!Directory.Exists(<cacheDir>5__1)) { Directory.CreateDirectory(<cacheDir>5__1); } <outPath>5__2 = Path.Combine(<cacheDir>5__1, "jester.ogg"); if (!File.Exists(<outPath>5__2)) { <s>5__3 = Assembly.GetExecutingAssembly().GetManifestResourceStream("VeryLethal.Resources.jester.ogg"); try { if (<s>5__3 != null) { <fs>5__4 = File.Create(<outPath>5__2); try { <s>5__3.CopyTo(<fs>5__4); <fs>5__4.Flush(); } finally { if (<fs>5__4 != null) { ((IDisposable)<fs>5__4).Dispose(); } } <fs>5__4 = null; } } finally { if (<s>5__3 != null) { ((IDisposable)<s>5__3).Dispose(); } } <s>5__3 = null; } if (File.Exists(<outPath>5__2)) { <uri>5__5 = "file://" + <outPath>5__2.Replace("\\", "/"); <uwr>5__6 = UnityWebRequestMultimedia.GetAudioClip(<uri>5__5, (AudioType)14); <>1__state = -3; <>2__current = <uwr>5__6.SendWebRequest(); <>1__state = 1; return true; } break; case 1: <>1__state = -3; if ((int)<uwr>5__6.result == 1) { replacement = DownloadHandlerAudioClip.GetContent(<uwr>5__6); ((Object)replacement).name = "JesterReplacement"; } <>m__Finally1(); <uri>5__5 = null; <uwr>5__6 = null; break; } new Harmony("com.scriptifid.verylethal").PatchAll(); return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<uwr>5__6 != null) { ((IDisposable)<uwr>5__6).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static Plugin Instance; public static AudioClip replacement; private void Awake() { Instance = this; ((MonoBehaviour)this).StartCoroutine(Init()); } [IteratorStateMachine(typeof(<Init>d__3))] private IEnumerator Init() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <Init>d__3(0) { <>4__this = this }; } } [HarmonyPatch(typeof(JesterAI), "Start")] public static class Patch_JesterStart { [CompilerGenerated] private sealed class <Replace>d__1 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public JesterAI j; private FieldInfo <f>5__1; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <Replace>d__1(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <f>5__1 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if ((Object)(object)Plugin.replacement == (Object)null) { <>2__current = null; <>1__state = 1; return true; } <f>5__1 = ((object)j).GetType().GetField("windupSFX", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (<f>5__1 != null && <f>5__1.FieldType == typeof(AudioClip)) { <f>5__1.SetValue(j, Plugin.replacement); } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static void Postfix(JesterAI __instance) { ((MonoBehaviour)Plugin.Instance).StartCoroutine(Replace(__instance)); } [IteratorStateMachine(typeof(<Replace>d__1))] private static IEnumerator Replace(JesterAI j) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <Replace>d__1(0) { j = j }; } } }