using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using FMOD.Studio; using HarmonyLib; using Microsoft.CodeAnalysis; using SuperFantasyKingdom; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("MusicFader")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f5d90497fc96d65a7d30b7c0e188b60f040385fd")] [assembly: AssemblyProduct("Music Fader")] [assembly: AssemblyTitle("MusicFader")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MusicFader { [BepInPlugin("ownly.musicfader", "Music Fader", "1.0.0")] public class Plugin : BaseUnityPlugin { private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID).PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Music Fader loaded"); } } [HarmonyPatch(typeof(MusicManager), "Update")] internal static class Patch_Crossfade { private const float Duration = 5f; private const float VanillaDuration = 1.5f; private static readonly FieldRef CityMusic = AccessTools.FieldRefAccess("m_CityMusic"); private static readonly FieldRef FadeBetween = AccessTools.FieldRefAccess("m_MusicFadeBetween"); private static bool s_WasCity = true; private static float s_LastFade; private static void Postfix(MusicManager __instance) { bool flag = CityMusic.Invoke(__instance); float num = FadeBetween.Invoke(__instance); if (flag != s_WasCity) { s_WasCity = flag; num -= s_LastFade; FadeBetween.Invoke(__instance) = num; } else if (num < s_LastFade) { num = s_LastFade - (s_LastFade - num) * 0.3f; FadeBetween.Invoke(__instance) = num; } s_LastFade = num; } } [HarmonyPatch(typeof(MusicManager), "OnCombatStart")] internal static class Patch_StartInTown { private static readonly FieldRef CityMusic = AccessTools.FieldRefAccess("m_CityMusic"); private static readonly FieldRef FadeBetween = AccessTools.FieldRefAccess("m_MusicFadeBetween"); private static readonly FieldRef CombatFadeTimer = AccessTools.FieldRefAccess("m_CombatMusicFadeTimer"); private static readonly FieldRef CombatMusic = AccessTools.FieldRefAccess("m_CombatMusic"); private static void Postfix(MusicManager __instance) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) if (CityMusic.Invoke(__instance)) { ((EventInstance)(ref CombatMusic.Invoke(__instance))).setVolume(0f); CombatFadeTimer.Invoke(__instance) = 0f; FadeBetween.Invoke(__instance) = 0f; } } } }