Decompiled source of GenshinImpactOverhaul REPO v2.0.4

JigglePhysicsPlugin.dll

Decompiled 2 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.LowLevel;
using UnityEngine.PlayerLoop;
using UnityEngine.Serialization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("JigglePhysicsPlugin")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("My first plugin")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("JigglePhysicsPlugin")]
[assembly: AssemblyTitle("JigglePhysicsPlugin")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace JigglePhysicsPlugin
{
	public static class CachedSphereCollider
	{
		private class DestroyListener : MonoBehaviour
		{
			private void OnDestroy()
			{
				_hasSphere = false;
			}
		}

		private static bool _hasSphere;

		private static SphereCollider _sphereCollider;

		public static void StartPass()
		{
			if (TryGet(out var collider))
			{
				((Collider)collider).enabled = true;
			}
		}

		public static void FinishedPass()
		{
			if (TryGet(out var collider))
			{
				((Collider)collider).enabled = false;
			}
		}

		public static bool TryGet(out SphereCollider collider)
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			if (_hasSphere)
			{
				collider = _sphereCollider;
				return true;
			}
			try
			{
				GameObject val = new GameObject("JiggleBoneSphereCollider", new Type[2]
				{
					typeof(SphereCollider),
					typeof(DestroyListener)
				})
				{
					hideFlags = (HideFlags)61
				};
				if (Application.isPlaying)
				{
					Object.DontDestroyOnLoad((Object)(object)val);
				}
				_sphereCollider = val.GetComponent<SphereCollider>();
				collider = _sphereCollider;
				((Collider)collider).enabled = false;
				_hasSphere = true;
				return true;
			}
			catch
			{
				if ((Object)(object)_sphereCollider != (Object)null)
				{
					if (Application.isPlaying)
					{
						Object.Destroy((Object)(object)((Component)_sphereCollider).gameObject);
					}
					else
					{
						Object.DestroyImmediate((Object)(object)((Component)_sphereCollider).gameObject);
					}
				}
				_hasSphere = false;
				collider = null;
				throw;
			}
		}
	}
	public class JiggleBone
	{
		private readonly bool hasTransform;

		private readonly PositionSignal targetAnimatedBoneSignal;

		private Vector3 currentFixedAnimatedBonePosition;

		public readonly JiggleBone parent;

		private JiggleBone child;

		private Quaternion boneRotationChangeCheck;

		private Vector3 bonePositionChangeCheck;

		private Quaternion lastValidPoseBoneRotation;

		private float projectionAmount;

		private Vector3 lastValidPoseBoneLocalPosition;

		private float normalizedIndex;

		public readonly Transform transform;

		private readonly PositionSignal particleSignal;

		private Vector3 workingPosition;

		private Vector3? preTeleportPosition;

		private Vector3 extrapolatedPosition;

		private float GetLengthToParent()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			if (parent == null)
			{
				return 0.1f;
			}
			return Vector3.Distance(currentFixedAnimatedBonePosition, parent.currentFixedAnimatedBonePosition);
		}

		public JiggleBone(Transform transform, JiggleBone parent, float projectionAmount = 1f)
		{
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: 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_0037: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			this.transform = transform;
			this.parent = parent;
			this.projectionAmount = projectionAmount;
			Vector3 startPosition;
			if ((Object)(object)transform != (Object)null)
			{
				lastValidPoseBoneRotation = transform.localRotation;
				lastValidPoseBoneLocalPosition = transform.localPosition;
				startPosition = transform.position;
			}
			else
			{
				startPosition = GetProjectedPosition();
			}
			targetAnimatedBoneSignal = new PositionSignal(startPosition, Time.timeAsDouble);
			particleSignal = new PositionSignal(startPosition, Time.timeAsDouble);
			hasTransform = (Object)(object)transform != (Object)null;
			if (parent != null)
			{
				this.parent.child = this;
			}
		}

		public void CalculateNormalizedIndex()
		{
			int num = 0;
			JiggleBone jiggleBone = this;
			while (jiggleBone.parent != null)
			{
				jiggleBone = jiggleBone.parent;
				num++;
			}
			int num2 = 0;
			jiggleBone = this;
			while (jiggleBone.child != null)
			{
				jiggleBone = jiggleBone.child;
				num2++;
			}
			int num3 = num + num2;
			float num4 = (float)num / (float)num3;
			normalizedIndex = num4;
		}

		public void VerletPass(JiggleSettingsData jiggleSettings, Vector3 wind, double time)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: 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)
			currentFixedAnimatedBonePosition = targetAnimatedBoneSignal.SamplePosition(time);
			if (parent == null)
			{
				workingPosition = currentFixedAnimatedBonePosition;
				particleSignal.SetPosition(workingPosition, time);
			}
			else
			{
				Vector3 localSpaceVelocity = particleSignal.GetCurrent() - particleSignal.GetPrevious() - (parent.particleSignal.GetCurrent() - parent.particleSignal.GetPrevious());
				workingPosition = NextPhysicsPosition(particleSignal.GetCurrent(), particleSignal.GetPrevious(), localSpaceVelocity, Time.fixedDeltaTime, jiggleSettings.gravityMultiplier, jiggleSettings.friction, jiggleSettings.airDrag);
				workingPosition += wind * (Time.fixedDeltaTime * jiggleSettings.airDrag);
			}
		}

		public void CollisionPreparePass(JiggleSettingsData jiggleSettings)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			workingPosition = ConstrainLengthBackwards(workingPosition, jiggleSettings.lengthElasticity * jiggleSettings.lengthElasticity * 0.5f);
		}

		public void ConstraintPass(JiggleSettingsData jiggleSettings)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			if (parent != null)
			{
				workingPosition = ConstrainAngle(workingPosition, jiggleSettings.angleElasticity * jiggleSettings.angleElasticity, jiggleSettings.elasticitySoften);
				workingPosition = ConstrainLength(workingPosition, jiggleSettings.lengthElasticity * jiggleSettings.lengthElasticity);
			}
		}

		public void CollisionPass(JiggleSettingsBase jiggleSettings, List<Collider> colliders)
		{
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			if (colliders.Count == 0 || !CachedSphereCollider.TryGet(out var collider))
			{
				return;
			}
			Vector3 val = default(Vector3);
			float num = default(float);
			foreach (Collider collider2 in colliders)
			{
				collider.radius = jiggleSettings.GetRadius(normalizedIndex);
				if (!(collider.radius <= 0f) && Physics.ComputePenetration((Collider)(object)collider, workingPosition, Quaternion.identity, collider2, ((Component)collider2).transform.position, ((Component)collider2).transform.rotation, ref val, ref num))
				{
					workingPosition += val * num;
				}
			}
		}

		public void SignalWritePosition(double time)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			particleSignal.SetPosition(workingPosition, time);
		}

		private Vector3 GetProjectedPosition()
		{
			//IL_000c: 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_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			Vector3 position = parent.transform.position;
			return parent.transform.TransformPoint(parent.GetParentTransform().InverseTransformPoint(position) * projectionAmount);
		}

		private Vector3 GetTransformPosition()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			if (!hasTransform)
			{
				return GetProjectedPosition();
			}
			return transform.position;
		}

		private Transform GetParentTransform()
		{
			if (parent != null)
			{
				return parent.transform;
			}
			return transform.parent;
		}

		private void CacheAnimationPosition()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			if (!hasTransform)
			{
				targetAnimatedBoneSignal.SetPosition(GetProjectedPosition(), Time.timeAsDouble);
				return;
			}
			targetAnimatedBoneSignal.SetPosition(transform.position, Time.timeAsDouble);
			lastValidPoseBoneRotation = transform.localRotation;
			lastValidPoseBoneLocalPosition = transform.localPosition;
		}

		private Vector3 ConstrainLengthBackwards(Vector3 newPosition, float elasticity)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			if (child == null)
			{
				return newPosition;
			}
			Vector3 val = newPosition - child.workingPosition;
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			return Vector3.Lerp(newPosition, child.workingPosition + normalized * child.GetLengthToParent(), elasticity);
		}

		private Vector3 ConstrainLength(Vector3 newPosition, float elasticity)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = newPosition - parent.workingPosition;
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			return Vector3.Lerp(newPosition, parent.workingPosition + normalized * GetLengthToParent(), elasticity);
		}

		public void MatchAnimationInstantly()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			double timeAsDouble = Time.timeAsDouble;
			Vector3 transformPosition = GetTransformPosition();
			targetAnimatedBoneSignal.FlattenSignal(timeAsDouble, transformPosition);
			particleSignal.FlattenSignal(timeAsDouble, transformPosition);
		}

		public void PrepareTeleport()
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			preTeleportPosition = GetTransformPosition();
		}

		public void FinishTeleport()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: 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_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			if (!preTeleportPosition.HasValue)
			{
				MatchAnimationInstantly();
				return;
			}
			Vector3 transformPosition = GetTransformPosition();
			Vector3 val = transformPosition - preTeleportPosition.Value;
			targetAnimatedBoneSignal.FlattenSignal(Time.timeAsDouble, transformPosition);
			particleSignal.OffsetSignal(val);
			workingPosition += val;
		}

		private Vector3 ConstrainAngleBackward(Vector3 newPosition, float elasticity, float elasticitySoften)
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			if (child == null || child.child == null)
			{
				return newPosition;
			}
			Vector3 val = child.child.currentFixedAnimatedBonePosition - child.currentFixedAnimatedBonePosition;
			Vector3 val2 = child.child.workingPosition - child.workingPosition;
			Quaternion val3 = Quaternion.FromToRotation(val, val2);
			Vector3 val4 = newPosition - child.workingPosition;
			Vector3 val5 = val3 * val4;
			Debug.DrawLine(newPosition, child.workingPosition + val5, Color.cyan);
			float num = Vector3.Distance(newPosition, child.workingPosition + val5);
			num /= child.GetLengthToParent();
			num = Mathf.Clamp01(num);
			num = Mathf.Pow(num, elasticitySoften * 2f);
			return Vector3.Lerp(newPosition, child.workingPosition + val5, elasticity * num);
		}

		private Vector3 ConstrainAngle(Vector3 newPosition, float elasticity, float elasticitySoften)
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			if (!hasTransform && projectionAmount == 0f)
			{
				return newPosition;
			}
			Vector3 val;
			Vector3 val2;
			if (parent.parent == null)
			{
				val = parent.currentFixedAnimatedBonePosition + (parent.currentFixedAnimatedBonePosition - currentFixedAnimatedBonePosition);
				val2 = val;
			}
			else
			{
				val2 = parent.parent.workingPosition;
				val = parent.parent.currentFixedAnimatedBonePosition;
			}
			Vector3 val3 = parent.currentFixedAnimatedBonePosition - val;
			Vector3 val4 = parent.workingPosition - val2;
			Quaternion val5 = Quaternion.FromToRotation(val3, val4);
			Vector3 val6 = currentFixedAnimatedBonePosition - val;
			Vector3 val7 = val5 * val6;
			float num = Vector3.Distance(newPosition, val2 + val7);
			num /= GetLengthToParent();
			num = Mathf.Clamp01(num);
			num = Mathf.Pow(num, elasticitySoften * 2f);
			return Vector3.Lerp(newPosition, val2 + val7, elasticity * num);
		}

		public static Vector3 NextPhysicsPosition(Vector3 newPosition, Vector3 previousPosition, Vector3 localSpaceVelocity, float deltaTime, float gravityMultiplier, float friction, float airFriction)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: 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)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: 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_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: 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)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			float num = deltaTime * deltaTime;
			Vector3 val = newPosition - previousPosition - localSpaceVelocity;
			return newPosition + val * (1f - airFriction) + localSpaceVelocity * (1f - friction) + Physics.gravity * (gravityMultiplier * num);
		}

		public void DebugDraw(Color simulateColor, Color targetColor, bool interpolated)
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: 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_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			if (parent != null)
			{
				if (interpolated)
				{
					Debug.DrawLine(extrapolatedPosition, parent.extrapolatedPosition, simulateColor, 0f, false);
				}
				else
				{
					Debug.DrawLine(workingPosition, parent.workingPosition, simulateColor, 0f, false);
				}
				Debug.DrawLine(currentFixedAnimatedBonePosition, parent.currentFixedAnimatedBonePosition, targetColor, 0f, false);
			}
		}

		public Vector3 DeriveFinalSolvePosition(Vector3 offset)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: 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_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			extrapolatedPosition = offset + particleSignal.SamplePosition(Time.timeAsDouble);
			return extrapolatedPosition;
		}

		public Vector3 GetCachedSolvePosition()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return extrapolatedPosition;
		}

		public void PrepareBone()
		{
			//IL_000d: 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_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			if (hasTransform)
			{
				if (boneRotationChangeCheck == transform.localRotation)
				{
					transform.localRotation = lastValidPoseBoneRotation;
				}
				if (bonePositionChangeCheck == transform.localPosition)
				{
					transform.localPosition = lastValidPoseBoneLocalPosition;
				}
			}
			CacheAnimationPosition();
		}

		public void OnDrawGizmos(JiggleSettingsBase jiggleSettings)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)transform != (Object)null && child != null && (Object)(object)child.transform != (Object)null)
			{
				Gizmos.DrawLine(transform.position, child.transform.position);
			}
			if ((Object)(object)transform != (Object)null && child != null && (Object)(object)child.transform == (Object)null)
			{
				Gizmos.DrawLine(transform.position, child.GetProjectedPosition());
			}
			if ((Object)(object)transform != (Object)null && (Object)(object)jiggleSettings != (Object)null)
			{
				Gizmos.DrawWireSphere(transform.position, jiggleSettings.GetRadius(normalizedIndex));
			}
			if ((Object)(object)transform == (Object)null && (Object)(object)jiggleSettings != (Object)null)
			{
				Gizmos.DrawWireSphere(GetProjectedPosition(), jiggleSettings.GetRadius(normalizedIndex));
			}
		}

		public void PoseBone(float blend)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			if (child != null)
			{
				Vector3 val = Vector3.Lerp(targetAnimatedBoneSignal.SamplePosition(Time.timeAsDouble), extrapolatedPosition, blend);
				Vector3 val2 = Vector3.Lerp(child.targetAnimatedBoneSignal.SamplePosition(Time.timeAsDouble), child.extrapolatedPosition, blend);
				if (parent != null)
				{
					transform.position = val;
				}
				Vector3 transformPosition = child.GetTransformPosition();
				Vector3 val3 = transformPosition - transform.position;
				Vector3 val4 = val2 - val;
				Quaternion val5 = Quaternion.FromToRotation(val3, val4);
				transform.rotation = val5 * transform.rotation;
			}
			if (hasTransform)
			{
				boneRotationChangeCheck = transform.localRotation;
				bonePositionChangeCheck = transform.localPosition;
			}
		}
	}
	[DefaultExecutionOrder(200)]
	public class JiggleRigBuilder : MonoBehaviour
	{
		[SerializeField]
		[Tooltip("The root bone from which an individual JiggleRig will be constructed. The JiggleRig encompasses all children of the specified root.")]
		[FormerlySerializedAs("target")]
		private Transform rootTransform;

		[Tooltip("The settings that the rig should update with, create them using the Create->JigglePhysics->Settings menu option.")]
		public JiggleSettingsBase jiggleSettings;

		[SerializeField]
		[Tooltip("The list of transforms to ignore during the jiggle. Each bone listed will also ignore all the children of the specified bone.")]
		private List<Transform> ignoredTransforms;

		public List<Collider> colliders;

		[Tooltip("An air force that is applied to the entire rig, this is useful to plug in some wind volumes from external sources.")]
		public Vector3 wind;

		[Tooltip("Level of detail manager. This system will control how the jiggle rig saves performance cost.")]
		public JiggleRigLOD levelOfDetail;

		[Tooltip("Draws some simple lines to show what the simulation is doing. Generally this should be disabled.")]
		[SerializeField]
		private bool debugDraw;

		private JiggleSettingsData data;

		private bool initialized;

		[HideInInspector]
		protected List<JiggleBone> simulatedPoints;

		private double accumulation;

		private bool dirtyFromEnable = false;

		private bool wasLODActive = true;

		public static float maxCatchupTime => Time.fixedDeltaTime * 4f;

		private bool NeedsCollisions => colliders.Count != 0;

		public Transform GetRootTransform()
		{
			return rootTransform;
		}

		public void PrepareBone(Vector3 position, JiggleRigLOD jiggleRigLOD)
		{
			//IL_0014: 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)
			if (!initialized)
			{
				throw new UnityException("JiggleRig was never initialized. Please call JiggleRig.Initialize() if you're going to manually timestep.");
			}
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.PrepareBone();
			}
			data = jiggleSettings.GetData();
			data = (((Object)(object)jiggleRigLOD != (Object)null) ? jiggleRigLOD.AdjustJiggleSettingsData(position, data) : data);
		}

		public void MatchAnimationInstantly()
		{
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.MatchAnimationInstantly();
			}
		}

		public void UpdateJiggle(Vector3 wind, double time)
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.VerletPass(data, wind, time);
			}
			if (NeedsCollisions)
			{
				for (int num = simulatedPoints.Count - 1; num >= 0; num--)
				{
					simulatedPoints[num].CollisionPreparePass(data);
				}
			}
			foreach (JiggleBone simulatedPoint2 in simulatedPoints)
			{
				simulatedPoint2.ConstraintPass(data);
			}
			if (NeedsCollisions)
			{
				foreach (JiggleBone simulatedPoint3 in simulatedPoints)
				{
					simulatedPoint3.CollisionPass(jiggleSettings, colliders);
				}
			}
			foreach (JiggleBone simulatedPoint4 in simulatedPoints)
			{
				simulatedPoint4.SignalWritePosition(time);
			}
		}

		public void DeriveFinalSolve()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = simulatedPoints[0].DeriveFinalSolvePosition(Vector3.zero);
			Vector3 offset = simulatedPoints[0].transform.position - val;
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.DeriveFinalSolvePosition(offset);
			}
		}

		public void Pose(bool debugDraw)
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			DeriveFinalSolve();
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.PoseBone(data.blend);
				if (debugDraw)
				{
					simulatedPoint.DebugDraw(Color.red, Color.blue, interpolated: true);
				}
			}
		}

		public void PrepareTeleport()
		{
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.PrepareTeleport();
			}
		}

		public void FinishTeleport()
		{
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.FinishTeleport();
			}
		}

		protected virtual void CreateSimulatedPoints(ICollection<JiggleBone> outputPoints, ICollection<Transform> ignoredTransforms, Transform currentTransform, JiggleBone parentJiggleBone)
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			JiggleBone jiggleBone = new JiggleBone(currentTransform, parentJiggleBone);
			outputPoints.Add(jiggleBone);
			if (currentTransform.childCount == 0)
			{
				if (jiggleBone.parent == null)
				{
					if ((Object)(object)jiggleBone.transform.parent == (Object)null)
					{
						throw new UnityException("Can't have a singular jiggle bone with no parents. That doesn't even make sense!");
					}
					outputPoints.Add(new JiggleBone(null, jiggleBone));
				}
				else
				{
					outputPoints.Add(new JiggleBone(null, jiggleBone));
				}
				return;
			}
			for (int i = 0; i < currentTransform.childCount; i++)
			{
				if (!ignoredTransforms.Contains(currentTransform.GetChild(i)))
				{
					CreateSimulatedPoints(outputPoints, ignoredTransforms, currentTransform.GetChild(i), jiggleBone);
				}
			}
		}

		private void Awake()
		{
			Initialize();
		}

		private void OnEnable()
		{
			JiggleRigHandler.AddBuilder(this);
			dirtyFromEnable = true;
		}

		private void OnDisable()
		{
			JiggleRigHandler.RemoveBuilder(this);
			PrepareTeleport();
		}

		public void Initialize()
		{
			accumulation = 0.0;
			simulatedPoints = new List<JiggleBone>();
			if ((Object)(object)rootTransform == (Object)null)
			{
				return;
			}
			CreateSimulatedPoints(simulatedPoints, ignoredTransforms, rootTransform, null);
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.CalculateNormalizedIndex();
			}
			initialized = true;
		}

		public virtual void Advance(float deltaTime)
		{
			//IL_001b: 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_00d3: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)levelOfDetail != (Object)null && !levelOfDetail.CheckActive(((Component)this).transform.position))
			{
				if (wasLODActive)
				{
					PrepareTeleport();
				}
				wasLODActive = false;
				return;
			}
			if (!wasLODActive)
			{
				FinishTeleport();
			}
			PrepareBone(((Component)this).transform.position, levelOfDetail);
			if (dirtyFromEnable)
			{
				FinishTeleport();
				dirtyFromEnable = false;
			}
			accumulation = Math.Min(accumulation + (double)deltaTime, maxCatchupTime);
			while (accumulation > (double)Time.fixedDeltaTime)
			{
				accumulation -= Time.fixedDeltaTime;
				double time = Time.timeAsDouble - accumulation;
				UpdateJiggle(wind, time);
			}
			Pose(debugDraw);
			wasLODActive = true;
		}

		private void OnDrawGizmos()
		{
			if (!initialized || simulatedPoints == null)
			{
				Initialize();
			}
			foreach (JiggleBone simulatedPoint in simulatedPoints)
			{
				simulatedPoint.OnDrawGizmos(jiggleSettings);
			}
		}

		private void OnValidate()
		{
			if ((Object)(object)rootTransform == (Object)null)
			{
				rootTransform = ((Component)this).transform;
			}
			if (!Application.isPlaying)
			{
				Initialize();
			}
		}
	}
	public static class JiggleRigHandler
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static UpdateFunction <0>__UpdateJiggleRigs;
		}

		private static bool initialized = false;

		private static HashSet<JiggleRigBuilder> builders = new HashSet<JiggleRigBuilder>();

		private static void Initialize()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Expected O, but got Unknown
			if (!initialized)
			{
				PlayerLoopSystem currentPlayerLoop = PlayerLoop.GetCurrentPlayerLoop();
				PlayerLoopSystem self = currentPlayerLoop;
				PlayerLoopSystem systemToInject = default(PlayerLoopSystem);
				object obj = <>O.<0>__UpdateJiggleRigs;
				if (obj == null)
				{
					UpdateFunction val = UpdateJiggleRigs;
					<>O.<0>__UpdateJiggleRigs = val;
					obj = (object)val;
				}
				systemToInject.updateDelegate = (UpdateFunction)obj;
				systemToInject.type = typeof(JiggleRigHandler);
				currentPlayerLoop = self.InjectAt<PostLateUpdate>(systemToInject);
				PlayerLoop.SetPlayerLoop(currentPlayerLoop);
				initialized = true;
			}
		}

		private static void UpdateJiggleRigs()
		{
			CachedSphereCollider.StartPass();
			foreach (JiggleRigBuilder builder in builders)
			{
				builder.Advance(Time.deltaTime);
			}
			CachedSphereCollider.FinishedPass();
		}

		public static void AddBuilder(JiggleRigBuilder builder)
		{
			builders.Add(builder);
			Initialize();
		}

		public static void RemoveBuilder(JiggleRigBuilder builder)
		{
			builders.Remove(builder);
		}

		private static PlayerLoopSystem InjectAt<T>(this PlayerLoopSystem self, PlayerLoopSystem systemToInject)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			int num = FindIndexOfSubsystem<T>(self.subSystemList);
			if (num == -1)
			{
				throw new UnityException($"Failed to find PlayerLoopSystem with type{typeof(T)}");
			}
			List<PlayerLoopSystem> list = new List<PlayerLoopSystem>(self.subSystemList[num].subSystemList);
			foreach (PlayerLoopSystem item2 in list)
			{
				if (item2.type != typeof(JiggleRigBuilder))
				{
					continue;
				}
				Debug.LogWarning((object)$"Tried to inject a PlayerLoopSystem ({systemToInject.type}) more than once! Ignoring the second injection.");
				return self;
			}
			PlayerLoopSystem item = default(PlayerLoopSystem);
			object obj = <>O.<0>__UpdateJiggleRigs;
			if (obj == null)
			{
				UpdateFunction val = UpdateJiggleRigs;
				<>O.<0>__UpdateJiggleRigs = val;
				obj = (object)val;
			}
			item.updateDelegate = (UpdateFunction)obj;
			item.type = typeof(JiggleRigHandler);
			list.Insert(0, item);
			self.subSystemList[num].subSystemList = list.ToArray();
			return self;
		}

		private static int FindIndexOfSubsystem<T>(PlayerLoopSystem[] list, int index = -1)
		{
			if (list == null)
			{
				return -1;
			}
			for (int i = 0; i < list.Length; i++)
			{
				if (list[i].type == typeof(T))
				{
					return i;
				}
			}
			return -1;
		}
	}
	public abstract class JiggleRigLOD : ScriptableObject
	{
		public abstract bool CheckActive(Vector3 position);

		public abstract JiggleSettingsData AdjustJiggleSettingsData(Vector3 position, JiggleSettingsData data);
	}
	[CreateAssetMenu(fileName = "JiggleRigSimpleLOD", menuName = "JigglePhysics/JiggleRigSimpleLOD", order = 1)]
	public class JiggleRigSimpleLOD : JiggleRigLOD
	{
		[Tooltip("Distance to disable the jiggle rig")]
		[SerializeField]
		private float distance;

		[Tooltip("Level of detail manager. This system will control how the jiggle rig saves performance cost.")]
		[SerializeField]
		private float blend;

		[NonSerialized]
		private Camera currentCamera;

		[NonSerialized]
		private Transform cameraTransform;

		private bool TryGetCamera(out Camera camera)
		{
			if ((Object)(object)currentCamera == (Object)null || !((Component)currentCamera).CompareTag("MainCamera"))
			{
				currentCamera = Camera.main;
			}
			camera = currentCamera;
			return (Object)(object)currentCamera != (Object)null;
		}

		public override bool CheckActive(Vector3 position)
		{
			//IL_001b: 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)
			if (!TryGetCamera(out var camera))
			{
				return false;
			}
			return Vector3.Distance(((Component)camera).transform.position, position) < distance;
		}

		public override JiggleSettingsData AdjustJiggleSettingsData(Vector3 position, JiggleSettingsData data)
		{
			//IL_001b: 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)
			if (!TryGetCamera(out var camera))
			{
				return data;
			}
			float num = (Vector3.Distance(((Component)camera).transform.position, position) - distance + blend) / blend;
			num = Mathf.Clamp01(1f - num);
			data.blend = num;
			return data;
		}
	}
	public struct JiggleSettingsData
	{
		public float gravityMultiplier;

		public float friction;

		public float angleElasticity;

		public float blend;

		public float airDrag;

		public float lengthElasticity;

		public float elasticitySoften;

		public float radiusMultiplier;

		public static JiggleSettingsData Lerp(JiggleSettingsData a, JiggleSettingsData b, float t)
		{
			JiggleSettingsData result = default(JiggleSettingsData);
			result.gravityMultiplier = Mathf.Lerp(a.gravityMultiplier, b.gravityMultiplier, t);
			result.friction = Mathf.Lerp(a.friction, b.friction, t);
			result.angleElasticity = Mathf.Lerp(a.angleElasticity, b.angleElasticity, t);
			result.blend = Mathf.Lerp(a.blend, b.blend, t);
			result.airDrag = Mathf.Lerp(a.airDrag, b.airDrag, t);
			result.lengthElasticity = Mathf.Lerp(a.lengthElasticity, b.lengthElasticity, t);
			result.elasticitySoften = Mathf.Lerp(a.elasticitySoften, b.elasticitySoften, t);
			result.radiusMultiplier = Mathf.Lerp(a.radiusMultiplier, b.radiusMultiplier, t);
			return result;
		}
	}
	[CreateAssetMenu(fileName = "JiggleSettings", menuName = "JigglePhysics/Settings", order = 1)]
	public class JiggleSettings : JiggleSettingsBase
	{
		[SerializeField]
		[Range(0f, 2f)]
		[Tooltip("How much gravity to apply to the simulation, it is a multiplier of the Physics.gravity setting.")]
		private float gravityMultiplier = 1f;

		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How much mechanical friction to apply, this is specifically how quickly oscillations come to rest.")]
		private float friction = 0.4f;

		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How much angular force is applied to bring it to the target shape.")]
		private float angleElasticity = 0.4f;

		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How much of the simulation should be expressed. A value of 0 would make the jiggle have zero effect. A value of 1 gives the full movement as intended. 0.5 would ")]
		private float blend = 1f;

		[FormerlySerializedAs("airFriction")]
		[HideInInspector]
		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How much jiggled objects should get dragged behind by moving through the air. Or how \"thick\" the air is.")]
		private float airDrag = 0.1f;

		[HideInInspector]
		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How rigidly the rig holds its length. Low values cause lots of squash and stretch!")]
		private float lengthElasticity = 0.8f;

		[HideInInspector]
		[SerializeField]
		[Range(0f, 1f)]
		[Tooltip("How much to allow free bone motion before engaging elasticity.")]
		private float elasticitySoften = 0f;

		[HideInInspector]
		[SerializeField]
		[Tooltip("How much radius points have, only used for collisions. Set to 0 to disable collisions")]
		private float radiusMultiplier = 0f;

		[HideInInspector]
		[SerializeField]
		[Tooltip("How the radius is expressed as a curve along the bone chain from root to child.")]
		private AnimationCurve radiusCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
		{
			new Keyframe(0f, 1f),
			new Keyframe(1f, 0f)
		});

		public override JiggleSettingsData GetData()
		{
			JiggleSettingsData result = default(JiggleSettingsData);
			result.gravityMultiplier = gravityMultiplier;
			result.friction = friction;
			result.airDrag = airDrag;
			result.blend = blend;
			result.angleElasticity = angleElasticity;
			result.elasticitySoften = elasticitySoften;
			result.lengthElasticity = lengthElasticity;
			result.radiusMultiplier = radiusMultiplier;
			return result;
		}

		public void SetData(JiggleSettingsData data)
		{
			gravityMultiplier = data.gravityMultiplier;
			friction = data.friction;
			angleElasticity = data.angleElasticity;
			blend = data.blend;
			airDrag = data.airDrag;
			lengthElasticity = data.lengthElasticity;
			elasticitySoften = data.elasticitySoften;
			radiusMultiplier = data.radiusMultiplier;
		}

		public override float GetRadius(float normalizedIndex)
		{
			return radiusMultiplier * radiusCurve.Evaluate(normalizedIndex);
		}

		public void SetRadiusCurve(AnimationCurve curve)
		{
			radiusCurve = curve;
		}
	}
	public class JiggleSettingsBase : ScriptableObject
	{
		public virtual JiggleSettingsData GetData()
		{
			return default(JiggleSettingsData);
		}

		public virtual float GetRadius(float normalizedIndex)
		{
			return 0f;
		}
	}
	[CreateAssetMenu(fileName = "JiggleSettingsBlend", menuName = "JigglePhysics/Blend Settings", order = 1)]
	public class JiggleSettingsBlend : JiggleSettingsBase
	{
		[Tooltip("The list of jiggle settings to blend between.")]
		public List<JiggleSettings> blendSettings;

		[Range(0f, 1f)]
		[Tooltip("A value from 0 to 1 that linearly blends between all of the blendSettings.")]
		public float normalizedBlend;

		public override JiggleSettingsData GetData()
		{
			int num = blendSettings.Count - 1;
			float num2 = Mathf.Clamp01(normalizedBlend);
			int num3 = Mathf.Clamp(Mathf.FloorToInt(num2 * (float)num), 0, num);
			int index = Mathf.Clamp(Mathf.FloorToInt(num2 * (float)num) + 1, 0, num);
			return JiggleSettingsData.Lerp(blendSettings[num3].GetData(), blendSettings[index].GetData(), Mathf.Clamp01(num2 * (float)num - (float)num3));
		}

		public override float GetRadius(float normalizedIndex)
		{
			float num = Mathf.Clamp01(normalizedBlend);
			int num2 = Mathf.FloorToInt(num * (float)blendSettings.Count);
			int num3 = Mathf.FloorToInt(num * (float)blendSettings.Count) + 1;
			return Mathf.Lerp(blendSettings[Mathf.Clamp(num2, 0, blendSettings.Count - 1)].GetRadius(normalizedIndex), blendSettings[Mathf.Clamp(num3, 0, blendSettings.Count - 1)].GetRadius(normalizedIndex), Mathf.Clamp01(num * (float)blendSettings.Count - (float)num2));
		}
	}
	[BepInPlugin("1.Waga.JigglePhysicsPlugin", "JigglePhysicsPlugin", "1.1.2")]
	public class Plugin : BaseUnityPlugin
	{
		private Harmony _harmony;

		private static Plugin instance;

		private void Awake()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			instance = this;
			_harmony = new Harmony("JigglePhysicsPlugin");
			_harmony.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"JigglePhysicsPlugin loaded!");
		}

		public static void Log(string message)
		{
			((BaseUnityPlugin)instance).Logger.LogInfo((object)message);
		}
	}
	public class PositionSignal
	{
		private struct Frame
		{
			public Vector3 position;

			public double time;
		}

		private Frame previousFrame;

		private Frame currentFrame;

		public PositionSignal(Vector3 startPosition, double time)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			currentFrame = (previousFrame = new Frame
			{
				position = startPosition,
				time = time
			});
		}

		public void SetPosition(Vector3 position, double time)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			previousFrame = currentFrame;
			currentFrame = new Frame
			{
				position = position,
				time = time
			};
		}

		public void OffsetSignal(Vector3 offset)
		{
			//IL_0012: 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_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			previousFrame = new Frame
			{
				position = previousFrame.position + offset,
				time = previousFrame.time
			};
			currentFrame = new Frame
			{
				position = currentFrame.position + offset,
				time = previousFrame.time
			};
		}

		public void FlattenSignal(double time, Vector3 position)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			previousFrame = new Frame
			{
				position = position,
				time = time - (double)(JiggleRigBuilder.maxCatchupTime * 2f)
			};
			currentFrame = new Frame
			{
				position = position,
				time = time - (double)JiggleRigBuilder.maxCatchupTime
			};
		}

		public Vector3 GetCurrent()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			return currentFrame.position;
		}

		public Vector3 GetPrevious()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			return previousFrame.position;
		}

		public Vector3 SamplePosition(double time)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			double num = currentFrame.time - previousFrame.time;
			if (num == 0.0)
			{
				return previousFrame.position;
			}
			double num2 = (time - previousFrame.time) / num;
			return Vector3.Lerp(previousFrame.position, currentFrame.position, (float)num2);
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "JigglePhysicsPlugin";

		public const string PLUGIN_NAME = "JigglePhysicsPlugin";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}

GenshinImpactOverhaulRepo.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GenshinImpactOverhaulRepo;
using GenshinImpactOverhaulRepo_AnimationEventHandler;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("GenshinImpactOverhaulRepo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GenshinImpactOverhaulRepo")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("37bcfbfa-ae7f-4caf-8417-bd3fae2c75f7")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
[RequireComponent(typeof(Rigidbody))]
public class DiceController : MonoBehaviour
{
	public float spinDuration = 4.8f;

	public float preAlignDuration = 0.6f;

	public float snapBlendTime = 0.15f;

	public float displayDuration = 2.4f;

	public float torqueForce = 40f;

	public float angularDrag = 0.05f;

	public float floatAmplitude = 0.12f;

	public float floatFrequency = 2f;

	public Transform snapTarget;

	private Vector3 startPosition;

	private Rigidbody rb;

	private int forcedFace = 0;

	private Quaternion snapTargetRot;

	private Quaternion snapStartRot;

	private ParticleSystem[] diceSelectSystems;

	public void Init(Transform spawnPoint, Transform faceTarget, int forcedFaceResult = 0)
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: 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_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
		forcedFace = forcedFaceResult;
		snapTarget = faceTarget;
		startPosition = spawnPoint.position;
		((Component)this).transform.position = startPosition;
		((Component)this).transform.rotation = Random.rotation;
		rb = ((Component)this).GetComponent<Rigidbody>();
		if ((Object)(object)rb == (Object)null)
		{
			rb = ((Component)this).gameObject.AddComponent<Rigidbody>();
		}
		rb.useGravity = false;
		rb.interpolation = (RigidbodyInterpolation)1;
		rb.collisionDetectionMode = (CollisionDetectionMode)2;
		rb.isKinematic = false;
		rb.angularDrag = angularDrag;
		rb.angularVelocity = Random.onUnitSphere * torqueForce;
		CacheDiceSelectParticleSystems();
		StopDiceSelectSystems();
		((MonoBehaviour)this).StartCoroutine(LifecycleCoroutine());
	}

	private void CacheDiceSelectParticleSystems()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Expected O, but got Unknown
		Transform val = ((Component)this).transform.Find("DiceSelect");
		if ((Object)(object)val == (Object)null)
		{
			foreach (Transform item in ((Component)this).transform)
			{
				Transform parent = item;
				Transform val2 = FindChildRecursive(parent, "DiceSelect");
				if ((Object)(object)val2 != (Object)null)
				{
					val = val2;
					break;
				}
			}
		}
		if ((Object)(object)val != (Object)null)
		{
			diceSelectSystems = ((Component)val).GetComponentsInChildren<ParticleSystem>(true);
			return;
		}
		ParticleSystem[] componentsInChildren = ((Component)this).GetComponentsInChildren<ParticleSystem>(true);
		List<ParticleSystem> list = new List<ParticleSystem>();
		ParticleSystem[] array = componentsInChildren;
		foreach (ParticleSystem val3 in array)
		{
			if (((Object)((Component)val3).gameObject).name == "DiceSelect")
			{
				list.Add(val3);
			}
		}
		diceSelectSystems = (ParticleSystem[])((list.Count > 0) ? ((Array)list.ToArray()) : ((Array)new ParticleSystem[0]));
	}

	private Transform FindChildRecursive(Transform parent, string name)
	{
		if (((Object)parent).name == name)
		{
			return parent;
		}
		for (int i = 0; i < parent.childCount; i++)
		{
			Transform val = FindChildRecursive(parent.GetChild(i), name);
			if ((Object)(object)val != (Object)null)
			{
				return val;
			}
		}
		return null;
	}

	private void StopDiceSelectSystems()
	{
		if (diceSelectSystems == null || diceSelectSystems.Length == 0)
		{
			return;
		}
		ParticleSystem[] array = diceSelectSystems;
		foreach (ParticleSystem val in array)
		{
			if (!((Object)(object)val == (Object)null))
			{
				val.Stop(true, (ParticleSystemStopBehavior)0);
				((Component)val).gameObject.SetActive(true);
			}
		}
	}

	private void PlayDiceSelectSystems()
	{
		if (diceSelectSystems == null || diceSelectSystems.Length == 0)
		{
			return;
		}
		ParticleSystem[] array = diceSelectSystems;
		foreach (ParticleSystem val in array)
		{
			if (!((Object)(object)val == (Object)null))
			{
				val.Clear(true);
				val.Play(true);
			}
		}
	}

	private IEnumerator LifecycleCoroutine()
	{
		float timer = 0f;
		while (timer < spinDuration - preAlignDuration - snapBlendTime)
		{
			timer += Time.deltaTime;
			yield return null;
		}
		int finalFace = ((forcedFace != 0) ? forcedFace : GetPhysicsFace());
		Quaternion targetRot = GetRotationForFace_Toward(finalFace, GetTargetDirection());
		float alignTimer = 0f;
		while (alignTimer < preAlignDuration)
		{
			alignTimer += Time.deltaTime;
			float t = alignTimer / preAlignDuration;
			float eased = Mathf.SmoothStep(0f, 1f, t);
			Quaternion blended = Quaternion.Slerp(((Component)this).transform.rotation, targetRot, eased * 0.5f);
			rb.MoveRotation(blended);
			yield return null;
		}
		rb.velocity = Vector3.zero;
		rb.angularVelocity = Vector3.zero;
		rb.isKinematic = true;
		snapStartRot = ((Component)this).transform.rotation;
		snapTargetRot = targetRot;
		if (Quaternion.Dot(snapStartRot, snapTargetRot) < 0f)
		{
			snapTargetRot = new Quaternion(0f - snapTargetRot.x, 0f - snapTargetRot.y, 0f - snapTargetRot.z, 0f - snapTargetRot.w);
		}
		float snapTimer = 0f;
		while (snapTimer < snapBlendTime)
		{
			snapTimer += Time.deltaTime;
			float t2 = Mathf.Clamp01(snapTimer / snapBlendTime);
			((Component)this).transform.rotation = Quaternion.Slerp(snapStartRot, snapTargetRot, t2);
			yield return null;
		}
		((Component)this).transform.rotation = snapTargetRot;
		PlayDiceSelectSystems();
		yield return (object)new WaitForSeconds(displayDuration);
		Object.Destroy((Object)(object)((Component)this).gameObject);
	}

	private void FixedUpdate()
	{
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		float num = Mathf.Sin(Time.time * floatFrequency) * floatAmplitude;
		Vector3 val = default(Vector3);
		((Vector3)(ref val))..ctor(startPosition.x, startPosition.y + num, startPosition.z);
		if ((Object)(object)rb != (Object)null && !rb.isKinematic)
		{
			rb.MovePosition(val);
		}
		else
		{
			((Component)this).transform.position = val;
		}
	}

	private Vector3 GetTargetDirection()
	{
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: 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_0037: 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_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)snapTarget == (Object)null)
		{
			return Vector3.up;
		}
		Vector3 val = snapTarget.position - ((Component)this).transform.position;
		return ((Vector3)(ref val)).normalized;
	}

	private Quaternion GetRotationForFace_Toward(int face, Vector3 targetDirection)
	{
		//IL_002b: 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_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: 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)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: 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_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_008d: 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_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		//IL_0095: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = (Vector3)(face switch
		{
			1 => Vector3.up, 
			2 => Vector3.forward, 
			3 => Vector3.right, 
			4 => -Vector3.right, 
			5 => -Vector3.forward, 
			6 => -Vector3.up, 
			_ => Vector3.up, 
		});
		Quaternion rotation = ((Component)this).transform.rotation;
		Vector3 val2 = rotation * val;
		Quaternion val3 = Quaternion.FromToRotation(val2, targetDirection);
		return val3 * rotation;
	}

	private int GetPhysicsFace()
	{
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		Vector3[] array = (Vector3[])(object)new Vector3[6]
		{
			((Component)this).transform.up,
			-((Component)this).transform.up,
			((Component)this).transform.forward,
			-((Component)this).transform.forward,
			((Component)this).transform.right,
			-((Component)this).transform.right
		};
		float num = -10f;
		int num2 = 0;
		for (int i = 0; i < array.Length; i++)
		{
			float num3 = Vector3.Dot(((Vector3)(ref array[i])).normalized, Vector3.up);
			if (num3 > num)
			{
				num = num3;
				num2 = i;
			}
		}
		return num2 switch
		{
			0 => 1, 
			1 => 6, 
			2 => 2, 
			3 => 5, 
			4 => 3, 
			5 => 4, 
			_ => 1, 
		};
	}
}
public class ColliderVisualizer : MonoBehaviour
{
	private CapsuleCollider capsule;

	private BoxCollider box;

	private SphereCollider sphere;

	private GameObject visualObject;

	private void Awake()
	{
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Expected O, but got Unknown
		//IL_0115: Unknown result type (might be due to invalid IL or missing references)
		capsule = ((Component)this).GetComponent<CapsuleCollider>();
		box = ((Component)this).GetComponent<BoxCollider>();
		sphere = ((Component)this).GetComponent<SphereCollider>();
		if (!((Object)(object)capsule == (Object)null) || !((Object)(object)box == (Object)null) || !((Object)(object)sphere == (Object)null))
		{
			if ((Object)(object)capsule != (Object)null)
			{
				visualObject = GameObject.CreatePrimitive((PrimitiveType)1);
			}
			else if ((Object)(object)box != (Object)null)
			{
				visualObject = GameObject.CreatePrimitive((PrimitiveType)3);
			}
			else
			{
				visualObject = GameObject.CreatePrimitive((PrimitiveType)0);
			}
			((Object)visualObject).name = "ColliderDebugVisual";
			Object.Destroy((Object)(object)visualObject.GetComponent<Collider>());
			visualObject.transform.SetParent(((Component)this).transform);
			visualObject.transform.localRotation = Quaternion.identity;
			Material val = new Material(Shader.Find("Standard"));
			val.color = new Color(1f, 0f, 0f, 0.25f);
			val.SetFloat("_Mode", 3f);
			val.SetInt("_SrcBlend", 5);
			val.SetInt("_DstBlend", 10);
			val.SetInt("_ZWrite", 0);
			val.EnableKeyword("_ALPHABLEND_ON");
			val.renderQueue = 3000;
			((Renderer)visualObject.GetComponent<MeshRenderer>()).material = val;
		}
	}

	private void LateUpdate()
	{
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0155: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a3: 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_01e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)visualObject == (Object)null)
		{
			return;
		}
		if ((Object)(object)capsule != (Object)null)
		{
			visualObject.transform.localPosition = capsule.center;
			float height = capsule.height;
			float radius = capsule.radius;
			visualObject.transform.localScale = new Vector3(radius * 2f, height / 2f, radius * 2f);
			if (capsule.direction == 0)
			{
				visualObject.transform.localRotation = Quaternion.Euler(0f, 0f, 90f);
			}
			else if (capsule.direction == 2)
			{
				visualObject.transform.localRotation = Quaternion.Euler(90f, 0f, 0f);
			}
			else
			{
				visualObject.transform.localRotation = Quaternion.identity;
			}
		}
		else if ((Object)(object)box != (Object)null)
		{
			visualObject.transform.localPosition = box.center;
			visualObject.transform.localRotation = Quaternion.identity;
			visualObject.transform.localScale = box.size;
		}
		else if ((Object)(object)sphere != (Object)null)
		{
			visualObject.transform.localPosition = sphere.center;
			float num = sphere.radius * 2f;
			visualObject.transform.localRotation = Quaternion.identity;
			visualObject.transform.localScale = new Vector3(num, num, num);
		}
	}
}
namespace GenshinImpactOverhaulRepo
{
	[BepInPlugin("GenshinImpactOverhaul", "GoblinKingShmeeGenshinImpactOverhaul", "1.0.0")]
	public class GenshinImpactOverhaul : BaseUnityPlugin
	{
		private readonly Harmony harmony = new Harmony("GenshinImpactOverhaul");

		private static GenshinImpactOverhaul Instance;

		public static ManualLogSource mls;

		public static AssetBundle GenshinImpactOverhaulAssetBundle;

		public static GameObject MikaPrefab;

		public static AudioClip MikaSoundDeath1;

		public static AudioClip MikaSoundDeath2;

		public static AudioClip MikaSoundDeath3;

		public static AudioClip MikaSoundHurt1;

		public static AudioClip MikaSoundHurt2;

		public static AudioClip MikaSoundHurt3;

		public static AudioClip MikaSoundDespawn;

		public static AudioClip MikaSoundSpawn;

		public static AudioClip MikaSoundIdle1;

		public static AudioClip MikaSoundIdle2;

		public static AudioClip MikaSoundIdle3;

		public static AudioClip MikaSoundJump;

		public static AudioClip MikaSoundNotice1;

		public static AudioClip MikaSoundNotice2;

		public static AudioClip MikaSoundNotice3;

		public static AudioClip MikaSoundPickaxeTell;

		public static AudioClip MikaSoundStunFlyLoop;

		public static AudioClip MikaStunIntro1;

		public static AudioClip MikaStunIntro2;

		public static AudioClip MikaStunIntro3;

		public static AudioClip MikaStunOutro1;

		public static AudioClip MikaStunOutro2;

		public static AudioClip MikaStunOutro3;

		public static GameObject ClorindePrefab;

		public static AudioClip ClorindeSoundAim1;

		public static AudioClip ClorindeSoundAim2;

		public static AudioClip ClorindeSoundAim3;

		public static AudioClip ClorindeSoundAimGlobal1;

		public static AudioClip ClorindeSoundAimGlobal2;

		public static AudioClip ClorindeSoundAimGlobal3;

		public static AudioClip ClorindeSoundDeath1;

		public static AudioClip ClorindeSoundDeath2;

		public static AudioClip ClorindeSoundDeath3;

		public static AudioClip ClorindeSoundHurt1;

		public static AudioClip ClorindeSoundHurt2;

		public static AudioClip ClorindeSoundHurt3;

		public static AudioClip ClorindeSoundDespawn;

		public static AudioClip ClorindeSoundSpawn;

		public static AudioClip ClorindeSoundLeave1;

		public static AudioClip ClorindeSoundLeave2;

		public static AudioClip ClorindeSoundLeave3;

		public static GameObject BeidouPrefab;

		public static AudioClip BeidouAttackImpact;

		public static AudioClip BeidouAttackImpactGlobal;

		public static AudioClip BeidouAttackBuildupVO;

		public static AudioClip BeidouDeath;

		public static AudioClip BeidouHurt1;

		public static AudioClip BeidouHurt2;

		public static AudioClip BeidouHurt3;

		public static AudioClip BeidouJump;

		public static AudioClip BeidouLand;

		public static AudioClip BeidouLookUnderAttack;

		public static AudioClip BeidouLookUnderIntro;

		public static AudioClip BeidouLookUnderOutro;

		public static AudioClip BeidouNoiseLong1;

		public static AudioClip BeidouNoiseLong2;

		public static AudioClip BeidouNoiseLong3;

		public static AudioClip BeidouNoiseShort1;

		public static AudioClip BeidouNoiseShort2;

		public static AudioClip BeidouNoiseShort3;

		public static AudioClip BeidouNotice1;

		public static AudioClip BeidouNotice2;

		public static AudioClip BeidouNotice3;

		public static AudioClip BeidouStunnedLoop;

		public static GameObject SayuPrefab;

		public static AudioClip SayuAttackStart;

		public static AudioClip SayuAttackStop;

		public static AudioClip SayuDeath;

		public static AudioClip SayuDespawn;

		public static AudioClip SayuHurt1;

		public static AudioClip SayuHurt2;

		public static AudioClip SayuHurt3;

		public static AudioClip SayuJump1;

		public static AudioClip SayuJump2;

		public static AudioClip SayuJump3;

		public static AudioClip SayuLand1;

		public static AudioClip SayuLand2;

		public static AudioClip SayuLand3;

		public static AudioClip SayuNotice1;

		public static AudioClip SayuNotice2;

		public static AudioClip SayuNotice3;

		public static AudioClip SayuAttackLoop;

		public static AudioClip SayuSpawn;

		public static GameObject GamingPrefab;

		public static AudioClip GamingCleaverSwing1;

		public static AudioClip GamingCleaverSwing2;

		public static AudioClip GamingCleaverSwing3;

		public static AudioClip GamingHurt1;

		public static AudioClip GamingHurt2;

		public static AudioClip GamingHurt3;

		public static AudioClip GamingJump1;

		public static AudioClip GamingJump2;

		public static AudioClip GamingJump3;

		public static AudioClip GamingJump4;

		public static AudioClip GamingJump5;

		public static AudioClip GamingLand1;

		public static AudioClip GamingLand2;

		public static AudioClip GamingLand3;

		public static AudioClip GamingNotice;

		public static AudioClip GamingStunnedLoop;

		public static AudioClip GamingTumbleLocal;

		public static AudioClip GamingTumbleGlobal;

		public static GameObject KachinaPrefab;

		public static AudioClip KachinaDeath;

		public static AudioClip KachinaDespawn;

		public static AudioClip KachinaHurt1;

		public static AudioClip KachinaHurt2;

		public static AudioClip KachinaHurt3;

		public static AudioClip KachinaJump;

		public static AudioClip KachinaLand;

		public static AudioClip KachinaNotice;

		public static AudioClip KachinaPickupIntro;

		public static AudioClip KachinaPickupOutroTell;

		public static AudioClip KachinaPickupOutroThrow;

		public static AudioClip KachinaSpawn;

		public static AudioClip KachinaStunOutro;

		public static AudioClip KachinaStunLoop;

		public static GameObject ArlecchinoPrefab;

		public static AudioClip ArlecchinoAttack;

		public static AudioClip ArlecchinoDeath;

		public static AudioClip ArlecchinoHurt1;

		public static AudioClip ArlecchinoHurt2;

		public static AudioClip ArlecchinoHurt3;

		public static AudioClip ArlecchinoScream1;

		public static AudioClip ArlecchinoScream1Global;

		public static AudioClip ArlecchinoScream2;

		public static AudioClip ArlecchinoScream2Global;

		public static AudioClip ArlecchinoScream3;

		public static AudioClip ArlecchinoScream3Global;

		public static AudioClip ArlecchinoTeleportIn;

		public static AudioClip ArlecchinoTeleportOut;

		public static AudioClip ArlecchinoZoom;

		public static GameObject AlhaithamPrefab;

		public static AudioClip AlhaithamAttackIntro;

		public static AudioClip AlhaithamAttackLoop;

		public static AudioClip AlhaithamAttackOutro;

		public static AudioClip AlhaithamDeath;

		public static AudioClip AlhaithamHurt1;

		public static AudioClip AlhaithamHurt2;

		public static AudioClip AlhaithamHurt3;

		public static AudioClip AlhaithamJump;

		public static AudioClip AlhaithamLand;

		public static AudioClip AlhaithamMeleeKick;

		public static AudioClip AlhaithamMeleeTell;

		public static AudioClip AlhaithamStunIntro;

		public static AudioClip AlhaithamStunOutro;

		public static AudioClip AlhaithamStunLoop;

		public static Material AlhaithamLaserInside;

		public static Material AlhaithamLaser;

		public static Material AlhaithamLaserVariant;

		public static Material AlhaithamLaserSmoke;

		public static GameObject BarbaraPrefab;

		public static AudioClip BarbaraDeath;

		public static AudioClip BarbaraDespawn;

		public static AudioClip BarbaraHurt1;

		public static AudioClip BarbaraHurt2;

		public static AudioClip BarbaraHurt3;

		public static AudioClip BarbaraIdleLoop;

		public static AudioClip BarbaraScreamEndGlobal;

		public static AudioClip BarbaraScreamStartGlobal;

		public static AudioClip BarbaraScreamLoopGlobal;

		public static AudioClip BarbaraScreamLoopLocal;

		public static AudioClip BarbaraStunnedLoop;

		public static AudioClip BarbaraJump;

		public static AudioClip BarbaraNotice;

		public static AudioClip BarbaraLand;

		public static GameObject XianyunPrefab;

		public static AudioClip XianyunAttackDown;

		public static AudioClip XianyunAttackDownGlobal;

		public static AudioClip XianyunAttackUp;

		public static AudioClip XianyunAttackUpGlobal;

		public static AudioClip XianyunDeath;

		public static AudioClip XianyunHurt1;

		public static AudioClip XianyunHurt2;

		public static AudioClip XianyunHurt3;

		public static AudioClip XianyunStunnedLoop;

		public static AudioClip XianyunChargeAttack;

		public static AudioClip XianyunChargeAttackLoop;

		public static AudioClip XianyunClapGlobal;

		public static AudioClip XianyunClapLocal;

		public static AudioClip XianyunDelayAttack;

		public static Material XianyunMaterial;

		public static GameObject IansanPrefab;

		public static AudioClip IansanDespawn;

		public static AudioClip IansanHurt1;

		public static AudioClip IansanHurt2;

		public static AudioClip IansanHurt3;

		public static AudioClip IansanIdle1;

		public static AudioClip IansanIdle2;

		public static AudioClip IansanIdle3;

		public static AudioClip IansanJump;

		public static AudioClip IansanLand;

		public static AudioClip IansanScream1Global;

		public static AudioClip IansanScream1Local;

		public static AudioClip IansanScream2Global;

		public static AudioClip IansanScream2Local;

		public static AudioClip IansanScream3Global;

		public static AudioClip IansanScream3Local;

		public static GameObject HuTaoPrefab;

		public static AudioClip HutaoAttack;

		public static AudioClip HutaoAttackGlobal;

		public static AudioClip HutaoCrackingFingers;

		public static AudioClip HutaoCrackingFingersAggresive;

		public static AudioClip HutaoHurt1;

		public static AudioClip HutaoHurt2;

		public static AudioClip HutaoHurt3;

		public static AudioClip HutaoLookUnderScream;

		public static AudioClip HutaoLookUnderScreamGlobal;

		public static AudioClip HutaoNoise1;

		public static AudioClip HutaoNoise2;

		public static AudioClip HutaoNoise3;

		public static AudioClip HutaoNoise4;

		public static AudioClip HutaoStunStart;

		public static AudioClip HutaoTargetingPlayer;

		public static AudioClip HutaoStunnedLoop;

		public static GameObject AyatoPrefab;

		public static AudioClip AyatoAttack1;

		public static AudioClip AyatoAttack2;

		public static AudioClip AyatoAttack3;

		public static AudioClip AyatoAttack4;

		public static AudioClip AyatoAttack5;

		public static AudioClip AyatoDeath;

		public static AudioClip AyatoHurt1;

		public static AudioClip AyatoHurt2;

		public static AudioClip AyatoHurt3;

		public static AudioClip AyatoJump;

		public static AudioClip AyatoStunnedLoop;

		public static GameObject NahidaPrefab;

		public static AudioClip NahidaBlink1;

		public static AudioClip NahidaBlink2;

		public static AudioClip NahidaBlink3;

		public static AudioClip NahidaDeath;

		public static AudioClip NahidaDespawn;

		public static AudioClip NahidaLaser;

		public static AudioClip NahidaLaserBuildup;

		public static AudioClip NahidaSpawn;

		public static AudioClip NahidaStaringStart;

		public static AudioClip NahidaStareLoopTwitching;

		public static AudioClip NahidaStareLoop;

		public static GameObject GorouPrefab;

		public static AudioClip GorouBiteStart1;

		public static AudioClip GorouBiteStart2;

		public static AudioClip GorouBiteStart3;

		public static AudioClip GorouChaseBegin;

		public static AudioClip GorouChaseBeginGlobal;

		public static AudioClip GorouChaseBeginToChase;

		public static AudioClip GorouChaseToIdle;

		public static AudioClip GorouDeath;

		public static AudioClip GorouDespawn;

		public static AudioClip GorouHurt1;

		public static AudioClip GorouHurt2;

		public static AudioClip GorouHurt3;

		public static AudioClip GorouSpawn;

		public static AudioClip GorouTeethChatter1;

		public static AudioClip GorouTeethChatter2;

		public static AudioClip GorouTeethChatter3;

		public static AudioClip GorouTeethChatter4;

		public static AudioClip GorouTeethChatter5;

		public static GameObject TapirPrefab;

		public static AudioClip TapirAttackLoop;

		public static AudioClip TapirDeath;

		public static AudioClip TapirHurt1;

		public static AudioClip TapirHurt2;

		public static AudioClip TapirHurt3;

		public static AudioClip TapirNotice1;

		public static AudioClip TapirNotice2;

		public static AudioClip TapirNotice3;

		public static AudioClip TapirQuack1;

		public static AudioClip TapirQuack2;

		public static AudioClip TapirQuack3;

		public static AudioClip TapirStunEnd1;

		public static AudioClip TapirStunEnd2;

		public static AudioClip TapirStunEnd3;

		public static AudioClip TapirStunLoop;

		public static AudioClip TapirBite1;

		public static AudioClip TapirBite2;

		public static AudioClip TapirBite3;

		public static AudioClip TapirBite4;

		public static AudioClip TapirBite5;

		public static AudioClip TapirBite6;

		public static GameObject MavuikaPrefab;

		public static AudioClip MavuikaAttackBreaker1;

		public static AudioClip MavuikaAttackBreaker2;

		public static AudioClip MavuikaAttackBreaker3;

		public static AudioClip MavuikaAttackBreaker4;

		public static AudioClip MavuikaAttackBreaker5;

		public static AudioClip MavuikaDeath1;

		public static AudioClip MavuikaDeath2;

		public static AudioClip MavuikaDeath3;

		public static AudioClip MavuikaExplodeTell1;

		public static AudioClip MavuikaExplodeTell2;

		public static AudioClip MavuikaExplodeTell3;

		public static AudioClip MavuikaFuseTell1;

		public static AudioClip MavuikaFuseTell2;

		public static AudioClip MavuikaFuseTell3;

		public static AudioClip MavuikaHurt1;

		public static AudioClip MavuikaHurt2;

		public static AudioClip MavuikaHurt3;

		public static AudioClip MavuikaIdleBreaker1;

		public static AudioClip MavuikaIdleBreaker2;

		public static AudioClip MavuikaIdleBreaker3;

		public static AudioClip MavuikaIdleBreaker4;

		public static AudioClip MavuikaIdleBreaker5;

		public static AudioClip MavuikaJump1;

		public static AudioClip MavuikaJump2;

		public static AudioClip MavuikaJump3;

		public static AudioClip MavuikaLand1;

		public static AudioClip MavuikaLand2;

		public static AudioClip MavuikaLand3;

		public static AudioClip MavuikaStunIntro1;

		public static AudioClip MavuikaStunIntro2;

		public static AudioClip MavuikaStunIntro3;

		public static AudioClip MavuikaStunLoop;

		public static AudioClip MavuikaStunOutro1;

		public static AudioClip MavuikaStunOutro2;

		public static AudioClip MavuikaStunOutro3;

		public static Texture2D DoriEmojis;

		public static Material DoriMaterial;

		public static GameObject ColleiPrefab;

		public static GameObject ColleiCat;

		public static AudioClip ColleiDeath;

		public static AudioClip ColleiHeadDetachTell;

		public static AudioClip ColleiHeadDetach;

		public static AudioClip ColleiHeadExplosionTell;

		public static AudioClip ColleiHurt1;

		public static AudioClip ColleiHurt2;

		public static AudioClip ColleiHurt3;

		public static AudioClip ColleiIdleLoop;

		public static AudioClip ColleiMelee;

		public static AudioClip ColleiMeleeGlobal;

		public static AudioClip ColleiJump;

		public static AudioClip ColleiLand;

		public static AudioClip ColleiNotice;

		public static AudioClip ColleiNoticeGlobal;

		public static AudioClip ColleiHeadLaugh;

		public static GameObject GanyuPrefab;

		public static GameObject GanyuBall;

		public static Material GanyuMaterial;

		public static AudioClip GanyuAttackSwoosh1;

		public static AudioClip GanyuAttackSwoosh2;

		public static AudioClip GanyuDeath1;

		public static AudioClip GanyuDeath2;

		public static AudioClip GanyuDeath3;

		public static AudioClip GanyuHurt1;

		public static AudioClip GanyuHurt2;

		public static AudioClip GanyuHurt3;

		public static AudioClip GanyuIdleBreak1;

		public static AudioClip GanyuIdleBreak2;

		public static AudioClip GanyuIdleBreak3;

		public static AudioClip GanyuIdleBreak4;

		public static AudioClip GanyuIdleLoop;

		public static AudioClip GanyuRunAttackLoop;

		public static AudioClip GanyuInhale1;

		public static AudioClip GanyuInhale2;

		public static AudioClip GanyuInhale3;

		public static AudioClip GanyuJump1;

		public static AudioClip GanyuJump2;

		public static AudioClip GanyuJump3;

		public static AudioClip GanyuLand1;

		public static AudioClip GanyuLand2;

		public static AudioClip GanyuLand3;

		public static AudioClip GanyuNotice1;

		public static AudioClip GanyuNotice2;

		public static AudioClip GanyuNotice3;

		public static GameObject AinoIneffaPrefab;

		public static AudioClip AinoIneffaBarkSmall1;

		public static AudioClip AinoIneffaBarkSmall2;

		public static AudioClip AinoIneffaBarkSmall3;

		public static AudioClip AinoIneffaBarkBig1;

		public static AudioClip AinoIneffaBarkBig2;

		public static AudioClip AinoIneffaBarkBig3;

		public static AudioClip AinoIneffaBarkBigGlobal1;

		public static AudioClip AinoIneffaBarkBigGlobal2;

		public static AudioClip AinoIneffaBarkBigGlobal3;

		public static AudioClip AinoIneffaBigDeath;

		public static AudioClip AinoIneffaBigHurt1;

		public static AudioClip AinoIneffaBigHurt2;

		public static AudioClip AinoIneffaBigHurt3;

		public static AudioClip AinoIneffaBigStinger;

		public static AudioClip AinoIneffaFlyLoop;

		public static AudioClip AinoIneffaPantingSmall;

		public static AudioClip AinoIneffaPantingBig;

		public static AudioClip AinoIneffaSmallHurt1;

		public static AudioClip AinoIneffaSmallHurt2;

		public static AudioClip AinoIneffaSmallHurt3;

		public static AudioClip AinoIneffaPet1;

		public static AudioClip AinoIneffaPet2;

		public static AudioClip AinoIneffaPet3;

		public static AudioClip AinoIneffaSmallDeath;

		public static AudioClip AinoIneffaStunLoop;

		public static AudioClip AinoIneffaIdleBreak1;

		public static AudioClip AinoIneffaIdleBreak2;

		public static AudioClip AinoIneffaIdleBreak3;

		public static AudioClip AinoIneffaIdleBreak4;

		public static AudioClip AinoIneffaTransformationStart;

		public static Material AinoIneffaMaterial;

		public static GameObject DottorePrefab;

		public static AudioClip DottoreAttackTell;

		public static AudioClip DottoreBackCrackShort1;

		public static AudioClip DottoreBackCrackShort2;

		public static AudioClip DottoreBackCrackShort3;

		public static AudioClip DottoreBackCrackLong1;

		public static AudioClip DottoreBackCrackLong2;

		public static AudioClip DottoreBackCrackLong3;

		public static AudioClip DottoreNeckCrackShort1;

		public static AudioClip DottoreNeckCrackShort2;

		public static AudioClip DottoreNeckCrackShort3;

		public static AudioClip DottoreNeckCrackLong1;

		public static AudioClip DottoreNeckCrackLong2;

		public static AudioClip DottoreNeckCrackLong3;

		public static AudioClip DottoreDeath1;

		public static AudioClip DottoreDeath2;

		public static AudioClip DottoreDeath3;

		public static AudioClip DottoreHurt1;

		public static AudioClip DottoreHurt2;

		public static AudioClip DottoreHurt3;

		public static AudioClip DottoreLoop;

		public static AudioClip DottoreTarget;

		public static AudioClip DottoreNonTarget;

		public static AudioClip DottoreSlap;

		public static AudioClip DottoreSlapGlobal;

		public static Sprite DottoreSprite;

		public static GameObject SkirkPrefab;

		public static AudioClip SkirkAttack1;

		public static AudioClip SkirkAttack2;

		public static AudioClip SkirkAttack3;

		public static AudioClip SkirkAttackOutro1;

		public static AudioClip SkirkAttackOutro2;

		public static AudioClip SkirkAttackOutro3;

		public static AudioClip SkirkDeath1;

		public static AudioClip SkirkDeath2;

		public static AudioClip SkirkDeath3;

		public static AudioClip SkirkIdle1;

		public static AudioClip SkirkIdle2;

		public static AudioClip SkirkIdle3;

		public static AudioClip SkirkBell1;

		public static AudioClip SkirkBell2;

		public static AudioClip SkirkBell3;

		public static AudioClip SkirkBell1Global;

		public static AudioClip SkirkBell2Global;

		public static AudioClip SkirkBell3Global;

		public static AudioClip SkirkStunLoop;

		public static AudioClip SkirkTeleport1;

		public static AudioClip SkirkTeleport2;

		public static AudioClip SkirkTeleport3;

		public static AudioClip SkirkBellBuildup;

		public static AudioClip SkirkBattleLoop;

		public static AudioClip SkirkWheelSqueak;

		public static AudioClip SkirkWheelRattle;

		public static AudioClip SkirkMove1;

		public static AudioClip SkirkMove2;

		public static AudioClip SkirkMove3;

		public static AudioClip SkirkSilence;

		public static GameObject IfaPrefab;

		public static Material IfaMaterial;

		public static Material IfaNothingMaterial;

		public static Material IfaDeathMaterial;

		public static AudioClip IfaDeath1;

		public static AudioClip IfaDeath2;

		public static AudioClip IfaDeath3;

		public static AudioClip IfaDropPlayer1;

		public static AudioClip IfaDropPlayer2;

		public static AudioClip IfaDropPlayer3;

		public static AudioClip IfaEyesOff;

		public static AudioClip IfaEyesOn;

		public static AudioClip IfaHurt1;

		public static AudioClip IfaHurt2;

		public static AudioClip IfaHurt3;

		public static AudioClip IfaIdle1;

		public static AudioClip IfaIdle2;

		public static AudioClip IfaIdle3;

		public static AudioClip IfaNotice1;

		public static AudioClip IfaNotice2;

		public static AudioClip IfaNotice3;

		public static AudioClip IfaNotice1Global;

		public static AudioClip IfaNotice2Global;

		public static AudioClip IfaNotice3Global;

		public static AudioClip IfaOoglyIdle;

		public static AudioClip IfaStartCharge1;

		public static AudioClip IfaStartCharge2;

		public static AudioClip IfaStartCharge3;

		public static AudioClip IfaAttackLoop;

		public static AudioClip IfaHitPlayer1;

		public static AudioClip IfaHitPlayer2;

		public static AudioClip IfaHitPlayer3;

		public static GameObject DurinPrefab;

		public static AudioClip DurinDeath1;

		public static AudioClip DurinDeath2;

		public static AudioClip DurinDeath3;

		public static AudioClip DurinBigSuck1;

		public static AudioClip DurinBigSuck2;

		public static AudioClip DurinBigSuck3;

		public static AudioClip DurinHurt1;

		public static AudioClip DurinHurt2;

		public static AudioClip DurinHurt3;

		public static AudioClip DurinJump1;

		public static AudioClip DurinJump2;

		public static AudioClip DurinJump3;

		public static AudioClip DurinNotice1;

		public static AudioClip DurinNotice2;

		public static AudioClip DurinNotice3;

		public static AudioClip DurinSlowFlap;

		public static AudioClip DurinFastFlap;

		public static GameObject YelanPrefab;

		public static GameObject YelanDice;

		public static AudioClip YelanDeath;

		public static AudioClip YelanRunLoop;

		public static AudioClip YelanMusic;

		public static AudioClip YelanMusicRunning;

		public static AudioClip YelanCloseMouth1;

		public static AudioClip YelanCloseMouth2;

		public static AudioClip YelanCloseMouth3;

		public static AudioClip YelanHurt1;

		public static AudioClip YelanHurt2;

		public static AudioClip YelanHurt3;

		public static AudioClip YelanIdleLoop;

		public static AudioClip YelanJingleBlack;

		public static AudioClip YelanJingleBlackGlobal;

		public static AudioClip YelanJingleWhite;

		public static AudioClip YelanJingleGreen;

		public static AudioClip YelanJingleRed;

		public static AudioClip YelanJingleYellow;

		public static AudioClip YelanJump;

		public static AudioClip YelanLand;

		public static AudioClip YelanNotice;

		public static AudioClip YelanOpenMouth1;

		public static AudioClip YelanOpenMouth2;

		public static AudioClip YelanOpenMouth3;

		public static AudioClip YelanMusicDeath;

		public static RuntimeAnimatorController YelanWalk;

		public static RuntimeAnimatorController YelanRun;

		public static GameObject KiraraPrefab;

		public static AudioClip KiraraAttackSwipe;

		public static AudioClip KiraraBreathingLoop;

		public static AudioClip KiraraCantReach;

		public static AudioClip KiraraDeath;

		public static AudioClip KiraraDropKickEnd;

		public static AudioClip KiraraDropKickTell;

		public static AudioClip KiraraGrabHead;

		public static AudioClip KiraraHurt1;

		public static AudioClip KiraraHurt2;

		public static AudioClip KiraraHurt3;

		public static AudioClip KiraraJump1;

		public static AudioClip KiraraJump2;

		public static AudioClip KiraraJump3;

		public static AudioClip KiraraLand1;

		public static AudioClip KiraraLand2;

		public static AudioClip KiraraLand3;

		public static AudioClip KiraraLongNoise1;

		public static AudioClip KiraraLongNoise2;

		public static AudioClip KiraraLongNoise3;

		public static AudioClip KiraraShortNoise1;

		public static AudioClip KiraraShortNoise2;

		public static AudioClip KiraraShortNoise3;

		public static AudioClip KiraraShortNoise4;

		public static AudioClip KiraraShortNoise5;

		public static AudioClip KiraraNotice;

		public static AudioClip KiraraNoticeGlobal;

		public static AudioClip KiraraReleaseHeadStart;

		public static AudioClip KiraraReleaseHeadEnd;

		public static AudioClip KiraraStunEnd;

		public static AudioClip KiraraStunLoop;

		public static AudioClip KiraraStunStart;

		public static GameObject KiraraParticles;

		public static GameObject NeferPrefab;

		public static Material NeferMaterial;

		public static AudioClip NeferBite1;

		public static AudioClip NeferBite2;

		public static AudioClip NeferBite3;

		public static AudioClip NeferDegrow1;

		public static AudioClip NeferDegrow2;

		public static AudioClip NeferDegrow3;

		public static AudioClip NeferGasTell1;

		public static AudioClip NeferGasTell2;

		public static AudioClip NeferGasTell3;

		public static AudioClip NeferGrow1;

		public static AudioClip NeferGrow2;

		public static AudioClip NeferGrow3;

		public static AudioClip NeferIdleLoop;

		public static AudioClip NeferScare1;

		public static AudioClip NeferScare2;

		public static AudioClip NeferScare3;

		public static AudioClip NeferScare1Global;

		public static AudioClip NeferScare2Global;

		public static AudioClip NeferScare3Global;

		public static AudioClip NeferStunLoop;

		public static AudioClip NeferAggrobreaker1;

		public static AudioClip NeferAggrobreaker2;

		public static AudioClip NeferAggrobreaker3;

		public static AudioClip NeferAggroLoop;

		public static AudioClip NeferAggroStart1;

		public static AudioClip NeferAggroStart2;

		public static AudioClip NeferAggroStart3;

		public static AudioClip NeferDeath1;

		public static AudioClip NeferDeath2;

		public static AudioClip NeferDeath3;

		public static AudioClip NeferGasLoop;

		public static AudioClip NeferHurt1;

		public static AudioClip NeferHurt2;

		public static AudioClip NeferHurt3;

		public static AudioClip NeferIdlebreaker1;

		public static AudioClip NeferIdlebreaker2;

		public static AudioClip NeferIdlebreaker3;

		public static AudioClip NeferPopAway1;

		public static AudioClip NeferPopAway2;

		public static AudioClip NeferPopAway3;

		public static AudioClip NeferLove1;

		public static AudioClip NeferLove2;

		public static AudioClip NeferLove3;

		public static AudioClip NeferGasStart1;

		public static AudioClip NeferGasStart2;

		public static AudioClip NeferGasStart3;

		public static AudioClip NeferGasStop1;

		public static AudioClip NeferGasStop2;

		public static AudioClip NeferGasStop3;

		public static GameObject FlinsPrefab;

		public static Texture2D FlinsFootstep;

		public static AudioClip FlinsBreath1;

		public static AudioClip FlinsBreath2;

		public static AudioClip FlinsBreath3;

		public static AudioClip FlinsBreath4;

		public static AudioClip FlinsBreath5;

		public static AudioClip FlinsBreath6;

		public static AudioClip FlinsBreath7;

		public static AudioClip FlinsBreath8;

		public static AudioClip FlinsBreath9;

		public static AudioClip FlinsBreath10;

		public static AudioClip FlinsDeath1;

		public static AudioClip FlinsDeath2;

		public static AudioClip FlinsDeath3;

		public static AudioClip FlinsDropPlayer;

		public static AudioClip FlinsHurt1;

		public static AudioClip FlinsHurt2;

		public static AudioClip FlinsHurt3;

		public static AudioClip FlinsJump1;

		public static AudioClip FlinsJump2;

		public static AudioClip FlinsJump3;

		public static AudioClip FlinsLand1;

		public static AudioClip FlinsLand2;

		public static AudioClip FlinsLand3;

		public static AudioClip FlinsNotice1;

		public static AudioClip FlinsNotice2;

		public static AudioClip FlinsNotice3;

		public static AudioClip FlinsMovePlayerLoop;

		public static AudioClip FlinsMovePlayerStop;

		public static AudioClip FlinsPickupPlayer;

		public static AudioClip FlinsStunEnd;

		public static AudioClip FlinsStunStart;

		public static AudioClip FlinsStunLoop;

		public static GameObject PaimonPrefab;

		public static ConfigEntry<bool> MikaReplacement { get; private set; }

		public static ConfigEntry<bool> ClorindeReplacement { get; private set; }

		public static ConfigEntry<bool> BeidouReplacement { get; private set; }

		public static ConfigEntry<bool> SayuReplacement { get; private set; }

		public static ConfigEntry<bool> KachinaReplacement { get; private set; }

		public static ConfigEntry<bool> IansanReplacement { get; private set; }

		public static ConfigEntry<bool> HuTaoReplacement { get; private set; }

		public static ConfigEntry<bool> GamingReplacement { get; private set; }

		public static ConfigEntry<bool> BarbaraReplacement { get; private set; }

		public static ConfigEntry<bool> AyatoReplacement { get; private set; }

		public static ConfigEntry<bool> GorouReplacement { get; private set; }

		public static ConfigEntry<bool> AlhaithamReplacement { get; private set; }

		public static ConfigEntry<bool> MavuikaReplacement { get; private set; }

		public static ConfigEntry<bool> NahidaReplacement { get; private set; }

		public static ConfigEntry<bool> TapirReplacement { get; private set; }

		public static ConfigEntry<bool> XianyunReplacement { get; private set; }

		public static ConfigEntry<bool> ArlecchinoReplacement { get; private set; }

		public static ConfigEntry<bool> ColleiReplacement { get; private set; }

		public static ConfigEntry<bool> DoriEmojiReplacement { get; private set; }

		public static ConfigEntry<bool> GanyuReplacement { get; private set; }

		public static ConfigEntry<bool> AinoIneffaReplacement { get; private set; }

		public static ConfigEntry<bool> DottoreReplacement { get; private set; }

		public static ConfigEntry<bool> SkirkReplacement { get; private set; }

		public static ConfigEntry<bool> IfaReplacement { get; private set; }

		public static ConfigEntry<bool> DurinReplacement { get; private set; }

		public static ConfigEntry<bool> KiraraReplacement { get; private set; }

		public static ConfigEntry<bool> NeferReplacement { get; private set; }

		public static ConfigEntry<bool> YelanReplacement { get; private set; }

		public static ConfigEntry<bool> FlinsReplacement { get; private set; }

		public static ConfigEntry<bool> PaimonReplacement { get; private set; }

		private void Awake()
		{
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = ((BaseUnityPlugin)this).Logger;
			mls.LogInfo((object)"--===GENSHIN IMPACT OVERHAUL LOADING===--");
			harmony.PatchAll();
			string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "genshinoverhaul");
			GenshinImpactOverhaulAssetBundle = AssetBundle.LoadFromFile(text);
			if ((Object)(object)GenshinImpactOverhaulAssetBundle == (Object)null)
			{
				mls.LogWarning((object)"COULD NOT FIND GENSHIN ASSETS");
			}
			LoadAssets();
			DoriEmojiReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Extra", "Emojis", true, "Replace some of the money related emojis with Dori ones");
			AlhaithamReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Alhaitham", true, "Replace the Clown with Alhaitham");
			ArlecchinoReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Arlecchino", true, "Replace the Shadow Child with Arlecchino");
			BarbaraReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Barbara", true, "Replace the Bowtie with Barbara");
			BeidouReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Beidou", true, "Replace the Trudge with Beidou");
			ClorindeReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Clorinde", true, "Replace the Hunter with Clorinde");
			GamingReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Gaming", true, "Replace the Chef with Gaming");
			GorouReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Gorou", true, "Replace the Headman with Gorou");
			HuTaoReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Hu Tao", true, "Replace the Robe with Hu Tao");
			IansanReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Iansan", true, "Replace the Upscream with Iansan");
			KachinaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Kachina", true, "Replace the Rugrat with Kachina");
			AyatoReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Kamisato Ayato", true, "Replace the Reaper with Ayato");
			MavuikaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Mavuika", true, "Replace the Bang with Mavuika");
			MikaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Mika", true, "Replace the Gnomes with Mika");
			NahidaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Nahida", true, "Replace the Peeper with Nahida");
			SayuReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Sayu", true, "Replace the Animal with Sayu");
			TapirReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Tapir", true, "Replace the Duck with Mizuki's Tapir");
			XianyunReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Xianyun", true, "Replace the Mentalist with Xianyun");
			ColleiReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Collei", true, "Replace the Cleanup Crew with Collei");
			GanyuReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Ganyu", true, "Replace the Birthday Boy with Ganyu");
			AinoIneffaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Aino and Ineffa", true, "Replace Elsa with Aino and Ineffa");
			DottoreReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Dottore", true, "Replace the Loom with Dottore");
			SkirkReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Skirk", true, "Replace Bella with Skirk");
			IfaReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Ifa", true, "Replace Oogly with Ifa");
			DurinReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Durin", true, "Replace the Tick with Durin");
			NeferReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Nefer", true, "Replace the Hearthugger with Nefer");
			YelanReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Yelan", true, "Replace the Gambit with Yelan");
			KiraraReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Kirara", true, "Replace the Headgrab with Kirara");
			FlinsReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Flins", true, "Replace the Hidden with Flins");
			PaimonReplacement = ((BaseUnityPlugin)this).Config.Bind<bool>("Models and Sounds", "Paimon", true, "Replace the Slow Mouth with Paimon");
		}

		public void LoadAssets()
		{
			LoadMikaAssets();
			LoadClorindeAssets();
			LoadBeidouAssets();
			LoadSayuAssets();
			LoadKachinaAssets();
			LoadIansanAssets();
			LoadHuTaoAssets();
			LoadGamingAssets();
			LoadBarbaraAssets();
			LoadAyatoAssets();
			LoadAlhaithamAssets();
			LoadNahidaAssets();
			LoadXianyunAssets();
			LoadArlecchinoAssets();
			LoadGorouAssets();
			LoadTapirAssets();
			LoadMavuikaAssets();
			LoadExtraAssets();
			LoadColleiAssets();
			LoadGanyuAssets();
			LoadAinoIneffaAssets();
			LoadDottoreAssets();
			LoadSkirkAssets();
			LoadIfaAssets();
			LoadDurinAssets();
			LoadYelanAssets();
			LoadKiraraAssets();
			LoadNeferAssets();
			LoadFlinsAssets();
			LoadPaimonAssets();
		}

		public void LoadMikaAssets()
		{
			MikaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mika/Mika.prefab");
			MikaSoundDeath1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaDeath1.ogg");
			MikaSoundDeath2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaDeath2.ogg");
			MikaSoundDeath3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaDeath3.ogg");
			MikaSoundDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaDespawn.ogg");
			MikaSoundHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaHurt1.ogg");
			MikaSoundHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaHurt2.ogg");
			MikaSoundHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaHurt3.ogg");
			MikaSoundIdle1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaIdleBreaker1.ogg");
			MikaSoundIdle2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaIdleBreaker2.ogg");
			MikaSoundIdle3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaIdleBreaker3.ogg");
			MikaSoundJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaJump.ogg");
			MikaSoundNotice1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaNotice1.ogg");
			MikaSoundNotice2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaNotice2.ogg");
			MikaSoundNotice3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaNotice3.ogg");
			MikaSoundPickaxeTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaPickaxeTell.ogg");
			MikaSoundSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaSpawn.ogg");
			MikaSoundStunFlyLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/MikaStunFlyLoop.ogg");
			MikaStunIntro1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunIntro1.ogg");
			MikaStunIntro2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunIntro2.ogg");
			MikaStunIntro3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunIntro3.ogg");
			MikaStunOutro1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunOutro1.ogg");
			MikaStunOutro2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunOutro2.ogg");
			MikaStunOutro3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mika/Sounds/StunOutro3.ogg");
		}

		public void LoadClorindeAssets()
		{
			ClorindePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Clorinde/Clorinde.prefab");
			ClorindeSoundAim1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim1.ogg");
			ClorindeSoundAimGlobal1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim1Global.ogg");
			ClorindeSoundAimGlobal2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim2Global.ogg");
			ClorindeSoundAim2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim2.ogg");
			ClorindeSoundAimGlobal3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim3Global.ogg");
			ClorindeSoundAim3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeAim3.ogg");
			ClorindeSoundDeath1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeDeath1.ogg");
			ClorindeSoundDeath2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeDeath2.ogg");
			ClorindeSoundDeath3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeDeath3.ogg");
			ClorindeSoundHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeHurt1.ogg");
			ClorindeSoundHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeHurt2.ogg");
			ClorindeSoundHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeHurt3.ogg");
			ClorindeSoundSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeSpawn.ogg");
			ClorindeSoundDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeDespawn.ogg");
			ClorindeSoundLeave1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeLeave1.ogg");
			ClorindeSoundLeave2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeLeave2.ogg");
			ClorindeSoundLeave3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Clorinde/Sounds/ClorindeLeave3.ogg");
		}

		public void LoadAlhaithamAssets()
		{
			AlhaithamPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Alhaitham/Alhaitham.prefab");
			AlhaithamAttackIntro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/AttackIntro.ogg");
			AlhaithamAttackLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/AttackLoop.ogg");
			AlhaithamAttackOutro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/AttackOutro.ogg");
			AlhaithamDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Death.ogg");
			AlhaithamHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Hurt1.ogg");
			AlhaithamHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Hurt2.ogg");
			AlhaithamHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Hurt3.ogg");
			AlhaithamJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Jump.ogg");
			AlhaithamLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/Land.ogg");
			AlhaithamMeleeKick = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/MeleeKick.ogg");
			AlhaithamMeleeTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/MeleeTell.ogg");
			AlhaithamStunIntro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/StunIntro.ogg");
			AlhaithamStunLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/StunnedLoop.ogg");
			AlhaithamStunOutro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Alhaitham/Sounds/StunOutro.ogg");
			AlhaithamLaser = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Alhaitham/LaserMaterial.mat");
			AlhaithamLaserInside = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Alhaitham/LaserInsideMaterial.mat");
			AlhaithamLaserVariant = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Alhaitham/LaserMaterialVariant.mat");
			AlhaithamLaserSmoke = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Alhaitham/LaserSmoke.mat");
		}

		public void LoadGorouAssets()
		{
			GorouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Gorou/GorouHead.prefab");
			GorouBiteStart1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/BiteStart1.ogg");
			GorouBiteStart2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/BiteStart2.ogg");
			GorouBiteStart3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/BiteStart3.ogg");
			GorouChaseBegin = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/ChaseBegin.ogg");
			GorouChaseBeginGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/ChaseBeginGlobal.ogg");
			GorouChaseBeginToChase = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/ChaseBeginToChase.ogg");
			GorouChaseToIdle = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/ChaseToIdle.ogg");
			GorouDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Death.ogg");
			GorouDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Despawn.ogg");
			GorouHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Hurt1.ogg");
			GorouHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Hurt2.ogg");
			GorouHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Hurt3.ogg");
			GorouSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/Spawn.ogg");
			GorouTeethChatter1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/TeethChatter1.ogg");
			GorouTeethChatter2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/TeethChatter2.ogg");
			GorouTeethChatter3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/TeethChatter3.ogg");
			GorouTeethChatter4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/TeethChatter4.ogg");
			GorouTeethChatter5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gorou/Sounds/TeethChatter5.ogg");
		}

		public void LoadTapirAssets()
		{
			TapirPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Tapir/Tapir.prefab");
			TapirAttackLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/AttackLoop.ogg");
			TapirDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Death.ogg");
			TapirHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Hurt1.ogg");
			TapirHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Hurt2.ogg");
			TapirHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Hurt3.ogg");
			TapirNotice1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Notice1.ogg");
			TapirNotice2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Notice2.ogg");
			TapirNotice3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Notice3.ogg");
			TapirQuack1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Quack1.ogg");
			TapirQuack2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Quack2.ogg");
			TapirQuack3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Quack3.ogg");
			TapirStunEnd1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/StunEnd1.ogg");
			TapirStunEnd2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/StunEnd2.ogg");
			TapirStunEnd3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/StunEnd3.ogg");
			TapirStunLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/StunLoop.ogg");
			TapirBite1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite1.ogg");
			TapirBite2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite2.ogg");
			TapirBite3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite3.ogg");
			TapirBite4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite4.ogg");
			TapirBite5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite5.ogg");
			TapirBite6 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Tapir/Sounds/Bite6.ogg");
		}

		public void LoadMavuikaAssets()
		{
			MavuikaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mavuika/Mavuika.prefab");
			MavuikaAttackBreaker1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/AttackBreaker1.ogg");
			MavuikaAttackBreaker2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/AttackBreaker2.ogg");
			MavuikaAttackBreaker3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/AttackBreaker3.ogg");
			MavuikaAttackBreaker4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/AttackBreaker4.ogg");
			MavuikaAttackBreaker5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/AttackBreaker5.ogg");
			MavuikaDeath1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Death1.ogg");
			MavuikaDeath2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Death2.ogg");
			MavuikaDeath3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Death3.ogg");
			MavuikaExplodeTell1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/ExplodeTell1.ogg");
			MavuikaExplodeTell2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/ExplodeTell2.ogg");
			MavuikaExplodeTell3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/ExplodeTell3.ogg");
			MavuikaFuseTell1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/FuseTell1.ogg");
			MavuikaFuseTell2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/FuseTell2.ogg");
			MavuikaFuseTell3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/FuseTell3.ogg");
			MavuikaHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Hurt1.ogg");
			MavuikaHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Hurt2.ogg");
			MavuikaHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Hurt3.ogg");
			MavuikaIdleBreaker1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/IdleBreaker1.ogg");
			MavuikaIdleBreaker2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/IdleBreaker2.ogg");
			MavuikaIdleBreaker3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/IdleBreaker3.ogg");
			MavuikaIdleBreaker4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/IdleBreaker4.ogg");
			MavuikaIdleBreaker5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/IdleBreaker5.ogg");
			MavuikaJump1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Jump1.ogg");
			MavuikaJump2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Jump2.ogg");
			MavuikaJump3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Jump3.ogg");
			MavuikaLand1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Land1.ogg");
			MavuikaLand2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Land2.ogg");
			MavuikaLand3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/Land3.ogg");
			MavuikaStunIntro1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunIntro1.ogg");
			MavuikaStunIntro2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunIntro2.ogg");
			MavuikaStunIntro3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunIntro3.ogg");
			MavuikaStunLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunLoop.ogg");
			MavuikaStunOutro1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunOutro1.ogg");
			MavuikaStunOutro2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunOutro2.ogg");
			MavuikaStunOutro3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Mavuika/Sounds/StunOutro3.ogg");
		}

		public void LoadBeidouAssets()
		{
			BeidouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Beidou/Beidou.prefab");
			BeidouAttackBuildupVO = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/AttackBuildupVO.ogg");
			BeidouAttackImpact = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/AttackImplosionImpact.ogg");
			BeidouAttackImpactGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/AttackImplosionImpactGlobal.ogg");
			BeidouDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Death.ogg");
			BeidouHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Hurt1.ogg");
			BeidouHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Hurt2.ogg");
			BeidouHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Hurt3.ogg");
			BeidouJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Jump.ogg");
			BeidouLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Land.ogg");
			BeidouLookUnderAttack = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/LookUnderAttack.ogg");
			BeidouLookUnderIntro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/LookUnderIntro.ogg");
			BeidouLookUnderOutro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/LookUnderOutro.ogg");
			BeidouNoiseLong1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseLong1.ogg");
			BeidouNoiseLong2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseLong2.ogg");
			BeidouNoiseLong3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseLong3.ogg");
			BeidouNoiseShort1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseShort1.ogg");
			BeidouNoiseShort2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseShort2.ogg");
			BeidouNoiseShort3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/NoiseShort3.ogg");
			BeidouNotice1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Notice1.ogg");
			BeidouNotice2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Notice2.ogg");
			BeidouNotice3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/Notice3.ogg");
			BeidouStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Beidou/Sounds/StunnedLoop.ogg");
		}

		public void LoadBarbaraAssets()
		{
			BarbaraPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Barbara/Barbara.prefab");
			BarbaraDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Death.ogg");
			BarbaraDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Despawn.ogg");
			BarbaraHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Hurt1.ogg");
			BarbaraHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Hurt2.ogg");
			BarbaraHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Hurt3.ogg");
			BarbaraIdleLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/IdleLoop.ogg");
			BarbaraScreamEndGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/ScreamEndGlobal.ogg");
			BarbaraScreamLoopGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/ScreamLoopGlobal.ogg");
			BarbaraScreamStartGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/ScreamStartGlobal.ogg");
			BarbaraScreamLoopLocal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/ScreamLoopLocal.ogg");
			BarbaraStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/StunnedLoop.ogg");
			BarbaraJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Jump.ogg");
			BarbaraLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Land.ogg");
			BarbaraNotice = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Barbara/Sounds/Notice.ogg");
		}

		public void LoadSayuAssets()
		{
			SayuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Sayu/Sayu.prefab");
			SayuAttackStart = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/AttackStart.ogg");
			SayuAttackStop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/AttackStop.ogg");
			SayuDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Death.ogg");
			SayuDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Despawn.ogg");
			SayuHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Hurt1.ogg");
			SayuHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Hurt2.ogg");
			SayuHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Hurt3.ogg");
			SayuJump1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Jump1.ogg");
			SayuJump2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Jump2.ogg");
			SayuJump3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Jump3.ogg");
			SayuLand1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Land1.ogg");
			SayuLand2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Land2.ogg");
			SayuLand3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Land3.ogg");
			SayuNotice1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Notice1.ogg");
			SayuNotice2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Notice2.ogg");
			SayuNotice3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Notice3.ogg");
			SayuAttackLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/AttackLoop.ogg");
			SayuSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Sayu/Sounds/Spawn.ogg");
		}

		public void LoadKachinaAssets()
		{
			KachinaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kachina/Kachina.prefab");
			KachinaDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Death.ogg");
			KachinaDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Despawn.ogg");
			KachinaHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Hurt1.ogg");
			KachinaHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Hurt2.ogg");
			KachinaHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Hurt3.ogg");
			KachinaJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Jump.ogg");
			KachinaLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Land.ogg");
			KachinaNotice = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Notice.ogg");
			KachinaPickupIntro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/PickupIntro.ogg");
			KachinaPickupOutroTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/PickupOutroTell.ogg");
			KachinaPickupOutroThrow = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/PickupOutroThrow.ogg");
			KachinaSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/Spawn.ogg");
			KachinaStunOutro = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/StunOutro.ogg");
			KachinaStunLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Kachina/Sounds/StunnedLoop.ogg");
		}

		public void LoadIansanAssets()
		{
			IansanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Iansan/Iansan.prefab");
			IansanDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Despawn.ogg");
			IansanHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Hurt1.ogg");
			IansanHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Hurt2.ogg");
			IansanHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Hurt3.ogg");
			IansanIdle1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Idle1.ogg");
			IansanIdle2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Idle2.ogg");
			IansanIdle3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Idle3.ogg");
			IansanJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Jump.ogg");
			IansanLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Land.ogg");
			IansanScream1Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream1Global.ogg");
			IansanScream2Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream2Global.ogg");
			IansanScream3Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream3Global.ogg");
			IansanScream1Local = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream1Local.ogg");
			IansanScream2Local = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream2Local.ogg");
			IansanScream3Local = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Iansan/Sounds/Scream3Local.ogg");
		}

		public void LoadXianyunAssets()
		{
			XianyunPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xianyun/Xianyun.prefab");
			XianyunAttackDown = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/AttackDown.ogg");
			XianyunAttackDownGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/AttackDownGlobal.ogg");
			XianyunDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/Death.ogg");
			XianyunHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/Hurt1.ogg");
			XianyunHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/Hurt2.ogg");
			XianyunHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/Hurt3.ogg");
			XianyunStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/StunnedLoop.ogg");
			XianyunChargeAttack = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/ChargeStart.ogg");
			XianyunChargeAttackLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/ChargeAttack.ogg");
			XianyunClapGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/ClapGlobal.ogg");
			XianyunClapLocal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/ClapLocal.ogg");
			XianyunDelayAttack = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Xianyun/Sounds/DelayAttack.ogg");
			XianyunMaterial = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Xianyun/SphereMat.mat");
		}

		public void LoadArlecchinoAssets()
		{
			ArlecchinoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Arlecchino/Arlecchino.prefab");
			ArlecchinoAttack = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Attack.ogg");
			ArlecchinoDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Death.ogg");
			ArlecchinoHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Hurt1.ogg");
			ArlecchinoHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Hurt2.ogg");
			ArlecchinoHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Hurt3.ogg");
			ArlecchinoScream1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream1.ogg");
			ArlecchinoScream1Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream1Global.ogg");
			ArlecchinoScream2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream2.ogg");
			ArlecchinoScream2Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream2Global.ogg");
			ArlecchinoScream3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream3.ogg");
			ArlecchinoScream3Global = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Scream3Global.ogg");
			ArlecchinoTeleportIn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/TeleportIn.ogg");
			ArlecchinoTeleportOut = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/TeleportOut.ogg");
			ArlecchinoZoom = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Arlecchino/Sounds/Zoom.ogg");
		}

		public void LoadNahidaAssets()
		{
			NahidaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Nahida/NahidaHead.prefab");
			NahidaBlink1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Blink1.ogg");
			NahidaBlink2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Blink2.ogg");
			NahidaBlink3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Blink3.ogg");
			NahidaDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Death.ogg");
			NahidaDespawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Despawn.ogg");
			NahidaLaser = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Laser.ogg");
			NahidaLaserBuildup = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/LaserBuildup.ogg");
			NahidaSpawn = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/Spawn.ogg");
			NahidaStareLoopTwitching = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/StareLoopTwitching.ogg");
			NahidaStaringStart = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/StaringStart.ogg");
			NahidaStareLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Nahida/Sounds/StareLoop.ogg");
		}

		public void LoadHuTaoAssets()
		{
			HuTaoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/HuTao/Hu Tao.prefab");
			HutaoAttack = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Attack.ogg");
			HutaoAttackGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/AttackGlobal.ogg");
			HutaoCrackingFingers = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/CrackingFingersSlow.ogg");
			HutaoCrackingFingersAggresive = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/CrackingFingersAggresive.ogg");
			HutaoHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Hurt1.ogg");
			HutaoHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Hurt2.ogg");
			HutaoHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Hurt3.ogg");
			HutaoLookUnderScream = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/LookUnderScream.ogg");
			HutaoLookUnderScreamGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/LookUnderScreamGlobal.ogg");
			HutaoNoise1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Noise1.ogg");
			HutaoNoise2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Noise2.ogg");
			HutaoNoise3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Noise3.ogg");
			HutaoNoise4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/Noise4.ogg");
			HutaoStunStart = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/StunStart.ogg");
			HutaoTargetingPlayer = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/TargetingPlayer.ogg");
			HutaoStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/HuTao/Sounds/StunnedLoop.ogg");
		}

		public void LoadGamingAssets()
		{
			GamingPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Gaming/Gaming.prefab");
			GamingCleaverSwing1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/CleaverSwing1.ogg");
			GamingCleaverSwing2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/CleaverSwing2.ogg");
			GamingCleaverSwing3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/CleaverSwing3.ogg");
			GamingHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Hurt1.ogg");
			GamingHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Hurt2.ogg");
			GamingHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Hurt3.ogg");
			GamingJump1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Jump1.ogg");
			GamingJump2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Jump2.ogg");
			GamingJump3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Jump3.ogg");
			GamingJump4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Jump4.ogg");
			GamingJump5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Jump5.ogg");
			GamingLand1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Land1.ogg");
			GamingLand2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Land2.ogg");
			GamingLand3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Land3.ogg");
			GamingNotice = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/Notice.ogg");
			GamingStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/StunnedLoop.ogg");
			GamingTumbleGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/TumbleGlobal.ogg");
			GamingTumbleLocal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Gaming/Sounds/TumbleLocal.ogg");
		}

		public void LoadAyatoAssets()
		{
			AyatoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ayato/Ayato.prefab");
			AyatoAttack1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Attack1.ogg");
			AyatoAttack2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Attack2.ogg");
			AyatoAttack3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Attack3.ogg");
			AyatoAttack4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Attack4.ogg");
			AyatoAttack5 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Attack5.ogg");
			AyatoDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Death.ogg");
			AyatoHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Hurt1.ogg");
			AyatoHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Hurt2.ogg");
			AyatoHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Hurt3.ogg");
			AyatoJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/Jump.ogg");
			AyatoStunnedLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ayato/Sounds/StunnedLoop.ogg");
		}

		public void LoadColleiAssets()
		{
			ColleiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Collei/Collei.prefab");
			ColleiCat = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Collei/Cat.prefab");
			ColleiDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Death.ogg");
			ColleiHeadDetach = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/HeadDetach.ogg");
			ColleiHeadDetachTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/HeadDetachTell.ogg");
			ColleiHeadExplosionTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/HeadExplosionTell.ogg");
			ColleiHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Hurt.ogg");
			ColleiHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Hurt2.ogg");
			ColleiHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Hurt3.ogg");
			ColleiIdleLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/IdleLoop.ogg");
			ColleiMelee = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Melee.ogg");
			ColleiMeleeGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/MeleeGlobal.ogg");
			ColleiJump = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Jump.ogg");
			ColleiLand = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Land.ogg");
			ColleiNotice = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/Notice.ogg");
			ColleiNoticeGlobal = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/NoticeGlobal.ogg");
			ColleiHeadLaugh = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Collei/Sounds/HeadLaugh.ogg");
		}

		public void LoadGanyuAssets()
		{
			GanyuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ganyu/Ganyu.prefab");
			GanyuBall = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ganyu/GanyuBall.prefab");
			GanyuAttackSwoosh1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/AttackSwoosh1.ogg");
			GanyuAttackSwoosh2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/AttackSwoosh2.ogg");
			GanyuDeath1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Death1.ogg");
			GanyuDeath2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Death2.ogg");
			GanyuDeath3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Death3.ogg");
			GanyuHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Hurt1.ogg");
			GanyuHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Hurt2.ogg");
			GanyuHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Hurt3.ogg");
			GanyuIdleBreak1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/IdleBreak1.ogg");
			GanyuIdleBreak2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/IdleBreak2.ogg");
			GanyuIdleBreak3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/IdleBreak3.ogg");
			GanyuIdleBreak4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/IdleBreak4.ogg");
			GanyuIdleLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/IdleLoop.ogg");
			GanyuInhale1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Inhale1.ogg");
			GanyuInhale2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Inhale2.ogg");
			GanyuInhale3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Inhale3.ogg");
			GanyuJump1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Jump1.ogg");
			GanyuJump2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Jump2.ogg");
			GanyuJump3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Jump3.ogg");
			GanyuLand1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Land1.ogg");
			GanyuLand2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Land2.ogg");
			GanyuLand3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Land3.ogg");
			GanyuNotice1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Notice1.ogg");
			GanyuNotice2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Notice2.ogg");
			GanyuNotice3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/Notice3.ogg");
			GanyuRunAttackLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Ganyu/Sounds/RunLoop.ogg");
			GanyuMaterial = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/Ganyu/GanyuMat.mat");
		}

		public void LoadAinoIneffaAssets()
		{
			AinoIneffaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/AinoIneffa/AinoIneffa.prefab");
			AinoIneffaBarkBig1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark1.ogg");
			AinoIneffaBarkBig2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark2.ogg");
			AinoIneffaBarkBig3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark3.ogg");
			AinoIneffaBarkBigGlobal1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark1Global.ogg");
			AinoIneffaBarkBigGlobal2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark2Global.ogg");
			AinoIneffaBarkBigGlobal3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigBark3Global.ogg");
			AinoIneffaBarkSmall1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BarkSmall1.ogg");
			AinoIneffaBarkSmall2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BarkSmall2.ogg");
			AinoIneffaBarkSmall3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BarkSmall3.ogg");
			AinoIneffaBigDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigDeath.ogg");
			AinoIneffaBigHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigHurt1.ogg");
			AinoIneffaBigHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigHurt2.ogg");
			AinoIneffaBigHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigHurt3.ogg");
			AinoIneffaBigStinger = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/BigStinger.ogg");
			AinoIneffaFlyLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/FlyLoop.ogg");
			AinoIneffaPantingSmall = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/PantingSmall.ogg");
			AinoIneffaPet1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/Pet1.ogg");
			AinoIneffaPet2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/Pet2.ogg");
			AinoIneffaPet3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/Pet3.ogg");
			AinoIneffaSmallDeath = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallDeath.ogg");
			AinoIneffaSmallHurt1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallHurt1.ogg");
			AinoIneffaSmallHurt2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallHurt2.ogg");
			AinoIneffaSmallHurt3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallHurt3.ogg");
			AinoIneffaIdleBreak1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallIdleBreak1.ogg");
			AinoIneffaIdleBreak2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallIdleBreak2.ogg");
			AinoIneffaIdleBreak3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallIdleBreak3.ogg");
			AinoIneffaIdleBreak4 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/SmallIdleBreak4.ogg");
			AinoIneffaStunLoop = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/StunLoop.ogg");
			AinoIneffaPantingBig = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/PantingBig.ogg");
			AinoIneffaTransformationStart = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/AinoIneffa/Sounds/StartTransformation.ogg");
			AinoIneffaMaterial = GenshinImpactOverhaulAssetBundle.LoadAsset<Material>("Assets/AinoIneffa/Lightning.mat");
		}

		public void LoadDottoreAssets()
		{
			DottorePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Dottore/Dottore.prefab");
			DottoreAttackTell = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/AttackTell.ogg");
			DottoreBackCrackLong1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackLong1.ogg");
			DottoreBackCrackLong2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackLong2.ogg");
			DottoreBackCrackLong3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackLong3.ogg");
			DottoreBackCrackShort1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackShort1.ogg");
			DottoreBackCrackShort2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackShort2.ogg");
			DottoreBackCrackShort3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/BackCrackShort3.ogg");
			DottoreNeckCrackLong1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackLong1.ogg");
			DottoreNeckCrackLong2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackLong2.ogg");
			DottoreNeckCrackLong3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackLong3.ogg");
			DottoreNeckCrackShort1 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackShort1.ogg");
			DottoreNeckCrackShort2 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackShort2.ogg");
			DottoreNeckCrackShort3 = GenshinImpactOverhaulAssetBundle.LoadAsset<AudioClip>("Assets/Dottore/Sounds/NeckCrackShort3.ogg");
			DottoreLoop = GenshinImpactOverhaulAssetB