using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using GorillaEarmuffs; using HarmonyLib; using MelonLoader; using MelonLoader.Preferences; using MelonLoader.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: MelonInfo(typeof(Mod), "GorillaEarmuffs", "1.0.0", "gizmogoat", null)] [assembly: MelonGame("Another Axiom", "Gorilla Tag")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("GorillaEarmuffs")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a6ec99dd1fd1d94e8e99b5c6579a0ff09bd9a25a")] [assembly: AssemblyProduct("GorillaEarmuffs")] [assembly: AssemblyTitle("GorillaEarmuffs")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace GorillaEarmuffs { internal class Constants { public const string Name = "GorillaEarmuffs"; public const string Version = "1.0.0"; } public class Mod : MelonMod { public static MelonPreferences_Entry maxDistance; public override void OnLateInitializeMelon() { ((MelonBase)this).OnLateInitializeMelon(); MelonPreferences_Category obj = MelonPreferences.CreateCategory("GorillaEarmuffs"); obj.SetFilePath(Path.Combine(MelonEnvironment.UserDataDirectory, "GorillaEarmuffs.cfg")); maxDistance = obj.CreateEntry("maxDistance", 4.5f, "Max Distance", "Maximum distance before voices become completely inaudible.", false, false, (ValueValidator)null); obj.SaveToFile(true); } } } namespace GorillaEarmuffs.Patches { [HarmonyPatch(typeof(VRRig))] [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class RigPatch { private static void Postfix(VRRig __instance) { object? value = AccessTools.Field(((object)__instance).GetType(), "voiceAudio").GetValue(__instance); AudioSource val = (AudioSource)((value is AudioSource) ? value : null); if ((Object)(object)val != (Object)null) { val.rolloffMode = (AudioRolloffMode)1; val.spatialBlend = 1f; val.pitch = 1f; val.maxDistance = Mod.maxDistance.Value; val.minDistance = 0f; } } } }