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.5")]
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.5";
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;
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;
harmony.PatchAll(typeof(BlinkzSounds));
harmony.PatchAll(typeof(Huntsman));
harmony.PatchAll(typeof(HuntsmanFall));
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));
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("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyBang __instance)
{
__instance.anim.soundExplosionTell.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Suicide.wav");
__instance.anim.soundFuseTell.Sounds = BlinkzSounds.Bundle.LoadAssetWithSubAssets<AudioClip>("assets/Suicide.wav");
}
}
[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(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(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(EnemyHeadController))]
internal class Head
{
[HarmonyPatch("Awake")]
[HarmonyPostfix]
private static void OverrideAudio(EnemyHeadController __instance)
{
__instance.AnimationSystem.TeethChatter.Sounds[0] = BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Dododo.wav");
}
}
[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[4]
{
BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Hello.wav"),
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(typeof(EnemyHunter), "Update")]
public class HuntsmanFall
{
internal static ManualLogSource mls = Logger.CreateLogSource("Blinkz.BlinkzSoundMod");
private static void Postfix(EnemyHunter __instance)
{
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
Enemy enemy = __instance.enemy;
FieldInfo field = typeof(Enemy).GetField("Rigidbody", BindingFlags.Instance | BindingFlags.NonPublic);
object value = field.GetValue(enemy);
FieldInfo field2 = value.GetType().GetField("physGrabObject", BindingFlags.Instance | BindingFlags.NonPublic);
object value2 = field2.GetValue(value);
FieldInfo field3 = value2.GetType().GetField("rbVelocity", BindingFlags.Instance | BindingFlags.NonPublic);
Vector3 val = (Vector3)field3.GetValue(value2);
FieldInfo field4 = value.GetType().GetField("timeSinceStun", BindingFlags.Instance | BindingFlags.NonPublic);
float num = (float)field4.GetValue(value);
if (val.y < -0.5f && num > 3f)
{
BlinkzSounds.tripTimer += Time.deltaTime;
if (val.y <= -2f)
{
BlinkzSounds.tripTimer = 999f;
}
}
else
{
BlinkzSounds.tripTimer = 0f;
}
if (BlinkzSounds.tripTimer > 0.5f)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/Woah.wav"), ((Component)__instance.enemy).transform.position);
BlinkzSounds.tripTimer = 0f;
}
}
}
[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("Update")]
[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_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Invalid comparison between Unknown and I4
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.currentState == 7 && !BlinkzSounds.running)
{
AudioSource.PlayClipAtPoint(BlinkzSounds.Bundle.LoadAsset<AudioClip>("assets/RunAway.wav"), ((Component)__instance.anim.enemy).transform.position);
BlinkzSounds.running = true;
}
else if ((int)__instance.currentState != 7 && BlinkzSounds.running)
{
BlinkzSounds.running = false;
}
}
}
}