using System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using ModelReplacement; 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("ElysianSkins")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ElysianSkins")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("cf7f5cd0-db8a-4dfa-b85d-9e070041a114")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace HatsuneMikuModelReplacement; public class BodyReplacementMiku : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "ElysiaSkinPrefab"; return Assets.MainAssetBundle.LoadAsset(text); } protected override void OnEmoteStart(int emoteId) { base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(29, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(44, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(49, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(58, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(60, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(83, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(84, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(25, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(45, 0f); if (emoteId == 1) { base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(83, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(84, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(25, 60f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(45, 100f); } if (emoteId == 2) { base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(29, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(44, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(49, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(58, 100f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(60, 70f); } } protected override void OnEmoteEnd() { base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(83, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(84, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(25, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(45, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(29, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(44, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(49, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(58, 0f); base.replacementModel.GetComponentInChildren().SetBlendShapeWeight(60, 0f); } } [BepInPlugin("bwakky.ElysianSkins", "Elysian Skins", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public static ConfigFile config; public static ConfigEntry enableMikuForAllSuits { get; private set; } public static ConfigEntry enableMikuAsDefault { get; private set; } public static ConfigEntry suitNamesToEnableMiku { get; private set; } public static ConfigEntry UpdateRate { get; private set; } public static ConfigEntry distanceDisablePhysics { get; private set; } public static ConfigEntry disablePhysicsAtRange { get; private set; } private static void InitConfig() { enableMikuForAllSuits = config.Bind("Suits to Replace Settings", "Enable Miku for all Suits", false, "Enable to replace every suit with Miku. Set to false to specify suits"); enableMikuAsDefault = config.Bind("Suits to Replace Settings", "Enable Miku as default", false, "Enable to replace every suit that hasn't been otherwise registered with Miku."); suitNamesToEnableMiku = config.Bind("Suits to Replace Settings", "Suits to enable Miku for", "Default,Orange suit", "Enter a comma separated list of suit names.(Additionally, [Green suit,Pajama suit,Hazard suit])"); UpdateRate = config.Bind("Dynamic Bone Settings", "Update rate", 60f, "Refreshes dynamic bones more times per second the higher the number"); disablePhysicsAtRange = config.Bind("Dynamic Bone Settings", "Disable physics at range", false, "Enable to disable physics past the specified range"); distanceDisablePhysics = config.Bind("Dynamic Bone Settings", "Distance to disable physics", 20f, "If Disable physics at range is enabled, this is the range after which physics is disabled."); } private void Awake() { //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown config = ((BaseUnityPlugin)this).Config; InitConfig(); Assets.PopulateAssets(); if (enableMikuForAllSuits.Value) { ModelReplacementAPI.RegisterModelReplacementOverride(typeof(BodyReplacementMiku)); } if (enableMikuAsDefault.Value) { ModelReplacementAPI.RegisterModelReplacementDefault(typeof(BodyReplacementMiku)); } string[] array = suitNamesToEnableMiku.Value.Split(new char[1] { ',' }); string[] array2 = array; foreach (string text in array2) { ModelReplacementAPI.RegisterSuitModelReplacement(text, typeof(BodyReplacementMiku)); } Harmony val = new Harmony("bwakky.ElysianSkins"); val.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin bwakky.ElysianSkins is loaded!"); } } public static class Assets { public static string mainAssetBundleName = "mrapi_assetbundle"; public static AssetBundle MainAssetBundle = null; private static string GetAssemblyName() { return Assembly.GetExecutingAssembly().GetName().Name; } public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { Console.WriteLine(GetAssemblyName() + "." + mainAssetBundleName); using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName); MainAssetBundle = AssetBundle.LoadFromStream(stream); } } }