using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using DynamicSkinBuilder;
using MonoMod.RuntimeDetour;
using MonoMod.RuntimeDetour.HookGen;
using RoR2;
using RuneFoxMods;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Rendering;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
namespace KommooLoader
{
[BepInPlugin("com.TailLover.KommooLoader", "KommooLoader", "0.5.0")]
public class KommooLoaderPlugin : BaseUnityPlugin
{
private class Modification
{
public string prefabpath;
public string bodyname;
public string parentname;
public GameObject prefab;
public bool affectsbasemodel;
public DynamicBoneData dynamicBoneData;
public string parentSkinToken;
public int boneIndex;
public int boneCount;
public GameObject instance;
public GameObject inst_armature;
public DynamicBone inst_dynamicBone;
public List<DynamicBoneCollider> inst_DB_colliders = new List<DynamicBoneCollider>();
public Modification(string PrefabPath, string ParentName, string BodyName, string ParentSkinToken, bool AffectsBaseModel, AssetBundle assetBundle)
{
bodyname = BodyName;
prefabpath = PrefabPath;
parentname = ParentName;
parentSkinToken = ParentSkinToken;
affectsbasemodel = AffectsBaseModel;
prefab = assetBundle.LoadAsset<GameObject>(prefabpath);
if ((Object)(object)prefab == (Object)null)
{
Debug.LogWarning((object)("Asset at " + PrefabPath + " was not loaded"));
}
}
}
private class AppliedModifications
{
public Stack<Modification> BaseModelModifications = new Stack<Modification>();
public List<Modification> OtherModifications = new List<Modification>();
}
private class DynamicBoneData
{
public string m_Root;
public float m_Damping;
public AnimationCurve m_DampingDistrib;
public float m_Elasticity;
public AnimationCurve m_ElasticityDistrib;
public float m_Stiffness;
public AnimationCurve m_StiffnessDistrib;
public float m_Inert;
public AnimationCurve m_InertDistrib;
public float m_Radius;
public AnimationCurve m_RadiusDistrib;
public float m_EndLength;
public Vector3 m_EndOffset;
public Vector3 m_Gravity;
public Vector3 m_Force;
public List<DynamicBoneColliderData> m_Colliders;
public List<string> m_Exclusions;
public FreezeAxis m_FreezeAxis;
public DynamicBoneData(string root, float damping, AnimationCurve damping_dist, float elasticity, AnimationCurve elasticity_dist, float stiffness, AnimationCurve stiffness_dist, float inert, AnimationCurve inert_dist, float radius, AnimationCurve radius_dist, float end_length, Vector3 end_offset, Vector3 gravity, Vector3 force, List<DynamicBoneColliderData> colliders, List<string> exclusions, FreezeAxis freeze_axis)
{
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: 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_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
m_Root = root;
m_Damping = damping;
m_DampingDistrib = damping_dist;
m_Elasticity = elasticity;
m_ElasticityDistrib = elasticity_dist;
m_Stiffness = stiffness;
m_StiffnessDistrib = stiffness_dist;
m_Inert = inert;
m_InertDistrib = inert_dist;
m_Radius = radius;
m_RadiusDistrib = radius_dist;
m_EndLength = end_length;
m_EndOffset = end_offset;
m_Gravity = gravity;
m_Force = force;
m_Colliders = colliders;
m_Exclusions = exclusions;
m_FreezeAxis = freeze_axis;
}
}
private class DynamicBoneColliderData
{
public string m_parent_name;
public Direction m_Direction;
public Vector3 m_Center;
public Bound m_Bound;
public float m_Radius;
public float m_Height;
public DynamicBoneColliderData(string parent_name, Direction direction, Vector3 Center, Bound bound, float radius, float heaight)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
m_parent_name = parent_name;
m_Direction = direction;
m_Center = Center;
m_Bound = bound;
m_Radius = radius;
m_Height = heaight;
}
}
private Modification KommoLoaderSkinarmplate1_lModification;
private Modification KommoLoaderSkinarmplate1_rModification;
private Modification KommoLoaderSkinarmplate2_lModification;
private Modification KommoLoaderSkinarmplate2_rModification;
private Modification KommoLoaderSkinarmplate3_lModification;
private Modification KommoLoaderSkinarmplate3_rModification;
private Modification KommoLoaderSkinarmplate4_lModification;
private Modification KommoLoaderSkinarmplate4_rModification;
private Modification KommoLoaderSkinChimes1_1Modification;
private Modification KommoLoaderSkinChimes2_1Modification;
private Modification KommoLoaderSkinChimes3_1Modification;
private Modification KommoLoaderSkinChimes4_1Modification;
private Modification KommoLoaderSkinFluffCRootModification;
private Modification KommoLoaderSkinFluffLRootModification;
private Modification KommoLoaderSkinFluffRRootModification;
private Modification KommoLoaderSkinHeadChimeCModification;
private Modification KommoLoaderSkinHeadChimeLModification;
private Modification KommoLoaderSkinHeadChimeRModification;
private Modification KommoLoaderSkinTail1Modification;
private Modification ShinyKommoLoaderSkinarmplate1_lModification;
private Modification ShinyKommoLoaderSkinarmplate1_rModification;
private Modification ShinyKommoLoaderSkinarmplate2_lModification;
private Modification ShinyKommoLoaderSkinarmplate2_rModification;
private Modification ShinyKommoLoaderSkinarmplate3_lModification;
private Modification ShinyKommoLoaderSkinarmplate3_rModification;
private Modification ShinyKommoLoaderSkinarmplate4_lModification;
private Modification ShinyKommoLoaderSkinarmplate4_rModification;
private Modification ShinyKommoLoaderSkinChimes1_1Modification;
private Modification ShinyKommoLoaderSkinChimes2_1Modification;
private Modification ShinyKommoLoaderSkinChimes3_1Modification;
private Modification ShinyKommoLoaderSkinChimes4_1Modification;
private Modification ShinyKommoLoaderSkinFluffCRootModification;
private Modification ShinyKommoLoaderSkinFluffLRootModification;
private Modification ShinyKommoLoaderSkinFluffRRootModification;
private Modification ShinyKommoLoaderSkinHeadChimeCModification;
private Modification ShinyKommoLoaderSkinHeadChimeLModification;
private Modification ShinyKommoLoaderSkinHeadChimeRModification;
private Modification ShinyKommoLoaderSkinTail1Modification;
public static Dictionary<string, SkinDef> SkinDefs = new Dictionary<string, SkinDef>();
private static GameObject LastModelObject;
private static List<Modification> ModificationList = new List<Modification>();
private static Dictionary<GameObject, AppliedModifications> ModifiedObjects = new Dictionary<GameObject, AppliedModifications>();
private static AssetBundle assetBundle;
private static readonly List<Material> materialsWithRoRShader = new List<Material>();
internal static KommooLoaderPlugin Instance { get; private set; }
internal static ManualLogSource InstanceLogger
{
get
{
KommooLoaderPlugin instance = Instance;
return (instance != null) ? ((BaseUnityPlugin)instance).Logger : null;
}
}
private static void SkinDefApply(Action<SkinDef, GameObject> orig, SkinDef self, GameObject modelObject)
{
orig(self, modelObject);
RemoveInvalidModelObjects();
ModifiedObjects.TryGetValue(modelObject, out var value);
try
{
if (!SkinDefs.TryGetValue(self.nameToken, out var _))
{
if (value != null)
{
ClearSkinModifications(LastModelObject, value);
}
}
else if (value == null)
{
AppliedModifications appliedModifications = new AppliedModifications();
ModifiedObjects.Add(modelObject, appliedModifications);
ApplySkinModifications(self, modelObject, appliedModifications);
}
}
catch (Exception ex)
{
InstanceLogger.LogWarning((object)"An error occured while adding accessories to a skin");
InstanceLogger.LogError((object)ex);
}
}
private static void RemoveInvalidModelObjects()
{
foreach (GameObject item in ModifiedObjects.Keys.Where((GameObject el) => !Object.op_Implicit((Object)(object)el)).ToList())
{
ModifiedObjects.Remove(item);
}
}
private static void ClearSkinModifications(GameObject modelObject, AppliedModifications modifications)
{
while (modifications.BaseModelModifications.Count != 0)
{
Modification modification = modifications.BaseModelModifications.Pop();
clearModification(modification, modelObject, modifications);
}
while (modifications.OtherModifications.Count != 0)
{
clearModification(modifications.OtherModifications[0], modelObject, modifications);
}
ModifiedObjects.Remove(modelObject);
}
private static void ApplySkinModifications(SkinDef skindef, GameObject modelObject, AppliedModifications modifications)
{
CharacterModel component = modelObject.GetComponent<CharacterModel>();
LastModelObject = modelObject;
foreach (Modification modification in ModificationList)
{
if (modification.parentSkinToken == skindef.nameToken)
{
ApplyModification(modelObject, component, modification, modifications);
}
}
}
private static void ApplyModification(GameObject modelObject, CharacterModel characterModel, Modification modification, AppliedModifications modifications)
{
//IL_043e: Unknown result type (might be due to invalid IL or missing references)
//IL_0460: Unknown result type (might be due to invalid IL or missing references)
//IL_0473: Unknown result type (might be due to invalid IL or missing references)
//IL_0475: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_031f: Unknown result type (might be due to invalid IL or missing references)
//IL_0324: Unknown result type (might be due to invalid IL or missing references)
//IL_0331: Unknown result type (might be due to invalid IL or missing references)
//IL_0336: Unknown result type (might be due to invalid IL or missing references)
//IL_0343: Unknown result type (might be due to invalid IL or missing references)
//IL_0348: Unknown result type (might be due to invalid IL or missing references)
//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
//IL_03de: Unknown result type (might be due to invalid IL or missing references)
string bodyname = modification.bodyname;
string parentname = modification.parentname;
Transform val = Utils.FindChildInTree(modelObject.transform, parentname);
GameObject val2;
if (modification.affectsbasemodel)
{
val2 = Object.Instantiate<GameObject>(modification.prefab, val, false);
((Object)val2).name = Utils.RemoveCloneNaming(((Object)val2).name);
modification.instance = val2;
modification.inst_armature = val2;
SkinnedMeshRenderer[] baseSkinRenderers = DynamicSkinHelpers.GetBaseSkinRenderers(modelObject);
List<Transform> list = baseSkinRenderers[0].bones.ToList();
int num = DynamicSkinHelpers.FindBoneIndex2(val, list);
Transform[] array = DynamicSkinHelpers.BoneArrayBuilder(modification.instance.transform);
list.InsertRange(num, array);
modification.boneIndex = num;
modification.boneCount = array.Length;
SkinnedMeshRenderer[] array2 = baseSkinRenderers;
foreach (SkinnedMeshRenderer val3 in array2)
{
val3.bones = list.ToArray();
}
modifications.BaseModelModifications.Push(modification);
}
else
{
val2 = Object.Instantiate<GameObject>(modification.prefab, modelObject.transform, false);
((Object)val2).name = Utils.RemoveCloneNaming(((Object)val2).name);
modification.instance = val2;
Transform armature = DynamicSkinHelpers.GetArmature(val2);
((Component)armature).transform.SetParent(val, false);
modification.inst_armature = ((Component)armature).gameObject;
}
modification.instance = val2;
if (modification.dynamicBoneData != null)
{
DynamicBone val4 = (modification.inst_dynamicBone = modification.instance.AddComponent<DynamicBone>());
List<DynamicBoneCollider> list2 = new List<DynamicBoneCollider>();
foreach (DynamicBoneColliderData collider in modification.dynamicBoneData.m_Colliders)
{
Transform val5 = Utils.FindChildInTree(modelObject.transform, collider.m_parent_name);
DynamicBoneCollider val6 = ((Component)val5).gameObject.AddComponent<DynamicBoneCollider>();
val6.m_Direction = collider.m_Direction;
val6.m_Center = collider.m_Center;
val6.m_Bound = collider.m_Bound;
val6.m_Radius = collider.m_Radius;
val6.m_Height = collider.m_Height;
list2.Add(val6);
}
modification.inst_DB_colliders = list2;
Transform root = (val4.m_Root = Utils.FindChildInTree(modification.inst_armature.transform, modification.dynamicBoneData.m_Root));
val4.m_Damping = modification.dynamicBoneData.m_Damping;
val4.m_DampingDistrib = modification.dynamicBoneData.m_DampingDistrib;
val4.m_Elasticity = modification.dynamicBoneData.m_Elasticity;
val4.m_ElasticityDistrib = modification.dynamicBoneData.m_ElasticityDistrib;
val4.m_Stiffness = modification.dynamicBoneData.m_Stiffness;
val4.m_StiffnessDistrib = modification.dynamicBoneData.m_StiffnessDistrib;
val4.m_Inert = modification.dynamicBoneData.m_Inert;
val4.m_InertDistrib = modification.dynamicBoneData.m_InertDistrib;
val4.m_Radius = modification.dynamicBoneData.m_Radius;
val4.m_RadiusDistrib = modification.dynamicBoneData.m_RadiusDistrib;
val4.m_EndLength = modification.dynamicBoneData.m_EndLength;
val4.m_EndOffset = modification.dynamicBoneData.m_EndOffset;
val4.m_Gravity = modification.dynamicBoneData.m_Gravity;
val4.m_Force = modification.dynamicBoneData.m_Force;
val4.m_Colliders = list2;
val4.m_Exclusions = new List<Transform>();
foreach (string exclusion in modification.dynamicBoneData.m_Exclusions)
{
Transform val7 = Utils.FindChildInTree(root, exclusion);
if ((Object)(object)val7 != (Object)null)
{
val4.m_Exclusions.Add(val7);
}
else
{
Debug.LogWarning((object)"Tried to exclude a transform that could not be found");
}
}
val4.m_FreezeAxis = modification.dynamicBoneData.m_FreezeAxis;
}
SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(true);
Array.Resize(ref characterModel.baseRendererInfos, characterModel.baseRendererInfos.Length + componentsInChildren.Length);
if (componentsInChildren.Length != 0)
{
int num2 = componentsInChildren.Length;
SkinnedMeshRenderer[] array3 = componentsInChildren;
foreach (SkinnedMeshRenderer val8 in array3)
{
characterModel.baseRendererInfos[characterModel.baseRendererInfos.Length - num2] = new RendererInfo
{
renderer = (Renderer)(object)componentsInChildren[^num2],
ignoreOverlays = false,
defaultShadowCastingMode = (ShadowCastingMode)1,
defaultMaterial = ((Renderer)val8).sharedMaterial
};
num2--;
}
}
modifications.OtherModifications.Add(modification);
}
private static void clearModification(Modification modification, GameObject modelObject, AppliedModifications modifications)
{
if (modification.inst_DB_colliders != null)
{
foreach (DynamicBoneCollider inst_DB_collider in modification.inst_DB_colliders)
{
Object.Destroy((Object)(object)inst_DB_collider);
}
}
if (modification.affectsbasemodel)
{
SkinnedMeshRenderer[] baseSkinRenderers = DynamicSkinHelpers.GetBaseSkinRenderers(modelObject);
List<Transform> list = baseSkinRenderers[0].bones.ToList();
list.RemoveRange(modification.boneIndex, modification.boneCount);
SkinnedMeshRenderer[] array = baseSkinRenderers;
foreach (SkinnedMeshRenderer val in array)
{
val.bones = list.ToArray();
}
}
Object.Destroy((Object)(object)modifications.OtherModifications[0].inst_dynamicBone);
Object.Destroy((Object)(object)modifications.OtherModifications[0].inst_armature);
Object.Destroy((Object)(object)modifications.OtherModifications[0].instance);
if (!modifications.OtherModifications.Remove(modification))
{
InstanceLogger.LogError((object)"Skin Modification was not removed");
}
}
private void Start()
{
Instance = this;
BeforeStart();
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("KommooLoader.tailloverkommooloader"))
{
assetBundle = AssetBundle.LoadFromStream(stream);
}
((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)BodyCatalogInit);
HookEndpointManager.Add((MethodBase)typeof(Language).GetMethod("LoadStrings"), (Delegate)new Action<Action<Language>, Language>(LanguageLoadStrings));
ReplaceShaders();
AfterStart();
}
private void BeforeStart()
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
Instance = this;
new Hook((MethodBase)typeof(SkinDef).GetMethod("Apply"), (Delegate)new Action<Action<SkinDef, GameObject>, SkinDef, GameObject>(SkinDefApply)).Apply();
}
private void AfterStart()
{
//IL_05bc: Unknown result type (might be due to invalid IL or missing references)
//IL_05d0: Unknown result type (might be due to invalid IL or missing references)
//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
//IL_0604: Unknown result type (might be due to invalid IL or missing references)
//IL_066c: Unknown result type (might be due to invalid IL or missing references)
//IL_0680: Unknown result type (might be due to invalid IL or missing references)
//IL_0694: Unknown result type (might be due to invalid IL or missing references)
//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
//IL_071c: Unknown result type (might be due to invalid IL or missing references)
//IL_0730: Unknown result type (might be due to invalid IL or missing references)
//IL_0744: Unknown result type (might be due to invalid IL or missing references)
//IL_0764: Unknown result type (might be due to invalid IL or missing references)
//IL_07cc: Unknown result type (might be due to invalid IL or missing references)
//IL_07e0: Unknown result type (might be due to invalid IL or missing references)
//IL_07f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0814: Unknown result type (might be due to invalid IL or missing references)
//IL_087c: Unknown result type (might be due to invalid IL or missing references)
//IL_0890: Unknown result type (might be due to invalid IL or missing references)
//IL_08a4: Unknown result type (might be due to invalid IL or missing references)
//IL_08c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0938: Unknown result type (might be due to invalid IL or missing references)
//IL_094c: Unknown result type (might be due to invalid IL or missing references)
//IL_0960: Unknown result type (might be due to invalid IL or missing references)
//IL_0980: Unknown result type (might be due to invalid IL or missing references)
//IL_09e8: Unknown result type (might be due to invalid IL or missing references)
//IL_09fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0a10: Unknown result type (might be due to invalid IL or missing references)
//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
//IL_0aa4: Unknown result type (might be due to invalid IL or missing references)
//IL_0ab8: Unknown result type (might be due to invalid IL or missing references)
//IL_0acc: Unknown result type (might be due to invalid IL or missing references)
//IL_0aec: Unknown result type (might be due to invalid IL or missing references)
//IL_0b54: Unknown result type (might be due to invalid IL or missing references)
//IL_0b68: Unknown result type (might be due to invalid IL or missing references)
//IL_0b7c: Unknown result type (might be due to invalid IL or missing references)
//IL_0bd3: Unknown result type (might be due to invalid IL or missing references)
//IL_0be7: Unknown result type (might be due to invalid IL or missing references)
//IL_0bfb: Unknown result type (might be due to invalid IL or missing references)
//IL_0c52: Unknown result type (might be due to invalid IL or missing references)
//IL_0c66: Unknown result type (might be due to invalid IL or missing references)
//IL_0c7a: Unknown result type (might be due to invalid IL or missing references)
//IL_0cd1: Unknown result type (might be due to invalid IL or missing references)
//IL_0ce5: Unknown result type (might be due to invalid IL or missing references)
//IL_0cf9: Unknown result type (might be due to invalid IL or missing references)
//IL_0d50: Unknown result type (might be due to invalid IL or missing references)
//IL_0d64: Unknown result type (might be due to invalid IL or missing references)
//IL_0d78: Unknown result type (might be due to invalid IL or missing references)
//IL_0dcf: Unknown result type (might be due to invalid IL or missing references)
//IL_0de3: Unknown result type (might be due to invalid IL or missing references)
//IL_0df7: Unknown result type (might be due to invalid IL or missing references)
//IL_0e4e: Unknown result type (might be due to invalid IL or missing references)
//IL_0e62: Unknown result type (might be due to invalid IL or missing references)
//IL_0e76: Unknown result type (might be due to invalid IL or missing references)
//IL_0ecd: Unknown result type (might be due to invalid IL or missing references)
//IL_0ee1: Unknown result type (might be due to invalid IL or missing references)
//IL_0ef5: Unknown result type (might be due to invalid IL or missing references)
//IL_0f4c: Unknown result type (might be due to invalid IL or missing references)
//IL_0f60: Unknown result type (might be due to invalid IL or missing references)
//IL_0f74: Unknown result type (might be due to invalid IL or missing references)
//IL_0fcb: Unknown result type (might be due to invalid IL or missing references)
//IL_0fdf: Unknown result type (might be due to invalid IL or missing references)
//IL_0ff3: Unknown result type (might be due to invalid IL or missing references)
//IL_104a: Unknown result type (might be due to invalid IL or missing references)
//IL_105e: Unknown result type (might be due to invalid IL or missing references)
//IL_1072: Unknown result type (might be due to invalid IL or missing references)
//IL_10c9: Unknown result type (might be due to invalid IL or missing references)
//IL_10dd: Unknown result type (might be due to invalid IL or missing references)
//IL_10f1: Unknown result type (might be due to invalid IL or missing references)
//IL_1111: Unknown result type (might be due to invalid IL or missing references)
//IL_1179: Unknown result type (might be due to invalid IL or missing references)
//IL_118d: Unknown result type (might be due to invalid IL or missing references)
//IL_11a1: Unknown result type (might be due to invalid IL or missing references)
//IL_11c1: Unknown result type (might be due to invalid IL or missing references)
//IL_1229: Unknown result type (might be due to invalid IL or missing references)
//IL_123d: Unknown result type (might be due to invalid IL or missing references)
//IL_1251: Unknown result type (might be due to invalid IL or missing references)
//IL_1271: Unknown result type (might be due to invalid IL or missing references)
//IL_12d9: Unknown result type (might be due to invalid IL or missing references)
//IL_12ed: Unknown result type (might be due to invalid IL or missing references)
//IL_1301: Unknown result type (might be due to invalid IL or missing references)
//IL_1321: Unknown result type (might be due to invalid IL or missing references)
//IL_1389: Unknown result type (might be due to invalid IL or missing references)
//IL_139d: Unknown result type (might be due to invalid IL or missing references)
//IL_13b1: Unknown result type (might be due to invalid IL or missing references)
//IL_13d1: Unknown result type (might be due to invalid IL or missing references)
//IL_1445: Unknown result type (might be due to invalid IL or missing references)
//IL_1459: Unknown result type (might be due to invalid IL or missing references)
//IL_146d: Unknown result type (might be due to invalid IL or missing references)
//IL_148d: Unknown result type (might be due to invalid IL or missing references)
//IL_14f5: Unknown result type (might be due to invalid IL or missing references)
//IL_1509: Unknown result type (might be due to invalid IL or missing references)
//IL_151d: Unknown result type (might be due to invalid IL or missing references)
//IL_153d: Unknown result type (might be due to invalid IL or missing references)
//IL_15b1: Unknown result type (might be due to invalid IL or missing references)
//IL_15c5: Unknown result type (might be due to invalid IL or missing references)
//IL_15d9: Unknown result type (might be due to invalid IL or missing references)
//IL_15f9: Unknown result type (might be due to invalid IL or missing references)
//IL_1661: Unknown result type (might be due to invalid IL or missing references)
//IL_1675: Unknown result type (might be due to invalid IL or missing references)
//IL_1689: Unknown result type (might be due to invalid IL or missing references)
//IL_16e0: Unknown result type (might be due to invalid IL or missing references)
//IL_16f4: Unknown result type (might be due to invalid IL or missing references)
//IL_1708: Unknown result type (might be due to invalid IL or missing references)
//IL_175f: Unknown result type (might be due to invalid IL or missing references)
//IL_1773: Unknown result type (might be due to invalid IL or missing references)
//IL_1787: Unknown result type (might be due to invalid IL or missing references)
//IL_17de: Unknown result type (might be due to invalid IL or missing references)
//IL_17f2: Unknown result type (might be due to invalid IL or missing references)
//IL_1806: Unknown result type (might be due to invalid IL or missing references)
//IL_185d: Unknown result type (might be due to invalid IL or missing references)
//IL_1871: Unknown result type (might be due to invalid IL or missing references)
//IL_1885: Unknown result type (might be due to invalid IL or missing references)
//IL_18dc: Unknown result type (might be due to invalid IL or missing references)
//IL_18f0: Unknown result type (might be due to invalid IL or missing references)
//IL_1904: Unknown result type (might be due to invalid IL or missing references)
//IL_195b: Unknown result type (might be due to invalid IL or missing references)
//IL_196f: Unknown result type (might be due to invalid IL or missing references)
//IL_1983: Unknown result type (might be due to invalid IL or missing references)
//IL_19da: Unknown result type (might be due to invalid IL or missing references)
//IL_19ee: Unknown result type (might be due to invalid IL or missing references)
//IL_1a02: Unknown result type (might be due to invalid IL or missing references)
//IL_1a59: Unknown result type (might be due to invalid IL or missing references)
//IL_1a6d: Unknown result type (might be due to invalid IL or missing references)
//IL_1a81: Unknown result type (might be due to invalid IL or missing references)
//IL_1ad8: Unknown result type (might be due to invalid IL or missing references)
//IL_1aec: Unknown result type (might be due to invalid IL or missing references)
//IL_1b00: Unknown result type (might be due to invalid IL or missing references)
//IL_1b57: Unknown result type (might be due to invalid IL or missing references)
//IL_1b6b: Unknown result type (might be due to invalid IL or missing references)
//IL_1b7f: Unknown result type (might be due to invalid IL or missing references)
KommoLoaderSkinarmplate1_lModification = new Modification("armplate1.l.prefab", "mech.upper_arm.l", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate1_rModification = new Modification("armplate1.r.prefab", "mech.upper_arm.r", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate2_lModification = new Modification("armplate2.l.prefab", "mech.upper_arm.l", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate2_rModification = new Modification("armplate2.r.prefab", "mech.upper_arm.r", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate3_lModification = new Modification("armplate3.l.prefab", "mech.lower_arm.l", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate3_rModification = new Modification("armplate3.r.prefab", "mech.lower_arm.r", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate4_lModification = new Modification("armplate4.l.prefab", "mech.lower_arm.l", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate4_rModification = new Modification("armplate4.r.prefab", "mech.lower_arm.r", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinChimes1_1Modification = new Modification("Chimes1.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinChimes2_1Modification = new Modification("Chimes2.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinChimes3_1Modification = new Modification("Chimes3.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinChimes4_1Modification = new Modification("Chimes4.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinFluffCRootModification = new Modification("FluffCRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinFluffLRootModification = new Modification("FluffLRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinFluffRRootModification = new Modification("FluffRRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinHeadChimeCModification = new Modification("HeadChimeC.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinHeadChimeLModification = new Modification("HeadChimeL.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinHeadChimeRModification = new Modification("HeadChimeR.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinTail1Modification = new Modification("Tail1.prefab", "pelvis", "LoaderBody", "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate1_lModification = new Modification("armplate1.l.prefab", "mech.upper_arm.l", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate1_rModification = new Modification("armplate1.r.prefab", "mech.upper_arm.r", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate2_lModification = new Modification("armplate2.l.prefab", "mech.upper_arm.l", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate2_rModification = new Modification("armplate2.r.prefab", "mech.upper_arm.r", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate3_lModification = new Modification("armplate3.l.prefab", "mech.lower_arm.l", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate3_rModification = new Modification("armplate3.r.prefab", "mech.lower_arm.r", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate4_lModification = new Modification("armplate4.l.prefab", "mech.lower_arm.l", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinarmplate4_rModification = new Modification("armplate4.r.prefab", "mech.lower_arm.r", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinChimes1_1Modification = new Modification("Chimes1.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinChimes2_1Modification = new Modification("Chimes2.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinChimes3_1Modification = new Modification("Chimes3.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinChimes4_1Modification = new Modification("Chimes4.1.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinFluffCRootModification = new Modification("FluffCRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinFluffLRootModification = new Modification("FluffLRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinFluffRRootModification = new Modification("FluffRRoot.prefab", "neck", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinHeadChimeCModification = new Modification("HeadChimeC.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinHeadChimeLModification = new Modification("HeadChimeL.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinHeadChimeRModification = new Modification("HeadChimeR.prefab", "head", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
ShinyKommoLoaderSkinTail1Modification = new Modification("Tail1.prefab", "pelvis", "LoaderBody", "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", AffectsBaseModel: true, assetBundle);
KommoLoaderSkinarmplate1_lModification.dynamicBoneData = new DynamicBoneData("armplate1.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.l", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinarmplate1_rModification.dynamicBoneData = new DynamicBoneData("armplate1.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.r", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinarmplate2_lModification.dynamicBoneData = new DynamicBoneData("armplate2.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.l", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinarmplate2_rModification.dynamicBoneData = new DynamicBoneData("armplate2.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.r", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinarmplate3_lModification.dynamicBoneData = new DynamicBoneData("armplate3.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.l", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string> { "mech.lower_arm.l" }, (FreezeAxis)0);
KommoLoaderSkinarmplate3_rModification.dynamicBoneData = new DynamicBoneData("armplate3.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.r", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinarmplate4_lModification.dynamicBoneData = new DynamicBoneData("armplate4.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.l", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string> { "mech.lower_arm.l" }, (FreezeAxis)0);
KommoLoaderSkinarmplate4_rModification.dynamicBoneData = new DynamicBoneData("armplate4.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.r", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
KommoLoaderSkinChimes1_1Modification.dynamicBoneData = new DynamicBoneData("Chimes1.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinChimes2_1Modification.dynamicBoneData = new DynamicBoneData("Chimes2.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinChimes3_1Modification.dynamicBoneData = new DynamicBoneData("Chimes3.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinChimes4_1Modification.dynamicBoneData = new DynamicBoneData("Chimes4.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinFluffCRootModification.dynamicBoneData = new DynamicBoneData("FluffCRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinFluffLRootModification.dynamicBoneData = new DynamicBoneData("FluffLRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinFluffRRootModification.dynamicBoneData = new DynamicBoneData("FluffRRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinHeadChimeCModification.dynamicBoneData = new DynamicBoneData("HeadChimeC", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinHeadChimeLModification.dynamicBoneData = new DynamicBoneData("HeadChimeL", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinHeadChimeRModification.dynamicBoneData = new DynamicBoneData("HeadChimeR", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
KommoLoaderSkinTail1Modification.dynamicBoneData = new DynamicBoneData("Tail1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate1_lModification.dynamicBoneData = new DynamicBoneData("armplate1.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.l", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate1_rModification.dynamicBoneData = new DynamicBoneData("armplate1.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.r", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate2_lModification.dynamicBoneData = new DynamicBoneData("armplate2.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.l", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate2_rModification.dynamicBoneData = new DynamicBoneData("armplate2.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.upper_arm.r", (Direction)1, new Vector3(0.06f, 0.1f, 0.17f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate3_lModification.dynamicBoneData = new DynamicBoneData("armplate3.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.l", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string> { "mech.lower_arm.l" }, (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate3_rModification.dynamicBoneData = new DynamicBoneData("armplate3.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.r", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate4_lModification.dynamicBoneData = new DynamicBoneData("armplate4.l", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.l", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string> { "mech.lower_arm.l" }, (FreezeAxis)0);
ShinyKommoLoaderSkinarmplate4_rModification.dynamicBoneData = new DynamicBoneData("armplate4.r", 0.25f, null, 0.1f, null, 0.2f, null, 0f, null, 0f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new List<DynamicBoneColliderData>
{
new DynamicBoneColliderData("mech.lower_arm.r", (Direction)1, new Vector3(0.2f, 0.6f, 0.04f), (Bound)0, 0.05f, 0.2f)
}, new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinChimes1_1Modification.dynamicBoneData = new DynamicBoneData("Chimes1.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinChimes2_1Modification.dynamicBoneData = new DynamicBoneData("Chimes2.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinChimes3_1Modification.dynamicBoneData = new DynamicBoneData("Chimes3.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinChimes4_1Modification.dynamicBoneData = new DynamicBoneData("Chimes4.1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinFluffCRootModification.dynamicBoneData = new DynamicBoneData("FluffCRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinFluffLRootModification.dynamicBoneData = new DynamicBoneData("FluffLRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinFluffRRootModification.dynamicBoneData = new DynamicBoneData("FluffRRoot", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinHeadChimeCModification.dynamicBoneData = new DynamicBoneData("HeadChimeC", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinHeadChimeLModification.dynamicBoneData = new DynamicBoneData("HeadChimeL", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinHeadChimeRModification.dynamicBoneData = new DynamicBoneData("HeadChimeR", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ShinyKommoLoaderSkinTail1Modification.dynamicBoneData = new DynamicBoneData("Tail1", 0.2f, null, 0.05f, null, 0.7f, null, 0.5f, null, 0.15f, null, 0f, new Vector3(0f, 0f, 0f), new Vector3(0f, -0.002f, 0f), new Vector3(0f, -0.005f, 0f), new List<DynamicBoneColliderData>(), new List<string>(), (FreezeAxis)0);
ModificationList.Add(KommoLoaderSkinTail1Modification);
ModificationList.Add(KommoLoaderSkinarmplate1_lModification);
ModificationList.Add(KommoLoaderSkinarmplate2_lModification);
ModificationList.Add(KommoLoaderSkinarmplate3_lModification);
ModificationList.Add(KommoLoaderSkinarmplate4_lModification);
ModificationList.Add(KommoLoaderSkinarmplate1_rModification);
ModificationList.Add(KommoLoaderSkinarmplate2_rModification);
ModificationList.Add(KommoLoaderSkinarmplate3_rModification);
ModificationList.Add(KommoLoaderSkinarmplate4_rModification);
ModificationList.Add(KommoLoaderSkinFluffLRootModification);
ModificationList.Add(KommoLoaderSkinFluffRRootModification);
ModificationList.Add(KommoLoaderSkinFluffCRootModification);
ModificationList.Add(KommoLoaderSkinChimes1_1Modification);
ModificationList.Add(KommoLoaderSkinChimes2_1Modification);
ModificationList.Add(KommoLoaderSkinChimes3_1Modification);
ModificationList.Add(KommoLoaderSkinChimes4_1Modification);
ModificationList.Add(KommoLoaderSkinHeadChimeCModification);
ModificationList.Add(KommoLoaderSkinHeadChimeRModification);
ModificationList.Add(KommoLoaderSkinHeadChimeLModification);
ModificationList.Add(ShinyKommoLoaderSkinTail1Modification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate1_lModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate2_lModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate3_lModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate4_lModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate1_rModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate2_rModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate3_rModification);
ModificationList.Add(ShinyKommoLoaderSkinarmplate4_rModification);
ModificationList.Add(ShinyKommoLoaderSkinFluffLRootModification);
ModificationList.Add(ShinyKommoLoaderSkinFluffRRootModification);
ModificationList.Add(ShinyKommoLoaderSkinFluffCRootModification);
ModificationList.Add(ShinyKommoLoaderSkinChimes1_1Modification);
ModificationList.Add(ShinyKommoLoaderSkinChimes2_1Modification);
ModificationList.Add(ShinyKommoLoaderSkinChimes3_1Modification);
ModificationList.Add(ShinyKommoLoaderSkinChimes4_1Modification);
ModificationList.Add(ShinyKommoLoaderSkinHeadChimeCModification);
ModificationList.Add(ShinyKommoLoaderSkinHeadChimeRModification);
ModificationList.Add(ShinyKommoLoaderSkinHeadChimeLModification);
}
private static void ReplaceShaders()
{
LoadMaterialsWithReplacedShader("RoR2/Base/Shaders/HGStandard.shader", "Assets/Resources/KommoLoader/matKommoLoader.mat", "Assets/Resources/KommoLoader/matShinyKommoLoader.mat");
}
private static void LoadMaterialsWithReplacedShader(string shaderPath, params string[] materialPaths)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
Shader shader = Addressables.LoadAssetAsync<Shader>((object)shaderPath).WaitForCompletion();
foreach (string text in materialPaths)
{
Material val = assetBundle.LoadAsset<Material>(text);
val.shader = shader;
materialsWithRoRShader.Add(val);
}
}
private static void LanguageLoadStrings(Action<Language> orig, Language self)
{
orig(self);
self.SetStringByToken("TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME", "Kommo-o");
self.SetStringByToken("TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME", "Shiny Kommo-o");
}
private static void Nothing(Action<SkinDef> orig, SkinDef self)
{
}
private static void BodyCatalogInit()
{
MethodInfo method = typeof(SkinDef).GetMethod("Awake", BindingFlags.Instance | BindingFlags.NonPublic);
HookEndpointManager.Add((MethodBase)method, (Delegate)new Action<Action<SkinDef>, SkinDef>(Nothing));
AddLoaderBodyKommoLoaderSkinSkin();
AddLoaderBodyShinyKommoLoaderSkinSkin();
HookEndpointManager.Remove((MethodBase)method, (Delegate)new Action<Action<SkinDef>, SkinDef>(Nothing));
}
private static void LoaderBodyKommoLoaderSkinSkinAdded(SkinDef skinDef, GameObject bodyPrefab)
{
SkinDefs.Add(skinDef.nameToken, skinDef);
}
private static void AddLoaderBodyKommoLoaderSkinSkin()
{
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
string text = "LoaderBody";
string text2 = "KommoLoaderSkin";
try
{
GameObject val = BodyCatalog.FindBodyPrefab(text);
ModelLocator component = val.GetComponent<ModelLocator>();
GameObject gameObject = ((Component)component.modelTransform).gameObject;
ModelSkinController skinController = gameObject.GetComponent<ModelSkinController>();
Renderer[] renderers = gameObject.GetComponentsInChildren<Renderer>(true);
SkinDef skin = ScriptableObject.CreateInstance<SkinDef>();
TryCatchThrow("Icon", delegate
{
skin.icon = assetBundle.LoadAsset<Sprite>("Assets\\SkinMods\\KommooLoader\\Icons\\KommoLoaderSkinIcon.png");
});
((Object)skin).name = text2;
skin.nameToken = "TAILLOVER_SKIN_KOMMOLOADERSKIN_NAME";
skin.rootObject = gameObject;
TryCatchThrow("Base Skins", delegate
{
skin.baseSkins = (SkinDef[])(object)new SkinDef[1] { skinController.skins[0] };
});
TryCatchThrow("Unlockable Name", delegate
{
skin.unlockableDef = null;
});
TryCatchThrow("Game Object Activations", delegate
{
//IL_0011: 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_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: 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)
skin.gameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[2]
{
new GameObjectActivation
{
gameObject = ((Component)renderers[0]).gameObject,
shouldActivate = false
},
new GameObjectActivation
{
gameObject = ((Component)renderers[1]).gameObject,
shouldActivate = false
}
};
});
TryCatchThrow("Renderer Infos", delegate
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
skin.rendererInfos = (RendererInfo[])(object)new RendererInfo[1]
{
new RendererInfo
{
defaultMaterial = assetBundle.LoadAsset<Material>("Assets/Resources/KommoLoader/matKommoLoader.mat"),
defaultShadowCastingMode = (ShadowCastingMode)1,
ignoreOverlays = false,
renderer = renderers[2]
}
};
});
TryCatchThrow("Mesh Replacements", delegate
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
skin.meshReplacements = (MeshReplacement[])(object)new MeshReplacement[1]
{
new MeshReplacement
{
mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\KommooLoader\\Meshes\\Kommo-o.mesh"),
renderer = renderers[2]
}
};
});
TryCatchThrow("Minion Skin Replacements", delegate
{
skin.minionSkinReplacements = Array.Empty<MinionSkinReplacement>();
});
TryCatchThrow("Projectile Ghost Replacements", delegate
{
skin.projectileGhostReplacements = Array.Empty<ProjectileGhostReplacement>();
});
Array.Resize(ref skinController.skins, skinController.skins.Length + 1);
skinController.skins[skinController.skins.Length - 1] = skin;
BodyCatalog.skins[BodyCatalog.FindBodyIndex(val)] = skinController.skins;
LoaderBodyKommoLoaderSkinSkinAdded(skin, val);
}
catch (Exception ex)
{
InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\""));
InstanceLogger.LogWarning((object)("Field causing issue: " + ex.Message));
InstanceLogger.LogError((object)ex.InnerException);
}
}
private static void LoaderBodyShinyKommoLoaderSkinSkinAdded(SkinDef skinDef, GameObject bodyPrefab)
{
SkinDefs.Add(skinDef.nameToken, skinDef);
}
private static void AddLoaderBodyShinyKommoLoaderSkinSkin()
{
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
string text = "LoaderBody";
string text2 = "ShinyKommoLoaderSkin";
try
{
GameObject val = BodyCatalog.FindBodyPrefab(text);
ModelLocator component = val.GetComponent<ModelLocator>();
GameObject gameObject = ((Component)component.modelTransform).gameObject;
ModelSkinController skinController = gameObject.GetComponent<ModelSkinController>();
Renderer[] renderers = gameObject.GetComponentsInChildren<Renderer>(true);
SkinDef skin = ScriptableObject.CreateInstance<SkinDef>();
TryCatchThrow("Icon", delegate
{
skin.icon = assetBundle.LoadAsset<Sprite>("Assets\\SkinMods\\KommooLoader\\Icons\\ShinyKommoLoaderSkinIcon.png");
});
((Object)skin).name = text2;
skin.nameToken = "TAILLOVER_SKIN_SHINYKOMMOLOADERSKIN_NAME";
skin.rootObject = gameObject;
TryCatchThrow("Base Skins", delegate
{
skin.baseSkins = (SkinDef[])(object)new SkinDef[1] { skinController.skins[0] };
});
TryCatchThrow("Unlockable Name", delegate
{
skin.unlockableDef = null;
});
TryCatchThrow("Game Object Activations", delegate
{
//IL_0011: 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_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: 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)
skin.gameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[2]
{
new GameObjectActivation
{
gameObject = ((Component)renderers[0]).gameObject,
shouldActivate = false
},
new GameObjectActivation
{
gameObject = ((Component)renderers[1]).gameObject,
shouldActivate = false
}
};
});
TryCatchThrow("Renderer Infos", delegate
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
skin.rendererInfos = (RendererInfo[])(object)new RendererInfo[1]
{
new RendererInfo
{
defaultMaterial = assetBundle.LoadAsset<Material>("Assets/Resources/KommoLoader/matShinyKommoLoader.mat"),
defaultShadowCastingMode = (ShadowCastingMode)1,
ignoreOverlays = false,
renderer = renderers[2]
}
};
});
TryCatchThrow("Mesh Replacements", delegate
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
skin.meshReplacements = (MeshReplacement[])(object)new MeshReplacement[1]
{
new MeshReplacement
{
mesh = assetBundle.LoadAsset<Mesh>("Assets\\SkinMods\\KommooLoader\\Meshes\\Kommo-o.mesh"),
renderer = renderers[2]
}
};
});
TryCatchThrow("Minion Skin Replacements", delegate
{
skin.minionSkinReplacements = Array.Empty<MinionSkinReplacement>();
});
TryCatchThrow("Projectile Ghost Replacements", delegate
{
skin.projectileGhostReplacements = Array.Empty<ProjectileGhostReplacement>();
});
Array.Resize(ref skinController.skins, skinController.skins.Length + 1);
skinController.skins[skinController.skins.Length - 1] = skin;
BodyCatalog.skins[BodyCatalog.FindBodyIndex(val)] = skinController.skins;
LoaderBodyShinyKommoLoaderSkinSkinAdded(skin, val);
}
catch (Exception ex)
{
InstanceLogger.LogWarning((object)("Failed to add \"" + text2 + "\" skin to \"" + text + "\""));
InstanceLogger.LogWarning((object)("Field causing issue: " + ex.Message));
InstanceLogger.LogError((object)ex.InnerException);
}
}
private static void TryCatchThrow(string message, Action action)
{
try
{
action?.Invoke();
}
catch (Exception innerException)
{
throw new Exception(message, innerException);
}
}
}
}
namespace DynamicSkinBuilder
{
internal static class DynamicSkinHelpers
{
public static int FindBoneIndex(Transform targetBone, List<Transform> BoneList)
{
if (((Object)targetBone.parent).name.Contains("Armature"))
{
return BoneList.Count;
}
Transform parent = targetBone.parent;
int siblingIndex = targetBone.GetSiblingIndex();
int childCount = parent.childCount;
if (siblingIndex == childCount - 1)
{
return FindBoneIndex(targetBone.parent, BoneList);
}
Transform nextBone = targetBone.parent.GetChild(siblingIndex + 1);
int num = BoneList.FindIndex((Transform x) => (Object)(object)x == (Object)(object)nextBone);
if (num == -1)
{
FindBoneIndex(nextBone, BoneList);
}
return num;
}
public static int FindBoneIndex2(Transform targetBone, List<Transform> BoneList)
{
Dictionary<Transform, bool> dictionary = new Dictionary<Transform, bool>();
int num = 99999;
for (int i = 0; i < BoneList.Count; i++)
{
Transform val = BoneList[i];
if (((Object)val).name == "ROOT")
{
dictionary.Add(val, value: false);
continue;
}
if ((Object)(object)val == (Object)(object)targetBone)
{
num = i;
}
Transform parent = ((Component)val).transform.parent;
if ((Object)(object)parent == (Object)(object)targetBone)
{
dictionary.Add(val, value: true);
}
else
{
if (!dictionary.ContainsKey(parent))
{
continue;
}
if (dictionary[parent])
{
dictionary.Add(val, value: true);
continue;
}
dictionary.Add(val, value: false);
if (i > num)
{
return i;
}
}
}
return BoneList.Count - 1;
}
public static SkinnedMeshRenderer[] GetBaseSkinRenderers(GameObject modelObject)
{
SkinnedMeshRenderer[] componentsInChildren = modelObject.GetComponentsInChildren<SkinnedMeshRenderer>(true);
List<SkinnedMeshRenderer> list = new List<SkinnedMeshRenderer>();
SkinnedMeshRenderer[] array = componentsInChildren;
foreach (SkinnedMeshRenderer val in array)
{
if ((Object)(object)((Component)val).transform.parent == (Object)(object)modelObject.transform)
{
list.Add(val);
}
}
return list.ToArray();
}
public static Transform[] BoneArrayBuilder(Transform NewBoneRoot)
{
List<Transform> list = new List<Transform>();
BoneArrayBuilderHelper(NewBoneRoot, list);
return list.ToArray();
}
public static void BoneArrayBuilderHelper(Transform parent, List<Transform> list)
{
if (!((Object)parent).name.EndsWith("_end"))
{
list.Add(parent);
}
for (int i = 0; i < parent.childCount; i++)
{
BoneArrayBuilderHelper(parent.GetChild(i), list);
}
}
public static Transform GetArmature(GameObject obj)
{
return GetArmatureHelper(obj);
}
public static Transform GetArmatureHelper(GameObject obj)
{
if (((Object)obj).name.ToLower().Contains("armature"))
{
return obj.transform;
}
for (int i = 0; i < obj.transform.childCount; i++)
{
Transform armatureHelper = GetArmatureHelper(((Component)obj.transform.GetChild(i)).gameObject);
if (Object.op_Implicit((Object)(object)armatureHelper))
{
return armatureHelper;
}
}
return null;
}
}
}
namespace RuneFoxMods
{
internal class ChildHelper
{
private static Dictionary<string, Dictionary<string, string>> PrefabDictionary = new Dictionary<string, Dictionary<string, string>>
{
{
"CommandoBody",
new Dictionary<string, string>
{
{ "CommandoArmature", "CommandoArmature" },
{ "ROOT", "CommandoArmature/ROOT" },
{ "base", "CommandoArmature/ROOT/base" },
{ "IKArmTarget.l", "CommandoArmature/ROOT/base/IKArmTarget.l" },
{ "IKArmPole.l", "CommandoArmature/ROOT/base/IKArmTarget.l/IKArmPole.l" },
{ "IKArmTarget.r", "CommandoArmature/ROOT/base/IKArmTarget.r" },
{ "IKArmPole.r", "CommandoArmature/ROOT/base/IKArmTarget.r/IKArmPole.r" },
{ "pelvis", "CommandoArmature/ROOT/base/pelvis" },
{ "thigh.l", "CommandoArmature/ROOT/base/pelvis/thigh.l" },
{ "calf.l", "CommandoArmature/ROOT/base/pelvis/thigh.l/calf.l" },
{ "foot.l", "CommandoArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l" },
{ "toe.l", "CommandoArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l/toe.l" },
{ "thigh.r", "CommandoArmature/ROOT/base/pelvis/thigh.r" },
{ "calf.r", "CommandoArmature/ROOT/base/pelvis/thigh.r/calf.r" },
{ "foot.r", "CommandoArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r" },
{ "toe.r", "CommandoArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r/toe.r" },
{ "stomach", "CommandoArmature/ROOT/base/stomach" },
{ "chest", "CommandoArmature/ROOT/base/stomach/chest" },
{ "head", "CommandoArmature/ROOT/base/stomach/chest/head" },
{ "upper_arm.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l" },
{ "lower_arm.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l" },
{ "hand.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l" },
{ "finger1.1.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l" },
{ "finger1.2.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l" },
{ "finger1.3.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l/finger1.3.l" },
{ "finger1IKBender.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1IKBender.l" },
{ "finger1IKTarget.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1IKBender.l/finger1IKTarget.l" },
{ "finger2.1.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l" },
{ "finger2.2.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l" },
{ "finger2.3.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l/finger2.3.l" },
{ "finger2IKBender.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2IKBender.l" },
{ "finger2IKTarget.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2IKBender.l/finger2IKTarget.l" },
{ "finger3.1.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l" },
{ "finger3.2.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l" },
{ "finger3.3.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l/finger3.3.l" },
{ "finger3IKBender.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3IKBender.l" },
{ "finger3IKTarget.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3IKBender.l/finger3IKTarget.l" },
{ "finger4.1.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l" },
{ "finger4.2.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l" },
{ "finger4.3.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l/finger4.3.l" },
{ "finger4IKBender.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4IKBender.l" },
{ "finger4IKTarget.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4IKBender.l/finger4IKTarget.l" },
{ "gun.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/gun.l" },
{ "thumb.1.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l" },
{ "thumb.2.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l/thumb.2.l" },
{ "thumbIKBender.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumbIKBender.l" },
{ "thumbIKTarget.l", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumbIKBender.l/thumbIKTarget.l" },
{ "upper_arm.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r" },
{ "lower_arm.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r" },
{ "hand.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r" },
{ "finger1.1.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r" },
{ "finger1.2.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r" },
{ "finger1.3.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r/finger1.3.r" },
{ "finger1IKBender.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1IKBender.r" },
{ "finger1IKTarget.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1IKBender.r/finger1IKTarget.r" },
{ "finger2.1.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r" },
{ "finger2.2.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r" },
{ "finger2.3.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r/finger2.3.r" },
{ "finger2IKBender.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2IKBender.r" },
{ "finger2IKTarget.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2IKBender.r/finger2IKTarget.r" },
{ "finger3.1.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r" },
{ "finger3.2.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r" },
{ "finger3.3.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r/finger3.3.r" },
{ "finger3IKBender.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3IKBender.r" },
{ "finger3IKTarget.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3IKBender.r/finger3IKTarget.r" },
{ "finger4.1.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r" },
{ "finger4.2.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r" },
{ "finger4.3.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r/finger4.3.r" },
{ "finger4IKBender.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4IKBender.r" },
{ "finger4IKTarget.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4IKBender.r/finger4IKTarget.r" },
{ "gun.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/gun.r" },
{ "thumb.1.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r" },
{ "thumb.2.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r/thumb.2.r" },
{ "thumbIKBender.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumbIKBender.r" },
{ "thumbIKTarget.r", "CommandoArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumbIKBender.r/thumbIKTarget.r" },
{ "LeftJet", "CommandoArmature/ROOT/base/stomach/chest/LeftJet" },
{ "RightJet", "CommandoArmature/ROOT/base/stomach/chest/RightJet" },
{ "IKLegTarget.l", "CommandoArmature/ROOT/IKLegTarget.l" },
{ "IKLegPole.l", "CommandoArmature/ROOT/IKLegTarget.l/IKLegPole.l" },
{ "IKLegTarget.r", "CommandoArmature/ROOT/IKLegTarget.r" },
{ "IKLegPole.r", "CommandoArmature/ROOT/IKLegTarget.r/IKLegPole.r" },
{ "MuzzleCenter", "CommandoArmature/MuzzleCenter" }
}
},
{
"EngiBody",
new Dictionary<string, string>
{
{ "EngiArmature", "EngiArmature" },
{ "cannonIKTarget.l", "EngiArmature/cannonIKTarget.l" },
{ "cannonIKTarget.r", "EngiArmature/cannonIKTarget.r" },
{ "ROOT", "EngiArmature/ROOT" },
{ "base", "EngiArmature/ROOT/base" },
{ "IKArmTarget.l", "EngiArmature/ROOT/base/IKArmTarget.l" },
{ "IKArmPole.l", "EngiArmature/ROOT/base/IKArmTarget.l/IKArmPole.l" },
{ "IKArmTarget.r", "EngiArmature/ROOT/base/IKArmTarget.r" },
{ "IKArmPole.r", "EngiArmature/ROOT/base/IKArmTarget.r/IKArmPole.r" },
{ "pelvis", "EngiArmature/ROOT/base/pelvis" },
{ "thigh.l", "EngiArmature/ROOT/base/pelvis/thigh.l" },
{ "calf.l", "EngiArmature/ROOT/base/pelvis/thigh.l/calf.l" },
{ "foot.l", "EngiArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l" },
{ "toe.l", "EngiArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l/toe.l" },
{ "thigh.r", "EngiArmature/ROOT/base/pelvis/thigh.r" },
{ "calf.r", "EngiArmature/ROOT/base/pelvis/thigh.r/calf.r" },
{ "foot.r", "EngiArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r" },
{ "toe.r", "EngiArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r/toe.r" },
{ "stomach", "EngiArmature/ROOT/base/stomach" },
{ "chest", "EngiArmature/ROOT/base/stomach/chest" },
{ "cannonJoint1.l", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.l" },
{ "cannonJoint2.l", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.l/cannonJoint2.l" },
{ "cannonHead.l", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.l/cannonJoint2.l/cannonHead.l" },
{ "cannonJoint1.r", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r" },
{ "cannonJoint2.r", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r" },
{ "cannonHead.r", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r/cannonHead.r" },
{ "EngiJet", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r/cannonHead.r/EngiJet" },
{ "Distortion", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r/cannonHead.r/EngiJet/Distortion" },
{ "Jet", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r/cannonHead.r/EngiJet/Jet" },
{ "MuzzleRight", "EngiArmature/ROOT/base/stomach/chest/cannonJoint1.r/cannonJoint2.r/cannonHead.r/MuzzleRight" },
{ "upper_arm.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l" },
{ "lower_arm.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l" },
{ "hand.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l" },
{ "finger1.1.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l" },
{ "finger1.2.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l" },
{ "finger1.3.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l/finger1.3.l" },
{ "finger1IKBender.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1IKBender.l" },
{ "finger1IKTarget.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1IKBender.l/finger1IKTarget.l" },
{ "finger2.1.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l" },
{ "finger2.2.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l" },
{ "finger2.3.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l/finger2.3.l" },
{ "finger2IKBender.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2IKBender.l" },
{ "finger2IKTarget.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2IKBender.l/finger2IKTarget.l" },
{ "finger3.1.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l" },
{ "finger3.2.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l" },
{ "finger3.3.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l/finger3.3.l" },
{ "finger3IKBender.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3IKBender.l" },
{ "finger3IKTarget.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3IKBender.l/finger3IKTarget.l" },
{ "finger4.1.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l" },
{ "finger4.2.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l" },
{ "finger4.3.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l/finger4.3.l" },
{ "finger4IKBender.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4IKBender.l" },
{ "finger4IKTarget.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4IKBender.l/finger4IKTarget.l" },
{ "thumb.1.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l" },
{ "thumb.2.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l/thumb.2.l" },
{ "thumbIKBender.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumbIKBender.l" },
{ "thumbIKTarget.l", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumbIKBender.l/thumbIKTarget.l" },
{ "WristDisplay", "EngiArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/WristDisplay" },
{ "upper_arm.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r" },
{ "lower_arm.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r" },
{ "hand.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r" },
{ "finger1.1.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r" },
{ "finger1.2.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r" },
{ "finger1.3.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r/finger1.3.r" },
{ "finger1IKBender.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1IKBender.r" },
{ "finger1IKTarget.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1IKBender.r/finger1IKTarget.r" },
{ "finger2.1.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r" },
{ "finger2.2.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r" },
{ "finger2.3.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r/finger2.3.r" },
{ "finger2IKBender.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2IKBender.r" },
{ "finger2IKTarget.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2IKBender.r/finger2IKTarget.r" },
{ "finger3.1.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r" },
{ "finger3.2.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r" },
{ "finger3.3.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r/finger3.3.r" },
{ "finger3IKBender.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3IKBender.r" },
{ "finger3IKTarget.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3IKBender.r/finger3IKTarget.r" },
{ "finger4.1.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r" },
{ "finger4.2.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r" },
{ "finger4.3.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r/finger4.3.r" },
{ "finger4IKBender.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4IKBender.r" },
{ "finger4IKTarget.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4IKBender.r/finger4IKTarget.r" },
{ "thumb.1.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r" },
{ "thumb.2.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r/thumb.2.r" },
{ "thumbIKBender.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumbIKBender.r" },
{ "thumbIKTarget.r", "EngiArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumbIKBender.r/thumbIKTarget.r" },
{ "MuzzleCenter", "EngiArmature/ROOT/base/stomach/chest/MuzzleCenter" },
{ "HeadCenter", "EngiArmature/ROOT/base/stomach/chest/HeadCenter" },
{ "IKLegTarget.l", "EngiArmature/ROOT/IKLegTarget.l" },
{ "IKLegPole.l", "EngiArmature/ROOT/IKLegTarget.l/IKLegPole.l" },
{ "IKLegTarget.r", "EngiArmature/ROOT/IKLegTarget.r" },
{ "IKLegPole.r", "EngiArmature/ROOT/IKLegTarget.r/IKLegPole.r" }
}
},
{
"HuntressBody",
new Dictionary<string, string>
{
{ "HuntressArmature", "HuntressArmature" },
{ "HandGripControl.l", "HuntressArmature/HandGripControl.l" },
{ "HandGripControl.r", "HuntressArmature/HandGripControl.r" },
{ "IKArmTarget.r", "HuntressArmature/IKArmTarget.r" },
{ "IKArmPole.r", "HuntressArmature/IKArmTarget.r/IKArmPole.r" },
{ "ROOT", "HuntressArmature/ROOT" },
{ "base", "HuntressArmature/ROOT/base" },
{ "BowRoot", "HuntressArmature/ROOT/base/BowRoot" },
{ "BowBase", "HuntressArmature/ROOT/base/BowRoot/BowBase" },
{ "BowHinge1.l", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.l" },
{ "BowHinge2.l", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.l/BowHinge2.l" },
{ "BowString.L", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.l/BowHinge2.l/BowString.L" },
{ "BowHinge1.r", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.r" },
{ "BowHinge2.r", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.r/BowHinge2.r" },
{ "BowString.R", "HuntressArmature/ROOT/base/BowRoot/BowBase/BowHinge1.r/BowHinge2.r/BowString.R" },
{ "HelperBowBase", "HuntressArmature/ROOT/base/BowRoot/BowBase/HelperBowBase" },
{ "Muzzle", "HuntressArmature/ROOT/base/BowRoot/BowBase/Muzzle" },
{ "BowStringIKTarget", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget" },
{ "HelperBowString", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/HelperBowString" },
{ "ArrowDisplay", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ArrowDisplay" },
{ "Quad 1", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ArrowDisplay/Quad 1" },
{ "Quad 2", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ArrowDisplay/Quad 2" },
{ "Flash", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ArrowDisplay/Flash" },
{ "ClusterArrowDisplay", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay" },
{ "Quad Cluster 1", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay/Quad Cluster 1" },
{ "Quad Cluster 2", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay/Quad Cluster 2" },
{ "Quad Cluster 3", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay/Quad Cluster 3" },
{ "Quad Cluster 4", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay/Quad Cluster 4" },
{ "Quad Cluster 5", "HuntressArmature/ROOT/base/BowRoot/BowStringIKTarget/ClusterArrowDisplay/Quad Cluster 5" },
{ "IKArmTarget.l", "HuntressArmature/ROOT/base/BowRoot/IKArmTarget.l" },
{ "IKArmPole.l", "HuntressArmature/ROOT/base/BowRoot/IKArmTarget.l/IKArmPole.l" },
{ "pelvis", "HuntressArmature/ROOT/base/pelvis" },
{ "thigh.l", "HuntressArmature/ROOT/base/pelvis/thigh.l" },
{ "calf.l", "HuntressArmature/ROOT/base/pelvis/thigh.l/calf.l" },
{ "foot.l", "HuntressArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l" },
{ "toe.l", "HuntressArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l/toe.l" },
{ "thigh.r", "HuntressArmature/ROOT/base/pelvis/thigh.r" },
{ "calf.r", "HuntressArmature/ROOT/base/pelvis/thigh.r/calf.r" },
{ "foot.r", "HuntressArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r" },
{ "toe.r", "HuntressArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r/toe.r" },
{ "stomach", "HuntressArmature/ROOT/base/stomach" },
{ "chest", "HuntressArmature/ROOT/base/stomach/chest" },
{ "ClippingBlocker", "HuntressArmature/ROOT/base/stomach/chest/ClippingBlocker" },
{ "head", "HuntressArmature/ROOT/base/stomach/chest/head" },
{ "HuntressScarfArmature Detatched", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched" },
{ "ScarfBase Detatched", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched" },
{ "Scarf", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf" },
{ "Scarf.004", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004" },
{ "Scarf.002", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002" },
{ "Scarf.006", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002/Scarf.006" },
{ "Scarf.001", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002/Scarf.006/Scarf.001" },
{ "Scarf.005", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002/Scarf.006/Scarf.001/Scarf.005" },
{ "Scarf.003", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002/Scarf.006/Scarf.001/Scarf.005/Scarf.003" },
{ "Scarf.007", "HuntressArmature/ROOT/base/stomach/chest/HuntressScarfArmature Detatched/ScarfBase Detatched/Scarf/Scarf.004/Scarf.002/Scarf.006/Scarf.001/Scarf.005/Scarf.003/Scarf.007" },
{ "upper_arm.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l" },
{ "lower_arm.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l" },
{ "hand.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l" },
{ "finger1.1.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l" },
{ "finger1.2.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l" },
{ "finger1.3.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l/finger1.3.l" },
{ "finger2.1.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l" },
{ "finger2.2.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l" },
{ "finger2.3.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l/finger2.3.l" },
{ "finger3.1.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l" },
{ "finger3.2.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l" },
{ "finger3.3.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l/finger3.3.l" },
{ "finger4.1.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l" },
{ "finger4.2.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l" },
{ "finger4.3.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/finger4.1.l/finger4.2.l/finger4.3.l" },
{ "thumb.1.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l" },
{ "thumb.2.l", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.l/lower_arm.l/hand.l/thumb.1.l/thumb.2.l" },
{ "upper_arm.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r" },
{ "lower_arm.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r" },
{ "hand.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r" },
{ "finger1.1.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r" },
{ "finger1.2.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r" },
{ "finger1.3.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger1.1.r/finger1.2.r/finger1.3.r" },
{ "finger2.1.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r" },
{ "finger2.2.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r" },
{ "finger2.3.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger2.1.r/finger2.2.r/finger2.3.r" },
{ "finger3.1.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r" },
{ "finger3.2.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r" },
{ "finger3.3.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger3.1.r/finger3.2.r/finger3.3.r" },
{ "finger4.1.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r" },
{ "finger4.2.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r" },
{ "finger4.3.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/finger4.1.r/finger4.2.r/finger4.3.r" },
{ "thumb.1.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r" },
{ "thumb.2.r", "HuntressArmature/ROOT/base/stomach/chest/upper_arm.r/lower_arm.r/hand.r/thumb.1.r/thumb.2.r" },
{ "IKLegTarget.l", "HuntressArmature/ROOT/IKLegTarget.l" },
{ "IKLegPole.l", "HuntressArmature/ROOT/IKLegTarget.l/IKLegPole.l" },
{ "IKLegTarget.r", "HuntressArmature/ROOT/IKLegTarget.r" },
{ "IKLegPole.r", "HuntressArmature/ROOT/IKLegTarget.r/IKLegPole.r" }
}
},
{
"MageBody",
new Dictionary<string, string>
{
{ "MageArmature", "MageArmature" },
{ "HeelRoll.l", "MageArmature/HeelRoll.l" },
{ "IKLegPole.l", "MageArmature/HeelRoll.l/IKLegPole.l" },
{ "ToeRoll.l", "MageArmature/HeelRoll.l/ToeRoll.l" },
{ "FootRoll.l", "MageArmature/HeelRoll.l/ToeRoll.l/FootRoll.l" },
{ "IKLegTarget.l", "MageArmature/HeelRoll.l/ToeRoll.l/FootRoll.l/IKLegTarget.l" },
{ "IKFoot.l", "MageArmature/HeelRoll.l/ToeRoll.l/IKFoot.l" },
{ "ToeControl.l", "MageArmature/HeelRoll.l/ToeRoll.l/ToeControl.l" },
{ "IKToe.l", "MageArmature/HeelRoll.l/ToeRoll.l/ToeControl.l/IKToe.l" },
{ "HeelRoll.r", "MageArmature/HeelRoll.r" },
{ "IKLegPole.r", "MageArmature/HeelRoll.r/IKLegPole.r" },
{ "ToeRoll.l.002", "MageArmature/HeelRoll.r/ToeRoll.l.002" },
{ "FootRoll.r", "MageArmature/HeelRoll.r/ToeRoll.l.002/FootRoll.r" },
{ "IKLegTarget.r", "MageArmature/HeelRoll.r/ToeRoll.l.002/FootRoll.r/IKLegTarget.r" },
{ "IKFoot.r", "MageArmature/HeelRoll.r/ToeRoll.l.002/IKFoot.r" },
{ "ToeControl.r", "MageArmature/HeelRoll.r/ToeRoll.l.002/ToeControl.r" },
{ "IKToe.r", "MageArmature/HeelRoll.r/ToeRoll.l.002/ToeControl.r/IKToe.r" },
{ "ROOT", "MageArmature/ROOT" },
{ "base", "MageArmature/ROOT/base" },
{ "IKArmTarget.l", "MageArmature/ROOT/base/IKArmTarget.l" },
{ "IKArmPole.l", "MageArmature/ROOT/base/IKArmTarget.l/IKArmPole.l" },
{ "IKArmTarget.r", "MageArmature/ROOT/base/IKArmTarget.r" },
{ "IKArmPole.r", "MageArmature/ROOT/base/IKArmTarget.r/IKArmPole.r" },
{ "pelvis", "MageArmature/ROOT/base/pelvis" },
{ "ClothA.1.l", "MageArmature/ROOT/base/pelvis/ClothA.1.l" },
{ "ClothA.2.l", "MageArmature/ROOT/base/pelvis/ClothA.1.l/ClothA.2.l" },
{ "ClothA.3.l", "MageArmature/ROOT/base/pelvis/ClothA.1.l/ClothA.2.l/ClothA.3.l" },
{ "ClothA.4.l", "MageArmature/ROOT/base/pelvis/ClothA.1.l/ClothA.2.l/ClothA.3.l/ClothA.4.l" },
{ "ClothA.1.r", "MageArmature/ROOT/base/pelvis/ClothA.1.r" },
{ "ClothA.2.r", "MageArmature/ROOT/base/pelvis/ClothA.1.r/ClothA.2.r" },
{ "ClothA.3.r", "MageArmature/ROOT/base/pelvis/ClothA.1.r/ClothA.2.r/ClothA.3.r" },
{ "ClothA.4.r", "MageArmature/ROOT/base/pelvis/ClothA.1.r/ClothA.2.r/ClothA.3.r/ClothA.4.r" },
{ "ClothB.1.l", "MageArmature/ROOT/base/pelvis/ClothB.1.l" },
{ "ClothB.2.l", "MageArmature/ROOT/base/pelvis/ClothB.1.l/ClothB.2.l" },
{ "ClothB.3.l", "MageArmature/ROOT/base/pelvis/ClothB.1.l/ClothB.2.l/ClothB.3.l" },
{ "ClothB.4.l", "MageArmature/ROOT/base/pelvis/ClothB.1.l/ClothB.2.l/ClothB.3.l/ClothB.4.l" },
{ "ClothB.1.r", "MageArmature/ROOT/base/pelvis/ClothB.1.r" },
{ "ClothB.2.r", "MageArmature/ROOT/base/pelvis/ClothB.1.r/ClothB.2.r" },
{ "ClothB.3.r", "MageArmature/ROOT/base/pelvis/ClothB.1.r/ClothB.2.r/ClothB.3.r" },
{ "ClothB.4.r", "MageArmature/ROOT/base/pelvis/ClothB.1.r/ClothB.2.r/ClothB.3.r/ClothB.4.r" },
{ "ClothC.1.l", "MageArmature/ROOT/base/pelvis/ClothC.1.l" },
{ "ClothC.2.l", "MageArmature/ROOT/base/pelvis/ClothC.1.l/ClothC.2.l" },
{ "ClothC.3.l", "MageArmature/ROOT/base/pelvis/ClothC.1.l/ClothC.2.l/ClothC.3.l" },
{ "ClothC.4.l", "MageArmature/ROOT/base/pelvis/ClothC.1.l/ClothC.2.l/ClothC.3.l/ClothC.4.l" },
{ "ClothC.1.r", "MageArmature/ROOT/base/pelvis/ClothC.1.r" },
{ "ClothC.2.r", "MageArmature/ROOT/base/pelvis/ClothC.1.r/ClothC.2.r" },
{ "ClothC.3.r", "MageArmature/ROOT/base/pelvis/ClothC.1.r/ClothC.2.r/ClothC.3.r" },
{ "ClothC.4.r", "MageArmature/ROOT/base/pelvis/ClothC.1.r/ClothC.2.r/ClothC.3.r/ClothC.4.r" },
{ "ClothD.1", "MageArmature/ROOT/base/pelvis/ClothD.1" },
{ "ClothD.2", "MageArmature/ROOT/base/pelvis/ClothD.1/ClothD.2" },
{ "ClothD.3", "MageArmature/ROOT/base/pelvis/ClothD.1/ClothD.2/ClothD.3" },
{ "ClothD.4", "MageArmature/ROOT/base/pelvis/ClothD.1/ClothD.2/ClothD.3/ClothD.4" },
{ "ClothD.5", "MageArmature/ROOT/base/pelvis/ClothD.1/ClothD.2/ClothD.3/ClothD.4/ClothD.5" },
{ "ClothD.6", "MageArmature/ROOT/base/pelvis/ClothD.1/ClothD.2/ClothD.3/ClothD.4/ClothD.5/ClothD.6" },
{ "thigh.l", "MageArmature/ROOT/base/pelvis/thigh.l" },
{ "calf.l", "MageArmature/ROOT/base/pelvis/thigh.l/calf.l" },
{ "foot.l", "MageArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l" },
{ "toe.l", "MageArmature/ROOT/base/pelvis/thigh.l/calf.l/foot.l/toe.l" },
{ "thigh.r", "MageArmature/ROOT/base/pelvis/thigh.r" },
{ "calf.r", "MageArmature/ROOT/base/pelvis/thigh.r/calf.r" },
{ "foot.r", "MageArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r" },
{ "toe.r", "MageArmature/ROOT/base/pelvis/thigh.r/calf.r/foot.r/toe.r" },
{ "stomach", "MageArmature/ROOT/base/stomach" },
{ "chest", "MageArmature/ROOT/base/stomach/chest" },
{ "clavicle.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l" },
{ "upper_arm.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l" },
{ "lower_arm.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l" },
{ "hand.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l" },
{ "finger1.1.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger1.1.l" },
{ "finger1.2.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l" },
{ "finger1.3.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger1.1.l/finger1.2.l/finger1.3.l" },
{ "finger2.1.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger2.1.l" },
{ "finger2.2.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l" },
{ "finger2.3.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger2.1.l/finger2.2.l/finger2.3.l" },
{ "finger3.1.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger3.1.l" },
{ "finger3.2.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l" },
{ "finger3.3.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger3.1.l/finger3.2.l/finger3.3.l" },
{ "finger4.1.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.l/hand.l/finger4.1.l" },
{ "finger4.2.l", "MageArmature/ROOT/base/stomach/chest/clavicle.l/upper_arm.l/lower_arm.