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 Extended Cosmetics Addon MelanieMelicious v1.0.1
ExtendedCosmetics.dll
Decompiled 4 days agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using MoreCompany.Cosmetics; using TooManyEmotes.Patches; using TooManyEmotes.UI; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ExtendedCosmetics")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("MelanieMelicious")] [assembly: AssemblyProduct("Extended Cosmetics")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MelMelExtendedCosmetics { [Serializable] public class CosmeticType { public GameObject cosmetic; public CosmeticTypes cosmeticType; public string typeByPathToBone; } public enum CosmeticTypes { Head, Chest, Waist, Hip, L_Shoulder, L_Upper_Arm, L_Lower_Arm, L_Hand, L_Thigh, L_Shin, L_Foot, R_Shoulder, R_Upper_Arm, R_Lower_Arm, R_Hand, R_Thigh, R_Shin, R_Foot, Other } internal class HarmonyPatches { [HarmonyPostfix] [HarmonyPatch(typeof(CosmeticApplication), "Awake")] private static void AddMelMelCosmeticManager(CosmeticApplication __instance) { ((Component)__instance).gameObject.AddComponent<MelMelCosmeticManager>(); } } public class MelMelCosmetic : MonoBehaviour { public CosmeticType[] cosmetics; internal static List<MelMelCosmetic> spawnedCosmetics = new List<MelMelCosmetic>(); private void Start() { //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) spawnedCosmetics.Add(this); MelMelCosmeticManager componentInParent = ((Component)this).GetComponentInParent<MelMelCosmeticManager>(); for (int i = 0; i < cosmetics.Length; i++) { if (cosmetics[i].cosmeticType != CosmeticTypes.Other && (Object)(object)componentInParent.cosmeticPoint[(int)cosmetics[i].cosmeticType] != (Object)null) { cosmetics[i].cosmetic.transform.SetParent(componentInParent.cosmeticPoint[(int)cosmetics[i].cosmeticType]); } else { if (!((Object)(object)componentInParent.spine != (Object)null) || !Object.op_Implicit((Object)(object)componentInParent.spine.Find(cosmetics[i].typeByPathToBone))) { continue; } cosmetics[i].cosmetic.transform.SetParent(componentInParent.spine.Find(cosmetics[i].typeByPathToBone)); } cosmetics[i].cosmetic.transform.localPosition = Vector3.zero; cosmetics[i].cosmetic.transform.localRotation = Quaternion.identity; cosmetics[i].cosmetic.transform.localScale = Vector3.one; } } private void OnDestroy() { spawnedCosmetics.Remove(this); CosmeticType[] array = cosmetics; foreach (CosmeticType cosmeticType in array) { Object.Destroy((Object)(object)cosmeticType.cosmetic); } } } public class MelMelCosmeticManager : MonoBehaviour { internal Transform spine; internal Transform[] cosmeticPoint = (Transform[])(object)new Transform[18]; private void Awake() { spine = ((Component)this).transform.Find("spine"); if ((Object)(object)spine == (Object)null) { spine = ((Component)this).transform; } cosmeticPoint[3] = spine.Find("spine.001"); cosmeticPoint[2] = cosmeticPoint[3].Find("spine.002"); cosmeticPoint[1] = cosmeticPoint[2].Find("spine.003"); cosmeticPoint[0] = cosmeticPoint[1].Find("spine.004"); cosmeticPoint[4] = cosmeticPoint[1].Find("shoulder.L"); cosmeticPoint[5] = cosmeticPoint[4].Find("arm.L_upper"); cosmeticPoint[6] = cosmeticPoint[5].Find("arm.L_lower"); cosmeticPoint[7] = cosmeticPoint[6].Find("hand.L"); cosmeticPoint[8] = spine.Find("thigh.L"); cosmeticPoint[9] = cosmeticPoint[8].Find("shin.L"); cosmeticPoint[10] = cosmeticPoint[9].Find("foot.L"); cosmeticPoint[11] = cosmeticPoint[1].Find("shoulder.R"); cosmeticPoint[12] = cosmeticPoint[11].Find("arm.R_upper"); cosmeticPoint[13] = cosmeticPoint[12].Find("arm.R_lower"); cosmeticPoint[14] = cosmeticPoint[13].Find("hand.R"); cosmeticPoint[15] = spine.Find("thigh.R"); cosmeticPoint[16] = cosmeticPoint[15].Find("shin.R"); cosmeticPoint[17] = cosmeticPoint[16].Find("foot.R"); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("MelanieMelicious.ExtendedCosmetics", "Melanie Melicious - Extended Cosmetics", "1.0.1")] internal class Plugin : BaseUnityPlugin { private const string GUID = "MelanieMelicious.ExtendedCosmetics"; private const string NAME = "Melanie Melicious - Extended Cosmetics"; private const string VERSION = "1.0.1"; private readonly Harmony harmony = new Harmony("MelanieMelicious.ExtendedCosmetics"); internal static ManualLogSource mls; private void Awake() { mls = Logger.CreateLogSource("MelanieMelicious - Pocket Room Library"); mls = ((BaseUnityPlugin)this).Logger; harmony.PatchAll(typeof(HarmonyPatches)); if (Chainloader.PluginInfos.ContainsKey("FlipMods.TooManyEmotes")) { harmony.PatchAll(typeof(TooManyEmotePatch)); } } } internal class TooManyEmotePatch { [HarmonyPostfix] [HarmonyPatch(typeof(ThirdPersonEmoteController), "OnStartCustomEmoteLocal")] private static void StartEmotePatch() { LayerChange(); } [HarmonyPostfix] [HarmonyPatch(typeof(ThirdPersonEmoteController), "OnStopCustomEmoteLocal")] private static void StopEmotePatch() { LayerChange(); } [HarmonyPostfix] [HarmonyPatch(typeof(AnimationPreviewer), "InitializePlayerCloneRenderObject")] private static void PlayerClonePatch() { LayerChange(); } private static void LayerChange() { if (ThirdPersonEmoteController.firstPersonEmotesEnabled) { return; } for (int i = 0; i < MelMelCosmetic.spawnedCosmetics.Count; i++) { int layer = ((Component)MelMelCosmetic.spawnedCosmetics[i]).gameObject.layer; for (int j = 0; j < MelMelCosmetic.spawnedCosmetics[i].cosmetics.Length; j++) { Transform[] componentsInChildren = MelMelCosmetic.spawnedCosmetics[i].cosmetics[j].cosmetic.GetComponentsInChildren<Transform>(); foreach (Transform val in componentsInChildren) { ((Component)val).gameObject.layer = layer; } } } } } }