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 Nagisa Captain v1.0.0
KirifujiCaptain.dll
Decompiled a day agousing 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.Permissions; using BepInEx; using BepInEx.Logging; using Microsoft.CodeAnalysis; using MonoMod.RuntimeDetour.HookGen; using MwSkinAdditions; using RoR2; using RoR2.ContentManagement; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Rendering; [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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("KirifujiCaptain")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("KirifujiCaptain")] [assembly: AssemblyTitle("KirifujiCaptain")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 KirifujiCaptain { [BepInPlugin("com.VanillaVitamins.KirifujiCaptain", "KirifujiCaptain", "1.0.0")] public class KirifujiCaptainPlugin : BaseUnityPlugin { private static AssetBundle assetBundle; private static readonly List<Material> materialsWithRoRShader = new List<Material>(); private static EventSub eventSub; private static SkinDef[] skins = (SkinDef[])(object)new SkinDef[2]; internal static KirifujiCaptainPlugin Instance { get; private set; } internal static ManualLogSource InstanceLogger { get { KirifujiCaptainPlugin instance = Instance; return (instance != null) ? ((BaseUnityPlugin)instance).Logger : null; } } private void Start() { Instance = this; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("KirifujiCaptain.vanillavitaminskirifujicaptain")) { assetBundle = AssetBundle.LoadFromStream(stream); } ((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)BodyCatalogInit); HookEndpointManager.Add((MethodBase)typeof(Language).GetMethod("LoadStrings"), (Delegate)new Action<Action<Language>, Language>(LanguageLoadStrings)); ReplaceShaders(); } private static void AfterBodyCatalogInit() { eventSub.skinDefs = skins; eventSub.Init(); } private static void ReplaceShaders() { LoadMaterialsWithReplacedShader("RoR2/Base/Shaders/HGStandard.shader", "Assets/SkinAssets/KirifujiCaptain/matKirifujiBody.mat", "Assets/SkinAssets/KirifujiCaptain/matKirifujiPistol.mat"); } private static void LoadMaterialsWithReplacedShader(string shaderPath, params string[] materialPaths) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) Shader shader = Addressables.LoadAssetAsync<Shader>((object)shaderPath).WaitForCompletion(); foreach (string text in materialPaths) { Material val = assetBundle.LoadAsset<Material>(text); val.shader = shader; materialsWithRoRShader.Add(val); } } private static void LanguageLoadStrings(Action<Language> orig, Language self) { orig(self); self.SetStringByToken("VANILLAVITAMINS_SKIN_DEFKIRIFUJICAPTAIN_NAME", "Kirifuji Nagisa"); } private static void BodyCatalogInit() { AddCaptainBodyDefKirifujiCaptainSkin(); AfterBodyCatalogInit(); } private static void CaptainBodyDefKirifujiCaptainSkinAdded(SkinDef skinDef, GameObject bodyPrefab) { skins[0] = skinDef; } private static SkinDef CreateCaptainBodyDefKirifujiCaptainSkin(GameObject mdl, ModelSkinController skinController) { Renderer[] renderers = mdl.GetComponentsInChildren<Renderer>(true); Light[] componentsInChildren = mdl.GetComponentsInChildren<Light>(true); List<string> skinnedRendererPaths = new List<string>(); Renderer[] array = renderers; foreach (Renderer val in array) { if (val is SkinnedMeshRenderer) { skinnedRendererPaths.Add(Util.BuildPrefabTransformPath(mdl.transform, ((Component)val).transform, false, false)); } } SkinDef skin = ScriptableObject.CreateInstance<SkinDef>(); SkinDefParams skinParams = ScriptableObject.CreateInstance<SkinDefParams>(); skin.skinDefParams = skinParams; ((Object)skin).name = "DefKirifujiCaptain"; skin.nameToken = "VANILLAVITAMINS_SKIN_DEFKIRIFUJICAPTAIN_NAME"; skin.rootObject = mdl; Helpers.TryCatchThrow("Icon", delegate { skin.icon = assetBundle.LoadAsset<Sprite>("Assets\\SkinMods\\KirifujiCaptain\\Icons\\DefKirifujiCaptainIcon.png"); }); Helpers.TryCatchThrow("Unlockable Name", delegate { skin.unlockableDef = null; }); Helpers.TryCatchThrow("Base Skins", delegate { skin.baseSkins = (SkinDef[])(object)new SkinDef[1] { Helpers.ThrowIfOutOfBounds(0, "Index 0 is out of bounds of skins array", skinController.skins, 0) }; }); Helpers.TryCatchThrow("Game Object Activations", delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) skinParams.gameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[4] { new GameObjectActivation { gameObject = ((Component)Helpers.ThrowIfNull<Transform>(0, "There is no renderer at path \"CaptainArmature/ROOT/base/pelvis/thigh.l\"", mdl.transform.Find("CaptainArmature/ROOT/base/pelvis/thigh.l"))).gameObject, shouldActivate = false, spawnPrefabOnModelObject = true, localPosition = new Vector3(-0.01283071f, -0.08559629f, -0.01453274f), localRotation = new Vector3(358.9364f, 0.3742724f, 180.7073f), localScale = new Vector3(1f, 0.9999999f, 1f), prefab = Helpers.ClonePrefab(assetBundle.LoadAsset<GameObject>("Assets/SkinAssets/KirifujiCaptain/Prefabs/ThighLAdditions.prefab")).WithComponent<InsertBones>((Action<InsertBones>)delegate(InsertBones c) { c.rendererPaths.AddRange(skinnedRendererPaths); c.afterPath = "CaptainArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l/toe.l"; Transform transform = ((Component)c).transform; c.newBones.Add(transform); c.newBones.Add(transform.GetChild(0, out var child)); c.newBones.Add(child.GetChild(0, out var child2)); c.newBones.Add(child2.GetChild(0, out var child3)); c.newBones.Add(child3.GetChild(0, out var child4)); c.newBones.Add(child4.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(1, out var child6)); c.newBones.Add(child6.GetChild(0, out var child7)); c.newBones.Add(child7.GetChild(0, out var child8)); c.newBones.Add(child8.GetChild(0, out var child9)); c.newBones.Add(child9.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(2, out var child11)); c.newBones.Add(child11.GetChild(0, out var child12)); c.newBones.Add(child12.GetChild(0, out var child13)); c.newBones.Add(child13.GetChild(0, out var child14)); c.newBones.Add(child14.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(3, out var child16)); c.newBones.Add(child16.GetChild(0, out var child17)); c.newBones.Add(child17.GetChild(0, out var child18)); c.newBones.Add(child18.GetChild(0, out var child19)); c.newBones.Add(child19.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(4, out var child21)); c.newBones.Add(child21.GetChild(0, out var child22)); c.newBones.Add(child22.GetChild(0, out var child23)); c.newBones.Add(child23.GetChild(0, out var child24)); c.newBones.Add(child24.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(5, out var child26)); c.newBones.Add(child26.GetChild(0, out var child27)); c.newBones.Add(child27.GetChild(0, out var child28)); c.newBones.Add(child28.GetChild(0, out var child29)); c.newBones.Add(child29.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(6, out var child31)); c.newBones.Add(child31.GetChild(0, out var child32)); c.newBones.Add(child32.GetChild(0, out var child33)); c.newBones.Add(child33.GetChild(0, out var child34)); c.newBones.Add(child34.GetChild(0, out var _)); }) }, new GameObjectActivation { gameObject = ((Component)Helpers.ThrowIfNull<Transform>(1, "There is no renderer at path \"CaptainArmature/ROOT/base/pelvis/thigh.r\"", mdl.transform.Find("CaptainArmature/ROOT/base/pelvis/thigh.r"))).gameObject, shouldActivate = false, spawnPrefabOnModelObject = true, localPosition = new Vector3(0.0133885f, -0.08560316f, -0.01452898f), localRotation = new Vector3(358.9364f, 359.6257f, 179.2927f), localScale = new Vector3(1f, 1f, 1f), prefab = Helpers.ClonePrefab(assetBundle.LoadAsset<GameObject>("Assets/SkinAssets/KirifujiCaptain/Prefabs/ThighRAdditions.prefab")).WithComponent<InsertBones>((Action<InsertBones>)delegate(InsertBones c) { c.rendererPaths.AddRange(skinnedRendererPaths); c.afterPath = "CaptainArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r/toe.r"; Transform transform = ((Component)c).transform; c.newBones.Add(transform); c.newBones.Add(transform.GetChild(0, out var child)); c.newBones.Add(child.GetChild(0, out var child2)); c.newBones.Add(child2.GetChild(0, out var child3)); c.newBones.Add(child3.GetChild(0, out var child4)); c.newBones.Add(child4.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(1, out var child6)); c.newBones.Add(child6.GetChild(0, out var child7)); c.newBones.Add(child7.GetChild(0, out var child8)); c.newBones.Add(child8.GetChild(0, out var child9)); c.newBones.Add(child9.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(2, out var child11)); c.newBones.Add(child11.GetChild(0, out var child12)); c.newBones.Add(child12.GetChild(0, out var child13)); c.newBones.Add(child13.GetChild(0, out var child14)); c.newBones.Add(child14.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(3, out var child16)); c.newBones.Add(child16.GetChild(0, out var child17)); c.newBones.Add(child17.GetChild(0, out var child18)); c.newBones.Add(child18.GetChild(0, out var child19)); c.newBones.Add(child19.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(4, out var child21)); c.newBones.Add(child21.GetChild(0, out var child22)); c.newBones.Add(child22.GetChild(0, out var child23)); c.newBones.Add(child23.GetChild(0, out var child24)); c.newBones.Add(child24.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(5, out var child26)); c.newBones.Add(child26.GetChild(0, out var child27)); c.newBones.Add(child27.GetChild(0, out var child28)); c.newBones.Add(child28.GetChild(0, out var child29)); c.newBones.Add(child29.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(6, out var child31)); c.newBones.Add(child31.GetChild(0, out var child32)); c.newBones.Add(child32.GetChild(0, out var child33)); c.newBones.Add(child33.GetChild(0, out var child34)); c.newBones.Add(child34.GetChild(0, out var _)); }) }, new GameObjectActivation { gameObject = ((Component)Helpers.ThrowIfNull<Transform>(2, "There is no renderer at path \"CaptainArmature/ROOT/base/stomach/chest\"", mdl.transform.Find("CaptainArmature/ROOT/base/stomach/chest"))).gameObject, shouldActivate = false, spawnPrefabOnModelObject = true, localPosition = new Vector3(8.226686E-05f, 0.04040649f, 0.01558462f), localRotation = new Vector3(2.688303f, 359.7136f, 0.05474183f), localScale = new Vector3(1f, 0.9999999f, 0.9999999f), prefab = Helpers.ClonePrefab(assetBundle.LoadAsset<GameObject>("Assets/SkinAssets/KirifujiCaptain/Prefabs/ChestAdditions.prefab")).WithComponent<InsertBones>((Action<InsertBones>)delegate(InsertBones c) { c.rendererPaths.AddRange(skinnedRendererPaths); c.afterPath = "CaptainArmature/ROOT/base/stomach/chest/clavicle.r/upper_arm.r/lower_arm.r/hand.r/GripControl.r/thumbIKTarget.r"; Transform transform = ((Component)c).transform; c.newBones.Add(transform); c.newBones.Add(transform.GetChild(0, out var child)); c.newBones.Add(child.GetChild(0, out var child2)); c.newBones.Add(child2.GetChild(0, out var _)); c.newBones.Add(child.GetChild(1, out var child4)); c.newBones.Add(child4.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(1, out var child6)); c.newBones.Add(child6.GetChild(0, out var child7)); c.newBones.Add(child7.GetChild(0, out var _)); c.newBones.Add(child6.GetChild(1, out var child9)); c.newBones.Add(child9.GetChild(0, out var _)); c.newBones.Add(child6.GetChild(3, out var child11)); c.newBones.Add(child11.GetChild(0, out var child12)); c.newBones.Add(child12.GetChild(0, out var child13)); c.newBones.Add(child13.GetChild(0, out var child14)); c.newBones.Add(child14.GetChild(0, out var _)); c.newBones.Add(child12.GetChild(1, out var child16)); c.newBones.Add(child16.GetChild(0, out var _)); c.newBones.Add(child6.GetChild(2, out var child18)); c.newBones.Add(child18.GetChild(0, out var child19)); c.newBones.Add(child19.GetChild(0, out var child20)); c.newBones.Add(child20.GetChild(0, out var child21)); c.newBones.Add(child21.GetChild(0, out var _)); c.newBones.Add(child19.GetChild(1, out var child23)); c.newBones.Add(child23.GetChild(0, out var _)); }) }, new GameObjectActivation { gameObject = ((Component)Helpers.ThrowIfNull<Transform>(3, "There is no renderer at path \"CaptainArmature/ROOT/base/stomach/chest/neck/head\"", mdl.transform.Find("CaptainArmature/ROOT/base/stomach/chest/neck/head"))).gameObject, shouldActivate = false, spawnPrefabOnModelObject = true, localPosition = new Vector3(0.0002130426f, -0.002195761f, -6.524287E-05f), localRotation = new Vector3(359.6333f, -0.002011681f, 0.3552296f), localScale = new Vector3(1f, 1f, 0.9999999f), prefab = Helpers.ClonePrefab(assetBundle.LoadAsset<GameObject>("Assets/SkinAssets/KirifujiCaptain/Prefabs/HeadAdditions.prefab")).WithComponent<InsertBones>((Action<InsertBones>)delegate(InsertBones c) { c.rendererPaths.AddRange(skinnedRendererPaths); c.afterPath = "CaptainArmature/ROOT/base/stomach/chest/neck/head/antenna.2.r"; Transform transform = ((Component)c).transform; c.newBones.Add(transform); c.newBones.Add(transform.GetChild(1, out var child)); c.newBones.Add(child.GetChild(0, out var child2)); c.newBones.Add(child2.GetChild(0, out var _)); c.newBones.Add(child.GetChild(2, out var child4)); c.newBones.Add(child4.GetChild(0, out var _)); c.newBones.Add(child.GetChild(1, out var child6)); c.newBones.Add(child6.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(2, out var child8)); c.newBones.Add(child8.GetChild(1, out var child9)); c.newBones.Add(child9.GetChild(0, out var _)); c.newBones.Add(child8.GetChild(0, out var child11)); c.newBones.Add(child11.GetChild(0, out var _)); c.newBones.Add(child8.GetChild(2, out var child13)); c.newBones.Add(child13.GetChild(0, out var _)); c.newBones.Add(child8.GetChild(3, out var child15)); c.newBones.Add(child15.GetChild(1, out var child16)); c.newBones.Add(child16.GetChild(0, out var _)); c.newBones.Add(child15.GetChild(0, out var child18)); c.newBones.Add(child18.GetChild(0, out var _)); c.newBones.Add(child15.GetChild(2, out var child20)); c.newBones.Add(child20.GetChild(0, out var _)); c.newBones.Add(child8.GetChild(4, out var child22)); c.newBones.Add(child22.GetChild(0, out var _)); c.newBones.Add(child8.GetChild(5, out var child24)); c.newBones.Add(child24.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(0, out var child26)); c.newBones.Add(child26.GetChild(0, out var child27)); c.newBones.Add(child27.GetChild(0, out var child28)); c.newBones.Add(child28.GetChild(0, out var child29)); c.newBones.Add(child29.GetChild(0, out var child30)); c.newBones.Add(child30.GetChild(0, out var child31)); c.newBones.Add(child31.GetChild(0, out var child32)); c.newBones.Add(child32.GetChild(0, out var child33)); c.newBones.Add(child33.GetChild(0, out var child34)); c.newBones.Add(child34.GetChild(0, out var child35)); c.newBones.Add(child35.GetChild(0, out var child36)); c.newBones.Add(child36.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(1, out var child38)); c.newBones.Add(child38.GetChild(0, out var child39)); c.newBones.Add(child39.GetChild(0, out var child40)); c.newBones.Add(child40.GetChild(0, out var child41)); c.newBones.Add(child41.GetChild(0, out var child42)); c.newBones.Add(child42.GetChild(0, out var child43)); c.newBones.Add(child43.GetChild(0, out var child44)); c.newBones.Add(child44.GetChild(0, out var child45)); c.newBones.Add(child45.GetChild(0, out var child46)); c.newBones.Add(child46.GetChild(0, out var child47)); c.newBones.Add(child47.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(2, out var child49)); c.newBones.Add(child49.GetChild(0, out var child50)); c.newBones.Add(child50.GetChild(0, out var child51)); c.newBones.Add(child51.GetChild(0, out var child52)); c.newBones.Add(child52.GetChild(0, out var child53)); c.newBones.Add(child53.GetChild(0, out var child54)); c.newBones.Add(child54.GetChild(0, out var child55)); c.newBones.Add(child55.GetChild(0, out var child56)); c.newBones.Add(child56.GetChild(0, out var child57)); c.newBones.Add(child57.GetChild(0, out var child58)); c.newBones.Add(child58.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(3, out var child60)); c.newBones.Add(child60.GetChild(0, out var child61)); c.newBones.Add(child61.GetChild(0, out var child62)); c.newBones.Add(child62.GetChild(0, out var child63)); c.newBones.Add(child63.GetChild(0, out var child64)); c.newBones.Add(child64.GetChild(0, out var child65)); c.newBones.Add(child65.GetChild(0, out var child66)); c.newBones.Add(child66.GetChild(0, out var child67)); c.newBones.Add(child67.GetChild(0, out var child68)); c.newBones.Add(child68.GetChild(0, out var child69)); c.newBones.Add(child69.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(4, out var child71)); c.newBones.Add(child71.GetChild(0, out var child72)); c.newBones.Add(child72.GetChild(0, out var child73)); c.newBones.Add(child73.GetChild(0, out var child74)); c.newBones.Add(child74.GetChild(0, out var child75)); c.newBones.Add(child75.GetChild(0, out var child76)); c.newBones.Add(child76.GetChild(0, out var child77)); c.newBones.Add(child77.GetChild(0, out var child78)); c.newBones.Add(child78.GetChild(0, out var child79)); c.newBones.Add(child79.GetChild(0, out var child80)); c.newBones.Add(child80.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(5, out var child82)); c.newBones.Add(child82.GetChild(0, out var child83)); c.newBones.Add(child83.GetChild(0, out var child84)); c.newBones.Add(child84.GetChild(0, out var child85)); c.newBones.Add(child85.GetChild(0, out var child86)); c.newBones.Add(child86.GetChild(0, out var child87)); c.newBones.Add(child87.GetChild(0, out var child88)); c.newBones.Add(child88.GetChild(0, out var child89)); c.newBones.Add(child89.GetChild(0, out var child90)); c.newBones.Add(child90.GetChild(0, out var child91)); c.newBones.Add(child91.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(7, out var child93)); c.newBones.Add(child93.GetChild(0, out var child94)); c.newBones.Add(child94.GetChild(0, out var child95)); c.newBones.Add(child95.GetChild(0, out var child96)); c.newBones.Add(child96.GetChild(0, out var child97)); c.newBones.Add(child97.GetChild(0, out var child98)); c.newBones.Add(child98.GetChild(0, out var child99)); c.newBones.Add(child99.GetChild(0, out var child100)); c.newBones.Add(child100.GetChild(0, out var child101)); c.newBones.Add(child101.GetChild(0, out var child102)); c.newBones.Add(child102.GetChild(0, out var _)); c.newBones.Add(child26.GetChild(6, out var child104)); c.newBones.Add(child104.GetChild(0, out var child105)); c.newBones.Add(child105.GetChild(0, out var child106)); c.newBones.Add(child106.GetChild(0, out var child107)); c.newBones.Add(child107.GetChild(0, out var child108)); c.newBones.Add(child108.GetChild(0, out var child109)); c.newBones.Add(child109.GetChild(0, out var child110)); c.newBones.Add(child110.GetChild(0, out var child111)); c.newBones.Add(child111.GetChild(0, out var child112)); c.newBones.Add(child112.GetChild(0, out var child113)); c.newBones.Add(child113.GetChild(0, out var _)); c.newBones.Add(transform.GetChild(3, out var child115)); c.newBones.Add(child115.GetChild(0, out var child116)); c.newBones.Add(child116.GetChild(0, out var child117)); c.newBones.Add(child117.GetChild(0, out var child118)); c.newBones.Add(child118.GetChild(0, out var child119)); c.newBones.Add(child119.GetChild(0, out var _)); }).WithComponent<AddDynamicColliders>((Action<AddDynamicColliders>)delegate(AddDynamicColliders c) { c.pathPairs.Add(new PathPair { path1 = "hairback", path2 = "CaptainArmature/ROOT/base/stomach/chest/ChestAdditions" }); }) } }; }); Helpers.TryCatchThrow("Renderer Infos", delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) skinParams.rendererInfos = (RendererInfo[])(object)new RendererInfo[7] { new RendererInfo { defaultMaterial = assetBundle.LoadAsset<Material>("Assets/SkinAssets/KirifujiCaptain/matKirifujiBody.mat"), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(0, "There is no renderer with the name \"Captain\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "Captain"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = assetBundle.LoadAsset<Material>("Assets/SkinAssets/KirifujiCaptain/matKirifujiPistol.mat"), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(1, "There is no renderer with the name \"CaptainGunArm\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainGunArm"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = null, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(2, "There is no renderer with the name \"CaptainHat\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainHat"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = null, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(3, "There is no renderer with the name \"CaptainChestArmor\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainChestArmor"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = null, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(4, "There is no renderer with the name \"CaptainCoat\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainCoat"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = null, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(5, "There is no renderer with the name \"CaptainHead\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainHead"))), hideOnDeath = false, ignoresMaterialOverrides = false }, new RendererInfo { defaultMaterial = null, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, renderer = Helpers.ThrowIfNull<Renderer>(6, "There is no renderer with the name \"CaptainUndercoat\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainUndercoat"))), hideOnDeath = false, ignoresMaterialOverrides = false } }; }); Helpers.TryCatchThrow("MeshReplacements", delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) skinParams.meshReplacements = (MeshReplacement[])(object)new MeshReplacement[2] { new MeshReplacement { mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\KirifujiCaptain\\Meshes\\Nagisa_mesh.mesh"), renderer = Helpers.ThrowIfNull<Renderer>(0, "There is no renderer with the name \"Captain\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "Captain"))) }, new MeshReplacement { mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\KirifujiCaptain\\Meshes\\Nagisa_Original_Weapon.mesh"), renderer = Helpers.ThrowIfNull<Renderer>(1, "There is no renderer with the name \"CaptainGunArm\"", ((IEnumerable<Renderer>)renderers).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => ((Object)r).name == "CaptainGunArm"))) } }; }); Helpers.TryCatchThrow("Light Infos", delegate { skinParams.lightReplacements = Array.Empty<LightInfo>(); }); Helpers.TryCatchThrow("Minion Skin Replacements", delegate { skinParams.minionSkinReplacements = Array.Empty<MinionSkinReplacement>(); }); Helpers.TryCatchThrow("Projectile Ghost Replacements", delegate { skinParams.projectileGhostReplacements = Array.Empty<ProjectileGhostReplacement>(); }); return skin; } private static void CaptainBodyDefKirifujiCaptainLobbySkinAdded(SkinDef skinDef, GameObject displayPrefab) { skins[1] = skinDef; } private static void AddCaptainBodyDefKirifujiCaptainSkin() { string text = "CaptainBody"; string text2 = "DefKirifujiCaptain"; GameObject bodyPrefab = BodyCatalog.FindBodyPrefab(text); if (!Object.op_Implicit((Object)(object)bodyPrefab)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin because \"" + text + "\" doesn't exist")); return; } try { ModelLocator component = bodyPrefab.GetComponent<ModelLocator>(); if (!Object.op_Implicit((Object)(object)component)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\" because it doesn't have \"ModelLocator\" component")); return; } GameObject gameObject = ((Component)component.modelTransform).gameObject; ModelSkinController val = (Object.op_Implicit((Object)(object)gameObject) ? gameObject.GetComponent<ModelSkinController>() : null); if (!Object.op_Implicit((Object)(object)val)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\" because it doesn't have \"ModelSkinController\" component")); return; } SkinDef val2 = CreateCaptainBodyDefKirifujiCaptainSkin(gameObject, val); Array.Resize(ref val.skins, val.skins.Length + 1); val.skins[val.skins.Length - 1] = val2; CaptainBodyDefKirifujiCaptainSkinAdded(val2, bodyPrefab); } catch (FieldException ex) { if (ex.InnerException is ElementException ex2) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\"")); InstanceLogger.LogWarning((object)$"Field causing issue: {ex.Message}, element: {ex2.Index}"); InstanceLogger.LogWarning((object)ex2.Message); InstanceLogger.LogError((object)ex.InnerException); } else { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\"")); InstanceLogger.LogWarning((object)("Field causing issue: " + ex.Message)); InstanceLogger.LogError((object)ex.InnerException); } } catch (Exception ex3) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\"")); InstanceLogger.LogError((object)ex3); } try { SurvivorDef val3 = ((IEnumerable<SurvivorDef>)ContentManager.survivorDefs).FirstOrDefault((Func<SurvivorDef, bool>)((SurvivorDef d) => (Object)(object)d.bodyPrefab == (Object)(object)bodyPrefab)); if (!Object.op_Implicit((Object)(object)val3)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" lobby skin to \"" + text + "\" because SurvivorDef doesn't exist")); return; } GameObject displayPrefab = val3.displayPrefab; ModelSkinController componentInChildren = displayPrefab.GetComponentInChildren<ModelSkinController>(); if (!Object.op_Implicit((Object)(object)componentInChildren)) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" lobby skin to \"" + text + "\" because it doesn't have \"ModelSkinController\" component")); } else { GameObject gameObject2 = ((Component)componentInChildren).gameObject; SkinDef val4 = CreateCaptainBodyDefKirifujiCaptainSkin(gameObject2, componentInChildren); Array.Resize(ref componentInChildren.skins, componentInChildren.skins.Length + 1); componentInChildren.skins[^1] = val4; CaptainBodyDefKirifujiCaptainLobbySkinAdded(val4, displayPrefab); } } catch (FieldException ex4) { if (ex4.InnerException is ElementException ex5) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" lobby skin to \"" + text + "\"")); InstanceLogger.LogWarning((object)$"Field causing issue: {ex4.Message}, element: {ex5.Index}"); InstanceLogger.LogWarning((object)ex5.Message); InstanceLogger.LogError((object)ex4.InnerException); } else { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" lobby skin to \"" + text + "\"")); InstanceLogger.LogWarning((object)("Field causing issue: " + ex4.Message)); InstanceLogger.LogError((object)ex4.InnerException); } } catch (Exception ex6) { InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" lobby skin to \"" + text + "\"")); InstanceLogger.LogError((object)ex6); } } private void Awake() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown eventSub = new EventSub(); BoneTransformations.Init(eventSub); Expressions.Init(eventSub); } } public static class BoneTransformations { public static void Init(EventSub eventSub) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_0096: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown eventSub.options.boneTransformations = (BoneTransformation[])(object)new BoneTransformation[5] { new BoneTransformation("CaptainArmature/ROOT/base/stomach/chest/clavicle.l", Vector3.one * 0.68f, new Vector3(0f, -0.1f, 0.05f), (string)null), new BoneTransformation("CaptainArmature/ROOT/base/stomach/chest/clavicle.r", Vector3.one * 0.68f, new Vector3(0f, -0.2f, 0.05f), (string)null), new BoneTransformation("CaptainArmature/ROOT/base/pelvis/thigh.l", Vector3.one, new Vector3(-0.03f, 0f, 0f), (string)null), new BoneTransformation("CaptainArmature/ROOT/base/pelvis/thigh.r", Vector3.one, new Vector3(0.03f, 0f, 0f), (string)null), new BoneTransformation("CaptainArmature/ROOT", Vector3.one * 0.85f, Vector3.zero, (string)null) }; } } public static class Expressions { public static void Init(EventSub eventSub) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown eventSub.options.blinkAnimations = (BlendShapeAnimation[])(object)new BlendShapeAnimation[1] { (BlendShapeAnimation)new BlinkBlendShapeAnimation("Captain", "LowBlink", -1, 0, 0.1f, 0f, 0.1f, false) }; eventSub.options.useAnimations = true; eventSub.TakeDamage = (Action<GameObject, DamageReport>)Delegate.Combine(eventSub.TakeDamage, new Action<GameObject, DamageReport>(ExpressionOnHit)); eventSub.Death = (Action<GameObject>)Delegate.Combine(eventSub.Death, new Action<GameObject>(ExpressionOnDeath)); } private static void ExpressionOnHit(GameObject body, DamageReport damageReport) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown ExpressionController val = default(ExpressionController); if (body.TryGetComponent<ExpressionController>(ref val)) { val.TryPlayAnimation(new BlendShapeAnimation("Captain", "LowBlink", 0, 0, 0.05f, 0.3f, 0.2f, true)); val.TryPlayAnimation(new BlendShapeAnimation("Captain", "MouthWince", 2, 0, 0.05f, 0.3f, 0.2f, false)); } } private static void ExpressionOnDeath(GameObject body) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown ExpressionController val = default(ExpressionController); if (body.TryGetComponent<ExpressionController>(ref val)) { val.TryPlayAnimation(new BlendShapeAnimation("Captain", "LowBlink", 0, 2, 0.2f, float.PositiveInfinity, 0.2f, true)); val.TryPlayAnimation(new BlendShapeAnimation("Captain", "BrowLower", 1, 0, 0.2f, float.PositiveInfinity, 0.2f, false)); val.TryPlayAnimation(new BlendShapeAnimation("Captain", "MouthWince", 2, 2, 0.2f, float.PositiveInfinity, 0.2f, false)); } } } public static class Helpers { private static GameObject prefabHolder; public static GameObject ClonePrefab(GameObject gameObject) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)prefabHolder)) { prefabHolder = new GameObject("PrefabHolder"); Object.DontDestroyOnLoad((Object)(object)prefabHolder); prefabHolder.SetActive(false); } GameObject val = Object.Instantiate<GameObject>(gameObject, prefabHolder.transform); val.AddComponent<RemoveClone>(); ((Object)val).name = ((Object)gameObject).name; return val; } public static Transform GetChild(this Transform transform, int index, out Transform child) { return child = transform.GetChild(index); } public static GameObject WithComponent<T>(this GameObject gameObject, Action<T> modifier = null) where T : Component { T obj = gameObject.AddComponent<T>(); modifier?.Invoke(obj); return gameObject; } public static GameObject WithTryComponent<T>(this GameObject gameObject, Action<T> modifier = null) where T : Component { if (Object.op_Implicit((Object)(object)gameObject) && !Object.op_Implicit((Object)(object)gameObject.GetComponent<T>())) { T obj = gameObject.AddComponent<T>(); modifier?.Invoke(obj); } return gameObject; } public static T ThrowIfEquals<T>(int index, string message, T value, T expected) where T : Enum { if (value.Equals(expected)) { throw new ElementException(index, message); } return value; } public static T ThrowIfOutOfBounds<T>(int index, string message, T[] array, int elementIndex) where T : class { if (array == null || array.Length <= elementIndex) { throw new ElementException(index, message); } return array[elementIndex]; } public static T ThrowIfNull<T>(int index, string message, T value) where T : class { if (value == null) { throw new ElementException(index, message); } return value; } public static void TryCatchThrow(string message, Action action) { try { action?.Invoke(); } catch (Exception innerException) { throw new FieldException(message, innerException); } } } public class RemoveClone : MonoBehaviour { public void Awake() { string name = ((Object)this).name; ((Object)this).name = name.Substring(0, name.Length - 7); } } public class FieldException : Exception { public FieldException(string message, Exception innerException) : base(message, innerException) { } } public class ElementException : Exception { public int Index { get; } public ElementException(int index, string message) : base(message) { Index = index; } } public class InsertBones : MonoBehaviour { private readonly List<SkinnedMeshRenderer> modifiedRenderers = new List<SkinnedMeshRenderer>(); public List<string> rendererPaths = new List<string>(); public List<Transform> newBones = new List<Transform>(); public string afterPath; public void Awake() { Transform transform = ((Component)((Component)this).GetComponentInParent<ModelSkinController>()).transform; Transform value = ((Component)transform).transform.Find(afterPath); foreach (string rendererPath in rendererPaths) { Transform obj = transform.Find(rendererPath); SkinnedMeshRenderer val = ((obj != null) ? ((Component)obj).GetComponent<SkinnedMeshRenderer>() : null); if (Object.op_Implicit((Object)(object)val)) { Transform[] array = val.bones; int num = Array.IndexOf(array, value) + 1; if (num != 0) { Array.Resize(ref array, array.Length + newBones.Count); Array.Copy(array, num, array, num + newBones.Count, array.Length - newBones.Count - num); newBones.CopyTo(array, num); val.bones = array; modifiedRenderers.Add(val); } } } } public void OnDestroy() { foreach (SkinnedMeshRenderer modifiedRenderer in modifiedRenderers) { if (Object.op_Implicit((Object)(object)modifiedRenderer)) { Transform[] array = modifiedRenderer.bones; int num = Array.IndexOf(array, ((Component)this).transform); Array.Copy(array, num + newBones.Count, array, num, array.Length - num - newBones.Count); Array.Resize(ref array, array.Length - newBones.Count); modifiedRenderer.bones = array; } } modifiedRenderers.Clear(); } } public class AddDynamicColliders : MonoBehaviour { public List<PathPair> pathPairs = new List<PathPair>(); public void Awake() { Transform transform = ((Component)((Component)this).GetComponentInParent<ModelSkinController>()).transform; DynamicBone val3 = default(DynamicBone); DynamicBoneCollider item = default(DynamicBoneCollider); foreach (PathPair pathPair in pathPairs) { Transform val = ((pathPair.path1 == string.Empty) ? ((Component)this).transform : ((Component)this).transform.Find(pathPair.path1)); Transform val2 = transform.Find(pathPair.path2); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val2) && ((Component)val).TryGetComponent<DynamicBone>(ref val3) && ((Component)val2).TryGetComponent<DynamicBoneCollider>(ref item)) { val3.m_Colliders.Add(item); } } } } [Serializable] public struct PathPair { public string path1; public string path2; } }
NagisaCaptainVoiceover.dll
Decompiled a day agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BaseVoiceoverLib; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using Microsoft.CodeAnalysis; using NagisaCaptainVoiceover.Components; using NagisaCaptainVoiceover.Modules; using R2API; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.ContentManagement; using UnityEngine; using UnityEngine.AddressableAssets; [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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("NagisaCaptainVoiceover")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+0c02c393d391d22e2bf07ff5f7efb1157eb39d6b")] [assembly: AssemblyProduct("NagisaCaptainVoiceover")] [assembly: AssemblyTitle("NagisaCaptainVoiceover")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace NagisaCaptainVoiceover { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Schale.NagisaCaptainVoiceover", "NagisaCaptainVoiceover", "1.0.0")] public class NagisaCaptainVoiceoverPlugin : BaseUnityPlugin { public class NSEInfo { public NetworkSoundEventDef nse; public uint akId = 0u; public string eventName = string.Empty; public NSEInfo(NetworkSoundEventDef source) { nse = source; akId = source.akId; eventName = source.eventName; } private void DisableSound() { nse.akId = 0u; nse.eventName = string.Empty; } private void EnableSound() { nse.akId = akId; nse.eventName = eventName; } public void ValidateParams() { if (akId == 0) { akId = nse.akId; } if (eventName == string.Empty) { eventName = nse.eventName; } if (!enableVoicelines.Value) { DisableSound(); } else { EnableSound(); } } } public static ConfigEntry<bool> enableVoicelines; public static bool playedSeasonalVoiceline = false; public static AssetBundle assetBundle; public static SurvivorDef survivorDef = Addressables.LoadAssetAsync<SurvivorDef>((object)"RoR2/Base/Captain/Captain.asset").WaitForCompletion(); public static ConfigEntry<KeyboardShortcut> btnPeroro; public static ConfigEntry<KeyboardShortcut> btnGokigenyou; public static ConfigEntry<KeyboardShortcut> btnHurt; public static ConfigEntry<KeyboardShortcut> btnLaugh; public static ConfigEntry<KeyboardShortcut> btnSneeze; public static ConfigEntry<KeyboardShortcut> btnEx1; public static ConfigEntry<KeyboardShortcut> btnEx2; public static ConfigEntry<KeyboardShortcut> btnEx3; public static ConfigEntry<KeyboardShortcut> btnExLv1; public static ConfigEntry<KeyboardShortcut> btnExLv2; public static ConfigEntry<KeyboardShortcut> btnExLv3; public static ConfigEntry<KeyboardShortcut> btnThanks; public static ConfigEntry<KeyboardShortcut> btnTitle; public static ConfigEntry<KeyboardShortcut> btnCommon; public static ConfigEntry<KeyboardShortcut> btnYawn; public static List<NSEInfo> nseList = new List<NSEInfo>(); public void Awake() { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_0099: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Expected O, but got Unknown //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Expected O, but got Unknown //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Expected O, but got Unknown //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Expected O, but got Unknown //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Expected O, but got Unknown //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Expected O, but got Unknown //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Expected O, but got Unknown //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Expected O, but got Unknown //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Expected O, but got Unknown Files.PluginInfo = ((BaseUnityPlugin)this).Info; RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); new Content().Initialize(); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("NagisaCaptainVoiceover.nagisacaptainvoiceoverbundle")) { assetBundle = AssetBundle.LoadFromStream(stream); } SoundBanks.Init(); InitNSE(); enableVoicelines = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Settings", "Enable Voicelines"), true, new ConfigDescription("Enable voicelines when using the Nagisa Captain Skin.", (AcceptableValueBase)null, Array.Empty<object>())); enableVoicelines.SettingChanged += EnableVoicelines_SettingChanged; btnHurt = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Hurt"), KeyboardShortcut.Empty, (ConfigDescription)null); btnThanks = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Thanks"), KeyboardShortcut.Empty, (ConfigDescription)null); btnCommon = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Common Skill"), KeyboardShortcut.Empty, (ConfigDescription)null); btnSneeze = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Sneeze"), KeyboardShortcut.Empty, (ConfigDescription)null); btnLaugh = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Laugh"), KeyboardShortcut.Empty, (ConfigDescription)null); btnYawn = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Yawn"), KeyboardShortcut.Empty, (ConfigDescription)null); btnGokigenyou = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Gokigenyou"), KeyboardShortcut.Empty, (ConfigDescription)null); btnTitle = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Blue Archive"), KeyboardShortcut.Empty, (ConfigDescription)null); btnEx1 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX 1"), KeyboardShortcut.Empty, (ConfigDescription)null); btnEx2 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX 2"), KeyboardShortcut.Empty, (ConfigDescription)null); btnEx3 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX 3"), KeyboardShortcut.Empty, (ConfigDescription)null); btnExLv1 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX Level 1"), KeyboardShortcut.Empty, (ConfigDescription)null); btnExLv2 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX Level 2"), KeyboardShortcut.Empty, (ConfigDescription)null); btnExLv3 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "EX Level 3"), KeyboardShortcut.Empty, (ConfigDescription)null); btnPeroro = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(new ConfigDefinition("Keybinds", "Peroro"), KeyboardShortcut.Empty, (ConfigDescription)null); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { RiskOfOptionsCompat(); } } private void OnLoad() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown SkinDef val = null; SkinDef[] array = SkinCatalog.FindSkinsForBody(BodyCatalog.FindBodyIndex("CaptainBody")); SkinDef[] array2 = array; foreach (SkinDef val2 in array2) { if (((Object)val2).name == "DefKirifujiCaptain") { val = val2; break; } } if (!Object.op_Implicit((Object)(object)val)) { Debug.LogError((object)"NagisaCaptainVoiceover: Nagisa Captain SkinDef not found. Voicelines will not work!"); } else { VoiceoverInfo val3 = new VoiceoverInfo(typeof(NagisaCaptainVoiceoverComponent), val, "CaptainBody"); val3.selectActions = (LobbySelectActions)Delegate.Combine((Delegate?)(object)val3.selectActions, (Delegate?)new LobbySelectActions(NagisaCaptainSelect)); } RefreshNSE(); } private void NagisaCaptainSelect(GameObject mannequinObject) { if (!enableVoicelines.Value) { return; } bool flag = false; if (!playedSeasonalVoiceline) { if ((DateTime.Today.Month == 1 && DateTime.Today.Day == 1) || (DateTime.Today.Month == 12 && DateTime.Today.Day == 31)) { Util.PlaySound("Play_NagisaCaptain_Lobby_Newyear", mannequinObject); flag = true; } else if (DateTime.Today.Month == 7 && DateTime.Today.Day == 4) { Util.PlaySound("Play_NagisaCaptain_Lobby_bday", mannequinObject); flag = true; } else if (DateTime.Today.Month == 10 && (DateTime.Today.Day == 30 || DateTime.Today.Day == 31)) { Util.PlaySound("Play_NagisaCaptain_Lobby_Halloween", mannequinObject); flag = true; } else if (DateTime.Today.Month == 12 && (DateTime.Today.Day == 24 || DateTime.Today.Day == 25)) { Util.PlaySound("Play_NagisaCaptain_Lobby_xmas", mannequinObject); flag = true; } if (flag) { playedSeasonalVoiceline = true; } } if (!flag) { if (Util.CheckRoll(5f, 0f, (CharacterMaster)null)) { Util.PlaySound("Play_NagisaCaptain_Title", mannequinObject); } else { Util.PlaySound("Play_NagisaCaptain_Lobby", mannequinObject); } } } private void EnableVoicelines_SettingChanged(object sender, EventArgs e) { RefreshNSE(); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void RiskOfOptionsCompat() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableVoicelines)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnTitle)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnThanks)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnHurt)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnLaugh)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnSneeze)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnYawn)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnGokigenyou)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnPeroro)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnCommon)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnEx1)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnEx2)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnEx3)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnExLv1)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnExLv2)); ModSettingsManager.AddOption((BaseOption)new KeyBindOption(btnExLv3)); ModSettingsManager.SetModIcon(assetBundle.LoadAsset<Sprite>("Nagisa")); } private void InitNSE() { NagisaCaptainVoiceoverComponent.nseTitle = RegisterNSE("Play_NagisaCaptain_Title"); NagisaCaptainVoiceoverComponent.nseLaugh = RegisterNSE("Play_NagisaCaptain_Laugh"); NagisaCaptainVoiceoverComponent.nseSneeze = RegisterNSE("Play_NagisaCaptain_Sneeze"); NagisaCaptainVoiceoverComponent.nseGokigenyou = RegisterNSE("Play_NagisaCaptain_Gokigenyou"); NagisaCaptainVoiceoverComponent.nseCommon = RegisterNSE("Play_NagisaCaptain_CommonSkill"); NagisaCaptainVoiceoverComponent.nseCommon2 = RegisterNSE("Play_NagisaCaptain_CommonSkill_2"); NagisaCaptainVoiceoverComponent.nseEx1 = RegisterNSE("Play_NagisaCaptain_Ex_1"); NagisaCaptainVoiceoverComponent.nseEx2 = RegisterNSE("Play_NagisaCaptain_Ex_2"); NagisaCaptainVoiceoverComponent.nseEx3 = RegisterNSE("Play_NagisaCaptain_Ex_3"); NagisaCaptainVoiceoverComponent.nseExLv1 = RegisterNSE("Play_NagisaCaptain_Ex_Lv_1"); NagisaCaptainVoiceoverComponent.nseExLv2 = RegisterNSE("Play_NagisaCaptain_Ex_Lv_2"); NagisaCaptainVoiceoverComponent.nseExLv3 = RegisterNSE("Play_NagisaCaptain_Ex_Lv_3"); NagisaCaptainVoiceoverComponent.nsePeroro = RegisterNSE("Play_NagisaCaptain_Peroro"); NagisaCaptainVoiceoverComponent.nseThanks = RegisterNSE("Play_NagisaCaptain_Thanks"); NagisaCaptainVoiceoverComponent.nseHurt = RegisterNSE("Play_NagisaCaptain_Pain"); NagisaCaptainVoiceoverComponent.nseYawn = RegisterNSE("Play_NagisaCaptain_Yawn"); } private NetworkSoundEventDef RegisterNSE(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance<NetworkSoundEventDef>(); val.eventName = eventName; Content.networkSoundEventDefs.Add(val); nseList.Add(new NSEInfo(val)); return val; } public void RefreshNSE() { foreach (NSEInfo nse in nseList) { nse.ValidateParams(); } } } } namespace NagisaCaptainVoiceover.Modules { public class Content : IContentPackProvider { internal ContentPack contentPack = new ContentPack(); public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>(); public string identifier => "com.Schale.NagisaCaptainVoiceover"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.identifier = identifier; contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } public static class Files { public static PluginInfo PluginInfo; internal static string assemblyDir => Path.GetDirectoryName(PluginInfo.Location); internal static void Init(PluginInfo info) { PluginInfo = info; } internal static string GetPathToFile(string folderName, string fileName) { return Path.Combine(assemblyDir, folderName, fileName); } } public static class SoundBanks { private static bool initialized; public static string SoundBankDirectory => Files.assemblyDir; public static void Init() { if (initialized) { return; } initialized = true; using Stream stream = new FileStream(SoundBankDirectory + "\\NagisaCaptainSoundbank.bnk", FileMode.Open); byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); SoundBanks.Add(array); } } } namespace NagisaCaptainVoiceover.Components { public class NagisaCaptainVoiceoverComponent : BaseVoiceoverComponent { public static NetworkSoundEventDef nseExLv1; public static NetworkSoundEventDef nseExLv2; public static NetworkSoundEventDef nseExLv3; public static NetworkSoundEventDef nseCommon; public static NetworkSoundEventDef nseCommon2; public static NetworkSoundEventDef nseEx1; public static NetworkSoundEventDef nseEx2; public static NetworkSoundEventDef nseEx3; public static NetworkSoundEventDef nseGokigenyou; public static NetworkSoundEventDef nseLaugh; public static NetworkSoundEventDef nseSneeze; public static NetworkSoundEventDef nseHurt; public static NetworkSoundEventDef nseTitle; public static NetworkSoundEventDef nsePeroro; public static NetworkSoundEventDef nseThanks; public static NetworkSoundEventDef nseYawn; private float levelCooldown = 0f; private float specialCooldown = 0f; private float utilityCooldown = 0f; private float secondaryCooldown = 0f; private bool acquiredScepter = false; protected override void Start() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) ((BaseVoiceoverComponent)this).Start(); if (Object.op_Implicit((Object)(object)base.inventory) && base.inventory.GetItemCountEffective(BaseVoiceoverComponent.scepterIndex) > 0) { acquiredScepter = true; } } protected override void FixedUpdate() { ((BaseVoiceoverComponent)this).FixedUpdate(); if (levelCooldown > 0f) { levelCooldown -= Time.fixedDeltaTime; } if (secondaryCooldown > 0f) { secondaryCooldown -= Time.fixedDeltaTime; } if (utilityCooldown > 0f) { utilityCooldown -= Time.fixedDeltaTime; } if (specialCooldown > 0f) { specialCooldown -= Time.fixedDeltaTime; } } public override void PlayDeath() { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Sneeze", 1f, true); } public override void PlayHurt(float percentHPLost) { if (percentHPLost >= 0.1f) { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Pain", 0f, false); } } public override void PlayLevelUp() { if (!(levelCooldown > 0f)) { bool flag = false; if (Random.Range(0, 4) switch { 0 => ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_LevelUp_1", 3.75f, false), 1 => ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_LevelUp_2", 6.8f, false), 2 => ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_LevelUp_3", 2.9f, false), _ => ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_LevelUp_4", 4.6f, false), }) { levelCooldown = 60f; } } } public override void PlaySpawn() { switch (Random.Range(0, 3)) { case 0: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Formation_1", 5.3f, true); break; case 1: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Formation_2", 2.5f, true); break; default: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Formation_3", 3.1f, true); break; } } public override void PlayTeleporterFinish() { switch (Random.Range(0, 3)) { case 0: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_TP_Clear_1", 3.1f, false); break; case 1: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_TP_Clear_2", 2.95f, false); break; default: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_TP_Clear_3", 2f, false); break; } } public override void PlayTeleporterStart() { switch (Random.Range(0, 3)) { case 0: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Ex_1", 3.35f, false); break; case 1: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Ex_2", 4.9f, false); break; default: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Ex_3", 3f, false); break; } } public override void PlayUtilityAuthority(GenericSkill skill) { if (!(utilityCooldown > 0f)) { bool flag = false; if (Random.Range(0, 3) switch { 0 => ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv1, 1.45f, false), 1 => ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv2, 2.7f, false), _ => ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv3, 2.6f, false), }) { utilityCooldown = 30f; } } } public override void PlayVictory() { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Victory", 9.5f, true); } protected override void Inventory_onItemAddedClient(ItemIndex itemIndex) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Invalid comparison between Unknown and I4 ((BaseVoiceoverComponent)this).Inventory_onItemAddedClient(itemIndex); if ((int)BaseVoiceoverComponent.scepterIndex != -1 && itemIndex == BaseVoiceoverComponent.scepterIndex) { PlayAcquireScepter(); return; } ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if ((Object)(object)itemDef == (Object)(object)Items.AttackSpeedAndMoveSpeed) { PlayCoffee(); } else if ((Object)(object)itemDef == (Object)(object)Items.JumpBoost) { PlayPeroro(); } else if (Object.op_Implicit((Object)(object)itemDef) && (int)itemDef.deprecatedTier == 2) { PlayAcquireLegendary(); } } public override void PlaySecondaryAuthority(GenericSkill skill) { if (!(secondaryCooldown > 0f)) { if (skill.skillName.Contains("SupplyDrop")) { Debug.Log((object)"Suppressed Beacon"); } else if (((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseCommon2, 0.9f, false)) { secondaryCooldown = 30f; } } } public override void PlaySpecialAuthority(GenericSkill skill) { if (!(specialCooldown > 0f) && ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseCommon, 1.9f, false)) { specialCooldown = 30f; } } public void PlayAcquireScepter() { if (!acquiredScepter) { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_ExWeapon_Get", 20.5f, true); acquiredScepter = true; } } public void PlayCoffee() { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Coffee", 4.5f, false); } public void PlayPeroro() { ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Peroro", 6.5f, false); } public void PlayAcquireLegendary() { switch (Random.Range(0, 4)) { case 0: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Relationship_1", 8.9f, false); break; case 1: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Relationship_2", 7.05f, false); break; case 2: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Relationship_3", 5.55f, false); break; default: ((BaseVoiceoverComponent)this).TryPlaySound("Play_NagisaCaptain_Relationship_4", 8.05f, false); break; } } protected override void CheckInputs() { if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnTitle)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseTitle, 1.6f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnThanks)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseThanks, 1.1f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnHurt)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseHurt, 0.1f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnLaugh)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseLaugh, 1.1f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnSneeze)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseSneeze, 2.2f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnPeroro)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nsePeroro, 6.5f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnGokigenyou)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseGokigenyou, 0.7f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnEx1)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseEx1, 3.35f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnEx2)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseEx2, 4.9f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnEx3)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseEx3, 3f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnExLv1)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv1, 1.45f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnExLv2)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv2, 2.7f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnExLv3)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseExLv3, 2.6f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnCommon)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseCommon, 1.9f, false); } else if (Utils.GetKeyPressed(NagisaCaptainVoiceoverPlugin.btnYawn)) { ((BaseVoiceoverComponent)this).TryPlayNetworkSound(nseYawn, 5.2f, false); } } public override bool ComponentEnableVoicelines() { return NagisaCaptainVoiceoverPlugin.enableVoicelines.Value; } } }