Decompiled source of GenshinImpactOverhaul SupermarketTogether v1.0.3

GenshinImpactOverhaulSupermarketTogether.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using TMPro;
using UnityEngine;
using UnityEngine.Animations.Rigging;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("GenshinImpactOverhaulSupermarketTogether")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GenshinImpactOverhaulSupermarketTogether")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("0376c048-625c-4a70-9506-cd174bdd0f56")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
[RequireComponent(typeof(Animator))]
public class EyeTrackingScript : MonoBehaviour
{
	[Header("Detection Settings")]
	public float detectionRadius = 3f;

	public string playerTag = "Player";

	[Header("IK Weights")]
	[Range(0f, 1f)]
	public float bodyWeight = 0.3f;

	[Range(0f, 1f)]
	public float headWeight = 0.7f;

	[Range(0f, 1f)]
	public float eyeWeight = 1f;

	[Range(0f, 1f)]
	public float clampWeight = 0.5f;

	[Header("Offset & Smoothing")]
	public float lookHeightOffset = 0.7f;

	public float smoothSpeed = 5f;

	[Header("Neck Constraint")]
	public float maxHorizontalAngle = 70f;

	public float maxVerticalAngle = 85f;

	private Animator animator;

	private float currentWeight = 0f;

	private float targetWeight = 0f;

	private Vector3 currentDir;

	private Vector3 lastLookPosition;

	private void Start()
	{
		//IL_0014: 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)
		//IL_0025: 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_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_0045: Unknown result type (might be due to invalid IL or missing references)
		animator = ((Component)this).GetComponent<Animator>();
		currentDir = ((Component)this).transform.forward;
		lastLookPosition = ((Component)this).transform.position + ((Component)this).transform.forward * detectionRadius;
	}

	private void Update()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: 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)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0219: Unknown result type (might be due to invalid IL or missing references)
		//IL_021e: Unknown result type (might be due to invalid IL or missing references)
		//IL_022b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0230: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f1: 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_0104: 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_010e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0118: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Unknown result type (might be due to invalid IL or missing references)
		//IL_0132: Unknown result type (might be due to invalid IL or missing references)
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_014d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Unknown result type (might be due to invalid IL or missing references)
		//IL_0277: Unknown result type (might be due to invalid IL or missing references)
		//IL_0279: Unknown result type (might be due to invalid IL or missing references)
		//IL_0206: Unknown result type (might be due to invalid IL or missing references)
		//IL_0208: Unknown result type (might be due to invalid IL or missing references)
		//IL_020d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0211: Unknown result type (might be due to invalid IL or missing references)
		//IL_0213: Unknown result type (might be due to invalid IL or missing references)
		Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, detectionRadius, LayerMask.GetMask(new string[1] { "Player" }));
		Transform val = null;
		float num = float.PositiveInfinity;
		Collider[] array2 = array;
		foreach (Collider val2 in array2)
		{
			if (((Component)val2).CompareTag(playerTag))
			{
				float num2 = Vector3.Distance(((Component)this).transform.position, ((Component)val2).transform.position);
				if (num2 < num)
				{
					num = num2;
					val = ((Component)val2).transform;
				}
			}
		}
		Vector3 val3 = ((Component)this).transform.forward;
		bool flag = false;
		Vector3 val4 = lastLookPosition;
		if ((Object)(object)val != (Object)null)
		{
			Transform val5 = val.Find("Viewpoint_Pivot/Viewpoint");
			Vector3 val6 = (((Object)(object)val5 != (Object)null) ? val5.position : (val.position + Vector3.up * lookHeightOffset));
			Vector3 val7 = val6 - ((Component)this).transform.position;
			Vector3 normalized = ((Vector3)(ref val7)).normalized;
			Vector3 val8 = ((Component)this).transform.InverseTransformDirection(normalized);
			float num3 = Mathf.Atan2(val8.x, val8.z) * 57.29578f;
			float num4 = Mathf.Atan2(val8.y, val8.z) * 57.29578f;
			bool flag2 = Mathf.Abs(num3) <= maxHorizontalAngle;
			bool flag3 = Mathf.Abs(num4) <= maxVerticalAngle;
			if (flag2 && flag3)
			{
				float num5 = Mathf.Clamp(num3, 0f - maxHorizontalAngle, maxHorizontalAngle) * ((float)Math.PI / 180f);
				float num6 = Mathf.Clamp(num4, 0f - maxVerticalAngle, maxVerticalAngle) * ((float)Math.PI / 180f);
				Vector3 val9 = default(Vector3);
				((Vector3)(ref val9))..ctor(Mathf.Sin(num5) * Mathf.Cos(num6), Mathf.Sin(num6), Mathf.Cos(num5) * Mathf.Cos(num6));
				val3 = ((Component)this).transform.TransformDirection(val9);
				flag = true;
				val4 = val6;
			}
		}
		currentDir = Vector3.Slerp(currentDir, val3, Time.deltaTime * smoothSpeed);
		targetWeight = (flag ? 1f : 0f);
		currentWeight = Mathf.Lerp(currentWeight, targetWeight, Time.deltaTime * smoothSpeed);
		if (flag)
		{
			lastLookPosition = val4;
		}
	}

	private void OnAnimatorIK(int layerIndex)
	{
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		if (currentWeight > 0.01f)
		{
			animator.SetLookAtWeight(headWeight * currentWeight, bodyWeight * currentWeight, eyeWeight * currentWeight, clampWeight * currentWeight, 0f);
			animator.SetLookAtPosition(lastLookPosition);
		}
		else
		{
			animator.SetLookAtWeight(0f);
		}
	}
}
namespace GenshinImpactOverhaulSupermarketTogether;

internal class BlinkScript : MonoBehaviour
{
	public float minBlinkInterval = 3f;

	public float maxBlinkInterval = 6f;

	public float blinkDuration = 0.1f;

	public string blinkShapeR = "Eye_WinkB_R";

	public string blinkShapeL = "Eye_WinkB_L";

	private SkinnedMeshRenderer faceRenderer;

	private int blinkShapeIndexL;

	private int blinkShapeIndexR;

	private float blinkTimer;

	private void Start()
	{
		Transform val = ((Component)this).transform.Find("Face");
		if ((Object)(object)val == (Object)null)
		{
			((Behaviour)this).enabled = false;
			return;
		}
		faceRenderer = ((Component)val).GetComponent<SkinnedMeshRenderer>();
		if ((Object)(object)faceRenderer == (Object)null)
		{
			((Behaviour)this).enabled = false;
			return;
		}
		blinkShapeIndexL = faceRenderer.sharedMesh.GetBlendShapeIndex(blinkShapeL);
		blinkShapeIndexR = faceRenderer.sharedMesh.GetBlendShapeIndex(blinkShapeR);
		if (blinkShapeIndexL < 0 || blinkShapeIndexR < 0)
		{
			((Behaviour)this).enabled = false;
		}
		else
		{
			ResetBlinkTimer();
		}
	}

	private void Update()
	{
		blinkTimer -= Time.deltaTime;
		if (blinkTimer <= 0f)
		{
			((MonoBehaviour)this).StartCoroutine(DoBlink());
			ResetBlinkTimer();
		}
	}

	private void ResetBlinkTimer()
	{
		blinkTimer = Random.Range(minBlinkInterval, maxBlinkInterval);
	}

	private IEnumerator DoBlink()
	{
		float half = blinkDuration * 0.5f;
		for (float t2 = 0f; t2 < half; t2 += Time.deltaTime)
		{
			float w = Mathf.Lerp(0f, 100f, t2 / half);
			faceRenderer.SetBlendShapeWeight(blinkShapeIndexL, w);
			faceRenderer.SetBlendShapeWeight(blinkShapeIndexR, w);
			yield return null;
		}
		faceRenderer.SetBlendShapeWeight(blinkShapeIndexL, 100f);
		faceRenderer.SetBlendShapeWeight(blinkShapeIndexR, 100f);
		for (float t = 0f; t < half; t += Time.deltaTime)
		{
			float w2 = Mathf.Lerp(100f, 0f, t / half);
			faceRenderer.SetBlendShapeWeight(blinkShapeIndexL, w2);
			faceRenderer.SetBlendShapeWeight(blinkShapeIndexR, w2);
			yield return null;
		}
		faceRenderer.SetBlendShapeWeight(blinkShapeIndexL, 0f);
		faceRenderer.SetBlendShapeWeight(blinkShapeIndexR, 0f);
	}
}
[BepInPlugin("GenshinImpactOverhaul", "GoblinKingShmeeGenshinImpactOverhaul", "1.0.3")]
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 AetherPrefab;

	public static GameObject AlbedoPrefab;

	public static GameObject AlhaithamPrefab;

	public static GameObject AmberPrefab;

	public static GameObject AratakiIttoPrefab;

	public static GameObject ArlecchinoPrefab;

	public static GameObject BaizhuPrefab;

	public static GameObject BarbaraPrefab;

	public static GameObject BeidouPrefab;

	public static GameObject BennettPrefab;

	public static GameObject CandacePrefab;

	public static GameObject CapitanoPrefab;

	public static GameObject CharlottePrefab;

	public static GameObject ChascaPrefab;

	public static GameObject ChevreusePrefab;

	public static GameObject ChioriPrefab;

	public static GameObject ChongyunPrefab;

	public static GameObject CitlaliPrefab;

	public static GameObject ClorindePrefab;

	public static GameObject ColleiPrefab;

	public static GameObject CynoPrefab;

	public static GameObject DainsleifPrefab;

	public static GameObject DehyaPrefab;

	public static GameObject DilucPrefab;

	public static GameObject DionaPrefab;

	public static GameObject DoriPrefab;

	public static GameObject EmiliePrefab;

	public static GameObject EscoffierPrefab;

	public static GameObject EulaPrefab;

	public static GameObject FaruzanPrefab;

	public static GameObject FischlPrefab;

	public static GameObject FreminetPrefab;

	public static GameObject FurinaPrefab;

	public static GameObject GamingPrefab;

	public static GameObject GanyuPrefab;

	public static GameObject GorouPrefab;

	public static GameObject HuTaoPrefab;

	public static GameObject IansanPrefab;

	public static GameObject IfaPrefab;

	public static GameObject IlDottorePrefab;

	public static GameObject JeanPrefab;

	public static GameObject KachinaPrefab;

	public static GameObject KaeyaPrefab;

	public static GameObject KavehPrefab;

	public static GameObject KaedeharaKazuhaPrefab;

	public static GameObject KamisatoAyakaPrefab;

	public static GameObject KamisatoAyatoPrefab;

	public static GameObject KeqingPrefab;

	public static GameObject KinichPrefab;

	public static GameObject KiraraPrefab;

	public static GameObject KleePrefab;

	public static GameObject KujouSaraPrefab;

	public static GameObject KukiShinobuPrefab;

	public static GameObject LanyanPrefab;

	public static GameObject LaylaPrefab;

	public static GameObject LisaPrefab;

	public static GameObject LuminePrefab;

	public static GameObject LynettePrefab;

	public static GameObject LyneyPrefab;

	public static GameObject MavuikaPrefab;

	public static GameObject MikaPrefab;

	public static GameObject MonaPrefab;

	public static GameObject MualaniPrefab;

	public static GameObject NahidaPrefab;

	public static GameObject NaviaPrefab;

	public static GameObject NeuvillettePrefab;

	public static GameObject NilouPrefab;

	public static GameObject NingguangPrefab;

	public static GameObject NoellePrefab;

	public static GameObject OroronPrefab;

	public static GameObject QiqiPrefab;

	public static GameObject RaidenShogunPrefab;

	public static GameObject RazorPrefab;

	public static GameObject RosariaPrefab;

	public static GameObject SangonomiyaKokomiPrefab;

	public static GameObject SayuPrefab;

	public static GameObject SethosPrefab;

	public static GameObject ShenhePrefab;

	public static GameObject ShikanoinHeizouPrefab;

	public static GameObject SigewinnePrefab;

	public static GameObject SignoraPrefab;

	public static GameObject SucrosePrefab;

	public static GameObject TartagliaPrefab;

	public static GameObject ThomaPrefab;

	public static GameObject TighnariPrefab;

	public static GameObject VaresaPrefab;

	public static GameObject VentiPrefab;

	public static GameObject WandererPrefab;

	public static GameObject WriothesleyPrefab;

	public static GameObject XianglingPrefab;

	public static GameObject XianyunPrefab;

	public static GameObject XiaoPrefab;

	public static GameObject XilonenPrefab;

	public static GameObject XingqiuPrefab;

	public static GameObject XinyanPrefab;

	public static GameObject YaeMikoPrefab;

	public static GameObject YanfeiPrefab;

	public static GameObject YaoyaoPrefab;

	public static GameObject YelanPrefab;

	public static GameObject YoimiyaPrefab;

	public static GameObject YumemizukiMizukiPrefab;

	public static GameObject YunJinPrefab;

	public static GameObject ZhongliPrefab;

	public static Sprite AlhaithamSprite;

	public static Sprite NilouSprite;

	public static Sprite KamisatoAyatoSprite;

	public static Sprite BaizhuSprite;

	public static Sprite CapitanoSprite;

	public static Sprite DainsleifSprite;

	public static Sprite DilucSprite;

	public static Sprite IlDottoreSprite;

	public static Sprite IfaSprite;

	public static Sprite EscoffierSprite;

	public static Sprite KaeyaSprite;

	public static Sprite KavehSprite;

	public static Sprite NeuvilletteSprite;

	public static Sprite OroronSprite;

	public static Sprite TartagliaSprite;

	public static Sprite ThomaSprite;

	public static Sprite WriothesleySprite;

	public static Sprite ZhongliSprite;

	public static Sprite ArlecchinoSprite;

	public static Sprite BeidouSprite;

	public static Sprite CandaceSprite;

	public static Sprite ChascaSprite;

	public static Sprite ClorindeSprite;

	public static Sprite DehyaSprite;

	public static Sprite EulaSprite;

	public static Sprite JeanSprite;

	public static Sprite LisaSprite;

	public static Sprite MavuikaSprite;

	public static Sprite NaviaSprite;

	public static Sprite NingguangSprite;

	public static Sprite RaidenShogunSprite;

	public static Sprite RosariaSprite;

	public static Sprite KujouSaraSprite;

	public static Sprite ShenheSprite;

	public static Sprite VaresaSprite;

	public static Sprite XianyunSprite;

	public static Sprite XilonenSprite;

	public static Sprite YaeMikoSprite;

	public static Sprite YelanSprite;

	public static Sprite SignoraSprite;

	public static Sprite AlbedoSprite;

	public static Sprite BennettSprite;

	public static Sprite ChongyunSprite;

	public static Sprite CynoSprite;

	public static Sprite FreminetSprite;

	public static Sprite GamingSprite;

	public static Sprite GorouSprite;

	public static Sprite KaedeharaKazuhaSprite;

	public static Sprite ShikanoinHeizouSprite;

	public static Sprite KinichSprite;

	public static Sprite LyneySprite;

	public static Sprite MikaSprite;

	public static Sprite RazorSprite;

	public static Sprite SethosSprite;

	public static Sprite TighnariSprite;

	public static Sprite VentiSprite;

	public static Sprite WandererSprite;

	public static Sprite XiaoSprite;

	public static Sprite XingqiuSprite;

	public static Sprite AmberSprite;

	public static Sprite ChevreuseSprite;

	public static Sprite XinyanSprite;

	public static Sprite YanfeiSprite;

	public static Sprite YoimiyaSprite;

	public static Sprite XianglingSprite;

	public static Sprite FischlSprite;

	public static Sprite KeqingSprite;

	public static Sprite KukiShinobuSprite;

	public static Sprite NoelleSprite;

	public static Sprite ChioriSprite;

	public static Sprite CharlotteSprite;

	public static Sprite ColleiSprite;

	public static Sprite FaruzanSprite;

	public static Sprite FurinaSprite;

	public static Sprite GanyuSprite;

	public static Sprite KamisatoAyakaSprite;

	public static Sprite KiraraSprite;

	public static Sprite LanyanSprite;

	public static Sprite LaylaSprite;

	public static Sprite LynetteSprite;

	public static Sprite MualaniSprite;

	public static Sprite SangonomiyaKokomiSprite;

	public static Sprite SucroseSprite;

	public static Sprite YumemizukiMizukiSprite;

	public static Sprite HuTaoSprite;

	public static Sprite YunJinSprite;

	public static Sprite AratakiIttoSprite;

	public static Sprite BarbaraSprite;

	public static Sprite CitlaliSprite;

	public static Sprite EmilieSprite;

	public static Sprite IansanSprite;

	public static Sprite KleeSprite;

	public static Sprite NahidaSprite;

	public static Sprite QiqiSprite;

	public static Sprite SigewinneSprite;

	public static Sprite DionaSprite;

	public static Sprite DoriSprite;

	public static Sprite KachinaSprite;

	public static Sprite SayuSprite;

	public static Sprite YaoyaoSprite;

	public static Texture Ad;

	public static Texture Ad1;

	public static Texture Ad2;

	public static Texture Ad3;

	public static Texture Ad4;

	public static Texture Ad5;

	public static Texture Ad6;

	public static Texture Ad7;

	public static Texture Ad10;

	public static Texture Ad11;

	public static Texture Ad12;

	public static Texture Ad13;

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

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

	public static ConfigEntry<bool> GenshinAds { 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();
		LoadSprites();
		LoadAdds();
		GenshinEmployees = ((BaseUnityPlugin)this).Config.Bind<bool>("Employees", "Employee Replacements", true, "If true, employees will be replaced with Genshin Characters");
		RepeatEmployees = ((BaseUnityPlugin)this).Config.Bind<bool>("Employees", "Duplicate Employees", true, "If true, newly hireable employee options will avoid characters already hired");
		GenshinAds = ((BaseUnityPlugin)this).Config.Bind<bool>("Ads", "Replace Ads with Genshin screenshots", true, "If true, ads around the city will be replaced with Genshin screenshots");
	}

	public void LoadAssets()
	{
		AetherPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Aether.prefab");
		AlbedoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Albedo.prefab");
		AlhaithamPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Alhaitham.prefab");
		AmberPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Amber.prefab");
		AratakiIttoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/AratakiItto.prefab");
		ArlecchinoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Arlecchino.prefab");
		BaizhuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Baizhu.prefab");
		BarbaraPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Barbara.prefab");
		BeidouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Beidou.prefab");
		BennettPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Bennett.prefab");
		CandacePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Candace.prefab");
		CapitanoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Capitano.prefab");
		CharlottePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Charlotte.prefab");
		ChascaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Chasca.prefab");
		ChevreusePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Chevreuse.prefab");
		ChioriPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Chiori.prefab");
		ChongyunPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Chongyun.prefab");
		CitlaliPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Citlali.prefab");
		ClorindePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Clorinde.prefab");
		ColleiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Collei.prefab");
		CynoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Cyno.prefab");
		DainsleifPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Dainsleif.prefab");
		DehyaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Dehya.prefab");
		DilucPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Diluc.prefab");
		DionaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Diona.prefab");
		DoriPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Dori.prefab");
		EmiliePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Emilie.prefab");
		EulaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Eula.prefab");
		FaruzanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Faruzan.prefab");
		FischlPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Fischl.prefab");
		FreminetPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Freminet.prefab");
		FurinaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Furina.prefab");
		GamingPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Gaming.prefab");
		GanyuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ganyu.prefab");
		GorouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Gorou.prefab");
		HuTaoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/HuTao.prefab");
		IansanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Iansan.prefab");
		IlDottorePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/IlDottore.prefab");
		JeanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Jean.prefab");
		KachinaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kachina.prefab");
		KaeyaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kaeya.prefab");
		KavehPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kaveh.prefab");
		KaedeharaKazuhaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/KaedeharaKazuha.prefab");
		KamisatoAyakaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/KamisatoAyaka.prefab");
		KamisatoAyatoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/KamisatoAyato.prefab");
		KeqingPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Keqing.prefab");
		KinichPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kinich.prefab");
		KiraraPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Kirara.prefab");
		KleePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Klee.prefab");
		KujouSaraPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/KujouSara.prefab");
		KukiShinobuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/KukiShinobu.prefab");
		LanyanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/LanYan.prefab");
		LaylaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Layla.prefab");
		LisaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Lisa.prefab");
		LuminePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Lumine.prefab");
		LynettePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Lynette.prefab");
		LyneyPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Lyney.prefab");
		MavuikaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mavuika.prefab");
		MikaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mika.prefab");
		IfaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ifa.prefab");
		MonaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mona.prefab");
		MualaniPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Mualani.prefab");
		NahidaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Nahida.prefab");
		NaviaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Navia.prefab");
		NeuvillettePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Neuvillette.prefab");
		NilouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Nilou.prefab");
		NingguangPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ningguang.prefab");
		NoellePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Noelle.prefab");
		OroronPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Ororon.prefab");
		QiqiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Qiqi.prefab");
		RaidenShogunPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/RaidenShogun.prefab");
		RazorPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Razor.prefab");
		RosariaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Rosaria.prefab");
		SangonomiyaKokomiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/SangonomiyaKokomi.prefab");
		SayuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Sayu.prefab");
		SethosPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Sethos.prefab");
		ShenhePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Shenhe.prefab");
		ShikanoinHeizouPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/ShikanoinHeizou.prefab");
		SigewinnePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Sigewinne.prefab");
		SignoraPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/LaSignora.prefab");
		SucrosePrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Sucrose.prefab");
		TartagliaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Tartaglia.prefab");
		ThomaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Thoma.prefab");
		TighnariPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Tighnari.prefab");
		VaresaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Varesa.prefab");
		EscoffierPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Escoffier.prefab");
		VentiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Venti.prefab");
		WandererPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Wanderer.prefab");
		WriothesleyPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Wriothesley.prefab");
		XianglingPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xiangling.prefab");
		XianyunPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xianyun.prefab");
		XiaoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xiao.prefab");
		XilonenPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xilonen.prefab");
		XingqiuPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xingqiu.prefab");
		XinyanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Xinyan.prefab");
		YaeMikoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/YaeMiko.prefab");
		YanfeiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Yanfei.prefab");
		YaoyaoPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Yaoyao.prefab");
		YelanPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Yelan.prefab");
		YoimiyaPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Yoimiya.prefab");
		YumemizukiMizukiPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/YumemizukiMizuki.prefab");
		YunJinPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/YunJin.prefab");
		ZhongliPrefab = GenshinImpactOverhaulAssetBundle.LoadAsset<GameObject>("Assets/Zhongli.prefab");
	}

	public void LoadSprites()
	{
		AlhaithamSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Alhaitham.png");
		NilouSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Nilou.png");
		KamisatoAyatoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ayato.png");
		BaizhuSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Baizhu.png");
		CapitanoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Capitano.png");
		DainsleifSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Dainsleif.png");
		DilucSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Diluc.png");
		IlDottoreSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/IlDottore.png");
		KaeyaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kaeya.png");
		KavehSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kaveh.png");
		NeuvilletteSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Neuvillette.png");
		OroronSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ororon.png");
		TartagliaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Childe.png");
		ThomaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Thoma.png");
		WriothesleySprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Wriothesley.png");
		ZhongliSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Zhongli.png");
		ArlecchinoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Arlecchino.png");
		BeidouSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Beidou.png");
		CandaceSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Candace.png");
		ChascaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Chasca.png");
		ClorindeSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Clorinde.png");
		DehyaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Dehya.png");
		EulaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Eula.png");
		JeanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Jean.png");
		LisaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Lisa.png");
		MavuikaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Mavuika.png");
		NaviaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Navia.png");
		NingguangSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ningguang.png");
		RaidenShogunSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Raiden.png");
		RosariaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Rosaria.png");
		KujouSaraSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Sara.png");
		ShenheSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Shenhe.png");
		VaresaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Varesa.png");
		XianyunSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xianyun.png");
		XilonenSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xilonen.png");
		YaeMikoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yae Miko.png");
		YelanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yelan.png");
		SignoraSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Signora.png");
		AlbedoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Albedo.png");
		BennettSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Bennett.png");
		ChongyunSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Chongyun.png");
		CynoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Cyno.png");
		FreminetSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Freminet.png");
		GamingSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Gaming.png");
		GorouSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Gorou.png");
		KaedeharaKazuhaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kazuha.png");
		ShikanoinHeizouSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Heizou.png");
		KinichSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kinich.png");
		LyneySprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Lyney.png");
		MikaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Mika.png");
		RazorSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Razor.png");
		SethosSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Sethos.png");
		TighnariSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Tighnari.png");
		VentiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Venti.png");
		WandererSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Wanderer.png");
		XiaoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xiao.png");
		XingqiuSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xingqiu.png");
		AmberSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Amber.png");
		ChevreuseSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Chevreuse.png");
		XinyanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xinyan.png");
		YanfeiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yanfei.png");
		YoimiyaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yoimiya.png");
		XianglingSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Xiangling.png");
		FischlSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Fischl.png");
		KeqingSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Keqing.png");
		KukiShinobuSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kuki Shinobu.png");
		EscoffierSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Escoffier.png");
		NoelleSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Noelle.png");
		ChioriSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Chiori.png");
		CharlotteSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Charlotte.png");
		ColleiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Collei.png");
		FaruzanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Faruzan.png");
		FurinaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Furina.png");
		GanyuSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ganyu.png");
		KamisatoAyakaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ayaka.png");
		KiraraSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kirara.png");
		LanyanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Lan Yan.png");
		LaylaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Layla.png");
		LynetteSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Lynette.png");
		IfaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Ifa.png");
		MualaniSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Mualani.png");
		SangonomiyaKokomiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kokomi.png");
		SucroseSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Sucrose.png");
		YumemizukiMizukiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yumemizuki Mizuki.png");
		HuTaoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Hu Tao.png");
		YunJinSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yun Jin.png");
		AratakiIttoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Itto.png");
		BarbaraSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Barbara.png");
		CitlaliSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Citlali.png");
		EmilieSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Emilie.png");
		IansanSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Iansan.png");
		KleeSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Klee.png");
		NahidaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Nahida.png");
		QiqiSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Qiqi.png");
		SigewinneSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Sigewinne.png");
		DionaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Diona.png");
		DoriSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Dori.png");
		KachinaSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Kachina.png");
		SayuSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Sayu.png");
		YaoyaoSprite = GenshinImpactOverhaulAssetBundle.LoadAsset<Sprite>("Assets/Sprites/Yaoyao.png");
	}

	public void LoadAdds()
	{
		Ad = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad.png");
		Ad1 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad1.png");
		Ad2 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad2.png");
		Ad3 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad3.png");
		Ad4 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad4.png");
		Ad5 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad5.png");
		Ad6 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad6.png");
		Ad7 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad7.png");
		Ad10 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad10.png");
		Ad11 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad11.png");
		Ad12 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad12.png");
		Ad13 = (Texture)(object)GenshinImpactOverhaulAssetBundle.LoadAsset<Texture2D>("Assets/Ads/Ad13.png");
	}
}
[HarmonyPatch(typeof(NPC_Info))]
internal class NPCModification
{
	[HarmonyPatch(typeof(NPC_Info))]
	private static class Patch_MarkEmployee
	{
		[HarmonyPrefix]
		[HarmonyPatch("CreateNPCCharacter")]
		private static void Prefix_MarkEmployee(NPC_Info __instance)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			bool flag = false;
			Transform parent = ((Component)__instance).transform.parent;
			if (((parent != null) ? ((Object)parent).name : null) == "NPC_EmployeeParent")
			{
				flag = true;
			}
			else
			{
				foreach (Transform item in ((Component)__instance).transform)
				{
					Transform val = item;
					if (((Object)val).name.StartsWith("Employee"))
					{
						flag = true;
						break;
					}
				}
			}
			if (flag)
			{
				__instance.isEmployee = true;
			}
			NPC_Manager component = GameObject.Find("NPC_Manager").GetComponent<NPC_Manager>();
			EmployeesDataGeneration component2 = ((Component)component).gameObject.GetComponent<EmployeesDataGeneration>();
			if (component2.employeesSprites.Length != 100)
			{
				int num = component2.employeesSprites.Length;
				Array.Resize(ref component2.employeesSprites, 100);
				Sprite val2 = component2.employeesSprites[num - 1];
				for (int i = num; i < 100; i++)
				{
					component2.employeesSprites[i] = val2;
				}
				ChangeEmployeeSprites();
			}
		}
	}

	[HarmonyPatch(typeof(EmployeesDataGeneration))]
	public static class PatchEmployees
	{
		private static readonly HashSet<int> _usedNums = new HashSet<int>();

		[HarmonyPrefix]
		[HarmonyPatch("GenerateTodayEmployeesData")]
		private static void ClearAndSeedUsedNums()
		{
			_usedNums.Clear();
			if (!GenshinImpactOverhaul.RepeatEmployees.Value)
			{
				return;
			}
			NPC_Manager val = Object.FindObjectOfType<NPC_Manager>();
			if ((Object)(object)val == (Object)null || val.hiredEmployeesData == null)
			{
				return;
			}
			string[] hiredEmployeesData = val.hiredEmployeesData;
			foreach (string text in hiredEmployeesData)
			{
				string[] array = text.Split(new char[1] { '|' });
				if (array.Length != 0 && int.TryParse(array[0], out var result))
				{
					_usedNums.Add(result);
				}
			}
		}

		public static int GetUniqueRandom(int minInclusive, int maxExclusive)
		{
			for (int i = 0; i < 1000; i++)
			{
				int num = Random.Range(minInclusive, maxExclusive);
				if (_usedNums.Add(num))
				{
					return num;
				}
			}
			return Random.Range(minInclusive, maxExclusive);
		}

		[HarmonyTranspiler]
		[HarmonyPatch("GenerateTodayEmployeesData")]
		private static IEnumerable<CodeInstruction> ChangeNum3Range(IEnumerable<CodeInstruction> instructions)
		{
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Expected O, but got Unknown
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Expected O, but got Unknown
			List<CodeInstruction> list = new List<CodeInstruction>(instructions);
			MethodInfo methodInfo = AccessTools.Method(typeof(Random), "Range", new Type[2]
			{
				typeof(int),
				typeof(int)
			}, (Type[])null);
			MethodInfo methodInfo2 = AccessTools.Method(typeof(PatchEmployees), "GetUniqueRandom", (Type[])null, (Type[])null);
			for (int i = 0; i < list.Count; i++)
			{
				if (CodeInstructionExtensions.Calls(list[i], methodInfo) && i >= 2 && list[i - 2].opcode == OpCodes.Ldc_I4_0 && list[i - 1].opcode == OpCodes.Ldc_I4_7)
				{
					list[i - 1] = CodeInstructionExtensions.WithBlocks(CodeInstructionExtensions.WithLabels(new CodeInstruction(OpCodes.Ldc_I4, (object)100), (IEnumerable<Label>)list[i - 1].labels), (IEnumerable<ExceptionBlock>)list[i - 1].blocks);
					list[i] = CodeInstructionExtensions.WithBlocks(CodeInstructionExtensions.WithLabels(new CodeInstruction(OpCodes.Call, (object)methodInfo2), (IEnumerable<Label>)list[i].labels), (IEnumerable<ExceptionBlock>)list[i].blocks);
				}
			}
			return list.AsEnumerable();
		}
	}

	[HarmonyPatch(typeof(Billboard))]
	private static class BillboardReplacements
	{
		private static readonly FieldInfo MatField = AccessTools.Field(typeof(Billboard), "mat");

		private static readonly Type OverrideType = typeof(GenshinImpactOverhaul);

		[HarmonyPostfix]
		[HarmonyPatch("ChangeAdd")]
		private static void AdChanger(Billboard __instance)
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			if (!GenshinImpactOverhaul.GenshinAds.Value)
			{
				return;
			}
			Material val = (Material)MatField.GetValue(__instance);
			if ((Object)(object)val == (Object)null)
			{
				return;
			}
			Texture texture = val.GetTexture("_MainTexture");
			if ((Object)(object)texture == (Object)null)
			{
				return;
			}
			string name = ((Object)texture).name;
			if (!name.StartsWith("Ad", StringComparison.OrdinalIgnoreCase))
			{
				return;
			}
			string text = null;
			if (string.Equals(name, "Ad", StringComparison.OrdinalIgnoreCase))
			{
				text = "Ad";
			}
			else
			{
				if (!int.TryParse(name.Substring(2), out var result) || result == 8 || result == 9)
				{
					return;
				}
				text = $"Ad{result}";
			}
			FieldInfo field = OverrideType.GetField(text, BindingFlags.Static | BindingFlags.Public);
			if (!(field == null))
			{
				object? value = field.GetValue(null);
				Texture val2 = (Texture)((value is Texture) ? value : null);
				if (!((Object)(object)val2 == (Object)null))
				{
					val.SetTexture("_MainTexture", val2);
				}
			}
		}
	}

	[HarmonyPatch(typeof(OrderPackaging))]
	private static class PatchOrderPackaging
	{
		private static readonly string[] PrefabNames = new string[100]
		{
			"Alhaitham", "Nilou", "Kamisato Ayato", "Baizhu", "Capitano", "Dainsleif", "Diluc", "Il Dottore", "Kaeya", "Kaveh",
			"Neuvillette", "Ororon", "Tartaglia", "Thoma", "Wriothesley", "Zhongli", "Arlecchino", "Beidou", "Candace", "Chasca",
			"Clorinde", "Dehya", "Eula", "Jean", "Lisa", "Mavuika", "Navia", "Ningguang", "Raiden Shogun", "Rosaria",
			"Kujou Sara", "Shenhe", "Varesa", "Xianyun", "Xilonen", "Yae Miko", "Yelan", "Signora", "Albedo", "Bennett",
			"Chongyun", "Cyno", "Freminet", "Gaming", "Gorou", "Kaedehara Kazuha", "Shikanoin Heizou", "Kinich", "Lyney", "Mika",
			"Razor", "Sethos", "Tighnari", "Venti", "Wanderer", "Xiao", "Xingqiu", "Amber", "Chevreuse", "Xinyan",
			"Yanfei", "Yoimiya", "Xiangling", "Fischl", "Keqing", "Kuki Shinobu", "Escoffier", "Noelle", "Chiori", "Charlotte",
			"Collei", "Faruzan", "Furina", "Ganyu", "Kamisato Ayaka", "Kirara", "Lanyan", "Layla", "Lynette", "Ifa",
			"Mualani", "Sangonomiya Kokomi", "Sucrose", "Yumemizuki Mizuki", "Hu Tao", "Yun Jin", "Arataki Itto", "Barbara", "Citlali", "Emilie",
			"Ian San", "Klee", "Nahida", "Qiqi", "Sigewinne", "Diona", "Dori", "Kachina", "Sayu", "Yaoyao"
		};

		private static readonly MethodInfo RpcUpdateMI = AccessTools.Method(typeof(OrderPackaging), "RpcUpdateOrderOnClient", new Type[2]
		{
			typeof(int),
			typeof(string)
		}, (Type[])null);

		[HarmonyPostfix]
		[HarmonyPatch("GenerateTodayListOfOrders")]
		private static void FixOrderNames(OrderPackaging __instance)
		{
			string[] ordersData = __instance.ordersData;
			for (int i = 0; i < ordersData.Length; i++)
			{
				string text = ordersData[i];
				if (!string.IsNullOrEmpty(text))
				{
					string[] array = text.Split(new char[1] { '|' }, 4);
					if (array.Length >= 4 && int.TryParse(array[2], out var result) && result >= 0 && result < PrefabNames.Length)
					{
						array[1] = PrefabNames[result];
						string text2 = (ordersData[i] = string.Join("|", array));
						RpcUpdateMI.Invoke(__instance, new object[2] { i, text2 });
					}
				}
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch("CreateUIOrderOnBlackboards")]
		private static void FixUI(OrderPackaging __instance)
		{
			Transform obj = ((Component)__instance).transform.Find("0_OrderPackaging");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				Transform obj3 = obj.Find("Canvas_MainOrders");
				if (obj3 == null)
				{
					obj2 = null;
				}
				else
				{
					Transform obj4 = obj3.Find("Container");
					obj2 = ((obj4 != null) ? obj4.Find("VerticalLayoutContainer") : null);
				}
			}
			Transform val = (Transform)obj2;
			if ((Object)(object)val == (Object)null)
			{
				return;
			}
			HashSet<string> hashSet = new HashSet<string>(PrefabNames);
			HashSet<int> hashSet2 = new HashSet<int>();
			for (int num = val.childCount - 1; num >= 0; num--)
			{
				Transform child = val.GetChild(num);
				bool flag = false;
				Transform val2 = child.Find("CustomerName");
				if ((Object)(object)val2 == (Object)null)
				{
					flag = true;
				}
				else
				{
					TextMeshProUGUI component = ((Component)val2).GetComponent<TextMeshProUGUI>();
					if ((Object)(object)component == (Object)null || !hashSet.Contains(((TMP_Text)component).text))
					{
						flag = true;
					}
				}
				if (!flag)
				{
					Transform val3 = child.Find("OrderNumber");
					if ((Object)(object)val3 == (Object)null)
					{
						flag = true;
					}
					else
					{
						TextMeshProUGUI component2 = ((Component)val3).GetComponent<TextMeshProUGUI>();
						if ((Object)(object)component2 == (Object)null)
						{
							flag = true;
						}
						else
						{
							string text = ((TMP_Text)component2).text;
							if (text.Length > 1 && int.TryParse(text.Substring(1), out var result))
							{
								if (!hashSet2.Add(result))
								{
									flag = true;
								}
							}
							else
							{
								flag = true;
							}
						}
					}
				}
				if (flag)
				{
					Object.Destroy((Object)(object)((Component)child).gameObject);
				}
			}
		}
	}

	public class Modifiers
	{
		public static void TurnOffRenderers(Transform transform)
		{
			Renderer[] componentsInChildren = ((Component)transform).GetComponentsInChildren<Renderer>(true);
			Renderer[] array = componentsInChildren;
			foreach (Renderer val in array)
			{
				val.enabled = false;
			}
		}

		public static int GetUniqueNPCID(GameObject self, int desiredID, IEnumerable<GameObject> employees, IEnumerable<GameObject> spawnedNPCs, IEnumerable<GameObject> customers, int maxIDs)
		{
			HashSet<int> used = new HashSet<int>();
			foreach (GameObject employee in employees)
			{
				Count(employee);
			}
			foreach (GameObject spawnedNPC in spawnedNPCs)
			{
				Count(spawnedNPC);
			}
			foreach (GameObject customer in customers)
			{
				Count(customer);
			}
			int num = desiredID;
			for (int i = 0; i < maxIDs; i++)
			{
				if (!used.Contains(num))
				{
					return num;
				}
				num = (num + 1) % maxIDs;
			}
			return desiredID;
			void Count(GameObject go)
			{
				NPC_Info val = default(NPC_Info);
				if (!((Object)(object)go == (Object)null) && !((Object)(object)go == (Object)(object)self) && go.TryGetComponent<NPC_Info>(ref val))
				{
					used.Add(val.NPCID);
				}
			}
		}

		public static void SetPrivateField<T>(object target, string fieldName, T value)
		{
			Type type = target.GetType();
			FieldInfo field = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic);
			if (field == null)
			{
				Debug.LogError((object)("Field '" + fieldName + "' not found on " + type.Name));
			}
			else
			{
				field.SetValue(target, value);
			}
		}
	}

	private const int TargetSize = 100;

	[HarmonyPatch("CreateNPCCharacter")]
	[HarmonyPostfix]
	private static void ReplaceModel(NPC_Info __instance)
	{
		//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_021d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		if (!GenshinImpactOverhaul.GenshinEmployees.Value && __instance.isEmployee)
		{
			return;
		}
		if (!__instance.isEmployee)
		{
			GameObject val = GameObject.Find("NPC_Manager");
			Transform val2 = val.transform.Find("NPC_EmployeeParent");
			Transform val3 = val.transform.Find("NPC_Parent");
			Transform val4 = val.transform.Find("NPC_CustomerParent");
			IEnumerable<GameObject> employees = (((Object)(object)val2 != (Object)null) ? (from Transform t in (IEnumerable)val2
				select ((Component)t).gameObject) : Enumerable.Empty<GameObject>());
			IEnumerable<GameObject> spawnedNPCs = (((Object)(object)val3 != (Object)null) ? (from Transform t in (IEnumerable)val3
				select ((Component)t).gameObject) : Enumerable.Empty<GameObject>());
			IEnumerable<GameObject> first = (((Object)(object)val4 != (Object)null) ? (from Transform t in (IEnumerable)val4
				select ((Component)t).gameObject) : Enumerable.Empty<GameObject>());
			Scene activeScene = SceneManager.GetActiveScene();
			IEnumerable<GameObject> enumerable = from go in ((Scene)(ref activeScene)).GetRootGameObjects()
				where ((Object)go).name == "A_NPC_Agent(Clone)"
				select go;
			int num = enumerable.Count();
			IEnumerable<GameObject> customers = first.Concat(enumerable);
			int nPCID = __instance.NPCID;
			int uniqueNPCID = Modifiers.GetUniqueNPCID(((Component)__instance).gameObject, nPCID, employees, spawnedNPCs, customers, 100);
			if (uniqueNPCID != nPCID)
			{
				__instance.NPCID = uniqueNPCID;
			}
		}
		Modifiers.TurnOffRenderers(((Component)__instance).transform);
		GameObject val5 = Object.Instantiate<GameObject>(DefineModel(__instance.NPCID));
		val5.transform.SetParent(((Component)__instance).transform);
		val5.transform.localPosition = Vector3.zero;
		val5.transform.localRotation = Quaternion.identity;
		val5.transform.localScale = new Vector3(1.07f, 1.07f, 1.07f);
		val5.AddComponent<BlinkScript>();
		val5.AddComponent<EyeTrackingScript>();
		FieldInfo field = typeof(NPC_Info).GetField("npcAnimator", BindingFlags.Instance | BindingFlags.NonPublic);
		if (field != null)
		{
			Animator component = val5.GetComponent<Animator>();
			field.SetValue(__instance, component);
		}
		if (__instance.isEmployee)
		{
			Transform value = val5.transform.Find("IKObjs/RightHandTarget");
			Transform value2 = val5.transform.Find("IKObjs/LeftHandTarget");
			TwoBoneIKConstraint component2 = ((Component)val5.transform.Find("Rig/LefHandIK")).GetComponent<TwoBoneIKConstraint>();
			TwoBoneIKConstraint component3 = ((Component)val5.transform.Find("Rig/RigHandIK")).GetComponent<TwoBoneIKConstraint>();
			Modifiers.SetPrivateField<Transform>(__instance, "rightHandOBJ", value);
			Modifiers.SetPrivateField<Transform>(__instance, "leftHandOBJ", value2);
			Modifiers.SetPrivateField<TwoBoneIKConstraint>(__instance, "rightHandConstraint", component3);
			Modifiers.SetPrivateField<TwoBoneIKConstraint>(__instance, "leftHandConstraint", component2);
		}
	}

	[HarmonyPatch("CreateNPCCharacter")]
	[HarmonyPrefix]
	private static void AddMoreFriends(NPC_Info __instance)
	{
		NPC_Manager component = GameObject.Find("NPC_Manager").GetComponent<NPC_Manager>();
		EmployeesDataGeneration component2 = ((Component)component).gameObject.GetComponent<EmployeesDataGeneration>();
		if (component.NPCsArray.Length == 100 || component.NPCsEmployeesArray.Length == 100)
		{
			return;
		}
		int num = component.NPCsArray.Length;
		int num2 = component.NPCsEmployeesArray.Length;
		int num3 = component2.employeesSprites.Length;
		Array.Resize(ref component.NPCsArray, 100);
		Array.Resize(ref component.NPCsEmployeesArray, 100);
		Array.Resize(ref component2.employeesSprites, 100);
		GameObject val = component.NPCsArray[num - 1];
		GameObject val2 = component.NPCsEmployeesArray[num2 - 1];
		Sprite val3 = component2.employeesSprites[num3 - 1];
		if ((Object)(object)val == (Object)null || (Object)(object)val2 == (Object)null || (Object)(object)val3 == (Object)null)
		{
			return;
		}
		for (int i = num; i < 100; i++)
		{
			GameObject val4 = Object.Instantiate<GameObject>(val);
			val4.SetActive(false);
			val4.transform.SetParent(((Component)component).transform, false);
			component.NPCsArray[i] = val4;
			NPC_Info component3 = val4.GetComponent<NPC_Info>();
			if ((Object)(object)component3 != (Object)null)
			{
				component3.NPCID = i;
			}
		}
		for (int j = num2; j < 100; j++)
		{
			GameObject val5 = Object.Instantiate<GameObject>(val2);
			val5.SetActive(false);
			val5.transform.SetParent(((Component)component).transform, false);
			component.NPCsEmployeesArray[j] = val5;
		}
		for (int k = num3; k < 100; k++)
		{
			component2.employeesSprites[k] = val3;
		}
		ChangeEmployeeSprites();
	}

	public static GameObject DefineModel(int npcID)
	{
		return (GameObject)(npcID switch
		{
			0 => GenshinImpactOverhaul.AlhaithamPrefab, 
			1 => GenshinImpactOverhaul.NilouPrefab, 
			2 => GenshinImpactOverhaul.KamisatoAyatoPrefab, 
			3 => GenshinImpactOverhaul.BaizhuPrefab, 
			4 => GenshinImpactOverhaul.CapitanoPrefab, 
			5 => GenshinImpactOverhaul.DainsleifPrefab, 
			6 => GenshinImpactOverhaul.DilucPrefab, 
			7 => GenshinImpactOverhaul.IlDottorePrefab, 
			8 => GenshinImpactOverhaul.KaeyaPrefab, 
			9 => GenshinImpactOverhaul.KavehPrefab, 
			10 => GenshinImpactOverhaul.NeuvillettePrefab, 
			11 => GenshinImpactOverhaul.OroronPrefab, 
			12 => GenshinImpactOverhaul.TartagliaPrefab, 
			13 => GenshinImpactOverhaul.ThomaPrefab, 
			14 => GenshinImpactOverhaul.WriothesleyPrefab, 
			15 => GenshinImpactOverhaul.ZhongliPrefab, 
			16 => GenshinImpactOverhaul.ArlecchinoPrefab, 
			17 => GenshinImpactOverhaul.BeidouPrefab, 
			18 => GenshinImpactOverhaul.CandacePrefab, 
			19 => GenshinImpactOverhaul.ChascaPrefab, 
			20 => GenshinImpactOverhaul.ClorindePrefab, 
			21 => GenshinImpactOverhaul.DehyaPrefab, 
			22 => GenshinImpactOverhaul.EulaPrefab, 
			23 => GenshinImpactOverhaul.JeanPrefab, 
			24 => GenshinImpactOverhaul.LisaPrefab, 
			25 => GenshinImpactOverhaul.MavuikaPrefab, 
			26 => GenshinImpactOverhaul.NaviaPrefab, 
			27 => GenshinImpactOverhaul.NingguangPrefab, 
			28 => GenshinImpactOverhaul.RaidenShogunPrefab, 
			29 => GenshinImpactOverhaul.RosariaPrefab, 
			30 => GenshinImpactOverhaul.KujouSaraPrefab, 
			31 => GenshinImpactOverhaul.ShenhePrefab, 
			32 => GenshinImpactOverhaul.VaresaPrefab, 
			33 => GenshinImpactOverhaul.XianyunPrefab, 
			34 => GenshinImpactOverhaul.XilonenPrefab, 
			35 => GenshinImpactOverhaul.YaeMikoPrefab, 
			36 => GenshinImpactOverhaul.YelanPrefab, 
			37 => GenshinImpactOverhaul.SignoraPrefab, 
			38 => GenshinImpactOverhaul.AlbedoPrefab, 
			39 => GenshinImpactOverhaul.BennettPrefab, 
			40 => GenshinImpactOverhaul.ChongyunPrefab, 
			41 => GenshinImpactOverhaul.CynoPrefab, 
			42 => GenshinImpactOverhaul.FreminetPrefab, 
			43 => GenshinImpactOverhaul.GamingPrefab, 
			44 => GenshinImpactOverhaul.GorouPrefab, 
			45 => GenshinImpactOverhaul.KaedeharaKazuhaPrefab, 
			46 => GenshinImpactOverhaul.ShikanoinHeizouPrefab, 
			47 => GenshinImpactOverhaul.KinichPrefab, 
			48 => GenshinImpactOverhaul.LyneyPrefab, 
			49 => GenshinImpactOverhaul.MikaPrefab, 
			50 => GenshinImpactOverhaul.RazorPrefab, 
			51 => GenshinImpactOverhaul.SethosPrefab, 
			52 => GenshinImpactOverhaul.TighnariPrefab, 
			53 => GenshinImpactOverhaul.VentiPrefab, 
			54 => GenshinImpactOverhaul.WandererPrefab, 
			55 => GenshinImpactOverhaul.XiaoPrefab, 
			56 => GenshinImpactOverhaul.XingqiuPrefab, 
			57 => GenshinImpactOverhaul.AmberPrefab, 
			58 => GenshinImpactOverhaul.ChevreusePrefab, 
			59 => GenshinImpactOverhaul.XinyanPrefab, 
			60 => GenshinImpactOverhaul.YanfeiPrefab, 
			61 => GenshinImpactOverhaul.YoimiyaPrefab, 
			62 => GenshinImpactOverhaul.XianglingPrefab, 
			63 => GenshinImpactOverhaul.FischlPrefab, 
			64 => GenshinImpactOverhaul.KeqingPrefab, 
			65 => GenshinImpactOverhaul.KukiShinobuPrefab, 
			66 => GenshinImpactOverhaul.EscoffierPrefab, 
			67 => GenshinImpactOverhaul.NoellePrefab, 
			68 => GenshinImpactOverhaul.ChioriPrefab, 
			69 => GenshinImpactOverhaul.CharlottePrefab, 
			70 => GenshinImpactOverhaul.ColleiPrefab, 
			71 => GenshinImpactOverhaul.FaruzanPrefab, 
			72 => GenshinImpactOverhaul.FurinaPrefab, 
			73 => GenshinImpactOverhaul.GanyuPrefab, 
			74 => GenshinImpactOverhaul.KamisatoAyakaPrefab, 
			75 => GenshinImpactOverhaul.KiraraPrefab, 
			76 => GenshinImpactOverhaul.LanyanPrefab, 
			77 => GenshinImpactOverhaul.LaylaPrefab, 
			78 => GenshinImpactOverhaul.LynettePrefab, 
			79 => GenshinImpactOverhaul.IfaPrefab, 
			80 => GenshinImpactOverhaul.MualaniPrefab, 
			81 => GenshinImpactOverhaul.SangonomiyaKokomiPrefab, 
			82 => GenshinImpactOverhaul.SucrosePrefab, 
			83 => GenshinImpactOverhaul.YumemizukiMizukiPrefab, 
			84 => GenshinImpactOverhaul.HuTaoPrefab, 
			85 => GenshinImpactOverhaul.YunJinPrefab, 
			86 => GenshinImpactOverhaul.AratakiIttoPrefab, 
			87 => GenshinImpactOverhaul.BarbaraPrefab, 
			88 => GenshinImpactOverhaul.CitlaliPrefab, 
			89 => GenshinImpactOverhaul.EmiliePrefab, 
			90 => GenshinImpactOverhaul.IansanPrefab, 
			91 => GenshinImpactOverhaul.KleePrefab, 
			92 => GenshinImpactOverhaul.NahidaPrefab, 
			93 => GenshinImpactOverhaul.QiqiPrefab, 
			94 => GenshinImpactOverhaul.SigewinnePrefab, 
			95 => GenshinImpactOverhaul.DionaPrefab, 
			96 => GenshinImpactOverhaul.DoriPrefab, 
			97 => GenshinImpactOverhaul.KachinaPrefab, 
			98 => GenshinImpactOverhaul.SayuPrefab, 
			99 => GenshinImpactOverhaul.YaoyaoPrefab, 
			_ => GenshinImpactOverhaul.AratakiIttoPrefab, 
		});
	}

	public static void ChangeEmployeeSprites()
	{
		EmployeesDataGeneration component = GameObject.Find("NPC_Manager").GetComponent<EmployeesDataGeneration>();
		component.employeesSprites[0] = GenshinImpactOverhaul.AlhaithamSprite;
		component.employeesSprites[1] = GenshinImpactOverhaul.NilouSprite;
		component.employeesSprites[2] = GenshinImpactOverhaul.KamisatoAyatoSprite;
		component.employeesSprites[3] = GenshinImpactOverhaul.BaizhuSprite;
		component.employeesSprites[4] = GenshinImpactOverhaul.CapitanoSprite;
		component.employeesSprites[5] = GenshinImpactOverhaul.DainsleifSprite;
		component.employeesSprites[6] = GenshinImpactOverhaul.DilucSprite;
		component.employeesSprites[7] = GenshinImpactOverhaul.IlDottoreSprite;
		component.employeesSprites[8] = GenshinImpactOverhaul.KaeyaSprite;
		component.employeesSprites[9] = GenshinImpactOverhaul.KavehSprite;
		component.employeesSprites[10] = GenshinImpactOverhaul.NeuvilletteSprite;
		component.employeesSprites[11] = GenshinImpactOverhaul.OroronSprite;
		component.employeesSprites[12] = GenshinImpactOverhaul.TartagliaSprite;
		component.employeesSprites[13] = GenshinImpactOverhaul.ThomaSprite;
		component.employeesSprites[14] = GenshinImpactOverhaul.WriothesleySprite;
		component.employeesSprites[15] = GenshinImpactOverhaul.ZhongliSprite;
		component.employeesSprites[16] = GenshinImpactOverhaul.ArlecchinoSprite;
		component.employeesSprites[17] = GenshinImpactOverhaul.BeidouSprite;
		component.employeesSprites[18] = GenshinImpactOverhaul.CandaceSprite;
		component.employeesSprites[19] = GenshinImpactOverhaul.ChascaSprite;
		component.employeesSprites[20] = GenshinImpactOverhaul.ClorindeSprite;
		component.employeesSprites[21] = GenshinImpactOverhaul.DehyaSprite;
		component.employeesSprites[22] = GenshinImpactOverhaul.EulaSprite;
		component.employeesSprites[23] = GenshinImpactOverhaul.JeanSprite;
		component.employeesSprites[24] = GenshinImpactOverhaul.LisaSprite;
		component.employeesSprites[25] = GenshinImpactOverhaul.MavuikaSprite;
		component.employeesSprites[26] = GenshinImpactOverhaul.NaviaSprite;
		component.employeesSprites[27] = GenshinImpactOverhaul.NingguangSprite;
		component.employeesSprites[28] = GenshinImpactOverhaul.RaidenShogunSprite;
		component.employeesSprites[29] = GenshinImpactOverhaul.RosariaSprite;
		component.employeesSprites[30] = GenshinImpactOverhaul.KujouSaraSprite;
		component.employeesSprites[31] = GenshinImpactOverhaul.ShenheSprite;
		component.employeesSprites[32] = GenshinImpactOverhaul.VaresaSprite;
		component.employeesSprites[33] = GenshinImpactOverhaul.XianyunSprite;
		component.employeesSprites[34] = GenshinImpactOverhaul.XilonenSprite;
		component.employeesSprites[35] = GenshinImpactOverhaul.YaeMikoSprite;
		component.employeesSprites[36] = GenshinImpactOverhaul.YelanSprite;
		component.employeesSprites[37] = GenshinImpactOverhaul.SignoraSprite;
		component.employeesSprites[38] = GenshinImpactOverhaul.AlbedoSprite;
		component.employeesSprites[39] = GenshinImpactOverhaul.BennettSprite;
		component.employeesSprites[40] = GenshinImpactOverhaul.ChongyunSprite;
		component.employeesSprites[41] = GenshinImpactOverhaul.CynoSprite;
		component.employeesSprites[42] = GenshinImpactOverhaul.FreminetSprite;
		component.employeesSprites[43] = GenshinImpactOverhaul.GamingSprite;
		component.employeesSprites[44] = GenshinImpactOverhaul.GorouSprite;
		component.employeesSprites[45] = GenshinImpactOverhaul.KaedeharaKazuhaSprite;
		component.employeesSprites[46] = GenshinImpactOverhaul.ShikanoinHeizouSprite;
		component.employeesSprites[47] = GenshinImpactOverhaul.KinichSprite;
		component.employeesSprites[48] = GenshinImpactOverhaul.LyneySprite;
		component.employeesSprites[49] = GenshinImpactOverhaul.MikaSprite;
		component.employeesSprites[50] = GenshinImpactOverhaul.RazorSprite;
		component.employeesSprites[51] = GenshinImpactOverhaul.SethosSprite;
		component.employeesSprites[52] = GenshinImpactOverhaul.TighnariSprite;
		component.employeesSprites[53] = GenshinImpactOverhaul.VentiSprite;
		component.employeesSprites[54] = GenshinImpactOverhaul.WandererSprite;
		component.employeesSprites[55] = GenshinImpactOverhaul.XiaoSprite;
		component.employeesSprites[56] = GenshinImpactOverhaul.XingqiuSprite;
		component.employeesSprites[57] = GenshinImpactOverhaul.AmberSprite;
		component.employeesSprites[58] = GenshinImpactOverhaul.ChevreuseSprite;
		component.employeesSprites[59] = GenshinImpactOverhaul.XinyanSprite;
		component.employeesSprites[60] = GenshinImpactOverhaul.YanfeiSprite;
		component.employeesSprites[61] = GenshinImpactOverhaul.YoimiyaSprite;
		component.employeesSprites[62] = GenshinImpactOverhaul.XianglingSprite;
		component.employeesSprites[63] = GenshinImpactOverhaul.FischlSprite;
		component.employeesSprites[64] = GenshinImpactOverhaul.KeqingSprite;
		component.employeesSprites[65] = GenshinImpactOverhaul.KukiShinobuSprite;
		component.employeesSprites[66] = GenshinImpactOverhaul.EscoffierSprite;
		component.employeesSprites[67] = GenshinImpactOverhaul.NoelleSprite;
		component.employeesSprites[68] = GenshinImpactOverhaul.ChioriSprite;
		component.employeesSprites[69] = GenshinImpactOverhaul.CharlotteSprite;
		component.employeesSprites[70] = GenshinImpactOverhaul.ColleiSprite;
		component.employeesSprites[71] = GenshinImpactOverhaul.FaruzanSprite;
		component.employeesSprites[72] = GenshinImpactOverhaul.FurinaSprite;
		component.employeesSprites[73] = GenshinImpactOverhaul.GanyuSprite;
		component.employeesSprites[74] = GenshinImpactOverhaul.KamisatoAyakaSprite;
		component.employeesSprites[75] = GenshinImpactOverhaul.KiraraSprite;
		component.employeesSprites[76] = GenshinImpactOverhaul.LanyanSprite;
		component.employeesSprites[77] = GenshinImpactOverhaul.LaylaSprite;
		component.employeesSprites[78] = GenshinImpactOverhaul.LynetteSprite;
		component.employeesSprites[79] = GenshinImpactOverhaul.IfaSprite;
		component.employeesSprites[80] = GenshinImpactOverhaul.MualaniSprite;
		component.employeesSprites[81] = GenshinImpactOverhaul.SangonomiyaKokomiSprite;
		component.employeesSprites[82] = GenshinImpactOverhaul.SucroseSprite;
		component.employeesSprites[83] = GenshinImpactOverhaul.YumemizukiMizukiSprite;
		component.employeesSprites[84] = GenshinImpactOverhaul.HuTaoSprite;
		component.employeesSprites[85] = GenshinImpactOverhaul.YunJinSprite;
		component.employeesSprites[86] = GenshinImpactOverhaul.AratakiIttoSprite;
		component.employeesSprites[87] = GenshinImpactOverhaul.BarbaraSprite;
		component.employeesSprites[88] = GenshinImpactOverhaul.CitlaliSprite;
		component.employeesSprites[89] = GenshinImpactOverhaul.EmilieSprite;
		component.employeesSprites[90] = GenshinImpactOverhaul.IansanSprite;
		component.employeesSprites[91] = GenshinImpactOverhaul.KleeSprite;
		component.employeesSprites[92] = GenshinImpactOverhaul.NahidaSprite;
		component.employeesSprites[93] = GenshinImpactOverhaul.QiqiSprite;
		component.employeesSprites[94] = GenshinImpactOverhaul.SigewinneSprite;
		component.employeesSprites[95] = GenshinImpactOverhaul.DionaSprite;
		component.employeesSprites[96] = GenshinImpactOverhaul.DoriSprite;
		component.employeesSprites[97] = GenshinImpactOverhaul.KachinaSprite;
		component.employeesSprites[98] = GenshinImpactOverhaul.SayuSprite;
		component.employeesSprites[99] = GenshinImpactOverhaul.YaoyaoSprite;
	}
}