using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx.Preloader.Core.Patching; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; using MonoMod.Utils; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(/*Could not decode attribute arguments.*/)] [assembly: TargetFramework(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")] [assembly: AssemblyCompany("BetterAudioFilterSettingsPatcher")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+dc2cc50f597ebbc57073d6d232f1acee15ab1bbc")] [assembly: AssemblyProduct("BetterAudioFilterSettingsPatcher")] [assembly: AssemblyTitle("BetterAudioFilterSettingsPatcher")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace BetterAudioFilterSettings; [PatcherPluginInfo("art0007i.BetterAudioFilterSettings", "Better AudioFilterSettings", "1.0.0")] public class Patcher : BasePatcher { public const string GUID = "art0007i.BetterAudioFilterSettings"; public const string Name = "Better AudioFilterSettings"; public const string Version = "1.0.0"; [TargetAssembly("FrooxEngine.dll")] public bool PatchFrooxEngine(ref AssemblyDefinition assembly, string filename) { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Expected O, but got Unknown //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Expected O, but got Unknown //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) TypeDefinition type = assembly.MainModule.GetType("FrooxEngine.AudioInputFilteringSettings"); TypeDefinition type2 = assembly.MainModule.GetType("FrooxEngine.SettingSwitchValue"); TypeDefinition type3 = assembly.MainModule.GetType("FrooxEngine.World"); MethodDefinition val = Enumerable.First((global::System.Collections.Generic.IEnumerable)assembly.MainModule.GetType("FrooxEngine.SettingComponent").Methods, (Func)((MethodDefinition x) => "IsValidSetOfSwitches" == ((MemberReference)x).Name)); MethodDefinition val2 = new MethodDefinition(((MemberReference)val).Name, (MethodAttributes)(val.Attributes & 0xFEFF), ((MethodReference)val).ReturnType); type.Methods.Add(val2); val2.Body.InitLocals = true; ILProcessor iLProcessor = val2.Body.GetILProcessor(); Extensions.AddRange(((MethodReference)val2).Parameters, (global::System.Collections.Generic.IEnumerable)((MethodReference)val).Parameters); iLProcessor.Emit(OpCodes.Ldarg_0); iLProcessor.Emit(OpCodes.Ldarg_1); iLProcessor.Emit(OpCodes.Call, (MethodReference)(object)val); iLProcessor.Emit(OpCodes.Ret); MethodDefinition val3 = new MethodDefinition("GetDefaultSettingSwitches", (MethodAttributes)150, (TypeReference)(object)TypeReferenceRocks.MakeGenericInstanceType(assembly.MainModule.ImportReference(typeof(List<>)), (TypeReference[])(object)new TypeReference[1] { (TypeReference)type2 })); type.Methods.Add(val3); val3.Body.InitLocals = true; ILProcessor iLProcessor2 = val3.Body.GetILProcessor(); ParameterDefinition val4 = new ParameterDefinition("world", (ParameterAttributes)0, (TypeReference)(object)type3); ((MethodReference)val3).Parameters.Add(val4); iLProcessor2.Emit(OpCodes.Ldnull); iLProcessor2.Emit(OpCodes.Ret); return true; } }