0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 09:50:43 -05:00
2024-05-21 19:10:17 +01:00

39 lines
1.2 KiB
C#

using EFT;
using Comfort.Common;
using System.Reflection;
using SPT.Reflection.Patching;
using System.Collections;
using EFT.HealthSystem;
using HarmonyLib;
namespace SPT.SinglePlayer.Patches.RaidFix
{
public class TinnitusFixPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BetterAudio), nameof(BetterAudio.StartTinnitusEffect));
}
// checks on invoke whether the player is stunned before allowing tinnitus
[PatchPrefix]
static bool PatchPrefix()
{
var baseMethod = AccessTools.Method(typeof(ActiveHealthController), nameof(ActiveHealthController.FindActiveEffect));
bool shouldInvoke = baseMethod
.MakeGenericMethod(typeof(ActiveHealthController)
.GetNestedType("Stun", BindingFlags.Instance | BindingFlags.NonPublic))
.Invoke(Singleton<GameWorld>.Instance.MainPlayer.ActiveHealthController, new object[] { EBodyPart.Common }) != null;
return shouldInvoke;
}
// prevent null coroutine exceptions
static IEnumerator CoroutinePassthrough()
{
yield return null;
yield break;
}
}
}