using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using CBEY_thumper.patches;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("CBEY_thumper")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("komar edition")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("CBEY_thumper")]
[assembly: AssemblyTitle("CBEY_thumper")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace CBEY_thumper
{
[BepInPlugin("CBEY_thumper", "CBEY_thumper", "1.0.0")]
public class CBEY_thumperBase : BaseUnityPlugin
{
private static CBEY_thumperBase instance;
public static string uPath;
public static AudioClip[] newRoar;
public static AudioClip[] newCloseHorn;
public static AudioClip[] newFarHorn;
public static Dictionary<string, AudioClip> newStompSFX = new Dictionary<string, AudioClip>();
public static GameObject visuals;
public static AssetBundle bundle;
public static readonly Harmony harmony = new Harmony("ironkrendel.CBEY_thumper");
public static ManualLogSource mls;
private void Awake()
{
if ((Object)(object)instance == (Object)null)
{
instance = this;
}
mls = ((BaseUnityPlugin)this).Logger;
uPath = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
bundle = AssetBundle.LoadFromFile(uPath + "\\komar");
if ((Object)(object)bundle == (Object)null)
{
((BaseUnityPlugin)this).Logger.LogError((object)"Error loading assets from bundles!!!");
return;
}
newStompSFX["Stomp1"] = bundle.LoadAssetWithSubAssets<AudioClip>("komar_step_1")[0];
newStompSFX["Stomp2"] = bundle.LoadAssetWithSubAssets<AudioClip>("komar_step_2")[0];
newStompSFX["Stomp3"] = bundle.LoadAssetWithSubAssets<AudioClip>("komar_step_3")[0];
newRoar = bundle.LoadAssetWithSubAssets<AudioClip>("CBEY_thumper_wa");
newCloseHorn = bundle.LoadAssetWithSubAssets<AudioClip>("reserve_alarm_close");
newFarHorn = bundle.LoadAssetWithSubAssets<AudioClip>("reserve_alarm_far");
visuals = bundle.LoadAssetWithSubAssets<GameObject>("komar.prefab")[0];
harmony.PatchAll(typeof(CBEY_thumperBase));
harmony.PatchAll(typeof(ThumperPatch));
harmony.PatchAll(typeof(ThumperStompPatch));
harmony.PatchAll(typeof(BigHornPatch));
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin CBEY_thumper is loaded!");
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "CBEY_thumper";
public const string PLUGIN_NAME = "CBEY_thumper";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace CBEY_thumper.patches
{
[HarmonyPatch(typeof(CrawlerAI))]
internal class ThumperPatch
{
private static float timeFromLastSound;
[HarmonyPatch("Start")]
[HarmonyPostfix]
public static void ThumperSFXPatch(CrawlerAI __instance)
{
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
__instance.shortRoar = CBEY_thumperBase.newRoar[0];
__instance.longRoarSFX = CBEY_thumperBase.newRoar;
Transform transform = ((Component)__instance).transform;
Renderer[] componentsInChildren = ((Component)transform).GetComponentsInChildren<Renderer>();
Renderer[] array = componentsInChildren;
Renderer[] array2 = array;
foreach (Renderer val in array2)
{
val.enabled = false;
}
GameObject val2 = Object.Instantiate<GameObject>(CBEY_thumperBase.visuals);
val2.transform.SetParent(transform);
val2.transform.localPosition = new Vector3(0f, 1f, -2.25f);
val2.transform.localRotation = Quaternion.identity;
val2.transform.localScale = new Vector3(2f, 2f, 2f);
((Renderer)val2.GetComponentInChildren<MeshRenderer>()).enabled = true;
}
[HarmonyPatch("KillEnemy")]
[HarmonyPostfix]
public static void DeathPatch(CrawlerAI __instance)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
CrawlerAI[] array = Object.FindObjectsOfType<CrawlerAI>();
for (int i = 0; i < array.Length; i++)
{
if (!((EnemyAI)array[i]).isEnemyDead)
{
continue;
}
((Component)array[i]).transform.localRotation = new Quaternion(180f, 0f, 180f, 0f);
Component[] componentsInChildren = ((Component)array[i]).GetComponentsInChildren<Component>();
for (int j = 0; j < componentsInChildren.Length; j++)
{
if (((Object)componentsInChildren[j]).name == "komar_model")
{
componentsInChildren[j].transform.localPosition = new Vector3(0f, -1f, 0f);
break;
}
}
}
}
}
[HarmonyPatch(typeof(AudioSource))]
internal class ThumperStompPatch
{
private static string[] stompNames = new string[3] { "Stomp1", "Stomp2", "Stomp3" };
[HarmonyPatch("PlayOneShot", new Type[]
{
typeof(AudioClip),
typeof(float)
})]
[HarmonyPrefix]
public static void test(ref AudioClip clip, float volumeScale)
{
if ((Object)(object)clip != (Object)null && stompNames.Contains(((Object)clip).name))
{
clip = CBEY_thumperBase.newStompSFX[((Object)clip).name];
}
}
}
[HarmonyPatch(typeof(ShipAlarmCord))]
internal class BigHornPatch
{
[HarmonyPatch("Start")]
[HarmonyPostfix]
public static void BigHornSFXPatch(ShipAlarmCord __instance)
{
__instance.hornClose.clip = CBEY_thumperBase.newCloseHorn[0];
__instance.hornFar.clip = CBEY_thumperBase.newFarHorn[0];
}
[HarmonyPatch("Update")]
[HarmonyPostfix]
public static void BigHornUpdatePatch(ShipAlarmCord __instance)
{
__instance.hornFar.pitch = 1f;
__instance.hornClose.pitch = 1f;
}
}
}