using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text; using BW_Fellowship.Patches; using BepInEx; using BepInEx.Unity.IL2CPP; using BepInEx.Unity.IL2CPP.UnityEngine; using HarmonyLib; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using Il2CppSystem.IO; using Mirror; using UnityEngine; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("BW-Fellowship")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BW-Fellowship")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3da00a99-50d3-46fc-83f4-08ef12cb5d65")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace BW_Fellowship { [BepInPlugin("O1Ryan.BigFellowship", "BigFellowship", "1.0.0")] public class FellowshipBase : BasePlugin { private const string PLUGIN_GUID = "O1Ryan.BigFellowship"; private const string PLUGIN_NAME = "BigFellowship"; private const string PLUGIN_VERSION = "1.0.0"; private readonly Harmony harmony = new Harmony("O1Ryan.BigFellowship"); public static FellowshipBase Instance; public static string modFolder = Path.Combine(Paths.PluginPath, "O1Ryan-BigFellowship"); public static string modelsFolder = Path.Combine(modFolder, "Models"); public override void Load() { if (Instance == null) { Instance = this; } harmony.PatchAll(typeof(FellowshipBase)); harmony.PatchAll(typeof(PlayerCharacterPatch)); harmony.PatchAll(typeof(RingSpawnerPatch)); harmony.PatchAll(typeof(LooksMessageInterceptorPatch)); ((BasePlugin)this).Log.LogInfo((object)"Plugin BigFellowship is loaded!"); } } } namespace BW_Fellowship.Patches { [HarmonyPatch] internal static class LooksMessageInterceptorPatch { [HarmonyPrefix] [HarmonyPatch(typeof(TextChatSource), "AddMessage")] public static bool LooksInterceptorPatch(ref TextChatMessage message) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)("Message to display: " + message.message)); if (message.message.ToCharArray().ToList().FindAll((char x) => x == '_') .Count == 2) { ProcessLookChange(message.message.Split(new char[1] { '_' })); return false; } return true; } private static void ProcessLookChange(string[] args) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)("Change to: " + GeneralExtensions.Join((IEnumerable)args, (Func)null, ", "))); foreach (PlayerDataStruct playerStruct in PlayerCharacterPatch.playerStructs) { if (((NetworkBehaviour)playerStruct.pc).netId.ToString() == args[0]) { int.TryParse(args[1], out var result); ApplyBodyMode(playerStruct, result); int.TryParse(args[2], out var result2); ApplyCostume(playerStruct, result, result2); break; } } } public static void ApplyBodyMode(PlayerDataStruct ps, int mode) { switch (mode) { case 1: PlayerCharacterPatch.ChangeBodyToElf(ps); break; case 2: PlayerCharacterPatch.ChangeBodyToHobbit(ps); break; case 3: PlayerCharacterPatch.ChangeBodyToHuman(ps); break; case 4: PlayerCharacterPatch.ChangeBodyToDwarf(ps); break; } } public static void ApplyCostume(PlayerDataStruct ps, int mode, int costume) { PlayerCharacterPatch.DisableAllCostumes(ps); switch (mode) { case 1: PlayerCharacterPatch.cycleElfCostumes(ps, costume); break; case 2: PlayerCharacterPatch.cycleHobbitCostumes(ps, costume); break; case 3: PlayerCharacterPatch.cycleHumanCostumes(ps, costume); break; case 4: PlayerCharacterPatch.cycleDwarfCostumes(ps, costume); break; } } } public static class ObjMeshLoader { public static Mesh LoadObjFile(string filePath) { //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Expected O, but got Unknown //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) if (!File.Exists(filePath)) { Debug.LogError(Object.op_Implicit("[ObjLoader] File not found at: " + filePath)); return null; } List list = new List(); List list2 = new List(); List list3 = new List(); List list4 = new List(); List list5 = new List(); List list6 = new List(); List list7 = new List(); Dictionary dictionary = new Dictionary(); string[] array = File.ReadAllLines(filePath); string[] array2 = array; foreach (string text in array2) { string text2 = text.Trim(); if (string.IsNullOrEmpty(text2) || text2.StartsWith("#")) { continue; } string[] array3 = text2.Split(new char[1] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (array3.Length == 0) { continue; } switch (array3[0].ToLower()) { case "v": list.Add(new Vector3(float.Parse(array3[1], CultureInfo.InvariantCulture), float.Parse(array3[2], CultureInfo.InvariantCulture), float.Parse(array3[3], CultureInfo.InvariantCulture))); break; case "vt": list2.Add(new Vector2(float.Parse(array3[1], CultureInfo.InvariantCulture), float.Parse(array3[2], CultureInfo.InvariantCulture))); break; case "vn": list3.Add(new Vector3(float.Parse(array3[1], CultureInfo.InvariantCulture), float.Parse(array3[2], CultureInfo.InvariantCulture), float.Parse(array3[3], CultureInfo.InvariantCulture))); break; case "f": { for (int j = 1; j < 4; j++) { string text3 = array3[j]; if (!dictionary.TryGetValue(text3, out var value)) { string[] array4 = text3.Split(new char[1] { '/' }); int index = int.Parse(array4[0]) - 1; list4.Add(list[index]); if (array4.Length > 1 && !string.IsNullOrEmpty(array4[1])) { int index2 = int.Parse(array4[1]) - 1; list5.Add(list2[index2]); } else { list5.Add(Vector2.zero); } if (array4.Length > 2 && !string.IsNullOrEmpty(array4[2])) { int index3 = int.Parse(array4[2]) - 1; list6.Add(list3[index3]); } else { list6.Add(Vector3.up); } value = (dictionary[text3] = list4.Count - 1); } list7.Add(value); } break; } } } Mesh val = new Mesh(); ((Object)val).name = Path.GetFileNameWithoutExtension(filePath); val.vertices = new Il2CppStructArray(list4.ToArray()); val.triangles = new Il2CppStructArray(list7.ToArray()); val.uv = new Il2CppStructArray(list5.ToArray()); val.normals = new Il2CppStructArray(list6.ToArray()); val.RecalculateBounds(); return val; } } internal class PlayerData : NetworkBehaviour { public static void SendLooks(string id, int mode, int costume) { Enumerator enumerator = PlayerCharacter.allPlayerCharacters.GetEnumerator(); while (enumerator.MoveNext()) { PlayerCharacter current = enumerator.Current; string text = id + "_" + mode + "_" + costume; ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)("Sending looks: " + text)); bool flag = false; current.texter.CompleteInput(text, ref flag); } } } public class PlayerDataStruct { public PlayerCharacter pc; public Transform armature; public Dictionary meshes; public Vector3[] originalScales; public int costume; public List activeCostumes = new List(); public void FindArmature(PlayerCharacter character) { pc = character; armature = FindChild(((Component)((Component)character).transform.root).gameObject.transform, "Armature"); } public void FindMeshes() { //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) meshes = new Dictionary(); Transform[] array = (Transform[])(object)new Transform[7] { FindChild(armature, "head_mesh"), FindChild(armature, "torso_mesh"), FindChild(armature, "bottom_mesh"), FindChild(armature, "left_foot_mesh"), FindChild(armature, "right_foot_mesh"), FindChild(armature, "left_hand_mesh"), FindChild(armature, "right_hand_mesh") }; meshes.Add("head", array[0]); meshes.Add("torso", array[1]); meshes.Add("bottom", array[2]); meshes.Add("footL", array[3]); meshes.Add("footR", array[4]); meshes.Add("handL", array[5]); meshes.Add("handR", array[6]); originalScales = (Vector3[])(object)new Vector3[8] { armature.localScale, ((Component)meshes["head"]).transform.parent.localScale, ((Component)meshes["torso"]).transform.parent.localScale, ((Component)meshes["bottom"]).transform.parent.localScale, ((Component)meshes["footL"]).transform.parent.localScale, ((Component)meshes["footR"]).transform.parent.localScale, ((Component)meshes["handL"]).transform.parent.localScale, ((Component)meshes["handR"]).transform.parent.localScale }; } public static Transform FindChild(Transform parent, string childName) { Transform result = null; foreach (Transform componentsInChild in ((Component)parent).GetComponentsInChildren()) { if (((Object)componentsInChild).name == childName) { result = componentsInChild; break; } } return result; } } [HarmonyPatch] internal static class RingSpawnerPatch { public static bool alreadySpawned; [HarmonyPostfix] [HarmonyPatch(typeof(PlayerCharacter), "Start")] private static void ResetRingSpawn(PlayerCharacter __instance) { if (((NetworkBehaviour)__instance).isLocalPlayer) { alreadySpawned = false; } } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerCharacter), "LateUpdate")] private static void SpawnRingPatch(PlayerCharacter __instance) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) if (alreadySpawned) { return; } string filePath = Path.Combine(FellowshipBase.modelsFolder, "ring.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if ((Object)(object)val == (Object)null) { return; } GameObject val2 = GameObject.Find("FootyProp"); if ((Object)(object)val2 == (Object)null) { return; } MeshFilter componentInChildren = val2.GetComponentInChildren(); MeshRenderer componentInChildren2 = val2.GetComponentInChildren(); componentInChildren.mesh = val; if ((Object)(object)componentInChildren2 != (Object)null) { Material val3 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val3.color = new Color(1f, 0.88f, 0f, 1f); val3.SetFloat("_Metallic", 0.96f); val3.SetFloat("_Smoothness", 0.58f); ((Renderer)componentInChildren2).material = val3; GC.KeepAlive(val3); } Transform val4 = FindChild(val2.transform, "footy"); Collider val5 = null; foreach (Collider component in ((Component)val4).GetComponents()) { component.enabled = false; val5 = component; } CapsuleCollider val6 = ((Component)val4).gameObject.AddComponent(); val6.height = 0.5f; val6.radius = 0.1f; val6.direction = 0; ((Collider)val6).material = val5.material; CapsuleCollider val7 = ((Component)val4).gameObject.AddComponent(); val7.height = 0.5f; val7.radius = 0.1f; val7.direction = 2; ((Collider)val7).material = val5.material; Transform transform = ((Component)Object.Instantiate(val4, val4)).transform; ((Component)transform).GetComponent().sharedMesh = null; transform.localRotation = Quaternion.Euler(0f, 45f, 0f); alreadySpawned = true; } public static Transform FindChild(Transform parent, string childName) { Transform result = null; foreach (Transform componentsInChild in ((Component)parent).GetComponentsInChildren()) { if (((Object)componentsInChild).name == childName) { result = componentsInChild; break; } } return result; } } [HarmonyPatch] internal static class PlayerCharacterPatch { public static int mode = 3; public static int costume = 0; public static Vector3[] originalScales; public static Vector3 cameraPos; public static GameObject player; public static Transform armature; public static Dictionary meshes; public static List activeCostumes = new List(); public static bool wasTabPressed; public static bool changed; public static PlayerData myPlayerData; public static PlayerCharacter myPlayerChar; public static List playerStructs = new List(); public static PlayerDataStruct myPlayerStruct; [HarmonyPostfix] [HarmonyPatch(typeof(PlayerCharacter), "LateUpdate")] private static void resizeHeightPatch(PlayerCharacter __instance) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)__instance).isLocalPlayer) { return; } if (Input.GetKeyInt((KeyCode)49) && mode != 1) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)"ELF"); __instance.cameraTransform.localPosition = cameraPos + Vector3.up * 0.1f; ChangeBodyToElf(myPlayerStruct); mode = 1; changed = true; } else if (Input.GetKeyInt((KeyCode)50) && mode != 2) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)"HOBBIT"); __instance.cameraTransform.localPosition = cameraPos + Vector3.down * 0.35f; ChangeBodyToHobbit(myPlayerStruct); mode = 2; changed = true; } else if (Input.GetKeyInt((KeyCode)51) && mode != 3) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)"HUMAN"); __instance.cameraTransform.localPosition = cameraPos; ChangeBodyToHuman(myPlayerStruct); mode = 3; changed = true; } else if (Input.GetKeyInt((KeyCode)52) && mode != 4) { ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)"DWARF"); __instance.cameraTransform.localPosition = cameraPos + Vector3.down * 0.4f; ChangeBodyToDwarf(myPlayerStruct); mode = 4; changed = true; } if (Input.GetKeyInt((KeyCode)9) && !wasTabPressed) { costume++; costume %= 4; DisableAllCostumes(myPlayerStruct); switch (mode) { case 1: cycleElfCostumes(myPlayerStruct, costume); break; case 2: cycleHobbitCostumes(myPlayerStruct, costume); break; case 3: cycleHumanCostumes(myPlayerStruct, costume); break; case 4: cycleDwarfCostumes(myPlayerStruct, costume); break; } changed = true; } if (changed) { changed = false; ((BasePlugin)FellowshipBase.Instance).Log.LogInfo((object)"REFRESH"); PlayerData.SendLooks(((NetworkBehaviour)__instance).netId.ToString(), mode, costume); } wasTabPressed = Input.GetKeyInt((KeyCode)9); } public static void ChangeBodyToElf(PlayerDataStruct ps) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) ps.armature.localScale = new Vector3(ps.originalScales[0].x * 0.9f, ps.originalScales[0].y * 0.9f, ps.originalScales[0].z * 1.2f); ((Component)ps.meshes["head"]).transform.parent.localScale = ps.originalScales[1] * 0.85f; ((Component)ps.meshes["torso"]).transform.parent.localScale = ps.originalScales[2] * 1f; ((Component)ps.meshes["bottom"]).transform.parent.localScale = ps.originalScales[3] * 0.85f; ((Component)ps.meshes["footL"]).transform.parent.localScale = ps.originalScales[4] * 0.65f; ((Component)ps.meshes["footR"]).transform.parent.localScale = ps.originalScales[5] * 0.65f; ((Component)ps.meshes["handL"]).transform.parent.localScale = ps.originalScales[6] * 1f; ((Component)ps.meshes["handR"]).transform.parent.localScale = ps.originalScales[7] * 1f; ps.costume = 0; } public static void ChangeBodyToHobbit(PlayerDataStruct ps) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) ps.armature.localScale = new Vector3(ps.originalScales[0].x * 0.75f, ps.originalScales[0].y * 0.75f, ps.originalScales[0].z * 0.75f); ((Component)ps.meshes["head"]).transform.parent.localScale = ps.originalScales[1] * 1f; ((Component)ps.meshes["torso"]).transform.parent.localScale = ps.originalScales[2] * 1f; ((Component)ps.meshes["bottom"]).transform.parent.localScale = ps.originalScales[3] * 1.2f; ((Component)ps.meshes["footL"]).transform.parent.localScale = ps.originalScales[4] * 1.85f; ((Component)ps.meshes["footR"]).transform.parent.localScale = ps.originalScales[5] * 1.85f; ((Component)ps.meshes["handL"]).transform.parent.localScale = ps.originalScales[6] * 1f; ((Component)ps.meshes["handR"]).transform.parent.localScale = ps.originalScales[7] * 1f; ps.costume = 0; } public static void ChangeBodyToHuman(PlayerDataStruct ps) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) ps.armature.localScale = new Vector3(ps.originalScales[0].x * 1f, ps.originalScales[0].y * 1f, ps.originalScales[0].z * 1f); ((Component)ps.meshes["head"]).transform.parent.localScale = ps.originalScales[1] * 1f; ((Component)ps.meshes["torso"]).transform.parent.localScale = ps.originalScales[2] * 1f; ((Component)ps.meshes["bottom"]).transform.parent.localScale = ps.originalScales[3] * 1f; ((Component)ps.meshes["footL"]).transform.parent.localScale = ps.originalScales[4] * 1f; ((Component)ps.meshes["footR"]).transform.parent.localScale = ps.originalScales[5] * 1f; ((Component)ps.meshes["handL"]).transform.parent.localScale = ps.originalScales[6] * 1f; ((Component)ps.meshes["handR"]).transform.parent.localScale = ps.originalScales[7] * 1f; ps.costume = 0; } public static void ChangeBodyToDwarf(PlayerDataStruct ps) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) ps.armature.localScale = new Vector3(ps.originalScales[0].x * 0.8f, ps.originalScales[0].y * 0.8f, ps.originalScales[0].z * 0.7f); ((Component)ps.meshes["head"]).transform.parent.localScale = ps.originalScales[1] * 1f; ((Component)ps.meshes["torso"]).transform.parent.localScale = ps.originalScales[2] * 1.2f; ((Component)ps.meshes["bottom"]).transform.parent.localScale = ps.originalScales[3] * 1.1f; ((Component)ps.meshes["footL"]).transform.parent.localScale = ps.originalScales[4] * 1.5f; ((Component)ps.meshes["footR"]).transform.parent.localScale = ps.originalScales[5] * 1.5f; ((Component)ps.meshes["handL"]).transform.parent.localScale = ps.originalScales[6] * 1.3f; ((Component)ps.meshes["handR"]).transform.parent.localScale = ps.originalScales[7] * 1.3f; ps.costume = 0; } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerCharacter), "Start")] private static void InitializeDataPatch(PlayerCharacter __instance) { //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)__instance).isLocalPlayer) { playerStructs = new List(); } PlayerDataStruct playerDataStruct = new PlayerDataStruct(); playerDataStruct.FindArmature(__instance); playerDataStruct.FindMeshes(); playerStructs.Add(playerDataStruct); Enumerator enumerator = PlayerCharacter.allPlayerCharacters.GetEnumerator(); while (enumerator.MoveNext()) { PlayerCharacter pc = enumerator.Current; if (playerStructs.Find((PlayerDataStruct x) => (Object)(object)x.pc == (Object)(object)pc) == null) { PlayerDataStruct playerDataStruct2 = new PlayerDataStruct(); playerDataStruct2.FindArmature(pc); playerDataStruct2.FindMeshes(); playerStructs.Add(playerDataStruct2); } } if (!((NetworkBehaviour)__instance).isLocalPlayer) { return; } myPlayerStruct = playerDataStruct; player = ((Component)((Component)__instance).transform.root).gameObject; cameraPos = __instance.cameraTransform.localPosition; Transform val = Object.Instantiate(GameObject.Find("MirrorCamera").transform.parent, __instance.cameraTransform.position + __instance.cameraTransform.forward * 2f, Quaternion.identity); val.LookAt(__instance.cameraTransform.position); foreach (Renderer componentsInChild in ((Component)val).GetComponentsInChildren()) { componentsInChild.enabled = true; } myPlayerData = new PlayerData(); myPlayerChar = __instance; PlayerData.SendLooks(((NetworkBehaviour)__instance).netId.ToString(), mode, costume); } public static void DisableAllCostumes(PlayerDataStruct ps) { if (ps.activeCostumes.Count <= 0) { return; } foreach (GameObject costume in ps.activeCostumes) { List list = ((IEnumerable)ps.pc.looks.headRenderers).ToList(); list.RemoveAll((LooksRenderer x) => (Object)(object)((Component)x.renderer).gameObject == (Object)(object)costume); ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); List list2 = ((IEnumerable)ps.pc.looks.torsoRenderers).ToList(); list2.RemoveAll((LooksRenderer x) => (Object)(object)((Component)x.renderer).gameObject == (Object)(object)costume); ps.pc.looks.torsoRenderers = new Il2CppReferenceArray(list2.ToArray()); List list3 = ((IEnumerable)ps.pc.looks.legsRenderers).ToList(); list3.RemoveAll((LooksRenderer x) => (Object)(object)((Component)x.renderer).gameObject == (Object)(object)costume); ps.pc.looks.legsRenderers = new Il2CppReferenceArray(list3.ToArray()); Object.Destroy((Object)(object)costume); } } public static void cycleHobbitCostumes(PlayerDataStruct ps, int idx) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) switch (idx) { case 0: EnableCloak(ps, Color.darkOliveGreen); break; case 1: EnableCloak(ps, Color.saddleBrown); break; case 2: EnableCloak(ps, Color.tan); EnableSmokePipe(ps, Color.saddleBrown); break; case 3: EnableCloak(ps, Color.maroon); EnableSmokePipe(ps, Color.saddleBrown); break; } } public static void EnableCloak(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown //IL_0186: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "cloak.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("Cloak"); val2.transform.parent = ((Component)ps.meshes["torso"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray torsoRenderers = ps.pc.looks.torsoRenderers; List list = ((IEnumerable)torsoRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.torsoRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void EnableSmokePipe(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "smoke-pipe.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("SmokePipe"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.35f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void cycleElfCostumes(PlayerDataStruct ps, int idx) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) switch (idx) { case 0: EnableEars(ps); EnableElfCloak(ps, Color.darkOliveGreen); break; case 1: EnableEars(ps); EnableElfCloak(ps, Color.darkSeaGreen); break; case 2: EnableEars(ps); EnableElfCloak(ps, Color.floralWhite); break; case 3: EnableEars(ps); EnableElfCloak(ps, Color.maroon); break; } } public static void EnableEars(PlayerDataStruct ps) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "ears.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("Ears"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.2f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = Color.sandyBrown; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void EnableElfCloak(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown //IL_0186: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "elf-cloak.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("ElfCloak"); val2.transform.parent = ((Component)ps.meshes["torso"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray torsoRenderers = ps.pc.looks.torsoRenderers; List list = ((IEnumerable)torsoRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.torsoRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void cycleHumanCostumes(PlayerDataStruct ps, int idx) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) switch (idx) { case 0: break; case 1: EnableWizardHat(ps, Color.darkSlateBlue); EnableLongBeard(ps, Color.floralWhite); break; case 2: EnableWizardHat(ps, Color.darkSlateGray); EnableLongBeard(ps, Color.floralWhite); EnableSmokePipe(ps, Color.saddleBrown); break; case 3: EnableWizardHat(ps, Color.floralWhite); EnableLongBeard(ps, Color.whiteSmoke); EnableSmokePipe(ps, Color.saddleBrown); break; } } public static void EnableWizardHat(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Expected O, but got Unknown //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "wizard-hat.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("WizardHat"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.55f; Transform transform2 = val2.transform; transform2.position += Vector3.up * 0.08f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void EnableLongBeard(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "long-beard.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("LongBeard"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.35f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void cycleDwarfCostumes(PlayerDataStruct ps, int idx) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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) switch (idx) { case 0: EnableDwarfHelm(ps, Color.darkGray); break; case 1: EnableDwarfHelm(ps, Color.darkGray); EnableMustache(ps, Color.saddleBrown); break; case 2: EnableDwarfHelm(ps, Color.darkGray); EnableMustache(ps, Color.saddleBrown); EnableBeard(ps, Color.saddleBrown); break; case 3: EnableDwarfHelm(ps, Color.darkGoldenRod); EnableMustache(ps, Color.floralWhite); EnableBeard(ps, Color.floralWhite); break; } } public static void EnableDwarfHelm(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "dwarf-helm.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("DwarfHelm"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.35f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void EnableMustache(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "mustache.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("Mustache"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.35f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static void EnableBeard(PlayerDataStruct ps, Color color) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) string filePath = Path.Combine(FellowshipBase.modelsFolder, "beard.obj"); Mesh val = ObjMeshLoader.LoadObjFile(filePath); if (!((Object)(object)val == (Object)null)) { GameObject val2 = new GameObject("Beard"); val2.transform.parent = ((Component)ps.meshes["head"]).transform.parent; val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.Euler(Vector3.zero); Transform transform = val2.transform; transform.localScale *= 0.35f; val2.layer = LayerMask.NameToLayer("Player"); MeshFilter val3 = val2.AddComponent(); MeshRenderer val4 = val2.AddComponent(); ((Renderer)val4).castShadows = false; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; val3.sharedMesh = val; LooksRenderer val5 = new LooksRenderer(); val5.renderer = (Renderer)(object)val4; val5.SetLocal(true); val5.remote = true; if (!((NetworkBehaviour)ps.pc).isLocalPlayer) { val5.SetRemote(); } Il2CppReferenceArray headRenderers = ps.pc.looks.headRenderers; List list = ((IEnumerable)headRenderers).ToList(); if (list[list.Count - 1] == null) { list[list.Count - 1] = val5; } else { list.Add(val5); } ps.pc.looks.headRenderers = new Il2CppReferenceArray(list.ToArray()); GC.KeepAlive(val5); Material val6 = new Material(Shader.Find("Universal Render Pipeline/Lit")); val6.color = color; val6.SetFloat("_Metallic", 0f); val6.SetFloat("_Smoothness", 0f); ((Renderer)val4).material = val6; GC.KeepAlive(val6); ps.activeCostumes.Add(val2); } } public static Transform FindChild(Transform parent, string childName) { Transform result = null; foreach (Transform componentsInChild in ((Component)parent).GetComponentsInChildren()) { if (((Object)componentsInChild).name == childName) { result = componentsInChild; break; } } return result; } public static string AllLayersToString() { string[] value = (from i in Enumerable.Range(0, 32) select LayerMask.LayerToName(i) into name where !string.IsNullOrEmpty(name) select name).ToArray(); return string.Join(", ", value); } public static string HierarchyToString(GameObject target, string indent = "") { StringBuilder stringBuilder = new StringBuilder(); GetHierarchyString(target.transform, indent, stringBuilder, 0); return stringBuilder.ToString(); } private static void GetHierarchyString(Transform current, string indent, StringBuilder sb, int level) { sb.AppendLine(indent + "└── " + ((Object)current).name); int num = level + 1; if (num >= 3) { return; } foreach (Transform componentsInChild in ((Component)current).GetComponentsInChildren()) { GetHierarchyString(componentsInChild, indent + " ", sb, num); } } } }