using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using BlinkzREPOSoundEffects.Patches;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("BlinkzREPOSoundEffects")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BlinkzREPOSoundEffects")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("bb0cda16-c6ee-4065-899a-263682eba5a0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace BlinkzREPOSoundEffects
{
[BepInPlugin("BlinkzREPOSounds", "Iggys Memes R.E.P.O.", "0.0.12")]
public class BlinkzSounds : BaseUnityPlugin
{
private const string modGUID = "BlinkzREPOSounds";
private const string modName = "Iggys Memes R.E.P.O.";
private const string modVersion = "0.0.12";
private readonly Harmony harmony = new Harmony("BlinkzREPOSounds");
private static BlinkzSounds Instance;
internal ManualLogSource mls;
internal static List<AudioClip> SoundFX;
internal static AssetBundle Bundle;
public static float tripTimer;
public static bool running;
public static int teethChatterCount;
private void Awake()
{
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
mls = Logger.CreateLogSource("BlinkzREPOSounds");
mls.LogInfo((object)"\r\n _ _ _____ _ _ _____ \r\n | | | | | ___| | | | | / _ \\ \r\n | |___| | | |___ | | | | | / \\ |\r\n | ___ | | ___| | | | | | ( ) |\r\n | | | | | |___ | |___ | |___ | \\_/ |\r\n |_| |_| |_____| |_____| |_____| \\_____/ \r\n");
tripTimer = 0f;
running = false;
teethChatterCount = 0;
harmony.PatchAll(typeof(BlinkzSounds));
harmony.PatchAll(typeof(Huntsman));
harmony.PatchAll(typeof(Beamer));
harmony.PatchAll(typeof(Kidnapper));
harmony.PatchAll(typeof(Marshmellow));
harmony.PatchAll(typeof(Eye));
harmony.PatchAll(typeof(Head));
harmony.PatchAll(typeof(Gnome));
harmony.PatchAll(typeof(Baby));
harmony.PatchAll(typeof(Banger));
harmony.PatchAll(typeof(Frog));
harmony.PatchAll(typeof(Items));
harmony.PatchAll(typeof(ChargingStat));
harmony.PatchAll(typeof(ShadowChild));
harmony.PatchAll(typeof(PlayAvatar));
harmony.PatchAll(typeof(PlayHealth));
SoundFX = new List<AudioClip>();
string location = ((BaseUnityPlugin)Instance).Info.Location;
location = location.TrimEnd("BlinkzREPOSoundEffects.dll".ToCharArray());
Bundle = AssetBundle.LoadFromFile(location + "blinkzreposounds");
}
}
}
namespace BlinkzREPOSoundEffects.Patches
{
[HarmonyPatch(typeof(EnemyValuableThrower))]
internal class Baby
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyValuableThrower __instance)
{
__instance.anim.stunSound.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Wah.wav");
__instance.anim.hurtSound.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Wah.wav");
}
}
[HarmonyPatch(typeof(EnemyBang))]
internal class Banger
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("ExplosionTellRPC")]
[HarmonyPostfix]
private static void Suicide(EnemyBang __instance)
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Suicide.wav"), ((Component)__instance.anim.enemy).transform.position);
}
}
[HarmonyPatch(typeof(EnemyBeamerAnim))]
internal class Beamer
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideBeamAudio(EnemyBeamerAnim __instance)
{
__instance.soundAttackIntro.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/WaitUrrrrgghhh.wav");
__instance.soundMeleeKick.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/You get the boot.wav");
}
}
[HarmonyPatch(typeof(ChargingStation))]
internal class ChargingStat
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(ChargingStation __instance)
{
__instance.soundStart.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/ChargeItUp.wav");
}
}
[HarmonyPatch(typeof(EnemyCeilingEye))]
internal class Eye
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyCeilingEye __instance)
{
__instance.eyeAnim.sfxStaringStart = BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/EyeStaringStart.wav");
}
}
[HarmonyPatch(typeof(EnemyTumbler))]
internal class Frog
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void FrogSpawn(EnemyTumbler __instance)
{
AudioClip[] sounds = (AudioClip[])(object)new AudioClip[3]
{
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/CleaverSwingWoah01.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/CleaverSwingWoah02.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/CleaverSwingWoah03.wav")
};
__instance.enemyTumblerAnim.sfxCleaverSwing.Sounds = sounds;
}
}
[HarmonyPatch(typeof(EnemyGnome))]
internal class Gnome
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyGnome __instance)
{
AudioClip[] sounds = (AudioClip[])(object)new AudioClip[4]
{
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/GnomeLootForYou0.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/GnomeLootForYou1.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/GnomeLootForYou2.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/GnomeLootForYou3.wav")
};
__instance.enemyGnomeAnim.soundPickaxeHit.Sounds = sounds;
}
}
[HarmonyPatch(typeof(EnemyHeadAnimationSystem))]
internal class Head
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("PlayTeethChatter")]
[HarmonyPostfix]
private static void TeethChatter(EnemyHeadAnimationSystem __instance)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
if (BlinkzSounds.teethChatterCount == 0)
{
BlinkzSounds.teethChatterCount++;
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Dododo.wav"), ((Component)__instance).transform.position);
}
else if (BlinkzSounds.teethChatterCount == 4)
{
BlinkzSounds.teethChatterCount = 0;
}
else
{
BlinkzSounds.teethChatterCount++;
}
}
}
[HarmonyPatch(typeof(EnemyHunter))]
internal class Huntsman
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyHunter __instance)
{
AudioClip[] aimStartClips = (AudioClip[])(object)new AudioClip[3]
{
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/ImBlind0.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/ImBlind1.wav"),
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/ImBlind2.wav")
};
__instance.enemyHunterAnim.aimStartClips = aimStartClips;
}
[HarmonyPatch("UpdateStateRPC")]
[HarmonyPostfix]
private static void UpdateStateRPC(EnemyHunter __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Invalid comparison between Unknown and I4
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.currentState == 11)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Woah.wav"), ((Component)__instance.enemy).transform.position);
}
}
}
[HarmonyPatch(typeof(PhysGrabObjectImpactDetector))]
internal class Items
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("BreakRPC")]
[HarmonyPostfix]
private static void Break(PhysGrabObjectImpactDetector __instance)
{
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
if (__instance.isValuable)
{
FieldInfo field = ((object)__instance).GetType().GetField("impactForce", BindingFlags.Instance | BindingFlags.NonPublic);
float num = (float)field.GetValue(__instance);
if (num != 0f)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Hmmmmm2.wav"), ((Component)__instance).gameObject.transform.position, num / 250f);
}
else
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Hmmmmm2.wav"), ((Component)__instance).gameObject.transform.position, 0.5f);
}
}
}
}
[HarmonyPatch(typeof(EnemyHidden))]
internal class Kidnapper
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyHidden __instance)
{
__instance.enemyHiddenAnim.soundBreatheOutFast.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/FastSteal0.wav");
__instance.enemyHiddenAnim.soundPlayerMove.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/HiddenPlayerSteal.wav");
__instance.enemyHiddenAnim.soundPlayerPickup.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Steal.wav");
}
}
[HarmonyPatch(typeof(EnemyBowtie))]
internal class Marshmellow
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyBowtie __instance)
{
__instance.anim.yellStartSound.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Go Away.wav");
}
[HarmonyPatch("UpdateStateRPC")]
[HarmonyPostfix]
private static void StateLeave(EnemyBowtie __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.currentState == 7)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/RunAway.wav"), ((Component)__instance.anim.enemy).transform.position);
}
}
}
[HarmonyPatch(typeof(PlayerAvatar))]
internal class PlayAvatar
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(PlayerAvatar __instance)
{
__instance.truckReturn.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/TruckReturnHeal.wav");
}
}
[HarmonyPatch(typeof(PlayerHealth))]
internal class PlayHealth
{
[HarmonyPatch("HealOtherRPC")]
[HarmonyPostfix]
private static void Play(PlayerHealth __instance)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Share.wav"), ((Component)__instance).transform.position);
}
}
[HarmonyPatch(typeof(EnemyThinMan))]
internal class ShadowChild
{
[HarmonyPatch("UpdateState")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyThinMan __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.currentState == 1)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/MildInconvience.wav"), ((Component)__instance.anim.enemy).transform.position);
}
}
[HarmonyPatch("UpdateStateRPC")]
[HarmonyPostfix]
private static void OverrideAudioRPC(EnemyThinMan __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.currentState == 1)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/MildInconvience.wav"), ((Component)__instance.anim.enemy).transform.position);
}
}
}
}