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 EnemySkinKitTestBranch v1.2.0
plugins/EnemySkinKit/EnemySkinKit.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.IO.Compression; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Text.RegularExpressions; using AntlerShed.EnemySkinKit.ArmatureReflection; using AntlerShed.EnemySkinKit.SkinAction; using AntlerShed.EnemySkinKit.Vanilla; using AntlerShed.SkinRegistry; using AntlerShed.SkinRegistry.Events; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using Unity.Netcode; using UnityEditor; using UnityEditor.Compilation; using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [CustomPropertyDrawer(typeof(SkinnedMeshAction))] internal class StaticMeshDrawer : PropertyDrawer { public override VisualElement CreatePropertyGUI(SerializedProperty property) { //IL_000d: 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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) Foldout val = new Foldout { text = property.displayName }; PropertyField val2 = new PropertyField(property.FindPropertyRelative("actionType")); PropertyField replacementField = new PropertyField(property.FindPropertyRelative("replacementObject")); PropertyField mapField = new PropertyField(property.FindPropertyRelative("armatureMap")); ((VisualElement)val).contentContainer.Add((VisualElement)(object)val2); ((VisualElement)val).contentContainer.Add((VisualElement)(object)replacementField); ((VisualElement)val).contentContainer.Add((VisualElement)(object)mapField); if (!property.FindPropertyRelative("actionType").enumNames[property.FindPropertyRelative("actionType").enumValueIndex].Equals("REPLACE")) { ((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1); ((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1); } val2.RegisterValueChangeCallback((EventCallback<SerializedPropertyChangeEvent>)delegate { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) if (property.FindPropertyRelative("actionType").enumNames[property.FindPropertyRelative("actionType").enumValueIndex].Equals("REPLACE")) { ((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0); ((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0); } else { ((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1); ((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1); } }); return (VisualElement)val; } } [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[4024] { 0, 0, 0, 1, 0, 0, 0, 71, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 92, 65, 114, 109, 97, 116, 117, 114, 101, 77, 97, 112, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 92, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 65, 114, 109, 97, 116, 117, 114, 101, 77, 97, 112, 69, 100, 105, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 65, 117, 100, 105, 111, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 65, 117, 100, 105, 111, 76, 105, 115, 116, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 49, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 67, 111, 110, 102, 105, 103, 86, 105, 101, 119, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 66, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 69, 100, 105, 116, 111, 114, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 77, 97, 116, 101, 114, 105, 97, 108, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 49, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 77, 111, 100, 66, 117, 105, 108, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 83, 107, 105, 110, 77, 111, 100, 66, 117, 105, 108, 100, 101, 114, 69, 100, 105, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 83, 107, 105, 110, 110, 101, 100, 77, 101, 115, 104, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 100, 105, 116, 111, 114, 92, 83, 116, 97, 116, 105, 99, 77, 101, 115, 104, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 42, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 46, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 83, 107, 105, 110, 65, 116, 116, 97, 99, 104, 109, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 97, 98, 111, 111, 110, 72, 97, 119, 107, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 97, 114, 98, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 97, 115, 101, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 114, 97, 99, 107, 101, 110, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 117, 110, 107, 101, 114, 83, 112, 105, 100, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 66, 117, 116, 108, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 67, 111, 105, 108, 104, 101, 97, 100, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 69, 97, 114, 116, 104, 76, 101, 118, 105, 97, 116, 104, 97, 110, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 69, 121, 101, 108, 101, 115, 115, 68, 111, 103, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 70, 111, 114, 101, 115, 116, 75, 101, 101, 112, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 71, 104, 111, 115, 116, 71, 105, 114, 108, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 72, 111, 97, 114, 100, 101, 114, 66, 117, 103, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 72, 121, 103, 114, 111, 100, 101, 114, 101, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 74, 101, 115, 116, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 75, 105, 100, 110, 97, 112, 112, 101, 114, 70, 111, 120, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 78, 117, 116, 99, 114, 97, 99, 107, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 79, 108, 100, 66, 105, 114, 100, 78, 101, 115, 116, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 79, 108, 100, 66, 105, 114, 100, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 83, 110, 97, 114, 101, 70, 108, 101, 97, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 83, 112, 111, 114, 101, 76, 105, 122, 97, 114, 100, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 84, 104, 117, 109, 112, 101, 114, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 83, 107, 105, 110, 110, 101, 114, 115, 92, 84, 117, 108, 105, 112, 83, 110, 97, 107, 101, 83, 107, 105, 110, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 97, 98, 111, 111, 110, 72, 97, 119, 107, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 97, 114, 98, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 57, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 97, 115, 101, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 114, 97, 99, 107, 101, 110, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 117, 110, 107, 101, 114, 83, 112, 105, 100, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 66, 117, 116, 108, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 67, 111, 105, 108, 104, 101, 97, 100, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 69, 97, 114, 116, 104, 76, 101, 118, 105, 97, 116, 104, 97, 110, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 69, 121, 101, 108, 101, 115, 115, 68, 111, 103, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 70, 111, 114, 101, 115, 116, 75, 101, 101, 112, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 71, 104, 111, 115, 116, 71, 105, 114, 108, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 72, 111, 97, 114, 100, 101, 114, 66, 117, 103, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 72, 121, 103, 114, 111, 100, 101, 114, 101, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 74, 101, 115, 116, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 75, 105, 100, 110, 97, 112, 112, 101, 114, 70, 111, 120, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 78, 117, 116, 99, 114, 97, 99, 107, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 79, 108, 100, 66, 105, 114, 100, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 83, 110, 97, 114, 101, 70, 108, 101, 97, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 83, 112, 111, 114, 101, 76, 105, 122, 97, 114, 100, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 84, 104, 117, 109, 112, 101, 114, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 65, 115, 115, 101, 116, 115, 92, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 92, 83, 99, 114, 105, 112, 116, 115, 92, 86, 97, 110, 105, 108, 108, 97, 84, 101, 109, 112, 108, 97, 116, 101, 115, 92, 84, 117, 108, 105, 112, 83, 110, 97, 107, 101, 83, 107, 105, 110, 46, 99, 115 }; result.TypesData = new byte[3724] { 0, 0, 0, 0, 63, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 124, 65, 114, 109, 97, 116, 117, 114, 101, 77, 97, 112, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 60, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 124, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 111, 114, 0, 0, 0, 0, 63, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 65, 114, 109, 97, 116, 117, 114, 101, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 124, 65, 114, 109, 97, 116, 117, 114, 101, 77, 97, 112, 73, 110, 115, 112, 101, 99, 116, 111, 114, 0, 0, 0, 0, 52, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 65, 117, 100, 105, 111, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 56, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 65, 117, 100, 105, 111, 76, 105, 115, 116, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 52, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 68, 101, 102, 97, 117, 108, 116, 83, 107, 105, 110, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 86, 105, 101, 119, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 68, 101, 102, 97, 117, 108, 116, 77, 111, 111, 110, 70, 114, 101, 113, 117, 101, 110, 99, 121, 86, 105, 101, 119, 0, 0, 0, 0, 50, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 80, 108, 117, 103, 105, 110, 78, 97, 109, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 52, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 65, 115, 115, 101, 109, 98, 108, 121, 78, 97, 109, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 78, 97, 109, 101, 115, 112, 97, 99, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 47, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 77, 111, 100, 78, 97, 109, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 65, 117, 116, 104, 111, 114, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 47, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 77, 111, 100, 71, 85, 73, 68, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 44, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 73, 110, 118, 97, 108, 105, 100, 73, 99, 111, 110, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 55, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 77, 97, 116, 101, 114, 105, 97, 108, 65, 99, 116, 105, 111, 110, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 38, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 83, 107, 105, 110, 77, 111, 100, 66, 117, 105, 108, 100, 101, 114, 0, 0, 0, 0, 44, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 83, 107, 105, 110, 77, 111, 100, 66, 117, 105, 108, 100, 101, 114, 69, 100, 105, 116, 111, 114, 0, 0, 0, 0, 17, 124, 83, 116, 97, 116, 105, 99, 77, 101, 115, 104, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 51, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 83, 116, 97, 116, 105, 99, 77, 101, 115, 104, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 36, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 0, 0, 0, 0, 52, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 83, 107, 105, 110, 110, 101, 100, 77, 101, 115, 104, 65, 99, 116, 105, 111, 110, 0, 0, 0, 0, 51, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 83, 116, 97, 116, 105, 99, 77, 101, 115, 104, 65, 99, 116, 105, 111, 110, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 77, 97, 116, 101, 114, 105, 97, 108, 65, 99, 116, 105, 111, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 65, 117, 100, 105, 111, 65, 99, 116, 105, 111, 110, 0, 0, 0, 0, 50, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 83, 107, 105, 110, 65, 99, 116, 105, 111, 110, 124, 65, 117, 100, 105, 111, 76, 105, 115, 116, 65, 99, 116, 105, 111, 110, 0, 0, 0, 0, 42, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 124, 65, 114, 109, 97, 116, 117, 114, 101, 65, 116, 116, 97, 99, 104, 109, 101, 110, 116, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 98, 111, 111, 110, 72, 97, 119, 107, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 114, 98, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 43, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 115, 101, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 114, 97, 99, 107, 101, 110, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 51, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 117, 110, 107, 101, 114, 83, 112, 105, 100, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 117, 116, 108, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 47, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 67, 111, 105, 108, 72, 101, 97, 100, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 53, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 69, 97, 114, 116, 104, 76, 101, 118, 105, 97, 116, 104, 97, 110, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 69, 121, 101, 108, 101, 115, 115, 68, 111, 103, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 51, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 70, 111, 114, 101, 115, 116, 75, 101, 101, 112, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 71, 104, 111, 115, 116, 71, 105, 114, 108, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 62, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 71, 104, 111, 115, 116, 71, 105, 114, 108, 68, 105, 115, 97, 112, 112, 101, 97, 114, 69, 118, 101, 110, 116, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 72, 111, 97, 114, 100, 101, 114, 66, 117, 103, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 72, 121, 103, 114, 111, 100, 101, 114, 101, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 74, 101, 115, 116, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 51, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 75, 105, 100, 110, 97, 112, 112, 101, 114, 70, 111, 120, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 78, 117, 116, 99, 114, 97, 99, 107, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 50, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 79, 108, 100, 66, 105, 114, 100, 78, 101, 115, 116, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 79, 108, 100, 66, 105, 114, 100, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 83, 110, 97, 114, 101, 70, 108, 101, 97, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 50, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 83, 112, 111, 114, 101, 76, 105, 122, 97, 114, 100, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 84, 104, 117, 109, 112, 101, 114, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 49, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 84, 117, 108, 105, 112, 83, 110, 97, 107, 101, 83, 107, 105, 110, 110, 101, 114, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 98, 111, 111, 110, 72, 97, 119, 107, 83, 107, 105, 110, 0, 0, 0, 0, 42, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 114, 98, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 40, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 115, 101, 83, 107, 105, 110, 0, 0, 0, 0, 44, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 97, 115, 101, 78, 101, 115, 116, 83, 107, 105, 110, 0, 0, 0, 0, 43, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 114, 97, 99, 107, 101, 110, 83, 107, 105, 110, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 117, 110, 107, 101, 114, 83, 112, 105, 100, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 42, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 66, 117, 116, 108, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 44, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 67, 111, 105, 108, 104, 101, 97, 100, 83, 107, 105, 110, 0, 0, 0, 0, 50, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 69, 97, 114, 116, 104, 76, 101, 118, 105, 97, 116, 104, 97, 110, 83, 107, 105, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 69, 121, 101, 108, 101, 115, 115, 68, 111, 103, 83, 107, 105, 110, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 70, 111, 114, 101, 115, 116, 75, 101, 101, 112, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 71, 104, 111, 115, 116, 71, 105, 114, 108, 83, 107, 105, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 72, 111, 97, 114, 100, 101, 114, 66, 117, 103, 83, 107, 105, 110, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 72, 121, 103, 114, 111, 100, 101, 114, 101, 83, 107, 105, 110, 0, 0, 0, 0, 42, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 74, 101, 115, 116, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 48, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 75, 105, 100, 110, 97, 112, 112, 101, 114, 70, 111, 120, 83, 107, 105, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 78, 117, 116, 99, 114, 97, 99, 107, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 43, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 79, 108, 100, 66, 105, 114, 100, 83, 107, 105, 110, 0, 0, 0, 0, 45, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 83, 110, 97, 114, 101, 70, 108, 101, 97, 83, 107, 105, 110, 0, 0, 0, 0, 47, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 83, 112, 111, 114, 101, 76, 105, 122, 97, 114, 100, 83, 107, 105, 110, 0, 0, 0, 0, 43, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 84, 104, 117, 109, 112, 101, 114, 83, 107, 105, 110, 0, 0, 0, 0, 46, 65, 110, 116, 108, 101, 114, 83, 104, 101, 100, 46, 69, 110, 101, 109, 121, 83, 107, 105, 110, 75, 105, 116, 46, 86, 97, 110, 105, 108, 108, 97, 124, 84, 117, 108, 105, 112, 83, 110, 97, 107, 101, 83, 107, 105, 110 }; result.TotalFiles = 58; result.TotalTypes = 71; result.IsEditorOnly = false; return result; } } namespace AntlerShed.EnemySkinKit { [Serializable] internal struct DefaultSkinConfigurationView { public string skinId; public DefaultMoonFrequencyView[] defaultEntries; public float defaultFrequency; public float vanillaFallbackFrequency; } [Serializable] internal struct DefaultMoonFrequencyView { public string moonId; public float frequency; } internal class InvalidPluginNameException : Exception { internal InvalidPluginNameException() : base("The given mod name created an invalid plugin name. The mod name must contain at least one alphabetical character.") { } } internal class InvalidAssemblyNameException : Exception { internal InvalidAssemblyNameException() : base("The given mod name is an invalid assembly name. The mod name must have at least one alphabetical character.") { } } internal class InvalidNamespaceException : Exception { internal InvalidNamespaceException() : base("The given mod name and author created an invalid namespace. The mod name and author must each contain at least one aphabetical character in order to generate a valid namespace identifier.") { } } internal class InvalidModNameException : Exception { internal InvalidModNameException() : base("Given mod name was empty or only contained whitespace.") { } } internal class InvalidAuthorException : Exception { internal InvalidAuthorException() : base("Given author was empty or only contained whitespace.") { } } internal class InvalidModGUIDException : Exception { internal InvalidModGUIDException() : base("Mod GUID and either the author or the mod name were not specified or only contain whitespace.") { } } internal class InvalidIconException : Exception { internal InvalidIconException() : base("Icon must be a png file of size 256 x 256.") { } } [CreateAssetMenu(fileName = "SkinMod", menuName = "EnemySkinKit/Mod", order = 1)] public class SkinModBuilder : ScriptableObject { [SerializeField] [Tooltip("The name of the mod")] private string modName; [SerializeField] [Tooltip("The name of the mod's author")] private string author; [SerializeField] [Tooltip("Optional place to specify an explicit mod GUID. If not speficied, the GUID will be \"<ModName>.<ModAuthor>\"")] private string modGUID; [SerializeField] [Tooltip("ReadMe file. This will be the text content of your mod's ThunderStore page. Talk about your mod in detail here.")] private TextAsset readMe; [SerializeField] [Tooltip("The icon of your mod that will appear on your mod's Thunderstore page and in the Thunderstore mod manager.")] private Texture2D icon; [SerializeField] [Tooltip("The major version of your mod. Start at one and add one every time you make a change that will break something if someone else depends on your mod (probably never, so this should be 1 in most cases).")] private uint major; [SerializeField] [Tooltip("The minor version of your mod. Start at zero and add one every time you add a new feature, like a new skin. Go back to zero if you update the major version.")] private uint minor; [SerializeField] [Tooltip("The patch part of your mod version. Start at zero and add one every time you make a change that fixes a problem with your mod. Reset to zero when updating the minor or major version.")] private uint patch; [SerializeField] [Tooltip("A short description of your mod that just tells people what it is. Shouldn't be more than a sentence or two.")] private string description; [SerializeField] [Tooltip("The skins that will be packaged with your mod.")] private BaseSkin[] skins; [SerializeField] [Tooltip("Any default configurations to include with your mod")] private DefaultSkinConfigurationView[] configs; private const string ASSET_BUNDLE_NAME = "SkinAssets"; private const string PLUGINS_FOLDER = "plugins"; private const string ASSETS_FOLDER = "AssetBundles"; private const string STAGING_FOLDER_SUFFIX = "Staging"; private const string BUILD_FOLDER = "EnemySkinKit"; private static readonly Regex whitespace = new Regex("\\s"); private static readonly Regex wordDelim = new Regex("[\\s_-][\\w]"); private static readonly Regex cSharpInvalid = new Regex("[^\\w\\d]"); private static readonly Regex fileNameInvalid = new Regex("[^\\w\\d_-]"); private static readonly Regex leadingDigits = new Regex("^\\d+"); private static readonly Regex validClassName = new Regex("\\w+[\\w\\d]*"); private string sanitizedAssemblyName; private string sanitizedModName; private string stagingPath; private string pluginPath; private string assetsPath; private string sourceCodeFilePath; private string assemblyFilePath; public void BuildMod(string author, string modName, string modGUID, string description, TextAsset readMe, Texture2D icon, uint major, uint minor, uint patch, BaseSkin[] skins) { //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) if (!Directory.Exists("EnemySkinKit")) { Directory.CreateDirectory("EnemySkinKit"); } if ((Object)(object)icon == (Object)null || !AssetDatabase.GetAssetPath((Object)(object)icon).EndsWith(".png") || ((Texture)icon).width != 256 || ((Texture)icon).height != 256) { throw new InvalidIconException(); } sanitizedModName = modName.Replace(" ", "_"); sanitizedModName = fileNameInvalid.Replace(sanitizedModName, ""); string input = author.Replace(" ", "_"); input = fileNameInvalid.Replace(input, ""); string value = (string.IsNullOrEmpty(modGUID) ? (input + "." + sanitizedModName) : whitespace.Replace(modGUID, "")); string text = convertToValidCSharpName(sanitizedModName + "Plugin"); string text2 = convertToValidCSharpName(input) + ".LethalCompany." + convertToValidCSharpName(sanitizedModName); sanitizedAssemblyName = convertToValidCSharpName(sanitizedModName); if (string.IsNullOrEmpty(input)) { throw new InvalidAuthorException(); } if (string.IsNullOrEmpty(value)) { throw new InvalidModGUIDException(); } if (string.IsNullOrEmpty(text)) { throw new InvalidPluginNameException(); } if (text2.Split(".").Any((string section) => string.IsNullOrEmpty(section))) { throw new InvalidNamespaceException(); } if (string.IsNullOrEmpty(sanitizedAssemblyName)) { throw new InvalidAssemblyNameException(); } if (string.IsNullOrEmpty(sanitizedModName)) { throw new InvalidModNameException(); } Debug.Log((object)createSkinModSource(value, sanitizedModName, "BundleName", major, minor, patch, text, text2, skins, configs)); stagingPath = Path.Combine("Assets", sanitizedModName + "Staging"); pluginPath = Path.Combine(new string[3] { stagingPath, "plugins", sanitizedModName }); assetsPath = Path.Combine(pluginPath, "AssetBundles"); if (Directory.Exists(stagingPath)) { Directory.Delete(stagingPath, recursive: true); } Directory.CreateDirectory(assetsPath); string text3 = input + "_" + sanitizedModName + "_SkinAssets"; AssetBundleBuild val = default(AssetBundleBuild); val.assetBundleName = text3; val.assetNames = (from path in skins.Select((BaseSkin skin) => AssetDatabase.GetDependencies(AssetDatabase.GetAssetPath((Object)(object)skin), true)).Aggregate(new List<string>(), (List<string> list, string[] paths) => list.Concat(paths).ToList()) where !path.EndsWith(".cs") && !path.EndsWith(".asm") && !path.EndsWith(".dll") select path).ToHashSet().ToArray(); BuildAssetBundlesParameters val2 = default(BuildAssetBundlesParameters); ((BuildAssetBundlesParameters)(ref val2)).bundleDefinitions = (AssetBundleBuild[])(object)new AssetBundleBuild[1] { val }; ((BuildAssetBundlesParameters)(ref val2)).options = (BuildAssetBundleOptions)32768; ((BuildAssetBundlesParameters)(ref val2)).outputPath = assetsPath; BuildPipeline.BuildAssetBundles(val2); using (StreamWriter streamWriter = new StreamWriter(Path.Combine(stagingPath, "README.md"), append: false)) { streamWriter.WriteLine(((Object)(object)readMe == (Object)null) ? "" : readMe.text); } using (StreamWriter streamWriter2 = new StreamWriter(Path.Combine(stagingPath, "manifest.json"), append: false)) { streamWriter2.WriteLine(createThunderstoreManifest(sanitizedModName, input, description, major, minor, patch)); } File.Copy(AssetDatabase.GetAssetPath((Object)(object)icon), Path.Combine(stagingPath, "icon.png")); sourceCodeFilePath = Path.Combine(pluginPath, text + ".cs"); using (StreamWriter streamWriter3 = new StreamWriter(sourceCodeFilePath, append: false)) { streamWriter3.WriteLine(createSkinModSource(value, sanitizedModName, text3, major, minor, patch, text, text2, skins, configs)); } assemblyFilePath = Path.Combine(pluginPath, sanitizedAssemblyName + ".asmdef"); using (StreamWriter streamWriter4 = new StreamWriter(assemblyFilePath, append: false)) { streamWriter4.WriteLine(createAssemblyDefinitionSource(sanitizedAssemblyName, text2)); } AssetDatabase.ImportAsset(sourceCodeFilePath); AssetDatabase.ImportAsset(assemblyFilePath); CompilationPipeline.compilationFinished += onCompilationFinished; CompilationPipeline.assemblyCompilationFinished += onAssemblyCompilationFinished; } private void onAssemblyCompilationFinished(string assemblyPath, CompilerMessage[] messages) { if (assemblyPath.EndsWith(sanitizedAssemblyName + ".dll")) { AssetDatabase.DeleteAsset(sourceCodeFilePath); AssetDatabase.DeleteAsset(assemblyFilePath); File.Copy(assemblyPath, Path.Combine(pluginPath, Path.GetFileName(assemblyPath))); string text = Path.Combine("EnemySkinKit", sanitizedModName + ".zip"); if (File.Exists(text)) { File.Delete(text); } ZipFile.CreateFromDirectory(stagingPath, text); AssetDatabase.DeleteAsset(stagingPath); } } private void onCompilationFinished(object eventStore) { CompilationPipeline.assemblyCompilationFinished -= onAssemblyCompilationFinished; CompilationPipeline.compilationFinished -= onCompilationFinished; } public void BuildMod() { BuildMod(author, modName, modGUID, description, readMe, icon, major, minor, patch, skins); } private string createDefaultSkinConfigSource(DefaultSkinConfigurationView defaultConfig) { string text = ""; for (int i = 0; i < defaultConfig.defaultEntries.Length - 1; i++) { text = text + createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[i]) + ", "; } if (defaultConfig.defaultEntries.Length != 0) { text += createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[defaultConfig.defaultEntries.Length - 1]); } return $"new DefaultSkinConfigData(new DefaultSkinConfigEntry[] {{ {text} }}, {Math.Clamp(defaultConfig.defaultFrequency, 0f, 1f)}f, {Math.Clamp(defaultConfig.vanillaFallbackFrequency, 0f, 1f)}f)"; } private string createDefaultSkinConfigEntrySource(DefaultMoonFrequencyView defaultConfig) { return $"new DefaultSkinConfigEntry(\"{defaultConfig.moonId}\", {defaultConfig.frequency}f)"; } private string createTemplateSkinEntrySource(BaseSkin skin, DefaultSkinConfigurationView? defaultConfig) { return "EnemySkinRegistry.RegisterSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\")" + ((!defaultConfig.HasValue) ? "" : (", " + createDefaultSkinConfigSource(defaultConfig.Value))) + ");" + ((skin is BaseNestSkin) ? ("\nEnemySkinRegistry.RegisterNestSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\"));") : ""); } private string createSkinModSource(string modGUID, string modName, string bundleName, uint major, uint minor, uint patch, string pluginClassName, string namespaceText, BaseSkin[] skins, DefaultSkinConfigurationView[] configs) { return "//This is generated code and shouldn't be modified unless it's taken out of its original environment\nusing AntlerShed.EnemySkinKit;\nusing AntlerShed.EnemySkinKit.Vanilla;\nusing AntlerShed.SkinRegistry;\nusing BepInEx;\nusing System.Reflection;\nusing UnityEngine;\nnamespace " + namespaceText + "\n{\n" + $"\t[BepInPlugin(\"{modGUID}\", \"{modName}\", \"{major}.{minor}.{patch}\")]\n" + "\t[BepInDependency(\"AntlerShed.LethalCompany.EnemySkinKit\")]\n\t[BepInDependency(\"antlershed.lethalcompany.enemyskinregistry\")]\n\tpublic class " + pluginClassName + " : BaseUnityPlugin\n\t{\n\t\tpublic const string modGUID = \"" + modGUID + "\";\n\t\tpublic const string modName = \"" + modName + "\";\n" + $"\t\tpublic const string modVersion = \"{major}.{minor}.{patch}\";\n" + "\t\tvoid Awake()\n\t\t{\n\t\t\tAssetBundle bundle = AssetBundle.LoadFromFile\n\t\t\t(\n\t\t\t\tSystem.IO.Path.Combine\n\t\t\t\t(\n\t\t\t\t\tSystem.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),\n\t\t\t\t\t\"AssetBundles/" + bundleName + "\"\n\t\t\t\t)\n\t\t\t);\n" + skins.Select((BaseSkin skin) => "\t\t\t" + createTemplateSkinEntrySource(skin, configs.Any((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id)) ? new DefaultSkinConfigurationView?(configs.First((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id))) : null)).Aggregate("", (string str, string line) => str + line) + "\n\t\t}\n\t}\n}"; } private string createAssemblyDefinitionSource(string assemblyName, string namespaceText) { return "{\n\"name\": \"" + assemblyName + "\",\n\t\"rootNamespace\": \"" + namespaceText + "\",\n\t\"references\": [],\n\t\"includePlatforms\": [],\n\t\"excludePlatforms\": [],\n\t\"allowUnsafeCode\": false,\n\t\"overrideReferences\": true,\n\t\"precompiledReferences\": \n\t[\n\t\t\"BepInEx.dll\",\n\t\t\"EnemySkinRegistry.dll\",\n\t\t\"EnemySkinKit.dll\"\n \t],\n\t\"autoReferenced\": true,\n\t\"defineConstraints\": [],\n\t\"versionDefines\": [],\n\t\"noEngineReferences\": false\n}"; } private string createThunderstoreManifest(string modName, string author, string description, uint major, uint minor, uint patch) { return "{\n\t\"name\": \"" + modName + "\",\n\t\"author\": \"" + author + "\",\n" + $"\t\"version_number\": \"{major}.{minor}.{patch}\",\n" + "\t\"website_url\": \"\",\n\t\"description\": \"" + description + "\",\n\t\"dependencies\": [\"AntlerShed-EnemySkinKit-1.0.5\"]\n}"; } private string convertToValidCSharpName(string name) { string text = leadingDigits.Replace(cSharpInvalid.Replace(wordDelim.Replace(name, (Match match) => match.ToString().ToUpper()), ""), ""); if (!validClassName.IsMatch(text)) { return null; } return text; } } [CustomEditor(typeof(SkinModBuilder))] internal class SkinModBuilderEditor : Editor { public override VisualElement CreateInspectorGUI() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Expected O, but got Unknown //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Expected O, but got Unknown //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Expected O, but got Unknown //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0128: 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_0143: Expected O, but got Unknown //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Expected O, but got Unknown //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Expected O, but got Unknown //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Expected O, but got Unknown VisualElement val = new VisualElement(); Foldout val2 = new Foldout(); val2.text = "Mod Info"; ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modName"))); ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("author"))); ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modGUID"))); ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("description"))); ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("readMe"))); ((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("icon"))); Foldout val3 = new Foldout(); val3.text = "Version"; ((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("major"))); ((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("minor"))); ((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("patch"))); ((VisualElement)val2).Add((VisualElement)(object)val3); val.Add((VisualElement)(object)val2); val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("skins"))); val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("configs"))); Button val4 = new Button(); ((TextElement)val4).text = "Generate Mod Files"; val4.clicked += genModFiles; val.Add((VisualElement)(object)val4); return val; } private void genModFiles() { (((Editor)this).target as SkinModBuilder).BuildMod(); } } [BepInPlugin("AntlerShed.LethalCompany.EnemySkinKit", "Vanilla Enemy Skin Kit", "1.0.5")] [BepInDependency(/*Could not decode attribute arguments.*/)] public sealed class EnemySkinKit : BaseUnityPlugin { public const string modGUID = "AntlerShed.LethalCompany.EnemySkinKit"; public const string modName = "Vanilla Enemy Skin Kit"; public const string modVersion = "1.0.5"; private static ConfigEntry<LogLevel> logLevel; internal static ManualLogSource SkinKitLogger { get; private set; } = Logger.CreateLogSource("AntlerShed.LethalCompany.EnemySkinKit"); internal static LogLevel LogLevelSetting => logLevel.Value; private void Awake() { logLevel = ((BaseUnityPlugin)this).Config.Bind<LogLevel>("LogLevel", "Logging", LogLevel.ERROR, "Verbosity setting of the logger."); } } internal enum LogLevel { NONE, ERROR, WARN, INFO } [Serializable] public struct ArmatureAttachment { public string boneId; public GameObject attachment; public Vector3 location; public Vector3 rotation; public Vector3 scale; public static List<GameObject> ApplyAttachments(ArmatureAttachment[] attachments, SkinnedMeshRenderer renderer) { //IL_0068: 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_009b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)renderer != (Object)null) { List<GameObject> list = new List<GameObject>(); for (int i = 0; i < attachments.Length; i++) { ArmatureAttachment attachment = attachments[i]; try { Transform val = renderer.bones.First((Transform tf) => ((Object)tf).name.Equals(attachment.boneId)); GameObject val2 = Object.Instantiate<GameObject>(attachment.attachment, val); val2.transform.localPosition = attachment.location; val2.transform.localRotation = Quaternion.Euler(attachment.rotation); val2.transform.localScale = attachment.scale; list.Add(val2); } catch (Exception ex) { if (EnemySkinKit.LogLevelSetting >= LogLevel.ERROR) { EnemySkinKit.SkinKitLogger.LogError((object)ex.StackTrace); } } } return list; } return new List<GameObject>(); } public static void RemoveAttachments(List<GameObject> attachments) { foreach (GameObject attachment in attachments) { Object.Destroy((Object)(object)attachment); } } } } namespace AntlerShed.EnemySkinKit.Vanilla { public class BaboonHawkSkinner : BaseSkinner, BaboonHawkEventHandler, EnemyEventHandler { protected const string LOD0_PATH = "BaboonBirdModel/BodyLOD0"; protected const string LOD1_PATH = "BaboonBirdModel/BodyLOD1"; protected const string LOD2_PATH = "BaboonBirdModel/BodyLOD2"; protected const string ANCHOR_PATH = "BaboonBirdModel/AnimContainer/metarig"; protected const string ANIM_EFFECTS_PATH = "BaboonBirdModel/AnimContainer"; protected Material vanillaBodyMaterial; protected AudioClip[] vanillaScreamAudio; protected AudioClip[] vanillaLaughAudio; protected AudioClip vanillaIntimidateAudio; protected AudioClip vanillaIntimidateVoice; protected AudioClip vanillaEnterFightAudio; protected AudioClip vanillaKillPlayerAudio; protected AudioClip vanillaStabAudio; protected AudioClip vanillaDeathAudio; protected AudioClip vanillaHitBodyAudio; protected AudioClip[] vanillaFootstepsAudio; protected List<GameObject> activeAttachments; protected AudioSource modCreatureEffects; protected AudioSource modCreatureVoice; protected AudioSource modAggressionAudio; protected MaterialAction BodyMaterialAction { get; } protected SkinnedMeshAction BodyMeshAction { get; } protected AudioListAction ScreamAudioAction { get; } protected AudioListAction LaughAudioAction { get; } protected AudioAction IntimidateAction { get; } protected AudioAction IntimidateVoiceAction { get; } protected AudioAction EnterFightAction { get; } protected AudioAction KillPlayerAudioAction { get; } protected AudioAction StabAudioAction { get; } protected AudioAction DeathAudioAction { get; } protected AudioAction HitBodyAudioAction { get; } protected AudioListAction FootstepsAudioAction { get; } protected ArmatureAttachment[] Attachments { get; } protected bool VoiceSilenced { get { if (IntimidateVoiceAction.actionType == AudioActionType.RETAIN) { return KillPlayerAudioAction.actionType != AudioActionType.RETAIN; } return true; } } protected bool EffectsSilenced { get { if (StabAudioAction.actionType == AudioActionType.RETAIN) { return HitBodyAudioAction.actionType != AudioActionType.RETAIN; } return true; } } protected bool AggressionSilenced { get { if (EnterFightAction.actionType == AudioActionType.RETAIN) { return IntimidateAction.actionType != AudioActionType.RETAIN; } return true; } } public BaboonHawkSkinner(ArmatureAttachment[] attachments, MaterialAction bodyMaterialAction, SkinnedMeshAction bodyMeshAction, AudioListAction screamAction, AudioListAction laughAction, AudioAction intimidateAudioAction, AudioAction intimidateVoiceAction, AudioAction enterFightAction, AudioAction killPlayerAudioAction, AudioAction stabAudioAction, AudioAction deathAudioAction, AudioAction hitBodyAudioAction, AudioListAction footstepsAudioAction) { BodyMaterialAction = bodyMaterialAction; BodyMeshAction = bodyMeshAction; ScreamAudioAction = screamAction; LaughAudioAction = laughAction; Attachments = attachments; IntimidateAction = intimidateAudioAction; IntimidateVoiceAction = intimidateVoiceAction; EnterFightAction = enterFightAction; KillPlayerAudioAction = killPlayerAudioAction; StabAudioAction = stabAudioAction; DeathAudioAction = deathAudioAction; HitBodyAudioAction = hitBodyAudioAction; FootstepsAudioAction = footstepsAudioAction; } public override void Apply(GameObject enemy) { BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>(); Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer"); object obj2; if (obj == null) { obj2 = null; } else { GameObject gameObject = ((Component)obj).gameObject; obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null); } BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2; if (VoiceSilenced) { modCreatureVoice = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureVoice, "modVoice"); ((EnemyAI)component).creatureVoice.mute = true; } if (EffectsSilenced) { modCreatureEffects = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureSFX, "modEffects"); ((EnemyAI)component).creatureSFX.mute = true; if ((Object)(object)val != (Object)null) { val.audioToPlay = modCreatureEffects; } } if (AggressionSilenced) { modAggressionAudio = BaseSkinner.CreateModdedAudioSource(component.aggressionAudio, "modAggressionAudio"); component.aggressionAudio.mute = true; } ArmatureAttachment[] attachments = Attachments; Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0"); object renderer; if (obj3 == null) { renderer = null; } else { GameObject gameObject2 = ((Component)obj3).gameObject; renderer = ((gameObject2 != null) ? gameObject2.GetComponent<SkinnedMeshRenderer>() : null); } activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer); MaterialAction bodyMaterialAction = BodyMaterialAction; Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD0"); vanillaBodyMaterial = bodyMaterialAction.Apply((obj4 != null) ? ((Component)obj4).gameObject.GetComponent<Renderer>() : null, 0); bodyMaterialAction = BodyMaterialAction; Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD1"); bodyMaterialAction.Apply((obj5 != null) ? ((Component)obj5).gameObject.GetComponent<Renderer>() : null, 0); bodyMaterialAction = BodyMaterialAction; Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD2"); bodyMaterialAction.Apply((obj6 != null) ? ((Component)obj6).gameObject.GetComponent<Renderer>() : null, 0); vanillaScreamAudio = ScreamAudioAction.Apply(ref component.cawScreamSFX); vanillaLaughAudio = LaughAudioAction.Apply(ref component.cawLaughSFX); if ((Object)(object)val != (Object)null) { vanillaFootstepsAudio = FootstepsAudioAction.Apply(ref val.randomClips); } vanillaIntimidateVoice = ((EnemyAI)component).enemyType.audioClips[1]; vanillaIntimidateAudio = ((EnemyAI)component).enemyType.audioClips[2]; vanillaEnterFightAudio = ((EnemyAI)component).enemyType.audioClips[3]; vanillaKillPlayerAudio = ((EnemyAI)component).enemyType.audioClips[4]; vanillaDeathAudio = ((EnemyAI)component).enemyType.audioClips[5]; SkinnedMeshAction bodyMeshAction = BodyMeshAction; SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3]; Transform obj7 = enemy.transform.Find("BaboonBirdModel/BodyLOD0"); object obj8; if (obj7 == null) { obj8 = null; } else { GameObject gameObject3 = ((Component)obj7).gameObject; obj8 = ((gameObject3 != null) ? gameObject3.GetComponent<SkinnedMeshRenderer>() : null); } array[0] = (SkinnedMeshRenderer)obj8; Transform obj9 = enemy.transform.Find("BaboonBirdModel/BodyLOD1"); object obj10; if (obj9 == null) { obj10 = null; } else { GameObject gameObject4 = ((Component)obj9).gameObject; obj10 = ((gameObject4 != null) ? gameObject4.GetComponent<SkinnedMeshRenderer>() : null); } array[1] = (SkinnedMeshRenderer)obj10; Transform obj11 = enemy.transform.Find("BaboonBirdModel/BodyLOD2"); object obj12; if (obj11 == null) { obj12 = null; } else { GameObject gameObject5 = ((Component)obj11).gameObject; obj12 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null); } array[2] = (SkinnedMeshRenderer)obj12; bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("BaboonBirdModel/AnimContainer/metarig")); EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this); } public override void Remove(GameObject enemy) { BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>(); Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer"); object obj2; if (obj == null) { obj2 = null; } else { GameObject gameObject = ((Component)obj).gameObject; obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null); } BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2; EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this); if (VoiceSilenced) { BaseSkinner.DestroyModdedAudioSource(modCreatureVoice); ((EnemyAI)component).creatureVoice.mute = false; } if (EffectsSilenced) { BaseSkinner.DestroyModdedAudioSource(modCreatureEffects); ((EnemyAI)component).creatureSFX.mute = false; if ((Object)(object)val != (Object)null) { val.audioToPlay = ((EnemyAI)component).creatureSFX; } } if (AggressionSilenced) { BaseSkinner.DestroyModdedAudioSource(modAggressionAudio); component.aggressionAudio.mute = false; } ArmatureAttachment.RemoveAttachments(activeAttachments); MaterialAction bodyMaterialAction = BodyMaterialAction; Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0"); object vanillaRenderer; if (obj3 == null) { vanillaRenderer = null; } else { GameObject gameObject2 = ((Component)obj3).gameObject; vanillaRenderer = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBodyMaterial); bodyMaterialAction = BodyMaterialAction; Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD1"); object vanillaRenderer2; if (obj4 == null) { vanillaRenderer2 = null; } else { GameObject gameObject3 = ((Component)obj4).gameObject; vanillaRenderer2 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBodyMaterial); bodyMaterialAction = BodyMaterialAction; Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD2"); object vanillaRenderer3; if (obj5 == null) { vanillaRenderer3 = null; } else { GameObject gameObject4 = ((Component)obj5).gameObject; vanillaRenderer3 = ((gameObject4 != null) ? gameObject4.GetComponent<Renderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBodyMaterial); ScreamAudioAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawScreamSFX, vanillaScreamAudio); LaughAudioAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawLaughSFX, vanillaLaughAudio); if ((Object)(object)val != (Object)null) { FootstepsAudioAction.Remove(ref val.randomClips, vanillaFootstepsAudio); } SkinnedMeshAction bodyMeshAction = BodyMeshAction; SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3]; Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD0"); object obj7; if (obj6 == null) { obj7 = null; } else { GameObject gameObject5 = ((Component)obj6).gameObject; obj7 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null); } array[0] = (SkinnedMeshRenderer)obj7; Transform obj8 = enemy.transform.Find("BaboonBirdModel/BodyLOD1"); object obj9; if (obj8 == null) { obj9 = null; } else { GameObject gameObject6 = ((Component)obj8).gameObject; obj9 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null); } array[1] = (SkinnedMeshRenderer)obj9; Transform obj10 = enemy.transform.Find("BaboonBirdModel/BodyLOD2"); object obj11; if (obj10 == null) { obj11 = null; } else { GameObject gameObject7 = ((Component)obj10).gameObject; obj11 = ((gameObject7 != null) ? gameObject7.GetComponent<SkinnedMeshRenderer>() : null); } array[2] = (SkinnedMeshRenderer)obj11; bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("BaboonBirdModel/AnimContainer/metarig")); } public void OnEnterAttackMode(BaboonBirdAI baboonHawk) { if (AggressionSilenced) { modAggressionAudio.clip = EnterFightAction.WorkingClip(vanillaEnterFightAudio); modAggressionAudio.Play(); } } public void OnIntimidate(BaboonBirdAI baboonHawk) { if (VoiceSilenced) { RoundManager.PlayRandomClip(modCreatureVoice, ScreamAudioAction.WorkingClips(vanillaScreamAudio), true, 1f, 1105, 1000); WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, IntimidateVoiceAction.WorkingClip(vanillaIntimidateVoice), 1f); } if (AggressionSilenced) { modAggressionAudio.clip = IntimidateAction.WorkingClip(vanillaIntimidateAudio); modAggressionAudio.Play(); } } public void OnAttackPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player) { if (EffectsSilenced) { modCreatureEffects.PlayOneShot(StabAudioAction.WorkingClip(vanillaStabAudio)); WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, StabAudioAction.WorkingClip(vanillaStabAudio), 1f); } } public void OnAttackEnemy(BaboonBirdAI baboonHawk, EnemyAI enemy) { if (EffectsSilenced) { modCreatureEffects.PlayOneShot(StabAudioAction.WorkingClip(vanillaStabAudio)); WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, StabAudioAction.WorkingClip(vanillaStabAudio), 1f); } } public void OnKillPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player) { if (VoiceSilenced) { modCreatureVoice.PlayOneShot(KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio)); WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio), 1f); } } public void OnEnemyUpdate(EnemyAI enemy) { if (AggressionSilenced) { modAggressionAudio.volume = ((BaboonBirdAI)((enemy is BaboonBirdAI) ? enemy : null)).aggressionAudio.volume; } } public void OnKilled(EnemyAI enemy) { if (VoiceSilenced) { modCreatureVoice.PlayOneShot(DeathAudioAction.WorkingClip(vanillaDeathAudio)); } } public void OnHit(EnemyAI enemy, PlayerControllerB attackingPlayer, bool playSoundEffect) { if (EffectsSilenced && playSoundEffect) { modCreatureEffects.PlayOneShot(HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio)); WalkieTalkie.TransmitOneShotAudio(modCreatureEffects, HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio), 1f); } } } public class BarberSkinner : BaseSkinner, BarberEventHandler, EnemyEventHandler { protected const string MESH_PATH = "MeshContainer/Mesh"; protected const string LOWER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/LowerBlade"; protected const string UPPER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/UpperBlade"; protected const string ANCHOR_PATH = "MeshContainer/AnimContainer/metarig"; protected Mesh vanillaUpperBladeMesh; protected Mesh vanillaLowerBladeMesh; protected Material vanillaBarberMaterial; protected AudioClip vanillaSnipClip; protected AudioClip vanillaDrumrollClip; protected AudioClip[] vanillaParadeClips; protected Material[] replacementMaterials; protected List<GameObject> activeAttachments; protected bool DoFade { get; } protected ArmatureAttachment[] Attachments { get; } protected MaterialAction BodyMaterialAction { get; } protected MaterialAction UpperBladeMaterialAction { get; } protected MaterialAction LowerBladeMaterialAction { get; } protected SkinnedMeshAction BodyMeshAction { get; } protected StaticMeshAction UpperScissorsAction { get; } protected StaticMeshAction LowerScissorsAction { get; } protected AudioAction DrumRollAudioAction { get; } protected AudioAction SnipAudioAction { get; } protected AudioListAction JumpAudioListAction { get; } public BarberSkinner(ArmatureAttachment[] attachments, SkinnedMeshAction bodyMeshAction, StaticMeshAction upperBladeMeshAction, StaticMeshAction lowerBladeMeshAction, MaterialAction barberMaterialAction, MaterialAction upperBladeMaterialAction, MaterialAction lowerBladeMaterialAction, AudioAction drumRollAudioAction, AudioAction snipAudioAction, AudioListAction jumpAudioListAction, bool doFade) { Attachments = attachments; BodyMaterialAction = barberMaterialAction; BodyMeshAction = bodyMeshAction; UpperBladeMaterialAction = upperBladeMaterialAction; LowerBladeMaterialAction = lowerBladeMaterialAction; UpperScissorsAction = upperBladeMeshAction; LowerScissorsAction = lowerBladeMeshAction; DrumRollAudioAction = drumRollAudioAction; SnipAudioAction = snipAudioAction; JumpAudioListAction = jumpAudioListAction; DoFade = doFade; } public override void Apply(GameObject enemy) { ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>(); MaterialAction bodyMaterialAction = BodyMaterialAction; Transform obj = enemy.transform.Find("MeshContainer/Mesh"); object vanillaRenderer; if (obj == null) { vanillaRenderer = null; } else { GameObject gameObject = ((Component)obj).gameObject; vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null); } vanillaBarberMaterial = bodyMaterialAction.Apply((Renderer)vanillaRenderer, 0); bodyMaterialAction = UpperBladeMaterialAction; Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade"); object vanillaRenderer2; if (obj2 == null) { vanillaRenderer2 = null; } else { GameObject gameObject2 = ((Component)obj2).gameObject; vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null); } bodyMaterialAction.Apply((Renderer)vanillaRenderer2, 0); bodyMaterialAction = LowerBladeMaterialAction; Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade"); object vanillaRenderer3; if (obj3 == null) { vanillaRenderer3 = null; } else { GameObject gameObject3 = ((Component)obj3).gameObject; vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null); } bodyMaterialAction.Apply((Renderer)vanillaRenderer3, 0); StaticMeshAction upperScissorsAction = UpperScissorsAction; Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade"); object vanilla; if (obj4 == null) { vanilla = null; } else { GameObject gameObject4 = ((Component)obj4).gameObject; vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null); } vanillaUpperBladeMesh = upperScissorsAction.Apply((MeshFilter)vanilla); upperScissorsAction = LowerScissorsAction; Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade"); object vanilla2; if (obj5 == null) { vanilla2 = null; } else { GameObject gameObject5 = ((Component)obj5).gameObject; vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null); } vanillaLowerBladeMesh = upperScissorsAction.Apply((MeshFilter)vanilla2); vanillaDrumrollClip = DrumRollAudioAction.Apply(ref component.snareDrum); vanillaParadeClips = JumpAudioListAction.Apply(ref component.paradeClips); vanillaSnipClip = SnipAudioAction.Apply(ref component.snipScissors); SkinnedMeshAction bodyMeshAction = BodyMeshAction; SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1]; Transform obj6 = enemy.transform.Find("MeshContainer/Mesh"); object obj7; if (obj6 == null) { obj7 = null; } else { GameObject gameObject6 = ((Component)obj6).gameObject; obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null); } array[0] = (SkinnedMeshRenderer)obj7; GameObject val = bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("MeshContainer/AnimContainer/metarig")); List<Material> list = new List<Material>(); if ((Object)(object)val != (Object)null) { list.AddRange(val.GetComponentsInChildren<Renderer>().SelectMany((Renderer r) => r.materials)); } if (BodyMaterialAction.actionType == MaterialActionType.REPLACE) { Transform obj8 = enemy.transform.Find("MeshContainer/Mesh"); object item; if (obj8 == null) { item = null; } else { GameObject gameObject7 = ((Component)obj8).gameObject; item = ((gameObject7 != null) ? ((Renderer)gameObject7.GetComponent<SkinnedMeshRenderer>()).material : null); } list.Add((Material)item); } if (UpperBladeMaterialAction.actionType == MaterialActionType.REPLACE) { Transform obj9 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade"); object item2; if (obj9 == null) { item2 = null; } else { GameObject gameObject8 = ((Component)obj9).gameObject; item2 = ((gameObject8 != null) ? gameObject8.GetComponent<Renderer>().material : null); } list.Add((Material)item2); } if (LowerBladeMaterialAction.actionType == MaterialActionType.REPLACE) { Transform obj10 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade"); object item3; if (obj10 == null) { item3 = null; } else { GameObject gameObject9 = ((Component)obj10).gameObject; item3 = ((gameObject9 != null) ? gameObject9.GetComponent<Renderer>().material : null); } list.Add((Material)item3); } ArmatureAttachment[] attachments = Attachments; Transform obj11 = enemy.transform.Find("MeshContainer/Mesh"); object renderer; if (obj11 == null) { renderer = null; } else { GameObject gameObject10 = ((Component)obj11).gameObject; renderer = ((gameObject10 != null) ? gameObject10.GetComponent<SkinnedMeshRenderer>() : null); } activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer); list.AddRange(activeAttachments.SelectMany((GameObject attachment) => attachment.GetComponentsInChildren<Renderer>().SelectMany((Renderer rend) => rend.materials))); replacementMaterials = list.ToArray(); EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this); } public override void Remove(GameObject enemy) { ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>(); EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this); MaterialAction bodyMaterialAction = BodyMaterialAction; Transform obj = enemy.transform.Find("MeshContainer/Mesh"); object vanillaRenderer; if (obj == null) { vanillaRenderer = null; } else { GameObject gameObject = ((Component)obj).gameObject; vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBarberMaterial); bodyMaterialAction = UpperBladeMaterialAction; Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade"); object vanillaRenderer2; if (obj2 == null) { vanillaRenderer2 = null; } else { GameObject gameObject2 = ((Component)obj2).gameObject; vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBarberMaterial); bodyMaterialAction = LowerBladeMaterialAction; Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade"); object vanillaRenderer3; if (obj3 == null) { vanillaRenderer3 = null; } else { GameObject gameObject3 = ((Component)obj3).gameObject; vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null); } bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBarberMaterial); ArmatureAttachment.RemoveAttachments(activeAttachments); StaticMeshAction upperScissorsAction = UpperScissorsAction; Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade"); object vanilla; if (obj4 == null) { vanilla = null; } else { GameObject gameObject4 = ((Component)obj4).gameObject; vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null); } upperScissorsAction.Remove((MeshFilter)vanilla, vanillaUpperBladeMesh); upperScissorsAction = LowerScissorsAction; Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade"); object vanilla2; if (obj5 == null) { vanilla2 = null; } else { GameObject gameObject5 = ((Component)obj5).gameObject; vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null); } upperScissorsAction.Remove((MeshFilter)vanilla2, vanillaLowerBladeMesh); DrumRollAudioAction.Remove(ref component.snareDrum, vanillaDrumrollClip); JumpAudioListAction.Remove(ref component.paradeClips, vanillaParadeClips); SnipAudioAction.Remove(ref component.snipScissors, vanillaSnipClip); SkinnedMeshAction bodyMeshAction = BodyMeshAction; SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1]; Transform obj6 = enemy.transform.Find("MeshContainer/Mesh"); object obj7; if (obj6 == null) { obj7 = null; } else { GameObject gameObject6 = ((Component)obj6).gameObject; obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null); } array[0] = (SkinnedMeshRenderer)obj7; bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("MeshContainer/AnimContainer/metarig")); } public void OnEnemyUpdate(EnemyAI enemy) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if (!DoFade) { return; } float num = Vector3.Distance(((Component)StartOfRound.Instance.audioListener).transform.position, ((Component)enemy).transform.position + Vector3.up * 0.7f); ClaySurgeonAI val = (ClaySurgeonAI)(object)((enemy is ClaySurgeonAI) ? enemy : null); Material[] array = replacementMaterials; foreach (Material val2 in array) { if (val2.HasFloat("_AlphaCutoff")) { val2.SetFloat("_AlphaCutoff", (num - val.minDistance) / (val.maxDistance - val.minDistance)); } } } } public abstract class BaseSkinner : Skinner { public abstract void Apply(GameObject enemy); public abstract void Remove(GameObject enemy); private static void CopyAudioSource(AudioSource source, AudioSource destination) { //IL_009e: Unknown result type (might be due to invalid IL or missing references) destination.bypassEffects = source.bypassEffects; destination.bypassListenerEffects = source.bypassListenerEffects; destination.bypassReverbZones = source.bypassReverbZones; destination.dopplerLevel = source.dopplerLevel; destination.ignoreListenerPause = source.ignoreListenerPause; destination.ignoreListenerVolume = source.ignoreListenerVolume; destination.maxDistance = source.maxDistance; destination.minDistance = source.minDistance; destination.outputAudioMixerGroup = source.outputAudioMixerGroup; destination.panStereo = source.panStereo; destination.pitch = source.pitch; destination.priority = source.priority; destination.reverbZoneMix = source.reverbZoneMix; destination.rolloffMode = source.rolloffMode; destination.spatialBlend = source.spatialBlend; destination.spatialize = source.spatialize; destination.spatializePostEffects = source.spatializePostEffects; destination.spread = source.spread; ((Component)destination).tag = ((Component)source).tag; destination.volume = source.volume; destination.clip = source.clip; destination.playOnAwake = source.playOnAwake; } private static void CopyLowPass(AudioLowPassFilter source, AudioLowPassFilter destination) { destination.customCutoffCurve = source.customCutoffCurve; destination.cutoffFrequency = source.cutoffFrequency; destination.lowpassResonanceQ = source.lowpassResonanceQ; } private static void CopyReverb(AudioReverbFilter source, AudioReverbFilter destination) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) destination.decayHFRatio = source.decayHFRatio; destination.decayTime = source.decayTime; destination.density = source.density; destination.diffusion = source.diffusion; destination.dryLevel = source.dryLevel; destination.hfReference = source.hfReference; destination.lfReference = source.lfReference; destination.reflectionsDelay = source.reflectionsDelay; destination.reflectionsLevel = source.reflectionsLevel; destination.reverbDelay = source.reverbDelay; destination.reverbLevel = source.reverbLevel; destination.reverbPreset = source.reverbPreset; destination.room = source.room; destination.roomLF = source.roomLF; destination.roomHF = source.roomHF; } protected static void CopyOccludeAudio(OccludeAudio source, OccludeAudio destination) { destination.useReverb = source.useReverb; destination.overridingLowPass = source.overridingLowPass; destination.lowPassOverride = source.lowPassOverride; } protected static AudioSource CreateModdedAudioSource(AudioSource vanilla, string label = "modAudioSource", AudioClip initClip = null) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(label); val.transform.parent = ((Component)vanilla).gameObject.transform; val.transform.localPosition = Vector3.zero; val.transform.localScale = Vector3.one; val.transform.localRotation = Quaternion.identity; AudioSource val2 = val.AddComponent<AudioSource>(); CopyAudioSource(vanilla, val2); val2.clip = initClip; OccludeAudio component = ((Component)vanilla).gameObject.GetComponent<OccludeAudio>(); AudioLowPassFilter component2 = ((Component)vanilla).gameObject.GetComponent<AudioLowPassFilter>(); AudioReverbFilter component3 = ((Component)vanilla).gameObject.GetComponent<AudioReverbFilter>(); if ((Object)(object)component != (Object)null) { if ((Object)(object)component2 != (Object)null) { AudioLowPassFilter destination = val.AddComponent<AudioLowPassFilter>(); CopyLowPass(component2, destination); } if ((Object)(object)component3 != (Object)null) { AudioReverbFilter destination2 = val.AddComponent<AudioReverbFilter>(); CopyReverb(component3, destination2); } OccludeAudio destination3 = val.AddComponent<OccludeAudio>(); CopyOccludeAudio(component, destination3); } if (vanilla.playOnAwake) { val2.Play(); } return val2; } protected static void DestroyModdedAudioSource(AudioSource mod) { Object.Destroy((Object)(object)((Component)mod).gameObject); } } public class BrackenSkinner : BaseSkinner, BrackenEventHandler, EnemyEventHandler { protected const string MESH_PATH = "FlowermanModel/LOD1"; protected const string LEFT_EYE_PATH = "FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye"; protected const string RIGHT_EYE_PATH = "FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/RightEye"; protected const string ANCHOR_PATH = "FlowermanModel/AnimContainer"; protected Material vanillaBodyMaterial; protected Material vanillaLeafMaterial; protected Material vanillaRightEyeMaterial; protected Material vanillaLeftEyeMaterial; protected Mesh vanillaRightEyeMesh; protected Mesh vanillaLeftEyeMesh; protected AudioClip vanillaAngerSound; protected AudioClip vanillaKillSound; protected AudioClip vanillaFoundSound; protected AudioClip[] vanillaLeafRustleSounds; protected List<GameObject> activeAttachments; protected AudioSource modCreatureEffects; protected AudioSource modCreatureVoice; protected MaterialAction LeafMaterialAction { get; } protected MaterialAction BodyMaterialAction { get; } protected MaterialAction LeftEyeMaterialAction { get; } protected MaterialAction RightEyeMaterialAction { get; } protected SkinnedMeshAction BodyMeshAction { get; } protected StaticMeshAction LeftEyeMeshAction { get; } protected StaticMeshAction RightEyeMeshAction { get; } protected AudioAction AngerAudioAction { get; } protected AudioAction SnapNeckAudioAction { get; } protected ArmatureAttachment[] Attachments { get; } protected AudioAction FoundAudioAction { get; } protected AudioAction HitBodyAudioAction { get; } protected AudioAction StunAudioAction { get; } protected AudioListAction LeafRustleAudioListAction { get; } protected bool VoiceSilenced => StunAudioAction.actionType != AudioActionType.RETAIN; protected bool EffectsSilenced => HitBodyAudioAction.actionType != AudioActionType.RETAIN; public BrackenSkinner(ArmatureAttachment[] attachments, MaterialAction leafMaterialAction, MaterialAction bodyMaterialAction, MaterialAction leftEyeMaterialAction, MaterialAction rightEyeMaterialAction, SkinnedMeshAction bodyMeshAction, StaticMeshAction leftEyeMeshAction, StaticMeshAction rightEyeMeshAction, AudioAction angerAudioAction, AudioAction snapNeckAudioAction, AudioAction foundAudioAction, AudioAction hitBodyAudioAction, AudioAction stunAudioAction, AudioListAction leafRustleAudioListAction) { LeafMaterialAction = leafMaterialAction; BodyMaterialAction = bodyMaterialAction; LeftEyeMaterialAction = leftEyeMaterialAction; RightEyeMaterialAction = rightEyeMaterialAction; BodyMeshAction = bodyMeshAction; LeftEyeMeshAction = leftEyeMeshAction; RightEyeMeshAction = rightEyeMeshAction; AngerAudioAction = angerAudioAction; SnapNeckAudioAction = snapNeckAudioAction; Attachments = attachments; FoundAudioAction = foundAudioAction; HitBodyAudioAction = hitBodyAudioAction; StunAudioAction = stunAudioAction; LeafRustleAudioListAction = leafRustleAudioListAction; } public override void Apply(GameObject enemy) { FlowermanAI component = enemy.GetComponent<FlowermanAI>(); Transform obj = enemy.transform.Find("FlowermanModel/AnimContainer"); object obj2; if (obj == null) { obj2 = null; } else { GameObject gameObject = ((Component)obj).gameObject; obj2 = ((gameObject != null) ? gameObject.GetComponent<PlayAudioAnimationEvent>() : null); } PlayAudioAnimationEvent val = (PlayAudioAnimationEvent)obj2; if (VoiceSilenced) { modCreatureVoice = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureVoice, "modVoice"); ((EnemyAI)component).creatureVoice.mute = true; } if (EffectsSilenced) { modCreatureEffects = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureSFX, "modEffects"); ((EnemyAI)component).creatureSFX.mute = true; if ((Object)(object)val != (Object)null) { val.audioToPlay = modCreatureEffects; } } ArmatureAttachment[] attachments = Attachments; Transform obj3 = enemy.transform.Find("FlowermanModel/LOD1"); object renderer; if (obj3 == null) { renderer = null; } else { GameObject gameObject2 = ((Component)obj3).gameObject; renderer = ((gameObject2 != null) ? gameObject2.GetComponent<SkinnedMeshRenderer>() : null); } activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer); MaterialAction leafMaterialAction = LeafMaterialAction; Transform obj4 = enemy.transform.Find("FlowermanModel/LOD1"); vanillaLeafMaterial = leafMaterialAction.Apply((obj4 != null) ? ((Component)obj4).gameObject.GetComponent<Renderer>() : null, 0); leafMaterialAction = BodyMaterialAction; Transform obj5 = enemy.transform.Find("FlowermanModel/LOD1"); vanillaBodyMaterial = leafMaterialAction.Apply((obj5 != null) ? ((Component)obj5).gameObject.GetComponent<Renderer>() : null, 1); leafMaterialAction = LeftEyeMaterialAction; Transform obj6 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye"); vanillaLeftEyeMaterial = leafMaterialAction.Apply((obj6 != null) ? ((Component)obj6).gameObject.GetComponent<Renderer>() : null, 0); leafMaterialAction = RightEyeMaterialAction; Transform obj7 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/RightEye"); vanillaRightEyeMaterial = leafMaterialAction.Apply((obj7 != null) ? ((Component)obj7).gameObject.GetComponent<Renderer>() : null, 0); SkinnedMeshAction bodyMeshAction = BodyMeshAction; SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1]; Transform obj8 = enemy.transform.Find("FlowermanModel/LOD1"); object obj9; if (obj8 == null) { obj9 = null; } else { GameObject gameObject3 = ((Component)obj8).gameObject; obj9 = ((gameObject3 != null) ? gameObject3.GetComponent<SkinnedMeshRenderer>() : null); } array[0] = (SkinnedMeshRenderer)obj9; bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("FlowermanModel/AnimContainer")); StaticMeshAction leftEyeMeshAction = LeftEyeMeshAction; Transform obj10 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye"); vanillaLeftEyeMesh = leftEyeMeshAction.Apply((obj10 != null) ? ((Component)obj10).gameObject.GetComponent<MeshFilter>() :