From 509282914631190ab4b4ea71e0eca379807773ab Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 22 Jul 2023 02:50:45 -0400 Subject: [PATCH] Pitch anglerfish sounds based on size --- .../AnglerfishAudioControllerPatches.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 NewHorizons/Patches/AnglerfishAudioControllerPatches.cs diff --git a/NewHorizons/Patches/AnglerfishAudioControllerPatches.cs b/NewHorizons/Patches/AnglerfishAudioControllerPatches.cs new file mode 100644 index 00000000..4ddffcf1 --- /dev/null +++ b/NewHorizons/Patches/AnglerfishAudioControllerPatches.cs @@ -0,0 +1,47 @@ +using HarmonyLib; +using UnityEngine; +using static AnglerfishController; + +namespace NewHorizons.Patches +{ + [HarmonyPatch(typeof(AnglerfishAudioController))] + public static class AnglerfishAudioControllerPatches + { + [HarmonyPrefix] + [HarmonyPatch(nameof(AnglerfishAudioController.OnChangeAnglerState))] + public static bool AnglerfishAudioController_OnChangeAnglerState(AnglerfishAudioController __instance, AnglerState anglerState) + { + var scale = __instance.transform.parent.localScale.x; + + if (scale == 1) + { + return true; + } + else + { + var modifier = 1f / Mathf.Clamp(scale, 0.5f, 2f); + + __instance.UpdateLoopingAudio(anglerState); + if (anglerState == AnglerState.Investigating) + { + __instance._longRangeOneShotSource.pitch = modifier * Random.Range(0.8f, 1f); + __instance._longRangeOneShotSource.PlayOneShot(AudioType.DBAnglerfishDetectDisturbance, 1f); + return false; + } + if (anglerState == AnglerState.Chasing) + { + if (Time.time > AnglerfishAudioController.s_lastDetectTime + 2f) + { + AnglerfishAudioController.s_lastDetectTime = Time.time; + __instance._oneShotSource.pitch = modifier * Random.Range(0.8f, 1f); + __instance._oneShotSource.PlayOneShot(AudioType.DBAnglerfishDetectTarget, 1f); + return false; + } + MonoBehaviour.print("ANGLER DETECT TARGET SOUND BLOCKED"); + } + + return false; + } + } + } +}