Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of HAOButler v1.0.0
TShine.HAObutler.dll
Decompiled 2 years agousing System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using ButlerAnim.Patches; using ButlerAudio.Patches; using HarmonyLib; using LCSoundTool; using MAIN; 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(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace MAIN { [BepInPlugin("TShine.HAMUbutler", "HAMU butler", "1.0.0")] public class Plugin : BaseUnityPlugin { private const string modGUID = "TShine.HAMUbutler"; private const string modName = "HAMU butler"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("TShine.HAMUbutler"); public static Plugin Instance; internal static AssetBundle MyAssetBundle; public static AudioClip die; public static AudioClip boom; public static AudioClip zhuisha; public static AudioClip gongji1; public static AudioClip gongji2; public static AudioClip sharenla; public static AudioClip nadao; public static AudioClip spawn; public static AudioClip sing1; public static AudioClip sing2; public static AudioClip sing3; public static AudioClip stab1; public static AudioClip stab2; public static AudioClip stab3; public static AudioClip stab4; public static AudioClip stab5; public static AudioClip stab6; public static AnimationClip customAnimationClip; private void Awake() { if ((Object)(object)Instance != (Object)null && (Object)(object)Instance != (Object)(object)this) { Object.Destroy((Object)(object)this); } else { Instance = this; } Debug.Log((object)"HAObutler Mod loaded 你的郝管家~~~"); string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "hao"); MyAssetBundle = AssetBundle.LoadFromFile(text); if ((Object)(object)MyAssetBundle == (Object)null) { Debug.LogError((object)"加载资源失败!!!"); return; } customAnimationClip = MyAssetBundle.LoadAsset<AnimationClip>("dongzuo"); die = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/die.ogg"); boom = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/boom.ogg"); zhuisha = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/zhuisha.ogg"); gongji1 = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/gongji1.ogg"); gongji2 = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/gongji2.ogg"); sharenla = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/sharenla.ogg"); nadao = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/nadao.ogg"); spawn = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/spawn.ogg"); sing1 = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/sing1.ogg"); sing2 = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/sing2.ogg"); sing3 = MyAssetBundle.LoadAsset<AudioClip>("Assets/yinpin/sing3.ogg"); SoundTool.ReplaceAudioClip("ButlerBlowUp", die); SoundTool.ReplaceAudioClip("BalloonPop", boom); SoundTool.ReplaceAudioClip("BalloonPopReverb", boom); SoundTool.ReplaceAudioClip("ButlerMurderTheme", zhuisha); SoundTool.ReplaceAudioClip("ButlerStab1", gongji1, 0.5f); SoundTool.ReplaceAudioClip("ButlerStab1", gongji2, 0.5f); SoundTool.ReplaceAudioClip("SwingKnife", sing1); SoundTool.ReplaceAudioClip("SwingKnife2", sing2); SoundTool.ReplaceAudioClip("SwingKnife3", sing3); SoundTool.ReplaceAudioClip("KnifeStab1", stab1, 0.333f); SoundTool.ReplaceAudioClip("KnifeStab1", stab2, 0.333f); SoundTool.ReplaceAudioClip("KnifeStab1", stab3, 0.333f); SoundTool.ReplaceAudioClip("KnifeStab2", stab4, 0.333f); SoundTool.ReplaceAudioClip("KnifeStab2", stab5, 0.333f); SoundTool.ReplaceAudioClip("KnifeStab2", stab6, 0.333f); harmony.PatchAll(typeof(ButlerAnimPatch)); harmony.PatchAll(typeof(ButlerAudioPatch)); harmony.PatchAll(); } } } namespace ButlerAnim.Patches { internal class ButlerAnimPatch { [HarmonyPatch(typeof(ButlerEnemyAI), "Start")] public class ButlerEnemyPatch { private static void Postfix(ButlerEnemyAI __instance) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown Transform val = ((Component)__instance).transform.Find("MeshContainer"); if ((Object)(object)val != (Object)null) { Animator component = ((Component)val).GetComponent<Animator>(); if ((Object)(object)component != (Object)null) { AnimatorOverrideController val2 = new AnimatorOverrideController(component.runtimeAnimatorController); val2["ButlerKnifeIdle"] = Plugin.customAnimationClip; component.runtimeAnimatorController = (RuntimeAnimatorController)(object)val2; } } } } } } namespace ButlerAudio.Patches { internal class ButlerAudioPatch { [HarmonyPatch(typeof(ButlerEnemyAI), "Start")] private static void Postfix(ButlerEnemyAI __instance) { Transform val = ((Component)__instance).transform.Find("Ambience"); Transform val2 = ((Component)__instance).transform.Find("Ambience2"); if ((Object)(object)val != (Object)null) { AudioSource component = ((Component)val).GetComponent<AudioSource>(); if ((Object)(object)component != (Object)null) { component.clip = Plugin.spawn; } } if ((Object)(object)val2 != (Object)null) { AudioSource component2 = ((Component)val).GetComponent<AudioSource>(); if ((Object)(object)component2 != (Object)null) { component2.clip = Plugin.nadao; } } } } }