Decompiled source of MirageLegacy v1.8.2
BepInEx/plugins/Mirage.dll
Decompiled 5 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security.Permissions; using System.Threading; using <StartupCode$Mirage>; using <StartupCode$Mirage>.$Mirage.Core; using <StartupCode$Mirage>.$Mirage.Core.Audio; using <StartupCode$Mirage>.$Mirage.Core.Audio.Network; using <StartupCode$Mirage>.$Mirage.Patch; using <StartupCode$Mirage>.$Mirage.Unity; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Cysharp.Threading.Tasks; using Dissonance; using Dissonance.Audio; using Dissonance.Audio.Capture; using Dissonance.Audio.Playback; using Dissonance.VAD; using FSharpPlus; using FSharpPlus.Control; using FSharpPlus.Data; using FSharpPlus.Internals; using FSharpx.Control; using GameNetcodeStuff; using HarmonyLib; using LobbyCompatibility.Enums; using LobbyCompatibility.Features; using Microsoft.FSharp.Collections; using Microsoft.FSharp.Control; using Microsoft.FSharp.Core; using Mirage; using Mirage.Core; using Mirage.Core.Audio; using Mirage.Core.Audio.Network; using Mirage.NetcodePatcher; using Mirage.Patch; using Mirage.Unity; using NAudio.Lame; using NAudio.Wave; using Unity.Collections; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [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("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("NAudio.Core")] [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("Mirage")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+9b7cb163b515ef39b0525b8c85f6c42169a7a13a")] [assembly: AssemblyProduct("Mirage")] [assembly: AssemblyTitle("Mirage")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } namespace Mirage { [Serializable] [BepInPlugin("Mirage", "qwbarch.Mirage", "1.8.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public void Awake() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) $Plugin.Awake@51 awake@ = new $Plugin.Awake@51(this); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; Array values = Enum.GetValues(typeof(LogCategory)); IEnumerable<LogCategory> enumerable = SeqModule.Cast<LogCategory>((IEnumerable)values); FSharpFunc<LogCategory, Unit> @_instance; @_instance = $Plugin.disableLogs@53.@_instance; FSharpFunc<LogCategory, Unit> val4 = @_instance; IEnumerable<LogCategory> enumerable2 = enumerable; Iterate val5 = null; Iterate.Iterate<LogCategory>(enumerable2, val4); Mirage.Core.Logger.initAsyncLogger(); initLobbyCompatibility(); Netcode.initNetcodePatcher(); MonadFxStrictBuilder<FSharpResult<Unit, string>> val6 = val; FSharpResult<Unit, string> val7 = ((Builder<FSharpResult<Unit, string>>)(object)val).ReturnFrom(Mirage.Core.Config.initConfig(((BaseUnityPlugin)this).Config)); StrictBuilder<FSharpResult<Unit, string>> val8 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; FSharpFunc<Unit, FSharpResult<Unit, string>> b = new $Plugin.Awake@59-1(this, val); FSharpFunc<Unit, FSharpResult<Unit, string>> val9 = new $Plugin.Awake@58-11(b); Bind val10 = null; FSharpResult<Unit, string> val11 = default(FSharpResult<Unit, string>); Mirage.Core.Logger.handleResultWith(awake@, Bind.op_GreaterGreaterEquals<Unit, string, Unit>(val7, val9)); } [CompilerGenerated] internal void initLobbyCompatibility() { if (Chainloader.PluginInfos.ContainsKey("BMX.LobbyCompatibility")) { FSharpFunc<Unit, Unit> @_instance; @_instance = $Plugin.register@40-1.@_instance; @_instance.Invoke((Unit)null); } } [CompilerGenerated] internal void onError() { Mirage.Core.Logger.logError.Invoke("Failed to initialize Mirage. Plugin is disabled."); } } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class AssemblyInfo { } namespace <StartupCode$Mirage> { internal static class $AssemblyInfo { } internal static class $Plugin { [Serializable] internal sealed class Awake@51 : FSharpFunc<Unit, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Plugin arg00@; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@51(Plugin arg00@) { this.arg00@ = arg00@; } public override Unit Invoke(Unit arg10@) { arg00@.onError(); return null; } } [Serializable] internal sealed class disableLogs@53 : FSharpFunc<LogCategory, Unit> { internal static readonly disableLogs@53 @_instance = new disableLogs@53(); [CompilerGenerated] [DebuggerNonUserCode] internal disableLogs@53() { } public override Unit Invoke(LogCategory category) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Logs.SetLogLevel(category, (LogLevel)4); return null; } } [Serializable] internal sealed class Awake@62-2 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly Awake@62-2 @_instance = new Awake@62-2(); [CompilerGenerated] [DebuggerNonUserCode] internal Awake@62-2() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class Awake@61-3 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly Awake@61-3 @_instance = new Awake@61-3(); [CompilerGenerated] [DebuggerNonUserCode] internal Awake@61-3() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class Awake@67-5 { internal static void Invoke() { Mirage.Core.Audio.Recording.deleteRecordings(); } } [Serializable] internal sealed class Awake@69-6 : FSharpFunc<Type, Type> { internal static readonly Awake@69-6 @_instance = new Awake@69-6(); [CompilerGenerated] [DebuggerNonUserCode] internal Awake@69-6() { } public override Type Invoke(Type value) { return (Type)(object)value; } } [Serializable] internal sealed class Awake@69-7 : FSharpFunc<Type, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Harmony objectArg; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@69-7(Harmony objectArg) { this.objectArg = objectArg; } public override Unit Invoke(Type assembly) { objectArg.PatchAll(assembly); return null; } } [Serializable] internal sealed class Awake@69-8 : FSharpFunc<Type, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Type, Type> func1; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Type, Unit> func2; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@69-8(FSharpFunc<Type, Type> func1, FSharpFunc<Type, Unit> func2) { this.func1 = func1; this.func2 = func2; } public override Unit Invoke(Type x) { return func2.Invoke(func1.Invoke(x)); } } [Serializable] internal sealed class Awake@69-9 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly Awake@69-9 @_instance = new Awake@69-9(); [CompilerGenerated] [DebuggerNonUserCode] internal Awake@69-9() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class Awake@66-4 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@66-4(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(Unit unitVar) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) Mirage.Core.Audio.Recording.deleteRecordings(); Application.quitting += Awake@67-5.Invoke; Harmony val = new Harmony("qwbarch.Mirage"); FSharpFunc<Type, Type> @_instance; @_instance = Awake@69-6.@_instance; Harmony objectArg = val; FSharpFunc<Type, Unit> func = new Awake@69-7(objectArg); FSharpFunc<Type, Unit> val2 = new Awake@69-8(@_instance, func); FSharpList<Type> val3 = FSharpList<Type>.Cons(typeof(Mirage.Patch.AudioSpatializer.AudioSpatializer), FSharpList<Type>.Cons(typeof(Mirage.Patch.RegisterPrefab.RegisterPrefab), FSharpList<Type>.Cons(typeof(Mirage.Patch.RecordAudio.RecordAudio), FSharpList<Type>.Cons(typeof(Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy), FSharpList<Type>.Cons(typeof(Mirage.Patch.SyncConfig.SyncConfig), FSharpList<Type>.Cons(typeof(Mirage.Patch.RemovePenalty.RemovePenalty), FSharpList<Type>.Empty)))))); Iterate val4 = null; Iterate.Iterate<Type>(val3, val2); MonadFxStrictBuilder<FSharpResult<Unit, string>> val5 = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)Awake@69-9.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class Awake@61-10 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Unit, FSharpResult<Unit, string>> b; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@61-10(FSharpFunc<Unit, FSharpResult<Unit, string>> b) { this.b = b; } public override FSharpResult<Unit, string> Invoke(Unit unitVar0) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return b.Invoke((Unit)null); } } [Serializable] internal sealed class Awake@59-1 : FSharpFunc<Unit, FSharpResult<Unit, string>> { public Plugin @this; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@59-1(Plugin @this, MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.@this = @this; this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(Unit unitVar) { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this.@this).Info.Location); bool flag = LameDLL.LoadNativeDLL(new string[1] { directoryName }); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = builder@; FSharpResult<Unit, string> val3; if (!flag) { Mirage.Core.Logger.logError.Invoke("Failed to load NAudio.Lame. This means no monsters will be able to play your voice.\n" + "Please report this to qwbarch at https://github.com/qwbarch/mirage/issues\n" + ExtraTopLevelOperators.PrintFormatToString<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, string>("Path failed: %P()", new object[1] { directoryName }, (Type[])null))); MonadFxStrictBuilder<FSharpResult<Unit, string>> val2 = builder@; val3 = FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)Awake@62-2.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } else { MonadFxStrictBuilder<FSharpResult<Unit, string>> val4 = builder@; val3 = FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)Awake@61-3.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } FSharpResult<Unit, string> val5 = val3; StrictBuilder<FSharpResult<Unit, string>> val6 = (StrictBuilder<FSharpResult<Unit, string>>)(object)builder@; FSharpFunc<Unit, FSharpResult<Unit, string>> b = new Awake@66-4(builder@); FSharpFunc<Unit, FSharpResult<Unit, string>> val7 = new Awake@61-10(b); Bind val8 = null; FSharpResult<Unit, string> val9 = default(FSharpResult<Unit, string>); return Bind.op_GreaterGreaterEquals<Unit, string, Unit>(val5, val7); } } [Serializable] internal sealed class Awake@58-11 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Unit, FSharpResult<Unit, string>> b; [CompilerGenerated] [DebuggerNonUserCode] internal Awake@58-11(FSharpFunc<Unit, FSharpResult<Unit, string>> b) { this.b = b; } public override FSharpResult<Unit, string> Invoke(Unit unitVar0) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return b.Invoke((Unit)null); } } [Serializable] internal sealed class register@40-1 : FSharpFunc<Unit, Unit> { internal static readonly register@40-1 @_instance = new register@40-1(); [CompilerGenerated] [DebuggerNonUserCode] internal register@40-1() { } public override Unit Invoke(Unit unitVar0) { PluginHelper.RegisterPlugin("Mirage", Version.Parse("1.8.2"), (CompatibilityLevel)2, (VersionStrictness)2); return null; } } } } namespace Mirage { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Netcode { [Serializable] internal sealed class Pipe #1 input at line 41@41 : FSharpFunc<Type, MethodInfo[]> { internal static readonly Pipe #1 input at line 41@41 @_instance = new Pipe #1 input at line 41@41(); [CompilerGenerated] [DebuggerNonUserCode] internal Pipe #1 input at line 41@41() { } public override MethodInfo[] Invoke(Type _arg1) { return _arg1.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); } } [Serializable] internal sealed class initNetcodePatcher@41 : FSharpFunc<MethodInfo, Unit> { internal static readonly initNetcodePatcher@41 @_instance = new initNetcodePatcher@41(); [CompilerGenerated] [DebuggerNonUserCode] internal initNetcodePatcher@41() { } public override Unit Invoke(MethodInfo method) { invokeMethod(method); return null; } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal const BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic; internal static void invokeMethod(MethodInfo method) { object[] customAttributes = method.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length > 0) { object obj = method.Invoke(null, null); } } public static void initNetcodePatcher() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); FSharpFunc<Type, MethodInfo[]> @_instance; @_instance = Pipe #1 input at line 41@41.@_instance; Bind val = null; MethodInfo[] array = null; MethodInfo[] array2 = Bind.op_GreaterGreaterEquals<Type, MethodInfo>(types, @_instance); FSharpFunc<MethodInfo, Unit> @_instance2; @_instance2 = initNetcodePatcher@41.@_instance; MethodInfo[] array3 = array2; Iterate val2 = null; Iterate.Iterate<MethodInfo>(array3, @_instance2); } } } namespace <StartupCode$Mirage>.$Mirage { internal static class Netcode { } } namespace Mirage.Patch { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class SpawnMaskedEnemy { [Serializable] internal sealed class get@17-4<A> : FSharpFunc<FSharpRef<FSharpOption<A>>, string, string, FSharpResult<A, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string className; [CompilerGenerated] [DebuggerNonUserCode] internal get@17-4(string className) { ((FSharpFunc<FSharpRef<FSharpOption<FSharpRef<FSharpOption<A>>>>, string, string, FSharpResult<FSharpRef<FSharpOption<A>>, string>>)(object)this)..ctor(); this.className = className; } public override FSharpResult<A, string> Invoke(FSharpRef<FSharpOption<A>> field, string fieldName, string methodName) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) return Option.toResultWith<string, A>(ExtraTopLevelOperators.PrintFormatToString<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, Tuple<string, string, string>>("%P()#%P() was called while %P() has not been initialized yet.", new object[3] { className, methodName, fieldName }, (Type[])null)), ((FSharpRef<FSharpOption<FSharpOption<A>>>)(object)field).Value); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class SpawnMaskedEnemy { internal static Random random; internal static HashSet<ulong> killedPlayers; internal static FSharpRef<FSharpOption<HauntedMaskItem>> MaskItem; internal static FSharpFunc<string, FSharpResult<HauntedMaskItem, string>> getMaskItem; internal static int init@19; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Start")] public static void save mask prefab for later use(GameNetworkManager __instance) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<FSharpResult<Unit, string>, Unit> handleResult = Mirage.Core.Logger.handleResult; MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; Builder<FSharpResult<Unit, string>> val4 = (Builder<FSharpResult<Unit, string>>)(object)val; NetworkManager component = ((Component)__instance).GetComponent<NetworkManager>(); FSharpOption<HauntedMaskItem> val5 = Mirage.Unity.Network.findNetworkPrefab<HauntedMaskItem>().Invoke(component); FSharpResult<HauntedMaskItem, string> val6 = Option.toResultWith<string, HauntedMaskItem>("HauntedMaskItem network prefab is missing. This is likely due to a mod incompatibility.", val5); Bind val7 = null; FSharpResult<Unit, string> val8 = default(FSharpResult<Unit, string>); handleResult.Invoke(Bind.op_GreaterGreaterEquals<HauntedMaskItem, string, Unit>(val6, (FSharpFunc<HauntedMaskItem, FSharpResult<Unit, string>>)new save mask prefab for later use@75(val))); } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "StartGame")] public static void reset killed players() { if (init@19 < 2) { IntrinsicFunctions.FailStaticInit(); } killedPlayers.Clear(); } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "KillPlayerServerRpc")] public static void spawn a masked enemy on player death (non-host player)(PlayerControllerB __instance, int causeOfDeath, int deathAnimation, bool spawnBody, Vector3 bodyVelocity) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)__instance).IsHost) { PlayerControllerB localPlayerController = StartOfRound.Instance.localPlayerController; if (!HashCompare.GenericEqualityIntrinsic<PlayerControllerB>(__instance, localPlayerController)) { spawnMaskedEnemy<Vector3>(__instance, causeOfDeath, deathAnimation, spawnBody, bodyVelocity); } } } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "KillPlayer")] public static void spawn a masked enemy on player death (host player)(PlayerControllerB __instance, int causeOfDeath, int deathAnimation, bool spawnBody, Vector3 bodyVelocity) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)__instance).IsHost && HashCompare.GenericEqualityIntrinsic<PlayerControllerB>(__instance, StartOfRound.Instance.localPlayerController)) { spawnMaskedEnemy<Vector3>(__instance, causeOfDeath, deathAnimation, spawnBody, bodyVelocity); } } [HarmonyPrefix] [HarmonyPatch(typeof(MaskedPlayerEnemy))] [HarmonyPatch("SetHandsOutServerRpc")] [HarmonyPatch("SetHandsOutClientRpc")] public static void disable mirage hands out(ref bool setOut) { setOut = Mirage.Core.Config.getConfig().enableArmsOut@; } [HarmonyPrefix] [HarmonyPatch(typeof(MaskedPlayerEnemy), "Start")] public static void start mimicking player(MaskedPlayerEnemy __instance) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<FSharpResult<Unit, string>, Unit> handleResult = Mirage.Core.Logger.handleResult; MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; Builder<FSharpResult<Unit, string>> val4 = (Builder<FSharpResult<Unit, string>>)(object)val; Mirage.Unity.MimicPlayer.MimicPlayer component = ((Component)__instance).GetComponent<Mirage.Unity.MimicPlayer.MimicPlayer>(); FSharpOption<Mirage.Unity.MimicPlayer.MimicPlayer> val5 = ((component != null) ? FSharpOption<Mirage.Unity.MimicPlayer.MimicPlayer>.Some(component) : null); FSharpResult<Mirage.Unity.MimicPlayer.MimicPlayer, string> val6 = Option.toResultWith<string, Mirage.Unity.MimicPlayer.MimicPlayer>("MimicPlayer component could not be found, likely due to a mod incompatibility.", val5); Bind val7 = null; FSharpResult<Unit, string> val8 = default(FSharpResult<Unit, string>); handleResult.Invoke(Bind.op_GreaterGreaterEquals<Mirage.Unity.MimicPlayer.MimicPlayer, string, Unit>(val6, (FSharpFunc<Mirage.Unity.MimicPlayer.MimicPlayer, FSharpResult<Unit, string>>)new start mimicking player@119(val))); } [HarmonyPostfix] [HarmonyPatch(typeof(MaskedPlayerEnemy), "Start")] public static void remove mask texture(MaskedPlayerEnemy __instance) { if (!Mirage.Core.Config.getConfig().enableMask@) { Transform[] componentsInChildren = ((Component)__instance).GetComponentsInChildren<Transform>(); FSharpFunc<Transform, bool> @_instance; @_instance = Pipe #1 stage #1 at line 127@127.@_instance; Transform[] array = componentsInChildren; Transform[] array2 = Filter.Filter<Transform>(array, @_instance, (Filter)null); FSharpFunc<Transform, Unit> @_instance2; @_instance2 = remove mask texture@128.@_instance; Transform[] array3 = array2; Iterate val = null; Iterate.Iterate<Transform>(array3, @_instance2); } } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "EndOfGame")] public static void fix teleporter not working when masked enemy is spawned on player death(StartOfRound __instance) { FSharpFunc<FSharpFunc<PlayerControllerB, Unit>, FSharpFunc<PlayerControllerB[], Unit>> @_instance; @_instance = (FSharpFunc<FSharpFunc<PlayerControllerB, Unit>, FSharpFunc<PlayerControllerB[], Unit>>)(object)fix teleporter not working when masked enemy is spawned on player death@135.@_instance; PlayerControllerB[] allPlayerScripts = __instance.allPlayerScripts; FSharpFunc<PlayerControllerB, Unit> @_instance2; @_instance2 = fix teleporter not working when masked enemy is spawned on player death@135-1.@_instance; FSharpFunc<FSharpFunc<PlayerControllerB, Unit>, PlayerControllerB[]>.InvokeFast<Unit>(@_instance, @_instance2, allPlayerScripts); } [CompilationArgumentCounts(new int[] { 1, 1, 1, 1, 1 })] [CompilerGenerated] internal static void spawnMaskedEnemy<a>(PlayerControllerB player, int causeOfDeath, int deathAnimation, bool spawnBody, a bodyVelocity) { //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<FSharpResult<Unit, string>, Unit> handleResult = Mirage.Core.Logger.handleResult; MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; if (init@19 < 2) { IntrinsicFunctions.FailStaticInit(); } FSharpResult<Unit, string> val11; if (killedPlayers.Add(player.playerClientId)) { Vector3 position = ((Component)player).transform.position; NavMeshHit val4 = default(NavMeshHit); bool flag = NavMesh.SamplePosition(position, ref val4, 1f, -1) && Mathf.Approximately(position.x, ((NavMeshHit)(ref val4)).position.x) && Mathf.Approximately(position.z, ((NavMeshHit)(ref val4)).position.z); int num; if (causeOfDeath == 5 && spawnBody) { a val5 = bodyVelocity; num = (val5.Equals(Vector3.zero) ? 1 : 0); } else { num = 0; } bool flag2 = (byte)num != 0; bool flag3 = causeOfDeath == 4 && deathAnimation == 4; Mirage.Core.Config.SyncedConfig config = Mirage.Core.Config.getConfig(); bool flag4 = !config.spawnOnlyWhenPlayerAlone@ || player.isPlayerAlone; FSharpFunc<Unit, bool> val6 = new spawnRateSuccess@44(config); if ((flag || (player.isInHangarShipRoom && StartOfRound.Instance.shipHasLanded)) && !flag2 && !flag3 && spawnBody && flag4 && val6.Invoke((Unit)null)) { Builder<FSharpResult<Unit, string>> val7 = (Builder<FSharpResult<Unit, string>>)(object)val; if (init@19 < 4) { IntrinsicFunctions.FailStaticInit(); } FSharpResult<HauntedMaskItem, string> val8 = getMaskItem.Invoke("spawn a masked enemy on player death (if configuration is enabled)"); Bind val9 = null; FSharpResult<Unit, string> val10 = default(FSharpResult<Unit, string>); val11 = Bind.op_GreaterGreaterEquals<HauntedMaskItem, string, Unit>(val8, (FSharpFunc<HauntedMaskItem, FSharpResult<Unit, string>>)new clo@55-31(player, val)); } else { MonadFxStrictBuilder<FSharpResult<Unit, string>> val12 = val; val11 = FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)clo@47-33.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } else { MonadFxStrictBuilder<FSharpResult<Unit, string>> val13 = val; val11 = FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)clo@28-34.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } handleResult.Invoke(val11); } static SpawnMaskedEnemy() { <StartupCode$Mirage>.$Mirage.Patch.SpawnMaskedEnemy.init@ = 0; _ = <StartupCode$Mirage>.$Mirage.Patch.SpawnMaskedEnemy.init@; } } [Serializable] internal sealed class save mask prefab for later use@75-1 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly save mask prefab for later use@75-1 @_instance = new save mask prefab for later use@75-1(); [CompilerGenerated] [DebuggerNonUserCode] internal save mask prefab for later use@75-1() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class save mask prefab for later use@75 : FSharpFunc<HauntedMaskItem, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal save mask prefab for later use@75(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(HauntedMaskItem _arg2) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (SpawnMaskedEnemy.init@19 < 3) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<HauntedMaskItem>> maskItem = SpawnMaskedEnemy.MaskItem; maskItem.Value = FSharpOption<HauntedMaskItem>.Some(_arg2); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)save mask prefab for later use@75-1.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class start mimicking player@119-1 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly start mimicking player@119-1 @_instance = new start mimicking player@119-1(); [CompilerGenerated] [DebuggerNonUserCode] internal start mimicking player@119-1() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class start mimicking player@119 : FSharpFunc<Mirage.Unity.MimicPlayer.MimicPlayer, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal start mimicking player@119(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(Mirage.Unity.MimicPlayer.MimicPlayer _arg3) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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) _arg3.StartMimicking(); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)start mimicking player@119-1.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class Pipe #1 stage #1 at line 127@127 : FSharpFunc<Transform, bool> { internal static readonly Pipe #1 stage #1 at line 127@127 @_instance = new Pipe #1 stage #1 at line 127@127(); [CompilerGenerated] [DebuggerNonUserCode] internal Pipe #1 stage #1 at line 127@127() { } public override bool Invoke(Transform _arg4) { return ((Object)_arg4).name.StartsWith("HeadMask"); } } [Serializable] internal sealed class remove mask texture@128 : FSharpFunc<Transform, Unit> { internal static readonly remove mask texture@128 @_instance = new remove mask texture@128(); [CompilerGenerated] [DebuggerNonUserCode] internal remove mask texture@128() { } public override Unit Invoke(Transform _arg5) { ((Component)_arg5).gameObject.SetActive(false); return null; } } [Serializable] internal sealed class fix teleporter not working when masked enemy is spawned on player death@135 : FSharpFunc<FSharpFunc<PlayerControllerB, Unit>, PlayerControllerB[], Unit> { internal static readonly fix teleporter not working when masked enemy is spawned on player death@135 @_instance = new fix teleporter not working when masked enemy is spawned on player death@135(); [CompilerGenerated] [DebuggerNonUserCode] internal fix teleporter not working when masked enemy is spawned on player death@135() { } public override Unit Invoke(FSharpFunc<PlayerControllerB, Unit> action, PlayerControllerB[] source) { Iterate val = null; Iterate.Iterate<PlayerControllerB>(source, action); return null; } } [Serializable] internal sealed class fix teleporter not working when masked enemy is spawned on player death@135-1 : FSharpFunc<PlayerControllerB, Unit> { internal static readonly fix teleporter not working when masked enemy is spawned on player death@135-1 @_instance = new fix teleporter not working when masked enemy is spawned on player death@135-1(); [CompilerGenerated] [DebuggerNonUserCode] internal fix teleporter not working when masked enemy is spawned on player death@135-1() { } public override Unit Invoke(PlayerControllerB player) { player.deadBody = null; return null; } } [Serializable] internal sealed class spawnRateSuccess@44 : FSharpFunc<Unit, bool> { public Mirage.Core.Config.SyncedConfig config; [CompilerGenerated] [DebuggerNonUserCode] internal spawnRateSuccess@44(Mirage.Core.Config.SyncedConfig config) { this.config = config; } public override bool Invoke(Unit unitVar0) { if (SpawnMaskedEnemy.init@19 < 1) { IntrinsicFunctions.FailStaticInit(); } return SpawnMaskedEnemy.random.Next(1, 101) <= config.spawnOnPlayerDeath@; } } [Serializable] internal sealed class clo@65-32 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly clo@65-32 @_instance = new clo@65-32(); [CompilerGenerated] [DebuggerNonUserCode] internal clo@65-32() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class clo@55-31 : FSharpFunc<HauntedMaskItem, FSharpResult<Unit, string>> { public PlayerControllerB player; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal clo@55-31(PlayerControllerB player, MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.player = player; this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(HauntedMaskItem _arg1) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) float y = ((Component)player).transform.eulerAngles.y; GameObject val = Object.Instantiate<GameObject>(_arg1.mimicEnemy.enemyPrefab, ((Component)player).transform.position, Quaternion.Euler(new Vector3(0f, y, 0f))); MaskedPlayerEnemy component = val.GetComponent<MaskedPlayerEnemy>(); component.mimickingPlayer = player; val.GetComponentInChildren<NetworkObject>().Spawn(true); ((Component)player).GetComponent<Mirage.Unity.PlayerReanimator.PlayerReanimator>().DeactivateBody((EnemyAI)(object)component); MonadFxStrictBuilder<FSharpResult<Unit, string>> val2 = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)clo@65-32.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class clo@47-33 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly clo@47-33 @_instance = new clo@47-33(); [CompilerGenerated] [DebuggerNonUserCode] internal clo@47-33() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class clo@28-34 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly clo@28-34 @_instance = new clo@28-34(); [CompilerGenerated] [DebuggerNonUserCode] internal clo@28-34() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } internal static FSharpFunc<FSharpRef<FSharpOption<A>>, FSharpFunc<string, FSharpFunc<string, FSharpResult<A, string>>>> get<A>() { string className = "SpawnMaskedEnemy"; return (FSharpFunc<FSharpRef<FSharpOption<A>>, FSharpFunc<string, FSharpFunc<string, FSharpResult<A, string>>>>)(object)new get@17-4<A>(className); } } } namespace <StartupCode$Mirage>.$Mirage.Patch { internal static class SpawnMaskedEnemy { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static SpawnMaskedEnemy() { Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.random = new Random(); Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.init@19 = 1; Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.killedPlayers = new HashSet<ulong>(); Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.init@19 = 2; Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.MaskItem = Mirage.Core.Field.field<HauntedMaskItem>(); Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.init@19 = 3; if (Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.init@19 < 3) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<HauntedMaskItem>> maskItem = Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.MaskItem; Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.getMaskItem = FSharpFunc<FSharpRef<FSharpOption<HauntedMaskItem>>, string>.InvokeFast<FSharpFunc<string, FSharpResult<HauntedMaskItem, string>>>(Mirage.Patch.SpawnMaskedEnemy.get<HauntedMaskItem>(), maskItem, "MaskItem"); Mirage.Patch.SpawnMaskedEnemy.SpawnMaskedEnemy.init@19 = 4; } } } namespace Mirage.Patch { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class RemovePenalty { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class RemovePenalty { [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "ApplyPenalty")] public static bool disable credits penalty on end of round() { return Mirage.Core.Config.getConfig().enablePenalty@; } } } } namespace <StartupCode$Mirage>.$Mirage.Patch { internal static class RemovePenalty { } } namespace Mirage.Patch { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class SyncConfig { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class SyncConfig { [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] public static void synchronize config when joining a game() { if (NetworkManager.Singleton.IsHost) { Mirage.Core.Config.registerHandler(Mirage.Core.Config.SyncAction.RequestSync); return; } Mirage.Core.Config.registerHandler(Mirage.Core.Config.SyncAction.ReceiveSync); Mirage.Core.Config.requestSync(); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")] public static void desynchronize config after leaving the game() { Mirage.Core.Config.revertSync(); } } } } namespace <StartupCode$Mirage>.$Mirage.Patch { internal static class SyncConfig { } } namespace Mirage.Patch { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class RegisterPrefab { [Serializable] internal sealed class initPrefabs@22 : FSharpFunc<Component, Unit> { internal static readonly initPrefabs@22 @_instance = new initPrefabs@22(); [CompilerGenerated] [DebuggerNonUserCode] internal initPrefabs@22() { } public override Unit Invoke(Component _arg1) { return null; } } [Serializable] internal sealed class initPrefabs@22-1 : FSharpFunc<Type, Component> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public GameObject objectArg; [CompilerGenerated] [DebuggerNonUserCode] internal initPrefabs@22-1(GameObject objectArg) { this.objectArg = objectArg; } public override Component Invoke(Type componentType) { return objectArg.AddComponent(componentType); } } [Serializable] internal sealed class initPrefabs@22-2 : FSharpFunc<Type, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Component, Unit> func2; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Type, Component> func1; [CompilerGenerated] [DebuggerNonUserCode] internal initPrefabs@22-2(FSharpFunc<Component, Unit> func2, FSharpFunc<Type, Component> func1) { this.func2 = func2; this.func1 = func1; } public override Unit Invoke(Type x) { return func2.Invoke(func1.Invoke(x)); } } [Serializable] internal sealed class get@28-3<A> : FSharpFunc<FSharpRef<FSharpOption<A>>, string, string, FSharpResult<A, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string className; [CompilerGenerated] [DebuggerNonUserCode] internal get@28-3(string className) { ((FSharpFunc<FSharpRef<FSharpOption<FSharpRef<FSharpOption<A>>>>, string, string, FSharpResult<FSharpRef<FSharpOption<A>>, string>>)(object)this)..ctor(); this.className = className; } public override FSharpResult<A, string> Invoke(FSharpRef<FSharpOption<A>> field, string fieldName, string methodName) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) return Option.toResultWith<string, A>(ExtraTopLevelOperators.PrintFormatToString<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, Tuple<string, string, string>>("%P()#%P() was called while %P() has not been initialized yet.", new object[3] { className, methodName, fieldName }, (Type[])null)), ((FSharpRef<FSharpOption<FSharpOption<A>>>)(object)field).Value); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class RegisterPrefab { internal static FSharpRef<FSharpOption<MaskedPlayerEnemy>> Prefab; internal static FSharpFunc<string, FSharpResult<MaskedPlayerEnemy, string>> getPrefab; internal static int init@30; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Start")] public static void register network prefab(GameNetworkManager __instance) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<FSharpResult<Unit, string>, Unit> handleResult = Mirage.Core.Logger.handleResult; MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; NetworkManager component = ((Component)__instance).GetComponent<NetworkManager>(); FSharpFunc<NetworkPrefab, Unit> @_instance; @_instance = register network prefab@39.@_instance; List<NetworkPrefab> prefabs = component.NetworkConfig.Prefabs.m_Prefabs; Iterate val4 = null; Iterate.Iterate<NetworkPrefab>(prefabs, @_instance); Builder<FSharpResult<Unit, string>> val5 = (Builder<FSharpResult<Unit, string>>)(object)val; FSharpOption<MaskedPlayerEnemy> val6 = Mirage.Unity.Network.findNetworkPrefab<MaskedPlayerEnemy>().Invoke(component); FSharpResult<MaskedPlayerEnemy, string> val7 = Option.toResultWith<string, MaskedPlayerEnemy>("MaskedPlayerEnemy network prefab is missing. This is likely due to a mod incompatibility", val6); Bind val8 = null; FSharpResult<Unit, string> val9 = default(FSharpResult<Unit, string>); handleResult.Invoke(Bind.op_GreaterGreaterEquals<MaskedPlayerEnemy, string, Unit>(val7, (FSharpFunc<MaskedPlayerEnemy, FSharpResult<Unit, string>>)new register network prefab@45-1(val))); } [HarmonyPostfix] [HarmonyPatch(typeof(TimeOfDay), "Start")] public static void modify natural spawns for masked enemies() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<FSharpResult<Unit, string>, Unit> handleResult = Mirage.Core.Logger.handleResult; MonadFxStrictBuilder<FSharpResult<Unit, string>> val = GenericBuilders.monad'<FSharpResult<Unit, string>>(); StrictBuilder<FSharpResult<Unit, string>> val2 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StrictBuilder<FSharpResult<Unit, string>> val3 = (StrictBuilder<FSharpResult<Unit, string>>)(object)val; StartOfRound instance = StartOfRound.Instance; Mirage.Core.Config.SyncedConfig config = Mirage.Core.Config.getConfig(); FSharpResult<Unit, string> val8; if (((NetworkBehaviour)instance).IsHost && config.enableOverrideSpawnChance@) { Builder<FSharpResult<Unit, string>> val4 = (Builder<FSharpResult<Unit, string>>)(object)val; if (init@30 < 2) { IntrinsicFunctions.FailStaticInit(); } FSharpResult<MaskedPlayerEnemy, string> val5 = getPrefab.Invoke("``modify natural spawns for masked enemies``"); Bind val6 = null; FSharpResult<Unit, string> val7 = default(FSharpResult<Unit, string>); val8 = Bind.op_GreaterGreaterEquals<MaskedPlayerEnemy, string, Unit>(val5, (FSharpFunc<MaskedPlayerEnemy, FSharpResult<Unit, string>>)new modify natural spawns for masked enemies@57(val, instance, config)); } else { MonadFxStrictBuilder<FSharpResult<Unit, string>> val9 = val; val8 = FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)modify natural spawns for masked enemies@55-13.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } handleResult.Invoke(val8); } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "Awake")] public static void register player reanimator prefab(PlayerControllerB __instance) { Mirage.Unity.PlayerReanimator.PlayerReanimator playerReanimator = ((Component)__instance).gameObject.AddComponent<Mirage.Unity.PlayerReanimator.PlayerReanimator>(); } static RegisterPrefab() { <StartupCode$Mirage>.$Mirage.Patch.RegisterPrefab.init@ = 0; _ = <StartupCode$Mirage>.$Mirage.Patch.RegisterPrefab.init@; } } [Serializable] internal sealed class register network prefab@39 : FSharpFunc<NetworkPrefab, Unit> { internal static readonly register network prefab@39 @_instance = new register network prefab@39(); [CompilerGenerated] [DebuggerNonUserCode] internal register network prefab@39() { } public override Unit Invoke(NetworkPrefab prefab) { if (Mirage.Unity.Network.isPrefab<EnemyAI>(prefab)) { Mirage.Patch.RegisterPrefab.initPrefabs<EnemyAI>(prefab); return null; } return null; } } [Serializable] internal sealed class register network prefab@46-2 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly register network prefab@46-2 @_instance = new register network prefab@46-2(); [CompilerGenerated] [DebuggerNonUserCode] internal register network prefab@46-2() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class register network prefab@45-1 : FSharpFunc<MaskedPlayerEnemy, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; [CompilerGenerated] [DebuggerNonUserCode] internal register network prefab@45-1(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@) { this.builder@ = builder@; } public override FSharpResult<Unit, string> Invoke(MaskedPlayerEnemy _arg1) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)_arg1).enemyType.MaxCount = Mirage.Core.Config.getLocalConfig().MaxMasked.Value; if (RegisterPrefab.init@30 < 1) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<MaskedPlayerEnemy>> prefab = RegisterPrefab.Prefab; prefab.Value = FSharpOption<MaskedPlayerEnemy>.Some(_arg1); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)register network prefab@46-2.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class addKey@61-1 : FSharpFunc<int, Unit> { internal static readonly addKey@61-1 @_instance = new addKey@61-1(); [CompilerGenerated] [DebuggerNonUserCode] internal addKey@61-1() { } public override Unit Invoke(int _arg1) { return null; } } [Serializable] internal sealed class addKey@61-2 : FSharpFunc<Keyframe, int> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public AnimationCurve objectArg; [CompilerGenerated] [DebuggerNonUserCode] internal addKey@61-2(AnimationCurve objectArg) { this.objectArg = objectArg; } public override int Invoke(Keyframe key) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return objectArg.AddKey(key); } } [Serializable] internal sealed class addKey@61 : FSharpFunc<float, float, Unit> { public AnimationCurve spawnCurve; [CompilerGenerated] [DebuggerNonUserCode] internal addKey@61(AnimationCurve spawnCurve) { this.spawnCurve = spawnCurve; } public override Unit Invoke(float time, float value) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) FSharpFunc<int, Unit> @_instance; @_instance = addKey@61-1.@_instance; AnimationCurve objectArg = spawnCurve; FSharpFunc<Keyframe, int> val = new addKey@61-2(objectArg); Keyframe val2 = new Keyframe(time, value); return @_instance.Invoke(val.Invoke(val2)); } } [Serializable] internal sealed class isMaskedEnemy@75-1 : FSharpFunc<bool, bool> { internal static readonly isMaskedEnemy@75-1 @_instance = new isMaskedEnemy@75-1(); [CompilerGenerated] [DebuggerNonUserCode] internal isMaskedEnemy@75-1() { } public override bool Invoke(bool value) { return !value; } } [Serializable] internal sealed class isMaskedEnemy@75-2 : FSharpFunc<MaskedPlayerEnemy, bool> { internal static readonly isMaskedEnemy@75-2 @_instance = new isMaskedEnemy@75-2(); [CompilerGenerated] [DebuggerNonUserCode] internal isMaskedEnemy@75-2() { } public override bool Invoke(MaskedPlayerEnemy value) { if (value == null) { return true; } return false; } } [Serializable] internal sealed class isMaskedEnemy@75 : FSharpFunc<SpawnableEnemyWithRarity, bool> { internal static readonly isMaskedEnemy@75 @_instance = new isMaskedEnemy@75(); [CompilerGenerated] [DebuggerNonUserCode] internal isMaskedEnemy@75() { } public override bool Invoke(SpawnableEnemyWithRarity enemy) { FSharpFunc<bool, bool> val = isMaskedEnemy@75-1.@_instance; FSharpFunc<MaskedPlayerEnemy, bool> val2 = isMaskedEnemy@75-2.@_instance; MaskedPlayerEnemy component = enemy.enemyType.enemyPrefab.GetComponent<MaskedPlayerEnemy>(); return val.Invoke(val2.Invoke(component)); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-3 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>>> loop; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Unit, bool> guard; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Unit, FSharpResult<Unit, string>> body; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-3(FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>>> loop, FSharpFunc<Unit, bool> guard, FSharpFunc<Unit, FSharpResult<Unit, string>> body) { this.loop = loop; this.guard = guard; this.body = body; } public override FSharpResult<Unit, string> Invoke(Unit unitVar0) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) return FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<Unit, FSharpResult<Unit, string>>>.InvokeFast<FSharpResult<Unit, string>>(loop, guard, body); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-4 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly modify natural spawns for masked enemies@77-4 @_instance = new modify natural spawns for masked enemies@77-4(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-4() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-2 : FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>> { internal static readonly modify natural spawns for masked enemies@77-2 @_instance = new modify natural spawns for masked enemies@77-2(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-2() { } public override FSharpResult<Unit, string> Invoke(FSharpFunc<Unit, bool> guard, FSharpFunc<Unit, FSharpResult<Unit, string>> body) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (guard.Invoke((Unit)null)) { FSharpResult<Unit, string> val = body.Invoke((Unit)null); FSharpFunc<Unit, FSharpResult<Unit, string>> val2 = new modify natural spawns for masked enemies@77-3((FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>>>)(object)this, guard, body); Bind val3 = null; FSharpResult<Unit, string> val4 = default(FSharpResult<Unit, string>); return Bind.op_GreaterGreaterEquals<Unit, string, Unit>(val, val2); } return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)modify natural spawns for masked enemies@77-4.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-5 : FSharpFunc<Unit, bool> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public IEnumerator<SelectableLevel> @enum; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-5(IEnumerator<SelectableLevel> @enum) { this.@enum = @enum; } public override bool Invoke(Unit unitVar) { return @enum.MoveNext(); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class modify natural spawns for masked enemies@78-7 { public FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy; public modify natural spawns for masked enemies@78-7(FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy) { this.isMaskedEnemy = isMaskedEnemy; base..ctor(); } internal bool Invoke(SpawnableEnemyWithRarity delegateArg0) { return isMaskedEnemy.Invoke(delegateArg0); } } [Serializable] internal sealed class Pipe #1 stage #1 at line 81@81 : FSharpFunc<SpawnableEnemyWithRarity, int> { internal static readonly Pipe #1 stage #1 at line 81@81 @_instance = new Pipe #1 stage #1 at line 81@81(); [CompilerGenerated] [DebuggerNonUserCode] internal Pipe #1 stage #1 at line 81@81() { } public override int Invoke(SpawnableEnemyWithRarity _arg4) { return _arg4.rarity; } } [Serializable] internal sealed class totalWeight@82 : FSharpFunc<int, int, int> { internal static readonly totalWeight@82 @_instance = new totalWeight@82(); [CompilerGenerated] [DebuggerNonUserCode] internal totalWeight@82() { } public override int Invoke(int x, int y) { Default1 val = null; return x + y; } } [Serializable] internal sealed class weight@84 : FSharpFunc<double, int> { internal static readonly weight@84 @_instance = new weight@84(); [CompilerGenerated] [DebuggerNonUserCode] internal weight@84() { } public override int Invoke(double value) { return (int)value; } } [Serializable] internal sealed class weight@84-1 : FSharpFunc<double, double> { internal static readonly weight@84-1 @_instance = new weight@84-1(); [CompilerGenerated] [DebuggerNonUserCode] internal weight@84-1() { } public override double Invoke(double value) { return Math.Ceiling(value); } } [Serializable] internal sealed class modify natural spawns for masked enemies@91-8 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly modify natural spawns for masked enemies@91-8 @_instance = new modify natural spawns for masked enemies@91-8(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@91-8() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class modify natural spawns for masked enemies@83-9 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly modify natural spawns for masked enemies@83-9 @_instance = new modify natural spawns for masked enemies@83-9(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@83-9() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-6 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; public EnemyType enemyType; public double minSpawnChance; public FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy; public List<string> logs; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public IEnumerator<SelectableLevel> @enum; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-6(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@, EnemyType enemyType, double minSpawnChance, FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy, List<string> logs, IEnumerator<SelectableLevel> @enum) { this.builder@ = builder@; this.enemyType = enemyType; this.minSpawnChance = minSpawnChance; this.isMaskedEnemy = isMaskedEnemy; this.logs = logs; this.@enum = @enum; } public override FSharpResult<Unit, string> Invoke(Unit unitVar0) { //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) SelectableLevel current = @enum.Current; SelectableLevel val = current; int num = val.Enemies.RemoveAll(new modify natural spawns for masked enemies@78-7(isMaskedEnemy).Invoke); List<SpawnableEnemyWithRarity> enemies = val.Enemies; FSharpFunc<SpawnableEnemyWithRarity, int> @_instance; @_instance = Pipe #1 stage #1 at line 81@81.@_instance; List<SpawnableEnemyWithRarity> item = enemies; Map val2 = null; List<int> list = null; List<int> list2 = Map.Map<SpawnableEnemyWithRarity, int>(new Tuple<List<SpawnableEnemyWithRarity>, FSharpFunc<SpawnableEnemyWithRarity, int>>(item, @_instance), val2); List<int> list3 = list2; totalWeight@82 @_instance2; @_instance2 = totalWeight@82.@_instance; Zero val3 = null; int num2 = 0; Default1 val4 = (Default1)(object)val3; int num3 = Fold.Fold<int, int>((IEnumerable<int>)list3, (FSharpFunc<int, FSharpFunc<int, int>>)(object)@_instance2, 0, (Fold)null); if (num3 != 0) { FSharpFunc<double, int> @_instance3; @_instance3 = weight@84.@_instance; FSharpFunc<double, double> @_instance4; @_instance4 = weight@84-1.@_instance; double num4 = (double)num3 * minSpawnChance / (100.0 - minSpawnChance); int num5 = @_instance3.Invoke(@_instance4.Invoke(num4)); num3 += num5; double num6 = (double)num5 / (double)num3 * 100.0; logs.Add(ExtraTopLevelOperators.PrintFormatToString<string>((PrintfFormat<string, Unit, string, string>)(object)new PrintfFormat<string, Unit, string, string, Tuple<string, int, double>>("Level: %P(). Weight: %P(). SpawnChance: %P(F2)%%", new object[3] { val.PlanetName, num5, num6 }, (Type[])null))); SpawnableEnemyWithRarity val5 = new SpawnableEnemyWithRarity(); val5.rarity = num5; val5.enemyType = enemyType; val.Enemies.Add(val5); MonadFxStrictBuilder<FSharpResult<Unit, string>> val6 = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)modify natural spawns for masked enemies@91-8.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } MonadFxStrictBuilder<FSharpResult<Unit, string>> val7 = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)modify natural spawns for masked enemies@83-9.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-1 : FSharpFunc<IDisposable, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; public EnemyType enemyType; public double minSpawnChance; public FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy; public List<string> logs; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-1(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@, EnemyType enemyType, double minSpawnChance, FSharpFunc<SpawnableEnemyWithRarity, bool> isMaskedEnemy, List<string> logs) { this.builder@ = builder@; this.enemyType = enemyType; this.minSpawnChance = minSpawnChance; this.isMaskedEnemy = isMaskedEnemy; this.logs = logs; } public override FSharpResult<Unit, string> Invoke(IDisposable @enum) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) IEnumerator<SelectableLevel> enum2 = (IEnumerator<SelectableLevel>)(object)@enum; FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>>> @_instance; @_instance = (FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<FSharpFunc<Unit, FSharpResult<Unit, string>>, FSharpResult<Unit, string>>>)(object)modify natural spawns for masked enemies@77-2.@_instance; return FSharpFunc<FSharpFunc<Unit, bool>, FSharpFunc<Unit, FSharpResult<Unit, string>>>.InvokeFast<FSharpResult<Unit, string>>(@_instance, (FSharpFunc<Unit, bool>)new modify natural spawns for masked enemies@77-5(enum2), (FSharpFunc<Unit, FSharpResult<Unit, string>>)new modify natural spawns for masked enemies@77-6(builder@, enemyType, minSpawnChance, isMaskedEnemy, logs, enum2)); } } [Serializable] internal sealed class modify natural spawns for masked enemies@92-11 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly modify natural spawns for masked enemies@92-11 @_instance = new modify natural spawns for masked enemies@92-11(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@92-11() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class modify natural spawns for masked enemies@92-10 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; public List<string> logs; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@92-10(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@, List<string> logs) { this.builder@ = builder@; this.logs = logs; } public override FSharpResult<Unit, string> Invoke(Unit unitVar) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) Mirage.Core.Logger.logInfo.Invoke("Adjusting spawn weights for masked enemies:\n" + string.Join("\n", logs)); MonadFxStrictBuilder<FSharpResult<Unit, string>> val = builder@; return FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, Unit>.InvokeFast<FSharpResult<Unit, string>>((FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>>)modify natural spawns for masked enemies@92-11.@_instance, new Tuple<Return, FSharpResult<Unit, string>>(null, default(FSharpResult<Unit, string>)), (Unit)null); } } [Serializable] internal sealed class modify natural spawns for masked enemies@77-12 : FSharpFunc<Unit, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Unit, FSharpResult<Unit, string>> b; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@77-12(FSharpFunc<Unit, FSharpResult<Unit, string>> b) { this.b = b; } public override FSharpResult<Unit, string> Invoke(Unit unitVar0) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return b.Invoke((Unit)null); } } [Serializable] internal sealed class modify natural spawns for masked enemies@57 : FSharpFunc<MaskedPlayerEnemy, FSharpResult<Unit, string>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@; public StartOfRound playerManager; public Mirage.Core.Config.SyncedConfig config; [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@57(MonadFxStrictBuilder<FSharpResult<Unit, string>> builder@, StartOfRound playerManager, Mirage.Core.Config.SyncedConfig config) { this.builder@ = builder@; this.playerManager = playerManager; this.config = config; } public unsafe override FSharpResult<Unit, string> Invoke(MaskedPlayerEnemy _arg2) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_00fb: Expected O, but got Ref //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) EnemyType obj; if (config.useCustomSpawnCurve@) { EnemyType val = (EnemyType)(object)Object.Instantiate((Object)(object)((EnemyAI)_arg2).enemyType); AnimationCurve probabilityCurve = val.probabilityCurve; FSharpFunc<float, FSharpFunc<float, Unit>> val2 = (FSharpFunc<float, FSharpFunc<float, Unit>>)(object)new addKey@61(probabilityCurve); probabilityCurve.ClearKeys(); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 0f, 0f); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 0.19f, 0f); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 0.2f, 0.5f); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 0.5f, 10f); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 0.9f, 15f); FSharpFunc<float, float>.InvokeFast<Unit>(val2, 1f, 1f); obj = val; } else { obj = ((EnemyAI)_arg2).enemyType; } EnemyType enemyType = obj; double minSpawnChance = config.overrideSpawnChance@; FSharpFunc<SpawnableEnemyWithRarity, bool> @_instance; @_instance = isMaskedEnemy@75.@_instance; List<string> logs = new List<string>(); MonadFxStrictBuilder<FSharpResult<Unit, string>> val3 = builder@; MonadFxStrictBuilder<FSharpResult<Unit, string>> val4 = builder@; SelectableLevel[] levels = playerManager.levels; SelectableLevel[] array = levels; IDisposable enumerator = ((IEnumerable<SelectableLevel>)(SelectableLevel[])(&array)).GetEnumerator(); FSharpFunc<IDisposable, FSharpResult<Unit, string>> val5 = new modify natural spawns for masked enemies@77-1(builder@, enemyType, minSpawnChance, @_instance, logs); Using val6 = null; FSharpResult<Unit, string> val7 = default(FSharpResult<Unit, string>); IDisposable disposable = enumerator; FSharpFunc<IDisposable, FSharpResult<Unit, string>> val8 = val5; Default3 val9 = (Default3)(object)val6; FSharpResult<Unit, string> val10 = Operators.Using<IDisposable, FSharpResult<Unit, string>>(disposable, val8); StrictBuilder<FSharpResult<Unit, string>> val11 = (StrictBuilder<FSharpResult<Unit, string>>)(object)builder@; FSharpFunc<Unit, FSharpResult<Unit, string>> b = new modify natural spawns for masked enemies@92-10(builder@, logs); FSharpFunc<Unit, FSharpResult<Unit, string>> val12 = new modify natural spawns for masked enemies@77-12(b); Bind val13 = null; FSharpResult<Unit, string> val14 = default(FSharpResult<Unit, string>); return Bind.op_GreaterGreaterEquals<Unit, string, Unit>(val10, val12); } } [Serializable] internal sealed class modify natural spawns for masked enemies@55-13 : FSharpFunc<Tuple<Return, FSharpResult<Unit, string>>, FSharpFunc<Unit, FSharpResult<Unit, string>>> { internal static readonly modify natural spawns for masked enemies@55-13 @_instance = new modify natural spawns for masked enemies@55-13(); [CompilerGenerated] [DebuggerNonUserCode] internal modify natural spawns for masked enemies@55-13() { } public override FSharpFunc<Unit, FSharpResult<Unit, string>> Invoke(Tuple<Return, FSharpResult<Unit, string>> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return<Unit, string>(tupledArg.Item2, tupledArg.Item1); } } internal static void initPrefabs<A>(NetworkPrefab networkPrefab) where A : class, EnemyAI { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown EnemyAI val = (EnemyAI)(object)networkPrefab.Prefab.GetComponent<A>(); if (val != null && 0 == 0) { FSharpFunc<Component, Unit> @_instance; @_instance = initPrefabs@22.@_instance; GameObject gameObject = ((Component)val).gameObject; FSharpFunc<Type, Component> func = new initPrefabs@22-1(gameObject); FSharpFunc<Type, Unit> val2 = new initPrefabs@22-2(@_instance, func); FSharpList<Type> val3 = FSharpList<Type>.Cons(typeof(Mirage.Unity.AudioStream.AudioStream), FSharpList<Type>.Cons(typeof(Mirage.Unity.MimicPlayer.MimicPlayer), FSharpList<Type>.Cons(typeof(Mirage.Unity.MimicVoice.MimicVoice), FSharpList<Type>.Empty))); Iterate val4 = null; Iterate.Iterate<Type>(val3, val2); } } internal static FSharpFunc<FSharpRef<FSharpOption<A>>, FSharpFunc<string, FSharpFunc<string, FSharpResult<A, string>>>> get<A>() { string className = "RegisterPrefab"; return (FSharpFunc<FSharpRef<FSharpOption<A>>, FSharpFunc<string, FSharpFunc<string, FSharpResult<A, string>>>>)(object)new get@28-3<A>(className); } } } namespace <StartupCode$Mirage>.$Mirage.Patch { internal static class RegisterPrefab { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static RegisterPrefab() { Mirage.Patch.RegisterPrefab.RegisterPrefab.Prefab = Mirage.Core.Field.field<MaskedPlayerEnemy>(); Mirage.Patch.RegisterPrefab.RegisterPrefab.init@30 = 1; if (Mirage.Patch.RegisterPrefab.RegisterPrefab.init@30 < 1) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<MaskedPlayerEnemy>> prefab = Mirage.Patch.RegisterPrefab.RegisterPrefab.Prefab; Mirage.Patch.RegisterPrefab.RegisterPrefab.getPrefab = FSharpFunc<FSharpRef<FSharpOption<MaskedPlayerEnemy>>, string>.InvokeFast<FSharpFunc<string, FSharpResult<MaskedPlayerEnemy, string>>>(Mirage.Patch.RegisterPrefab.get<MaskedPlayerEnemy>(), prefab, "Prefab"); Mirage.Patch.RegisterPrefab.RegisterPrefab.init@30 = 2; } } } namespace Mirage.Patch { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class RecordAudio { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class RecordAudio : IVoiceActivationListener, IMicrophoneSubscriber { internal static FSharpRef<FSharpOption<AudioFileWriter>> Recording; internal static FSharpRef<FSharpOption<string>> RecordingName; internal static FSharpRef<FSharpOption<DissonanceComms>> Dissonance; internal static bool roundStarted; internal static bool voiceActivated; internal static int vadDisabledFrames; internal static int framesWritten; internal static int init@15; [HarmonyPostfix] [HarmonyPatch(typeof(DissonanceComms), "Start")] public static void store dissonance for later use(DissonanceComms __instance) { if (init@15 < 3) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<DissonanceComms>> dissonance = Dissonance; dissonance.Value = FSharpOption<DissonanceComms>.Some(__instance); RecordAudio recordAudio = new RecordAudio(); __instance.SubscribeToRecordedAudio((IMicrophoneSubscriber)(object)recordAudio); __instance.SubcribeToVoiceActivation((IVoiceActivationListener)(object)recordAudio); } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "Awake")] public static void stop recording when a new round starts() { if (init@15 < 4) { IntrinsicFunctions.FailStaticInit(); } roundStarted = false; } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "ResetPlayersLoadedValueClientRpc")] public static void deleting recordings if per-round is enabled() { if (init@15 < 4) { IntrinsicFunctions.FailStaticInit(); } roundStarted = true; if (Mirage.Core.Config.getConfig().deleteRecordingsPerRound@) { Mirage.Core.Audio.Recording.deleteRecordings(); } } virtual void IMicrophoneSubscriber.ReceiveMicrophoneData(ArraySegment<float> buffer, WaveFormat format) { MonadFxStrictBuilder<FSharpOption<Unit>> val = GenericBuilders.monad'<FSharpOption<Unit>>(); StrictBuilder<FSharpOption<Unit>> val2 = (StrictBuilder<FSharpOption<Unit>>)(object)val; StrictBuilder<FSharpOption<Unit>> val3 = (StrictBuilder<FSharpOption<Unit>>)(object)val; Builder<FSharpOption<Unit>> val4 = (Builder<FSharpOption<Unit>>)(object)val; if (init@15 < 3) { IntrinsicFunctions.FailStaticInit(); } FSharpOption<DissonanceComms> val5 = get<DissonanceComms>(Dissonance); Bind val6 = null; FSharpOption<Unit> val7 = null; FSharpOption<Unit> val8 = Bind.op_GreaterGreaterEquals<DissonanceComms, Unit>(val5, (FSharpFunc<DissonanceComms, FSharpOption<Unit>>)new Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@56(format, buffer, val)); } virtual void IMicrophoneSubscriber.Reset() { if (init@15 < 6) { IntrinsicFunctions.FailStaticInit(); } vadDisabledFrames = 0; FSharpFunc<AudioFileWriter, Unit> @_instance; @_instance = Dissonance-Audio-Capture-IMicrophoneSubscriber-Reset@88.@_instance; if (init@15 < 1) { IntrinsicFunctions.FailStaticInit(); } FSharpOption<AudioFileWriter> value = Recording.Value; Iterate val = null; Iterate.Iterate<AudioFileWriter>(value, @_instance); if (init@15 < 1) { IntrinsicFunctions.FailStaticInit(); } Recording.Value = null; if (init@15 < 2) { IntrinsicFunctions.FailStaticInit(); } RecordingName.Value = null; } virtual void IVoiceActivationListener.VoiceActivationStart() { if (init@15 < 5) { IntrinsicFunctions.FailStaticInit(); } voiceActivated = true; } virtual void IVoiceActivationListener.VoiceActivationStop() { if (init@15 < 5) { IntrinsicFunctions.FailStaticInit(); } voiceActivated = false; } static RecordAudio() { <StartupCode$Mirage>.$Mirage.Patch.RecordAudio.init@ = 0; _ = <StartupCode$Mirage>.$Mirage.Patch.RecordAudio.init@; } } [Serializable] internal sealed class Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@58-1 : FSharpFunc<Tuple<Return, FSharpOption<Unit>>, FSharpFunc<Unit, FSharpOption<Unit>>> { internal static readonly Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@58-1 @_instance = new Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@58-1(); [CompilerGenerated] [DebuggerNonUserCode] internal Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@58-1() { } public override FSharpFunc<Unit, FSharpOption<Unit>> Invoke(Tuple<Return, FSharpOption<Unit>> tupledArg) { return Return.Return<Unit>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@60-2 : FSharpFunc<Tuple<Return, FSharpOption<Unit>>, FSharpFunc<Unit, FSharpOption<Unit>>> { internal static readonly Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@60-2 @_instance = new Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@60-2(); [CompilerGenerated] [DebuggerNonUserCode] internal Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@60-2() { } public override FSharpFunc<Unit, FSharpOption<Unit>> Invoke(Tuple<Return, FSharpOption<Unit>> tupledArg) { return Return.Return<Unit>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class defaultRecording@64 : FSharpFunc<Unit, AudioFileWriter> { public WaveFormat format; [CompilerGenerated] [DebuggerNonUserCode] internal defaultRecording@64(WaveFormat format) { this.format = format; } public override AudioFileWriter Invoke(Unit unitVar0) { if (RecordAudio.init@15 < 7) { IntrinsicFunctions.FailStaticInit(); } RecordAudio.framesWritten = 0; Tuple<string, AudioFileWriter> tuple = Mirage.Core.Audio.Recording.createRecording(format); AudioFileWriter item = tuple.Item2; string item2 = tuple.Item1; if (RecordAudio.init@15 < 1) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<AudioFileWriter>> recording = RecordAudio.Recording; AudioFileWriter val = item; recording.Value = FSharpOption<AudioFileWriter>.Some(val); if (RecordAudio.init@15 < 2) { IntrinsicFunctions.FailStaticInit(); } FSharpRef<FSharpOption<string>> recordingName = RecordAudio.RecordingName; string text = item2; recordingName.Value = FSharpOption<string>.Some(text); return item; } } [Serializable] internal sealed class Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@70-4 : FSharpFunc<Tuple<Return, FSharpOption<Unit>>, FSharpFunc<Unit, FSharpOption<Unit>>> { internal static readonly Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@70-4 @_instance = new Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@70-4(); [CompilerGenerated] [DebuggerNonUserCode] internal Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@70-4() { } public override FSharpFunc<Unit, FSharpOption<Unit>> Invoke(Tuple<Return, FSharpOption<Unit>> tupledArg) { return Return.Return<Unit>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-8 : FSharpFunc<Tuple<Return, FSharpOption<Unit>>, FSharpFunc<Unit, FSharpOption<Unit>>> { internal static readonly Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-8 @_instance = new Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-8(); [CompilerGenerated] [DebuggerNonUserCode] internal Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-8() { } public override FSharpFunc<Unit, FSharpOption<Unit>> Invoke(Tuple<Return, FSharpOption<Unit>> tupledArg) { return Return.Return<Unit>(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-7 : FSharpFunc<Unit, FSharpOption<Unit>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MonadFxStrictBuilder<FSharpOption<Unit>> builder@; public string filePath; [CompilerGenerated] [DebuggerNonUserCode] internal Dissonance-Audio-Capture-IMicrophoneSubscriber-ReceiveMicrophoneData@78-7(MonadFxStrictBuilder<FSharpOption<Unit>> builder@, string filePath) { this.builder@ = builder@; this.filePath = filePath; } public override FSharpOption<Unit> Invoke(Unit unitVar) { File.Delete(filePath); MonadFxStrictBuilder<FSharpOption<Unit>> val = builder@; return FSharpFunc<Tuple<Return, FSharpOption<Unit>>, Unit>.InvokeFast<FSharpOption<Unit>>((FSharpFunc<Tuple<Return, FSharpOption<Unit>>, FSharpFunc<Unit, FSh