Pitch anglerfish sounds based on size (#663)

<!-- A new module or something else important -->
## Major features
-

<!-- A new parameter added to a module, or API feature -->
## Minor features
-

<!-- Some improvement that requires no action on the part of add-on
creators i.e., improved star graphics -->
## Improvements
- Pitch anglerfish sounds based on scale. Resolves #160.

<!-- Be sure to reference the existing issue if it exists -->
## Bug fixes
-
This commit is contained in:
Nick 2023-07-27 00:00:22 -04:00 committed by GitHub
commit fa64b19fa8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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;
}
}
}
}