diff --git a/Assembly-CSharp/Assembly-CSharp.csproj b/Assembly-CSharp/Assembly-CSharp.csproj
index 337c16c9..7a5ae4fe 100644
--- a/Assembly-CSharp/Assembly-CSharp.csproj
+++ b/Assembly-CSharp/Assembly-CSharp.csproj
@@ -10,6 +10,7 @@
true
packages
latest
+ true
@@ -17,7 +18,6 @@
-
@@ -72,10 +72,8 @@
-
+
-
-
@@ -141,64 +139,16 @@
-
- ../Vanilla/Assembly-CSharp.dll
- False
-
-
- ..\override\mscorlib.dll
-
-
- ../Vanilla/netstandard.dll
-
-
- ../JsonNet/Newtonsoft.Json.dll
-
-
- ../Vanilla/PlayMaker.dll
- False
-
-
- ../Vanilla/UnityEngine.dll
-
-
- ../Vanilla/UnityEngine.AnimationModule.dll
-
-
- ../Vanilla/UnityEngine.AssetBundleModule.dll
-
-
- ../Vanilla/UnityEngine.AudioModule.dll
-
-
- ../Vanilla/UnityEngine.CoreModule.dll
-
-
- ../Vanilla/UnityEngine.ImageConversionModule.dll
-
-
- ../Vanilla/UnityEngine.IMGUIModule.dll
-
-
- ../Vanilla/UnityEngine.InputLegacyModule.dll
-
-
- ../Vanilla/UnityEngine.JSONSerializeModule.dll
-
-
- ../Vanilla/UnityEngine.ParticleSystemModule.dll
-
-
- ../Vanilla/UnityEngine.Physics2DModule.dll
-
-
- ../Vanilla/UnityEngine.TextRenderingModule.dll
-
-
- ../Vanilla/UnityEngine.UI.dll
-
-
- ../Vanilla/UnityEngine.UIModule.dll
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assembly-CSharp/Language/Language.cs b/Assembly-CSharp/Language/Language.cs
new file mode 100644
index 00000000..00f8bdc1
--- /dev/null
+++ b/Assembly-CSharp/Language/Language.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using UObject = UnityEngine.Object;
+using USystemLanguage = UnityEngine.SystemLanguage;
+
+namespace Language;
+
+// for backwards compatibility
+[MonoMod.MonoModLinkFrom("TeamCherry.Localization.Language")]
+public static class Language
+{
+ static Language()
+ {
+ TllType = Type.GetType("TeamCherry.Localization.Language, TeamCherry.Localization, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
+ TllLoadLanguage = TllType.GetMethod("LoadLanguage", BindingFlags.Public | BindingFlags.Static, null, Array.Empty(), Array.Empty());
+ TllLoadAvailableLanguages = TllType.GetMethod("LoadAvailableLanguages", BindingFlags.Public | BindingFlags.Static, null, Array.Empty(), Array.Empty());
+ TllGetLanguages = TllType.GetMethod("GetLanguages", BindingFlags.Public | BindingFlags.Static, null, Array.Empty(), Array.Empty());
+ TllSwitchLanguageStr = TllType.GetMethod("SwitchLanguage", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllSwitchLanguageLc = TllType.GetMethod("SwitchLanguage", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(TeamCherry.Localization.LanguageCode) }, Array.Empty());
+ TllGetAsset = TllType.GetMethod("GetAsset", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllCurrentLanguage = TllType.GetMethod("CurrentLanguage", BindingFlags.Public | BindingFlags.Static, null, Array.Empty(), Array.Empty());
+ TllGet1 = TllType.GetMethod("Get", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllGetSheets = TllType.GetMethod("GetSheets", BindingFlags.Public | BindingFlags.Static, null, Array.Empty(), Array.Empty());
+ TllGetKeys = TllType.GetMethod("GetKeys", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllHas1 = TllType.GetMethod("Has", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllHas2 = TllType.GetMethod("Has", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string), typeof(string) }, Array.Empty());
+ TllHasSheet = TllType.GetMethod("HasSheet", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, Array.Empty());
+ TllLanguageNameToCode = TllType.GetMethod("LanguageNameToCode", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(USystemLanguage) }, Array.Empty());
+ TllGet2 = TllType.GetMethod("Get", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string), typeof(string) }, Array.Empty());
+ }
+ private static readonly Type TllType;
+
+ private static readonly MethodInfo TllLoadLanguage;
+ public static void LoadLanguage() => TllLoadLanguage.Invoke(null, Array.Empty