Decompiled source of MagiRu v1.1.3

BepInEx/plugins/MagiRu/MagiRu.Bepin.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using BepInEx;
using HarmonyLib;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyCompany("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyProduct("MagiRu.Bepin")]
[assembly: AssemblyTitle("MagiRu.Bepin")]
[assembly: AssemblyTrademark("")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: ComVisible(false)]
[assembly: Guid("79350c2e-e03c-4118-9285-41af64b28394")]
[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]
namespace MagiRu;

public class CoroutineRunner : MonoBehaviour
{
}
[BepInPlugin("Astetrio.CrazyMan.MagiRu", "MagiRu", "1.1.3")]
public class MagiRu : BaseUnityPlugin
{
	public class Result<T> where T : class
	{
		public T value;
	}

	public const string GUID = "Astetrio.CrazyMan.MagiRu";

	public const string Name = "MagiRu";

	public const string Version = "1.1.3";

	private CoroutineRunner _coroutineRunner;

	private Coroutine _fixSceneSpecificProblemsCoroutine;

	private Text _uiVersion;

	public static MagiRu Instance { get; private set; }

	private void Awake()
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Expected O, but got Unknown
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Expected O, but got Unknown
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0123: Expected O, but got Unknown
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Expected O, but got Unknown
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Инициализация MagiRu");
		Instance = this;
		Harmony val = new Harmony("Astetrio.CrazyMan.MagiRu");
		if (TryGetMethod("TextConfig", "Initialize", out var method))
		{
			MethodInfo methodInfo = AccessTools.Method(typeof(Patches), "Initialize_TextConfig", (Type[])null, (Type[])null);
			val.Patch(method, (HarmonyMethod)null, new HarmonyMethod(methodInfo), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}
		try
		{
			method = AccessTools.Method(typeof(InputBinding), "ToDisplayString", new Type[4]
			{
				typeof(string).MakeByRefType(),
				typeof(string).MakeByRefType(),
				typeof(DisplayStringOptions),
				typeof(InputControl)
			}, (Type[])null);
			MethodInfo methodInfo2 = AccessTools.Method(typeof(Patches), "ToDisplayString_InputBinding", (Type[])null, (Type[])null);
			val.Patch(method, (HarmonyMethod)null, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}
		catch (Exception ex)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)ex);
		}
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Перехватываем получение текстов");
		SceneManager.activeSceneChanged += OnSceneChanged;
		GameObject val2 = new GameObject("MagiRu Coroutine Runner");
		((Object)val2).hideFlags = (HideFlags)(((Object)val2).hideFlags | 0x3D);
		Object.DontDestroyOnLoad((Object)(object)val2);
		_coroutineRunner = val2.AddComponent<CoroutineRunner>();
		((MonoBehaviour)_coroutineRunner).StartCoroutine(AsyncAwake());
	}

	private IEnumerator AsyncAwake()
	{
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Чиним размеры некоторых менюшек");
		bool isThunderstore = true;
		Result<GameObject> result1 = new Result<GameObject>();
		Result<Text> result2 = new Result<Text>();
		yield return this.SearchFor<GameObject>(result1, (GameObject)null, "UIInfoWand_Hover");
		GameObject uiInfoWandHover = result1.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandHover, "Text_CoolDown");
		Text textCooldownHover = result2.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandHover, "Text_ShootInterval");
		Text textIntervalHover = result2.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandHover, "Text_MPRecover");
		Text value = result2.value;
		RectTransform rectTransform = ((Graphic)textCooldownHover).rectTransform;
		rectTransform.sizeDelta += new Vector2(60f, 0f);
		RectTransform rectTransform2 = ((Graphic)textIntervalHover).rectTransform;
		rectTransform2.sizeDelta += new Vector2(60f, 0f);
		RectTransform rectTransform3 = ((Graphic)value).rectTransform;
		rectTransform3.sizeDelta += new Vector2(60f, 0f);
		yield return this.SearchFor<GameObject>(result1, (GameObject)null, "UIInfoWand_Interactive");
		GameObject uiInfoWandInteractive = result1.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandInteractive, "Text_CoolDown");
		Text textCooldownInteractive = result2.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandInteractive, "Text_ShootInterval");
		Text textIntervalInteractive = result2.value;
		yield return this.SearchFor<Text>(result2, uiInfoWandInteractive, "Text_MPRecover");
		Text value2 = result2.value;
		RectTransform rectTransform4 = ((Graphic)textCooldownInteractive).rectTransform;
		rectTransform4.sizeDelta += new Vector2(60f, 0f);
		RectTransform rectTransform5 = ((Graphic)textIntervalInteractive).rectTransform;
		rectTransform5.sizeDelta += new Vector2(60f, 0f);
		RectTransform rectTransform6 = ((Graphic)value2).rectTransform;
		rectTransform6.sizeDelta += new Vector2(60f, 0f);
		yield return this.SearchFor<Text>(result2, (GameObject)null, "UIVersion");
		_uiVersion = result2.value;
		Text uiVersion = _uiVersion;
		uiVersion.text = uiVersion.text + " (Перевод на русский - MagiRu от CrazyMan v1.1.3" + (isThunderstore ? "t" : "") + ")";
		((Graphic)_uiVersion).raycastTarget = false;
		((Graphic)_uiVersion).rectTransform.pivot = new Vector2(0f, 0.5f);
		((Graphic)_uiVersion).rectTransform.anchoredPosition = new Vector2(10f, 10f);
		((Graphic)_uiVersion).rectTransform.sizeDelta = new Vector2(1000f, 20f);
		yield return this.SearchFor<GameObject>(result1, (GameObject)null, "UIPlaceNameMgr");
		GameObject value3 = result1.value;
		yield return this.SearchFor<Text>(result2, value3, "Text (Legacy)");
		RectTransform rectTransform7 = ((Graphic)result2.value).rectTransform;
		rectTransform7.sizeDelta += new Vector2(1000f, 0f);
		((BaseUnityPlugin)this).Logger.LogInfo((object)"MagiRu Инициализирован");
	}

	private void TryRunFixSceneSpecificProblems(Scene newScene)
	{
		//IL_0007: 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)
		if (_fixSceneSpecificProblemsCoroutine != null)
		{
			((MonoBehaviour)_coroutineRunner).StopCoroutine(_fixSceneSpecificProblemsCoroutine);
			_fixSceneSpecificProblemsCoroutine = null;
		}
		_fixSceneSpecificProblemsCoroutine = ((MonoBehaviour)_coroutineRunner).StartCoroutine(FixSceneSpecificProblems());
		IEnumerator FixSceneSpecificProblems()
		{
			if (((Scene)(ref newScene)).name == "Camp")
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Чиним размер текста \"Нажми еще раз\"");
				Result<Text> result1 = new Result<Text>();
				yield return this.SearchFor<Text>(result1, (GameObject)null, "ClickAgain");
				RectTransform rectTransform = ((Graphic)result1.value).rectTransform;
				rectTransform.sizeDelta += new Vector2(0f, 30f);
				((BaseUnityPlugin)this).Logger.LogInfo((object)"\"Нажми еще раз\" починен");
			}
			else if (((Scene)(ref newScene)).name == "MainMenu")
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Добавляем кнопку пожертвования");
				Assembly assembly = Assembly.Load("Assembly-CSharp.dll");
				Result<GameObject> result3 = new Result<GameObject>();
				yield return this.SearchFor<GameObject>(result3, (GameObject)null, "Btn_ReportBug");
				GameObject value = result3.value;
				GameObject gameObject = ((Component)result3.value.transform.parent).gameObject;
				GameObject val = Object.Instantiate<GameObject>(value, gameObject.transform);
				val.transform.SetSiblingIndex(value.transform.GetSiblingIndex() + 1);
				MonoBehaviour[] components = val.GetComponents<MonoBehaviour>();
				foreach (MonoBehaviour val2 in components)
				{
					if (assembly.GetType(((object)val2).GetType().Name) != null)
					{
						((BaseUnityPlugin)this).Logger.LogInfo((object)("Компонент " + ((object)val2).GetType().Name + " уничтожен"));
						Object.Destroy((Object)(object)val2);
						break;
					}
				}
				((Object)val).name = "Btn_Donate";
				val.GetComponentInChildren<Text>().text = "Дать деняк переводчику :3";
				RectTransform component = val.GetComponent<RectTransform>();
				component.anchoredPosition += new Vector2(0f, 96f);
				component.sizeDelta += new Vector2(0f, 16f);
				Button component2 = val.GetComponent<Button>();
				component2.onClick = new ButtonClickedEvent();
				((UnityEvent)component2.onClick).AddListener(new UnityAction(OnDonateClicked));
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Кнопка пожертвования добавлена");
			}
			else if (((Scene)(ref newScene)).name == "Battle")
			{
				Result<Text> result1 = new Result<Text>();
				GameObject[] array = Resources.FindObjectsOfTypeAll<GameObject>();
				foreach (GameObject val3 in array)
				{
					if (((Object)val3).name == "UIRewardSpell")
					{
						yield return this.SearchFor<Text>(result1, val3, "Text_Info");
						RectTransform rectTransform2 = ((Graphic)result1.value).rectTransform;
						rectTransform2.sizeDelta += new Vector2(0f, 100f);
						break;
					}
				}
			}
		}
	}

	public IEnumerator SearchFor<T>(Result<T> result, GameObject parent, string name) where T : Object
	{
		WaitForSecondsRealtime delay = new WaitForSecondsRealtime(1f);
		result.value = default(T);
		if ((Object)(object)parent == (Object)null)
		{
			while ((Object)(object)result.value == (Object)null)
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)("Ищем " + name));
				T[] array = Object.FindObjectsOfType<T>(true);
				foreach (T val in array)
				{
					if (((Object)val).name == name)
					{
						((BaseUnityPlugin)this).Logger.LogInfo((object)("Объект найден " + ((Object)val).name));
						result.value = val;
						break;
					}
				}
				if ((Object)(object)result.value == (Object)null)
				{
					yield return delay;
				}
			}
			yield break;
		}
		while ((Object)(object)result.value == (Object)null)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Ищем " + name + " внутри " + (((Object)(object)parent != (Object)null) ? ((Object)parent).name : null)));
			T[] componentsInChildren = parent.GetComponentsInChildren<T>(true);
			foreach (T val2 in componentsInChildren)
			{
				if (((Object)val2).name == name)
				{
					((BaseUnityPlugin)this).Logger.LogInfo((object)("Объект найден " + ((Object)val2).name));
					result.value = val2;
					break;
				}
			}
			if ((Object)(object)result.value == (Object)null)
			{
				yield return delay;
			}
		}
	}

	private bool TryGetMethod(string className, string methodName, out MethodBase method)
	{
		method = null;
		((BaseUnityPlugin)this).Logger.LogInfo((object)("Ищем класс " + className));
		Type type = AccessTools.TypeByName(className);
		if (type == null)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)("Класс " + className + " не найден"));
			return false;
		}
		((BaseUnityPlugin)this).Logger.LogInfo((object)("Ищем метод " + methodName));
		method = AccessTools.Method(type, methodName, (Type[])null, (Type[])null);
		if (method == null)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)("Метод " + methodName + " не найден"));
			return false;
		}
		((BaseUnityPlugin)this).Logger.LogInfo((object)("Метод " + methodName + " найден"));
		return true;
	}

	private static (GameObject, RectTransform) CreateUIElement(string name, Transform parent = null)
	{
		//IL_0001: 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_0012: 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_002d: Expected O, but got Unknown
		GameObject val = new GameObject(name);
		val.transform.SetParent(parent);
		val.layer = LayerMask.NameToLayer("UI");
		return (val, val.AddComponent<RectTransform>());
	}

	private static void ShowPopup(string text, string actionName, Action clickedCallback = null)
	{
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: 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_008e: 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_00e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Expected O, but got Unknown
		//IL_018a: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0245: Unknown result type (might be due to invalid IL or missing references)
		//IL_0250: Unknown result type (might be due to invalid IL or missing references)
		//IL_025b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0265: Unknown result type (might be due to invalid IL or missing references)
		//IL_0288: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b1: Expected O, but got Unknown
		GameObject go = CreateUIElement("MagiRu popup canvas").Item1;
		Canvas val = go.AddComponent<Canvas>();
		val.renderMode = (RenderMode)0;
		val.sortingOrder = 32767;
		go.AddComponent<GraphicRaycaster>();
		var (val2, val3) = CreateUIElement("Shadow", ((Component)val).transform);
		val3.anchorMin = Vector2.zero;
		val3.anchorMax = Vector2.one;
		val3.anchoredPosition = Vector2.zero;
		val3.sizeDelta = Vector2.zero;
		((Graphic)val2.AddComponent<Image>()).color = new Color(0f, 0f, 0f, 0.5f);
		var (val4, val5) = CreateUIElement("Popup", ((Component)val).transform);
		val5.sizeDelta = new Vector2(512f, 512f);
		val5.anchoredPosition = Vector2.zero;
		((Graphic)val4.AddComponent<Image>()).color = new Color(0f, 0f, 0f, 0.5f);
		VerticalLayoutGroup obj = val4.AddComponent<VerticalLayoutGroup>();
		((LayoutGroup)obj).childAlignment = (TextAnchor)4;
		((HorizontalOrVerticalLayoutGroup)obj).spacing = 32f;
		((LayoutGroup)obj).padding = new RectOffset(32, 32, 32, 32);
		ContentSizeFitter obj2 = val4.AddComponent<ContentSizeFitter>();
		obj2.horizontalFit = (FitMode)0;
		obj2.verticalFit = (FitMode)2;
		GameObject item = CreateUIElement("Text", val4.transform).Item1;
		TextMeshProUGUI obj3 = item.AddComponent<TextMeshProUGUI>();
		((TMP_Text)obj3).text = text;
		((TMP_Text)obj3).alignment = (TextAlignmentOptions)258;
		((Graphic)obj3).color = Color.white;
		var (val6, val7) = CreateUIElement("Button", val4.transform);
		val7.sizeDelta = new Vector2(100f, 30f);
		val7.anchoredPosition = new Vector2(0f, -50f);
		Image val8 = val6.AddComponent<Image>();
		((Graphic)val8).color = new Color(0.8f, 0.8f, 0.8f, 1f);
		Button obj4 = val6.AddComponent<Button>();
		LayoutElement obj5 = val6.AddComponent<LayoutElement>();
		obj5.preferredHeight = 64f;
		obj5.flexibleWidth = 1f;
		var (val9, val10) = CreateUIElement("ButtonText", val6.transform);
		val10.anchorMax = Vector2.one;
		val10.anchorMin = Vector2.zero;
		val10.sizeDelta = Vector2.zero;
		val10.anchoredPosition = Vector2.zero;
		TextMeshProUGUI obj6 = val9.AddComponent<TextMeshProUGUI>();
		((TMP_Text)obj6).text = actionName;
		((TMP_Text)obj6).alignment = (TextAlignmentOptions)514;
		((Graphic)obj6).color = Color.black;
		((Selectable)obj4).targetGraphic = (Graphic)(object)val8;
		((UnityEvent)obj4.onClick).AddListener((UnityAction)delegate
		{
			EventSystem.current.sendNavigationEvents = true;
			clickedCallback?.Invoke();
			Object.Destroy((Object)(object)go);
		});
		((Selectable)obj4).Select();
		EventSystem.current.sendNavigationEvents = false;
	}

	private void OnSceneChanged(Scene from, Scene to)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		TryRunFixSceneSpecificProblems(to);
	}

	private static void OnDonateClicked()
	{
		Application.OpenURL("https://www.donationalerts.com/r/crazyman_ik");
	}
}
public static class Translation
{
	private const string _CritColor = "#FE5D00";

	private const string _ShieldColor = "#C500FE";

	private const string _MultishotColor = "#00BFFF";

	private const string _TempShieldColor = "#9D9D9B";

	private const string _FinalDamageColor = "#DC143C";

	private const string _EffectRadiusColor = "#FFD700";

	public static readonly IReadOnlyDictionary<int, string> Set = new Dictionary<int, string>
	{
		{ 10000001, "Оригинал" },
		{ 10000002, "Набор Мага" },
		{ 10000003, "Набор Призывателя" },
		{ 10000004, "Набор Уклониста" },
		{ 10000005, "Набор Духа" },
		{ 10000006, "Набор yy" },
		{ 10000007, "Набор zz" },
		{ 10100001, "" },
		{ 10100002, "" },
		{ 10100003, " Заверши Главу 2" },
		{ 10100004, " Заверши Главу 3 на Тяжелой Сложности" },
		{ 10100005, " Экипируй одновременно 3 жезла с Духом Жезла" },
		{ 10100006, " Скоро Будет" },
		{ 10100007, " Скоро Будет" }
	};

	public static readonly IReadOnlyDictionary<int, string> ActivateGirl = new Dictionary<int, string>
	{
		{ 11000001, "Набор Элементальных Заклинаний" },
		{ 11000002, "Набор Снабжения" },
		{ 11000003, "Набор Заклинаний-Триггеров" },
		{ 11000004, "Набор Направленных Заклинаний" },
		{ 11000005, "Набор Мастера Призыва" },
		{ 11000006, "Набор Вдохновения" },
		{ 11000007, "Набор Заклинаний 7" },
		{ 11000008, "Набор Заклинаний 8" },
		{ 11000009, "Набор Заклинаний 9" },
		{ 11000010, "Набор Заклинаний 10" },
		{ 11000011, "Набор Заклинаний 11" },
		{ 11000012, "Набор Заклинаний 12" },
		{ 11000013, "Набор Заклинаний 13" },
		{ 11000014, "Набор Заклинаний 14" },
		{ 11000101, "Фокус Заклинаний" },
		{ 11000102, "Набор Реликвий" },
		{ 11000103, "Фокус Заклинаний 2" },
		{ 11000104, "Набор Реликвий 2" },
		{ 11100001, "" },
		{ 11100002, "" },
		{ 11100003, "" },
		{ 11100004, "" },
		{ 11100005, "" },
		{ 11100006, "" },
		{ 11100007, "" },
		{ 11100008, "" },
		{ 11100009, "" },
		{ 11100010, "" },
		{ 11100011, "" },
		{ 11100012, "" },
		{ 11100013, "" },
		{ 11100014, "" },
		{ 11100101, "При подборе заклинания, дается выбор из 3." },
		{ 11100102, "" },
		{ 11100103, "При подборе заклинания, дается выбор из 4." },
		{ 11100104, "" }
	};

	public static readonly IReadOnlyDictionary<int, string> Resource = new Dictionary<int, string>
	{
		{ 6000011, "Монета" },
		{ 6000012, "Алмаз" },
		{ 6000013, "Золотой Слиток" },
		{ 6000021, "Ключ" },
		{ 6000022, "2 Ключа" },
		{ 6000031, "Малое Здоровье" },
		{ 6000032, "Здоровье" },
		{ 6000033, "Большое Здоровье" },
		{ 6000041, "Малый Щит" },
		{ 6000042, "Щит" },
		{ 6000043, "Большой Щит" },
		{ 6000101, "Магический Кристалл" },
		{ 6000102, "Магический Кристалл" },
		{ 6000103, "Магический Кристалл" },
		{ 6000111, "Древняя Кровь" },
		{ 6000112, "Древняя Кровь" },
		{ 6000113, "Древняя Кровь" },
		{ 6000121, "Хаотическое Ядро" },
		{ 6100011, "Монета x1" },
		{ 6100012, "Монета x5" },
		{ 6100013, "Монета X10" },
		{ 6100021, "Используется для открытия запертых объектов" },
		{ 6100022, "Используется для открытия запертых объектов" },
		{ 6100031, "Востанавливает int1 HP" },
		{ 6100032, "Востанавливает int1 HP" },
		{ 6100033, "Востанавливает int1 HP" },
		{ 6100041, "Дает int1 очков <color=#C500FE>щита</color>" },
		{ 6100042, "Дает int1 очков <color=#C500FE>щита</color>" },
		{ 6100043, "Дает int1 очков <color=#C500FE>щита</color>" },
		{ 6100101, "Магический Кристалл" },
		{ 6100102, "Магический Кристалл" },
		{ 6100103, "Магический Кристалл" },
		{ 6100111, "Древняя Кровь" },
		{ 6100112, "Древняя Кровь" },
		{ 6100113, "Древняя Кровь" },
		{ 6100121, "Ядро Хаоса" }
	};

	public static readonly IReadOnlyDictionary<int, string> Research = new Dictionary<int, string>
	{
		{ 9000011, "Секретный Путь" },
		{ 9000012, "Секретный Путь 2" },
		{ 9000021, "Энциклопедия" },
		{ 9000031, "Патронташ для Зелий" },
		{ 9000032, "Патронташ для Зелий+" },
		{ 9000033, "Патронташ для Зелий++" },
		{ 9000041, "Пополнение Магазина" },
		{ 9000042, "Пополнение Магазина+" },
		{ 9000043, "Пополнение Магазина++" },
		{ 9000044, "Пополнение Магазина+++" },
		{ 9000051, "Модуль Поддержки" },
		{ 9000052, "Модуль Поддержки+" },
		{ 9000061, "Брелок" },
		{ 9000062, "Брелок 2" },
		{ 9000063, "Брелок 3" },
		{ 9000111, "Ягодный Куст" },
		{ 9000121, "Хранилище Сокровищ" },
		{ 9100011, "Дает шанс найти комнату с фонтаном. Он позволяет восстановить int1% HP." },
		{ 9100012, "Дает шанс найти комнату с фонтаном. Он позволяет восстановить int1% HP." },
		{ 9100021, "Записывает различные встречи и открытия во время твоего приключения." },
		{ 9100031, "Вместимость Зелий +int1" },
		{ 9100032, "Вместимость Зелий +int1" },
		{ 9100033, "Вместимость Зелий +int1" },
		{ 9100041, "Реролл для Магазина xint1" },
		{ 9100042, "Реролл для Магазина xint1" },
		{ 9100043, "Реролл для Магазина xint1" },
		{ 9100044, "Реролл для Магазина xint1" },
		{ 9100051, "Повышает прочность оборудования для перековки" },
		{ 9100052, "Значительно повышает прочность оборудования для перековки." },
		{ 9100061, "Дает int1 доп. ключ перед стартом приключения." },
		{ 9100062, "Дает int1 доп. ключа перед стартом приключения." },
		{ 9100063, "Дает int1 доп. ключа перед стартом приключения." },
		{ 9100111, "Повышает шанс нахождения ягодных кустов в Лесу Реликвий." },
		{ 9100121, "Повышает шанс нахождения хранилища с сокровищами в Крепости Вечности." }
	};

	public static readonly IReadOnlyDictionary<int, string> Potion = new Dictionary<int, string>
	{
		{ 3000001, "Змеиная Кровь" },
		{ 3000002, "Зелье Щита" },
		{ 3000003, "Святая Вода" },
		{ 3000004, "Зелье Перековки" },
		{ 3000005, "Зелье Иллюзий" },
		{ 3000006, "Зелье Пробуждения" },
		{ 3000007, "Зелье Обновления" },
		{ 3000008, "Зелье Отмычка" },
		{ 3000009, "Зелье Мидаса" },
		{ 3000010, "Зелье Скидки" },
		{ 3000011, "Зелье Левитации" },
		{ 3000012, "Зелье Невидимости" },
		{ 3000013, "Зелье Неуязвимости" },
		{ 3000014, "Зелье Окаменения" },
		{ 3000015, "Зелье Ловкости" },
		{ 3000016, "Зелье Размера" },
		{ 3000017, "Кристальное Зелье" },
		{ 3000018, "Нестабильное Красное Зелье" },
		{ 3000019, "Нестабильное Синее Зелье" },
		{ 3000020, "Зелье Очищения" },
		{ 3000021, "Зелье Обогащения" },
		{ 3000022, "Слезы Богини" },
		{ 3000023, "Зелье Реликвии" },
		{ 3000024, "Зелье Переброса" },
		{ 3000025, "Жертвенное Зелье" },
		{ 3000026, "Зелье Слесаря" },
		{ 3000027, "Чистое Касторовое Масло" },
		{ 3000028, "Зелье Дублирования" },
		{ 3000029, "Зелье Трансформации" },
		{ 3000030, "Зелье Сокровищ" },
		{ 3000031, "Экстренное Зелье" },
		{ 3000032, "Зелье Конверсии" },
		{ 3100001, "Востанавливает случайное кол-во HP от int1 до int2." },
		{ 3100002, "Генерирует столько <color=#C500FE>щитов</color>, сколько было потеряно HP (Макс. int1)." },
		{ 3100003, "Снимает случайное проклятие." },
		{ 3100004, "Перековывает все заклинания в инвентаре." },
		{ 3100005, "Замедляет время на float1 сек." },
		{ 3100006, "Временно увеличивает регенерацию маны для ваших жезлов на int1% в течении float1 сек." },
		{ 3100007, "Обновляет покупаемые предметы и доступные двери во всех комнатах." },
		{ 3100008, "Открывает все запертые на ключ объекты в текущей комнате." },
		{ 3100009, "Превращает всех врагов в комнате, не являющихся боссами, в монеты." },
		{ 3100010, "Применяет скидку ко всем покупаемым предметам в текущей комнате." },
		{ 3100011, "Ты левитируешь! Длится до входа в следующую дверь." },
		{ 3100012, "Дает невидимость на float1 сек; Атаки не раскрывают тебя." },
		{ 3100013, "Дает неуязвимость на float1 сек." },
		{ 3100014, "Окаменяет тебя и дает иммунитет к любому урону на float1 сек.\\Движение заканчивает окаменение преждевременно." },
		{ 3100015, "Навсегда увеличивает скорость движения на +float1." },
		{ 3100016, "Навсегда увеличивает или уменьшает тебя." },
		{ 3100017, "Навсегда увеличивает регенерацию маны на int1." },
		{ 3100018, "Навсегда изменяет Макс. HP на int1 или int2." },
		{ 3100019, "Навсегда изменяет Макс. Ману на int1 или int2." },
		{ 3100020, "Снимает все проклятия.\\Ты теряешь все монеты, ключи и щиты." },
		{ 3100021, "Дает монеты, равные float1% от имеющихся." },
		{ 3100022, "Снимает все проклятия если на тебе ровно int1 уникальных проклятий." },
		{ 3100023, "Случайно улучшает одну реликвию. Если ни одна реликвия не может быть улучшена, дает одну обычную реликвию." },
		{ 3100024, "Позволяет перековать одну выбранную реликвию." },
		{ 3100025, "Забирает у тебя int1% текущего HP давая соответствующее кол-во монет." },
		{ 3100026, "Удваивает текущее кол-во ключей, либо добавляет int1 если нет ни одного." },
		{ 3100027, "Дает иммунитет к яду и слизи в текущей комнате\\Накладывает яд и замедляет врагов позади тебя в течении float1 сек." },
		{ 3100028, "Дублирует все хилки, щиты, монеты и ключи в текущей комнате." },
		{ 3100029, "Меняет ваш пол на противоположный." },
		{ 3100030, "Дает случайный сундук сокровищ." },
		{ 3100031, "Дает <color=#9D9D9B>временные щиты</color>, в зависимости от текущего потерянного HP." },
		{ 3100032, "Вычитает int1% текущего HP давая соответствующее кол-во <color=#C500FE>щитов</color>." }
	};

	public static readonly IReadOnlyDictionary<int, string> Curse = new Dictionary<int, string>
	{
		{ 2000001, "Пропущенная Награда" },
		{ 2000002, "Туманные Врата" },
		{ 2000003, "Улучшенные Ловушки" },
		{ 2000004, "Кровожадные Подчиненные" },
		{ 2000005, "Мстительные Духи" },
		{ 2000006, "Безумная Возня" },
		{ 2000007, "Нестабильный Телепортит" },
		{ 2000008, "Постоянный Вред" },
		{ 2000009, "Застывший" },
		{ 2000010, "Истощенные Алмазы" },
		{ 2000011, "Атрофированные Мышцы" },
		{ 2000012, "Робкость" },
		{ 2000013, "Изжога" },
		{ 2000014, "Хрупкость" },
		{ 2000015, "Медлительность" },
		{ 2000016, "Тернистый Вход" },
		{ 2000017, "Сложные Замки" },
		{ 2000018, "Потрепанный Мешочек" },
		{ 2000019, "Дикое Распространение" },
		{ 2000020, "Проржавевшие Монеты" },
		{ 2000021, "Нарушенный Центр Тяжести" },
		{ 2000022, "Ночная Слепота" },
		{ 2000023, "Нетерпение" },
		{ 2000024, "Подавление Магии" },
		{ 2000025, "Неэффективные Заклятия" },
		{ 2000026, "Нестабильная Стабильность" },
		{ 2000027, "Кощунство" },
		{ 2000028, "Неистовая Кровь" },
		{ 2000029, "Недоумение" },
		{ 2000030, "Неудача" },
		{ 2000031, "Роковая Судьба" },
		{ 2000032, "Афазия" },
		{ 2000033, "Потерянный" },
		{ 2000034, "Кандалы" },
		{ 2000035, "Уменьшающийся Рюкзак" },
		{ 2000036, "Аллергия на Зелья" },
		{ 2000037, "Взрывная Погоня" },
		{ 2000038, "Исчезнувший" },
		{ 2000039, "Беспомощность" },
		{ 2000040, "Мрачное Пари" },
		{ 2000041, "Старинные Часы" },
		{ 2000042, "Рассеивание Магии" },
		{ 2000043, "Слабость" },
		{ 2000044, "Ленивый Магазин" },
		{ 2000045, "Близорукость" },
		{ 2000046, "Неряшливость" },
		{ 2000047, "Безжалостная Улитка" },
		{ 2000999, "За Пределами Божественной Помощи" },
		{ 2100001, "Ресурсы исчезают если не подобрать их в течении float1 сек." },
		{ 2100002, "Невозможно рассмотреть куда ведут двери." },
		{ 2100003, "Ловушки наносят на int1% больше урона тебе и твоим призванным существам." },
		{ 2100004, "Скорость передвижения врагов увеличена на int1%." },
		{ 2100005, "Когда враги погибают, они имеют int1% шанс превратится в духов, которые будут гоняться за тобой в течении float1 сек." },
		{ 2100006, "При получении урона, ты теряешь int1 монет." },
		{ 2100007, "При получении урона, ты телепортируешься в случайную позицию." },
		{ 2100008, "При получении урона, есть int1% шанс одновременно потерять столько-же Макс. HP." },
		{ 2100009, "Невозможно атаковать в течении float1 сек. после получения урона." },
		{ 2100010, "Все алмазы становятся монетами." },
		{ 2100011, "Уменьшает скорость передвижения на float1." },
		{ 2100012, "Невозможно кастовать заклинания в течении float1 сек. при входе в комнату." },
		{ 2100013, "Уменьшает скорость полета снарядов заклинаний на int1%." },
		{ 2100014, "Уменьшает весь наносимый игроком урон на int1%." },
		{ 2100015, "Увеличивает интервал и задержку каста жезлов на int1%." },
		{ 2100016, "Ты теряешь int1 текущего HP при входе в комнату." },
		{ 2100017, "Все запертые объекты теперь требуют 2 ключа для открытия." },
		{ 2100018, "Ты теряешь int1 монет при входе в комнату." },
		{ 2100019, "Есть int1% шанс появления двойного количества врагов, кроме боссов." },
		{ 2100020, "Есть int1% шанс получения int2 урона при подборе монет или алмазов." },
		{ 2100021, "Заклинания теперь притягивают врагов, а не отталкивают." },
		{ 2100022, "Твое поле зрения ограничено." },
		{ 2100023, "Реген. Маны уменьшен на int1%." },
		{ 2100024, "Макс. Мана уменьшена на int1%." },
		{ 2100025, "Стоимость Маны xint1%" },
		{ 2100026, "Отдача +int1%" },
		{ 2100027, "Количество реликвий на выбор -int1" },
		{ 2100028, "Реген. HP врагов +int1" },
		{ 2100029, "Отключает возможность видеть HP, ману и ресурсы." },
		{ 2100030, "Проклятие, которое меняется с каждой комнатой." },
		{ 2100031, "Проклятие, которое меняется с каждой комнатой." },
		{ 2100032, "Текст становится неразборчивым." },
		{ 2100033, "Инверсивное передвижение." },
		{ 2100034, "К тебе привязан шар на цепи." },
		{ 2100035, "Слоты инвентаря -int1" },
		{ 2100036, "Уменьшает текущее HP на int1 каждый раз когда ты используешь зелье." },
		{ 2100037, "Возле тебя периодически появляется бомба." },
		{ 2100038, "Удаляет случайную реликвию. После этого проклятие очищается." },
		{ 2100039, "Макс. HP -int1" },
		{ 2100040, "При завершении комнат с получением урона, Макс. HP уменьшается на int1.\\При завершении комнат без получения урона, Макс. HP увеличивается на int2." },
		{ 2100041, "Периодически откатывает тебя туда, где ты был float1 секунд назад." },
		{ 2100042, "При входе в комнату, все жезлы имеют 0 маны." },
		{ 2100043, "<color=#FE5D00>Крит. Шанс</color> всех типов урона int1%." },
		{ 2100044, "Кол-во предметов для покупки в магазине -int1" },
		{ 2100045, "Разброс +int1" },
		{ 2100046, "Лимит призываемых существ ÷int1 (дробная часть округляется вверх)." },
		{ 2100047, "Медленная и бессмертная улитка постоянно следует за тобой." },
		{ 2100999, "Если ты видишь данное проклятие, значит сработали все проклятия." }
	};

	public static readonly IReadOnlyDictionary<int, string> Relic = new Dictionary<int, string>
	{
		{ 4000001, "Наплечники Титана" },
		{ 4000002, "Ботинки Рейнджера" },
		{ 4000003, "Кулон Жизненной Силы" },
		{ 4000004, "Талисман Концентрации" },
		{ 4000005, "Копия Перчаток" },
		{ 4000006, "Кровожадный Взгляд" },
		{ 4000007, "Шкатулка Душ" },
		{ 4000008, "Броня из Кости Духа" },
		{ 4000009, "Электрифицированная Корона" },
		{ 4000010, "Хвост из Кости Демона" },
		{ 4000011, "Адамантиевые Ботинки" },
		{ 4000012, "Дух-Хранитель" },
		{ 4000013, "Крылья Духа" },
		{ 4000014, "Перчатка Старателя" },
		{ 4000015, "Жилетка Старателя" },
		{ 4000016, "Мантия из Кости Духа" },
		{ 4000017, "Наплечники Энта" },
		{ 4000018, "Золотая Чаша, Золотая" },
		{ 4000019, "Роба Энта" },
		{ 4000020, "Маска Жнеца" },
		{ 4000021, "Багровый Браслет" },
		{ 4000022, "Шляпа Мерлина" },
		{ 4000023, "Роба Мерлина" },
		{ 4000024, "Серьги Удачи" },
		{ 4000025, "Борода Мерлина" },
		{ 4000026, "Целебный Пояс" },
		{ 4000027, "Бесконечный Эликсир" },
		{ 4000028, "Безделушка Продавца" },
		{ 4000029, "Ботинки Мерлина" },
		{ 4000030, "Венок Энта" },
		{ 4000031, "Нагрудник Рыцаря" },
		{ 4000032, "Застывшая Капля" },
		{ 4000033, "Корона из Кости Духа" },
		{ 4000034, "Маска Ведьмака" },
		{ 4000035, "Шестигранная Игральная Кость" },
		{ 4000036, "Уши Эльфа" },
		{ 4000037, "Пыльное Сокровище" },
		{ 4000038, "Роба Фокусника" },
		{ 4000039, "Четырехлистный Клевер" },
		{ 4000040, "Кирка Старателя" },
		{ 4000041, "Бур" },
		{ 4000042, "Накидка Разбойника" },
		{ 4000043, "Песочные Часы Времени" },
		{ 4000044, "Тлеющее Сердце" },
		{ 4000045, "Маска Демона" },
		{ 4000046, "Семя Жадности" },
		{ 4000047, "Талисман Охотника" },
		{ 4000048, "Звериные Клыки" },
		{ 4000049, "Пронзатель Небес" },
		{ 4000050, "Линза для Жезлов" },
		{ 4000051, "Шлем Рыцаря" },
		{ 4000052, "Клинок Ярости" },
		{ 4000053, "Увеличительное Стекло" },
		{ 4000054, "Дикие Тентакли" },
		{ 4000055, "Лысина Сайтамы" },
		{ 4000056, "Серебрянный Ключ" },
		{ 4000057, "Яростный Глаз" },
		{ 4000058, "Пристальное Наблюдение" },
		{ 4000059, "Кровавый Ключ" },
		{ 4000060, "Перчатка Конечности" },
		{ 4000061, "" },
		{ 4000062, "" },
		{ 4000063, "Черная Метка" },
		{ 4000064, "Серебрянный Компас" },
		{ 4000065, "Бесконечный Сундук" },
		{ 4000066, "" },
		{ 4000067, "Ящик Пандоры" },
		{ 4000068, "Лихое Ухо" },
		{ 4000069, "" },
		{ 4000901, "Счастливое Ухо Зайца" },
		{ 4000902, "Восьмигранная Игральная Кость" },
		{ 4000931, "Зеркало Видения" },
		{ 4000999, "Мистический Артефакт" },
		{ 4100001, "Макс. HP +int1\\Размер Персонажа +int2%\\Отдача int3%" },
		{ 4100002, "Дает иммунитет к замедляющим эффектам (кроме тех, что вызваны заклинаниями)\\Скорость передвижения +float1" },
		{ 4100003, "Медленно восстанавливает HP до int1 когда оно ниже int1" },
		{ 4100004, "Уменьшает задержку каста, интервал каста, и разброс на int1% когда стоишь на месте" },
		{ 4100005, "При касте заклинания, есть int1% шанс дублировать заклинание в случайном направлении" },
		{ 4100006, "При убийстве врага, есть int1% шанс восстановить int2 HP" },
		{ 4100007, "При убийстве врага, есть int1% шанс призвать следующего за врагами духа, наносящего int2 урона" },
		{ 4100008, "При убийстве врага, есть int1% шанс создать щит летающий вокруг тебя" },
		{ 4100009, "При получении урона наносит int1 урона всем врагам" },
		{ 4100010, "При убийстве врага, создает обычную Волшебную Пулю, которая следует за тобой" },
		{ 4100011, "Дает иммунитет к напольным шипам\\Дает иммунитет к яду" },
		{ 4100012, "Призывает int1 духов которые могут прервать заклинания врагов" },
		{ 4100013, "Позволяет тебе левитировать" },
		{ 4100014, "При убийстве врага, есть int1% шанс появления монетки" },
		{ 4100015, "При подборе монет, ты восстанавливаешь HP" },
		{ 4100016, "Дает int1 <color=#C500FE>щитов</color>\\Дает int3 <color=#C500FE>щит</color> за каждые int2 убийства врагов" },
		{ 4100017, "Дает int1 <color=#C500FE>щитов</color> при входе в комнату" },
		{ 4100018, "Каждый раз при входе в следующую комнату, дает дополнительные монеты в виде int1% от имеющихся (Макс. int2 монет)" },
		{ 4100019, "Восстанавливает int1 HP при входе в комнату" },
		{ 4100020, "float1% шанс мгновенно убить любого врага кроме боссов" },
		{ 4100021, "Уменьшает скорость передвижения до int1%\\Ускоряет до int2% если не получать урон в течении float1 сек." },
		{ 4100022, "Макс. Мана +int1" },
		{ 4100023, "Реген. Маны +int1/s" },
		{ 4100024, "Количество реликвий на выбор +int1" },
		{ 4100025, "Лимит призванных существ xint1. Этот эффект распространяется только на те существа, что призываются непосредственно самим игроком" },
		{ 4100026, "Каждое использование зелья, увеличивает Макс. HP на int1 и Макс. Ману на int2" },
		{ 4100027, "При использовании зелья есть int1% шанс получить еще одно случайное зелье" },
		{ 4100028, "Специальная комната будет всегда появляться при входе в магазин или комнату обработки" },
		{ 4100029, "Восстанавливает int1 Маны при убийстве врага" },
		{ 4100030, "Дает int1 <color=#9D9D9B>временных щитов</color> при входе в комнату" },
		{ 4100031, "Уменьшает получаемый урон на int1%" },
		{ 4100032, "Замедляет снаряды врагов в <color=#FFD700>Радиусе Эффекта</color> float1 метров" },
		{ 4100033, "Дает int2 <color=#9D9D9B>временный щит</color> при убийстве int1 врагов" },
		{ 4100034, "За каждое имеющееся уникальное проклятие, наносимый игроком урон увеличивается на int1%" },
		{ 4100035, "У тебя есть int1 реролл(а), при получении реликвии" },
		{ 4100036, "Каст заклинаний больше не замедляет тебя" },
		{ 4100037, "Улучшает одну из твоих реликвий. Если ни одна реликвия не может быть улучшена, дает одну обычную реликвию." },
		{ 4100038, "Ты можешь управлять своим жезлом на расстоянии вплоть до float1 метров\\<color=#FFD700>Радиус Эффектов</color> заклинаний: int1%" },
		{ 4100039, "Дает int1% шанс уклониться от атаки" },
		{ 4100040, "Увеличивает наносимый игроком урон на int2% за каждые int1 монет(ы)" },
		{ 4100041, "Слоты заклинаний у жезлов +int1" },
		{ 4100042, "Дает невидимость если не атаковать в течении float1 сек. Атака делает тебя снова видимым." },
		{ 4100043, "При смерти восстанавливает твое HP до int1%. Эта реликвия исчезает после использования" },
		{ 4100044, "Наносит int1 урона в секунду всем врагам в <color=#FFD700>Радиусе Эффекта</color> float1 метров" },
		{ 4100045, "Увеличивает <color=#FE5D00>Крит. Шанс</color> всех типов урона на int1%" },
		{ 4100046, "Поглощает все последующее лечение. После поглощения int1 лечения, вырастает и увеличивает твое Макс. HP на int2." },
		{ 4100047, "Увеличивает дальность зрения" },
		{ 4100048, "Увеличивает весь наносимый игроком урон на int1%" },
		{ 4100049, "Заклинания могут проходить сквозь стены" },
		{ 4100050, "Отталкивание врагов заклинаниями +int1%" },
		{ 4100051, "Уменьшает урон получаемый игроком от неразборчивых атак до float1%" },
		{ 4100052, "Увеличивает <color=#FE5D00>Крит. Урон</color> с 200% до int1%" },
		{ 4100053, "Увеличивает <color=#FFD700>Радиус Эффектов</color> заклинаний и реликвий на int1%" },
		{ 4100054, "Увеличивает скорость передвижения на float1" },
		{ 4100055, "Увеличивает весь наносимый игроком урон на int1%\\Увеличивает весь получаемый игроком урон на int2%" },
		{ 4100056, "Дает доступ ко всем сундукам и дверям" },
		{ 4100057, "За каждые int1 отсутствующих HP, увеличивает весь наносимый игроком урон на float1%" },
		{ 4100058, "Позволяет видеть HP врагов" },
		{ 4100059, "После убийства босса, будет всегда появляться комната с Алыми Реликвиями" },
		{ 4100060, "Перчатка время от времени убивает половину врагов в комнате не являющихся боссами" },
		{ 4100061, "При получении урона устраняет все снаряды в определенном диапазоне" },
		{ 4100062, "Когда HP падает до нуля, ты теряешь монеты вместо получения урона. Сколько урона получено, столько монет и будет потеряно" },
		{ 4100063, "Один случайный предмет в магазине теперь бесплатный." },
		{ 4100064, "Каждая комната с врагами будет гарантированно иметь сундук или статую" },
		{ 4100065, "При открытии сундука, есть int1% шанс создать еще один" },
		{ 4100066, "В ситуациях когда у тебя не хватает монет, ты сможешь потратить 1 HP за каждую 1 недостающую монету" },
		{ 4100067, "При входе в комнату, первые int1 слот(а) заклинаний в инвентаре будут перекованы" },
		{ 4100068, "При получении урона твоя скорость передвижения увеличивается на int1%, эффект будет плавно спадать в течении float1 сек." },
		{ 4100069, "При смерти призванного существа, наносит урон равный int1% его Макс. HP врагам в <color=#FFD700>Радиусе Эффекта</color> float1 метров" },
		{ 4100901, "Кол-во выпадающих заклинаний +int1" },
		{ 4100902, "У тебя есть int1 реролл(а), при получении заклинания" },
		{ 4100931, "Постоянный полет\\Лимит жезлов +int1\\Все жезлы всегда будут иметь Дух Жезла+" },
		{ 4100999, "Поздравляем! Ты получил ультимативный артефакт! Увеличивает Макс. HP на int1!" }
	};

	public static readonly IReadOnlyDictionary<int, string> Wand = new Dictionary<int, string>
	{
		{ 5000001, "Жезл из Светодрева" },
		{ 5000011, "Поврежденный Жезл из Светодрева" },
		{ 5000012, "Поврежденный Жезл из Светодрева" },
		{ 5000013, "Поврежденный Жезл из Светодрева" },
		{ 5000014, "Поврежденный Жезл из Светодрева" },
		{ 5000021, "Мистический Посох" },
		{ 5000031, "Колдовской Посох" },
		{ 5000041, "Жезл Скорострела" },
		{ 5000042, "Жезл Скорострела" },
		{ 5000043, "Жезл Скорострела" },
		{ 5000044, "Жезл Скорострела" },
		{ 5000051, "Эфирный Жезл" },
		{ 5000061, "Набор Жезлов" },
		{ 5000071, "Набор Жезлов" },
		{ 5000121, "" },
		{ 5000122, "" },
		{ 5000123, "" },
		{ 5000124, "" },
		{ 5001001, "Трость Древня" },
		{ 5001002, "Игрушечный Клинок" },
		{ 5001003, "Объятия Микрокосмоса" },
		{ 5001004, "Непоколебимая Воля" },
		{ 5001005, "Легковесный Жезл" },
		{ 5001006, "Гармонический Резонанс" },
		{ 5001007, "Естественное Сближение" },
		{ 5001008, "Деревянная Палка" },
		{ 5001009, "Камертон" },
		{ 5001010, "Гримуар Новичка" },
		{ 5001011, "Направляющая Выдумка" },
		{ 5001012, "Старый Жезл" },
		{ 5001013, "777" },
		{ 5001014, "Стазис Времени" },
		{ 5001015, "Сверхновый Жезл" },
		{ 5001016, "Хватка Старейшины" },
		{ 5001017, "Безумный Заклинатель" },
		{ 5001018, "Вязкий Клык" },
		{ 5001019, "Ядовитый Укус" },
		{ 5001020, "Дуга Правосудия" },
		{ 5001021, "Триколор" },
		{ 5001022, "Непокорная Натура" },
		{ 5001023, "Шаманский Кинжал" },
		{ 5001024, "Разбитый Скипетр" },
		{ 5001025, "Ржавый Бластер" },
		{ 5001026, "Резервуар Энергии" },
		{ 5001027, "Трезубец" },
		{ 5001028, "Душепоглощающая Сфера" },
		{ 5001029, "Наследие Предков" },
		{ 5001030, "Клятва Чести" },
		{ 5002001, "Сияющий Букет" },
		{ 5002002, "Свисток из Раковины" },
		{ 5002003, "Жертвенный Кинжал" },
		{ 5002004, "Энергичный Жезл" },
		{ 5002005, "Свидетель Деяний" },
		{ 5002006, "Посох Скорострела" },
		{ 5002007, "Знамя Легиона" },
		{ 5002008, "Расширяющийся Контейнер" },
		{ 5002009, "Двойная Флейта" },
		{ 5002010, "Лютня Трех Аккордов" },
		{ 5002011, "Клятва Колдуна" },
		{ 5002012, "Беспокойное Сердце" },
		{ 5002013, "Метла Ведьмочки" },
		{ 5002014, "Бескрайний Том" },
		{ 5002015, "Тяжелый Удар" },
		{ 5002016, "Символ Воздержания" },
		{ 5002017, "Двуглавый Жезл" },
		{ 5002018, "Быстрый Заклимеч" },
		{ 5002019, "Книга Спокойствия" },
		{ 5002020, "Удобный Жезл" },
		{ 5002021, "Пульсирующий Жезл" },
		{ 5002022, "Портативная Библиотека" },
		{ 5002023, "Жезл Сближения" },
		{ 5002024, "Мешочек Чародея" },
		{ 5002025, "Посох Течения" },
		{ 5002026, "Звезданутый Бродяга" },
		{ 5002027, "Праздничный Жезл" },
		{ 5002028, "Бабулина Игла" },
		{ 5002029, "Напряженный Камень" },
		{ 5002030, "Волшебный Проводник" },
		{ 5004001, "Звездный Горн" },
		{ 5004002, "Змеиный Вальс" },
		{ 5004003, "Астероид" },
		{ 5004004, "Заряженная Сфера" },
		{ 5004005, "Беспокойная Фея" },
		{ 5004006, "Клинок Разума" },
		{ 5004007, "Разносчик Чумы" },
		{ 5004008, "Спящая Борода" },
		{ 5004009, "Осадец" },
		{ 5004010, "Ледяное Касание" },
		{ 5004011, "Хранитель Королевства" },
		{ 5004012, "Старый Малый" },
		{ 5004013, "Жезл Архимага" },
		{ 5004014, "Оборотень" },
		{ 5004015, "Радужная Электро-Паутина" },
		{ 5004016, "Посох Коллекционера" },
		{ 5006001, "Лишенный Наследства" },
		{ 5006002, "Лишенный Тени" },
		{ 5006003, "Лишенный Света" },
		{ 5006004, "Бесформенный" },
		{ 5006005, "Безликий" },
		{ 5006006, "Безупречный" },
		{ 5006007, "Безграничный" },
		{ 5006008, "Лишенный Источника" },
		{ 5006009, "Бессловесный" },
		{ 5006010, "Безымянный" },
		{ 5006011, "Тотем Варвара" },
		{ 5008001, "Жезл Фокуса" },
		{ 5008002, "Предзнаменование Гибели" },
		{ 5008003, "Чистейший Резонанс" },
		{ 5008004, "Осколок Времени" },
		{ 5008005, "Звездный Дрейф" },
		{ 5100001, "" },
		{ 5100011, "" },
		{ 5100012, "" },
		{ 5100013, "" },
		{ 5100014, "" },
		{ 5100021, "" },
		{ 5100031, "" },
		{ 5100041, "" },
		{ 5100042, "" },
		{ 5100043, "" },
		{ 5100044, "" },
		{ 5100051, "" },
		{ 5100061, "" },
		{ 5100071, "" },
		{ 5100100, "" },
		{ 5100101, "Заклинания выпущенные этим жезлом, имеют случайную стихию." },
		{ 5100102, "" },
		{ 5100103, "" },
		{ 5100104, "Случайный <color=#FFD700>Радиус Эффекта</color> Орбиты." },
		{ 5100105, "Заклинания выпущенные этим жезлом, имеют случайную стихию." },
		{ 5100106, "" },
		{ 5100107, "" },
		{ 5100108, "" },
		{ 5100109, "" },
		{ 5100110, "" },
		{ 5100111, "" },
		{ 5100112, "" },
		{ 5100113, "" },
		{ 5100114, "" },
		{ 5100115, "" },
		{ 5100116, "" },
		{ 5100117, "" },
		{ 5100118, "" },
		{ 5100119, "" },
		{ 5100120, "" },
		{ 5100121, "" },
		{ 5100122, "" },
		{ 5100123, "" },
		{ 5100124, "" },
		{ 5100150, "" },
		{ 5100151, "" },
		{ 5100152, "" },
		{ 5100153, "" },
		{ 5100154, "" },
		{ 5100155, "" },
		{ 5100156, "" },
		{ 5100157, "" },
		{ 5100195, "" },
		{ 5100196, "Пока ты держишь этот жезл, ты можешь левитировать и твоя Скорость Передвижения увеличена на +float1%." },
		{ 5100197, "" },
		{ 5100198, "" },
		{ 5100199, "" },
		{ 5100200, "" },
		{ 5100201, "" },
		{ 5100202, "" },
		{ 5100203, "" },
		{ 5100204, "" },
		{ 5100205, "" },
		{ 5100206, "" },
		{ 5100207, "" },
		{ 5100208, "" },
		{ 5100300, "" },
		{ 5100301, "" },
		{ 5100302, "" },
		{ 5100401, "" },
		{ 5100402, "" },
		{ 5101001, "" },
		{ 5101002, "" },
		{ 5101003, "Потребление Маны на всех жезлах xfloat1%." },
		{ 5101004, "" },
		{ 5101005, "" },
		{ 5101006, "" },
		{ 5101007, "Реген. Маны на всех жезлах +float1/s." },
		{ 5101008, "" },
		{ 5101009, "" },
		{ 5101010, "Потребление Маны Заклинаний Призыва xfloat1%." },
		{ 5101011, "" },
		{ 5101012, "" },
		{ 5101013, "" },
		{ 5101014, "" },
		{ 5101015, "" },
		{ 5101016, "" },
		{ 5101017, "" },
		{ 5101018, "" },
		{ 5101019, "" },
		{ 5101020, "Случайный <color=#FFD700>Радиус Эффекта</color> орбиты." },
		{ 5101021, "Заклинания выпущенные этим жезлом, имеют случайную стихию." },
		{ 5101022, "Заклинания выпускаются в обратном направлении." },
		{ 5101023, "" },
		{ 5101024, "" },
		{ 5101025, "" },
		{ 5101026, "" },
		{ 5101027, "" },
		{ 5101028, "" },
		{ 5101029, "" },
		{ 5101030, "" },
		{ 5102001, "Заклинания выпущенные этим жезлом, имеют случайную стихию." },
		{ 5102002, "Пока ты держишь этот жезл, твоя Скорость Передвижения увеличена на +float1%." },
		{ 5102003, "Этот жезл уменьшает Неразборчивый Урон до float1%." },
		{ 5102004, "Увеличивает <color=#DC143C>Итоговый Урон</color> заклинаний на xfloat1%, если их Потребление Маны меньше int1 (работает на каждое заклинание в жезле по отдельности)" },
		{ 5102005, "Увеличивает <color=#FFD700>Радиус Эффектов</color> заклинаний на всех жезлах на float1%." },
		{ 5102006, "Когда ты держишь этот жезл, Реген. Маны xfloat1%.\\Когда не держишь xfloat2%." },
		{ 5102007, "" },
		{ 5102008, "Макс. Мана на всех жезлах xfloat1%." },
		{ 5102009, "" },
		{ 5102010, "" },
		{ 5102011, "Реген. Маны на всех жезлах +float1/s." },
		{ 5102012, "Этот жезл имеет инверсивную отдачу." },
		{ 5102013, "Пока ты держишь этот жезл, ты можешь левитировать." },
		{ 5102014, "" },
		{ 5102015, "" },
		{ 5102016, "" },
		{ 5102017, "" },
		{ 5102018, "Пока ты держишь этот жезл, твоя Скорость Передвижения увеличена на +float1%." },
		{ 5102019, "Пока ты стоишь на месте, этот жезл не имеет отдачи." },
		{ 5102020, "" },
		{ 5102021, "Заклинания имеют шанс float1% мгновенно восстановить всю Ману жезла при касте.\\Также есть float2% шанс проигнорировать задержку." },
		{ 5102022, "" },
		{ 5102023, "" },
		{ 5102024, "" },
		{ 5102025, "" },
		{ 5102026, "" },
		{ 5102027, "" },
		{ 5102028, "" },
		{ 5102029, "" },
		{ 5102030, "" },
		{ 5104001, "" },
		{ 5104002, "" },
		{ 5104003, "" },
		{ 5104004, "Когда на других жезлах не хватает Маны, они могут использовать Ману этого жезла." },
		{ 5104005, "Когда ты держишь этот жезл, Реген. Маны xfloat1%.\\Когда не держишь xfloat2%." },
		{ 5104006, "" },
		{ 5104007, "" },
		{ 5104008, "" },
		{ 5104009, "" },
		{ 5104010, "" },
		{ 5104011, "" },
		{ 5104012, "" },
		{ 5104013, "" },
		{ 5104014, "" },
		{ 5104015, "" },
		{ 5104016, "" },
		{ 5106001, "" },
		{ 5106002, "" },
		{ 5106003, "" },
		{ 5106004, "" },
		{ 5106005, "" },
		{ 5106006, "" },
		{ 5106007, "" },
		{ 5106008, "" },
		{ 5106009, "" },
		{ 5106010, "" },
		{ 5106011, "" },
		{ 5108001, "Когда ты держишь этот жезл, Реген. Маны xfloat1%.\\Когда не держишь xfloat2%." },
		{ 5108002, "Этот жезл уменьшает Неразборчивый Урон до float1%." },
		{ 5108003, "" },
		{ 5108004, "Реген. Маны всех жезлов +float1/s." },
		{ 5108005, "" }
	};

	public static readonly IReadOnlyDictionary<int, string> Base = new Dictionary<int, string>
	{
		{ 1000001, "Начать Игру" },
		{ 1000002, "Настройки" },
		{ 1000003, "Титры" },
		{ 1000004, "Выход" },
		{ 1000005, "Добавить в Вишлист" },
		{ 1000006, "Сообщить о Баге" },
		{ 1000007, "Вы уверены, что хотите удалить сохраненные данные?" },
		{ 1000008, "Пусто" },
		{ 1000009, "Локация" },
		{ 1000010, "Магический Кристалл" },
		{ 1000011, "Древняя Кровь" },
		{ 1000012, "Продолжительность" },
		{ 1000013, "ч" },
		{ 1000014, "м" },
		{ 1000015, "Пропустить историю?" },
		{ 1000016, "Награда за предзаказ на Bilibili до 60К" },
		{ 1000017, "Награда за предзаказ на Bilibili до 100К" },
		{ 1000018, "По-умолчанию" },
		{ 1000019, "с" },
		{ 1000020, "Ядро Хаоса" },
		{ 1000101, "Общие" },
		{ 1000102, "Управление" },
		{ 1000103, "Язык (не трогать ЛОЛ)" },
		{ 1000104, "Сбросить" },
		{ 1000105, "Подтвердить" },
		{ 1000106, "Музыка" },
		{ 1000107, "Звуковые Эффекты" },
		{ 1000108, "Полный Экран" },
		{ 1000109, "Вертикальная Синхронизация" },
		{ 1000110, "Другое" },
		{ 1000111, "Цифры Урона" },
		{ 1000112, "Выключение этого может слегка увеличить производительность" },
		{ 1000113, "Интенсивность Тряски Экрана" },
		{ 1000114, "Движение Вверх" },
		{ 1000115, "Движение Вниз" },
		{ 1000116, "Движение Влево" },
		{ 1000117, "Движение Вправо" },
		{ 1000118, "Взаимодействовать" },
		{ 1000119, "Открыть/Закрыть Инвентарь" },
		{ 1000120, "Стрелять" },
		{ 1000121, "Сменить Жезл" },
		{ 1000122, "Выбрать Жезл" },
		{ 1000123, "Использовать Зелье" },
		{ 1000124, "Сменить Зелье" },
		{ 1000125, "Быстро снять" },
		{ 1000126, "Текущее Устройство: Клавиатура/Мышь" },
		{ 1000127, "Текущее Устройство: Контроллер" },
		{ 1000128, "Направление Движения" },
		{ 1000129, "Направление Прицела" },
		{ 1000130, "Предыдущий Жезл" },
		{ 1000131, "Следующий Жезл" },
		{ 1000132, "Сбросить Предмет" },
		{ 1000133, "Переместить Предмет" },
		{ 1000134, "Отмена/Назад" },
		{ 1000135, "Вкл" },
		{ 1000136, "Выкл" },
		{ 1000137, "Управление" },
		{ 1000138, "Геймплей" },
		{ 1000139, "Видео и Аудио" },
		{ 1000140, "Другое" },
		{ 1000141, "Видео" },
		{ 1000142, "Разрешение" },
		{ 1000143, "Аудио" },
		{ 1000144, "Общая Громкость" },
		{ 1000145, "Предыдущие Зелье" },
		{ 1000146, "Следующее Зелье" },
		{ 1000147, "Меню" },
		{ 1000148, "Нажми (почти) любую кнопку" },
		{ 1000149, "Боевые хоткеи интерфейса" },
		{ 1000150, "Нажми \"U\" чтобы переключить отображение боевого интерфейса" },
		{ 1000151, "Отображать мутированную шею" },
		{ 1000152, "Отключить мутированную шею. Отключить эффекты мутации шеи вызванные реликвиями." },
		{ 1000153, "Прозрачность Заклинаний" },
		{ 1000154, "Отрегулируйте прозрачность заклинаний, чтобы их было лучше видно среди шквала заклинаний." },
		{ 1000155, "Аим Ассист Контроллера" },
		{ 1000156, "Режим Арахнофоба" },
		{ 1000157, "Игроки с арахнофобией могут использовать данную настройку, чтобы заменить внешний вид паукообразных монстров." },
		{ 1000158, "Прозрачность призываемых существ" },
		{ 1000159, "Лимит Призывов" },
		{ 1000160, "Дух Жезла и Автономный Гримуар больше не будут вызывать существ после достижения максимального предела призыва" },
		{ 1000201, "Продолжить" },
		{ 1000202, "Главное Меню" },
		{ 1000203, "Выйти из игры" },
		{ 1000204, "Вернуться в лагерь" },
		{ 1000205, "Вернуться в главное меню?" },
		{ 1000206, "Ты уверен, что хочешь выйти?" },
		{ 1000207, "Ты уверен, что хочешь вернуться в лагерь?" },
		{ 1000208, "Да" },
		{ 1000209, "Нет" },
		{ 1000210, "Ты уверен, что хочешь вернуться в лагерь? Вы потеряете прогресс в этом приключении." },
		{ 1000211, "Вернуться в главное меню? Ваш прогресс в этом приключении будет сохранен для следующего раза." },
		{ 1000221, "Система" },
		{ 1000222, "Руководство" },
		{ 1000223, "Достижения" },
		{ 1000231, "Удобное управление" },
		{ 1000232, "Про жезлы" },
		{ 1000233, "Про заклинания" },
		{ 1000234, "Отключает системный курсор и использует виртуальный, чтобы можно было регулировать его размер. Добавляет небольшую визуальную задержку" },
		{ 1000235, "Помогает определить местоположение курсора во время боя." },
		{ 1000236, "Виртуальный Курсор" },
		{ 1000237, "Системный Курсор" },
		{ 1000238, "(Длительное Нажатие)" },
		{ 1000239, "Времени Потрачено" },
		{ 1000301, "Инвентарь" },
		{ 1000302, "Выбор Языка" },
		{ 1000303, "Клавиатура и мышь рекомендуются для оптимального игрового опыта." },
		{ 1000304, "Текущий Уровень:" },
		{ 1000401, "Миньоны" },
		{ 1000402, "Боссы" },
		{ 1000403, "Заклинания" },
		{ 1000404, "Реликвии" },
		{ 1000405, "Зелья" },
		{ 1000406, "Проклятья" },
		{ 1000407, "HP" },
		{ 1000408, "Появление" },
		{ 1000409, "Убито" },
		{ 1000410, "Получено" },
		{ 1000411, "Убийств" },
		{ 1000412, "Использовано" },
		{ 1000413, "Сменить Уровень Заклинания" },
		{ 1000414, "Жезлы" },
		{ 1000415, "Макс. Уровень" },
		{ 1000501, "Таланты" },
		{ 1000502, "Слоты Жезлов" },
		{ 1000503, "Слоты Инвентаря" },
		{ 1000504, "Нач. Золото" },
		{ 1000505, " Макс. HP" },
		{ 1000506, "Комната Заклинаний" },
		{ 1000507, "Комната Реликвий" },
		{ 1000508, "Комната Золота" },
		{ 1000509, "Комната HP" },
		{ 1000510, "Макс. Мана" },
		{ 1000511, "Реген. Маны" },
		{ 1000512, "Макс." },
		{ 1000513, "Вероятность Редких\nЗаклинаний" },
		{ 1000514, "Вероятность Редких\nРеликвий" },
		{ 1000515, " Монет" },
		{ 1000516, " Доп. HP" },
		{ 1000517, "Исцеление при входе в комнату" },
		{ 1000518, "" },
		{ 1000519, "Разблокировать больше талантов" },
		{ 1000601, "Ты Умер!" },
		{ 1000602, "Ясно" },
		{ 1000701, "Долго Удерживай и Перемещай" },
		{ 1000702, "Нажми чтобы скинуть" },
		{ 1000703, "Недостаточно маны для каста какого-либо набора заклинаний." },
		{ 1000704, "Невозможно владеть жезлом, содержащей дух жезла." },
		{ 1000705, "Недостаточно маны для каста данного набора заклинаний." },
		{ 1000706, "Справа нет доступных заклинаний для каста." },
		{ 1000707, "Слева нет доступных заклинаний для каста." },
		{ 1000708, "Справа нет заклинаний которые можно трансформировать." },
		{ 1000709, "Не хватает места для трансформации." },
		{ 1000801, "Выбери 1 жезл в награду" },
		{ 1000802, "Выбери 2 заклинания в награду" },
		{ 1000803, "Выбери 1 реликвию в награду" },
		{ 1000804, "Реролл" },
		{ 1000901, "Крафт" },
		{ 1000902, "Требуется 3 одинаковых заклинания." },
		{ 1000903, "Макс. уровень достигнут" },
		{ 1000904, "Перековать" },
		{ 1000905, "Добавить" },
		{ 1000906, "Объединить" },
		{ 1000907, "Заклинание достигло макс. уровня" },
		{ 1000908, "Требуется одинаковый уровень и редкость" },
		{ 1000909, "Уникальные заклинания не могут быть перекованы" },
		{ 1001001, "Интервал" },
		{ 1001002, "Задержка" },
		{ 1001003, "Мана" },
		{ 1001004, "Реген. Маны" },
		{ 1001005, "Разброс" },
		{ 1001006, "Вторичные Слоты" },
		{ 1001007, "Основной Слот: Влияет на все слоты" },
		{ 1001011, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждого убитого врага из этого жезла." },
		{ 1001012, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждый пройденный метр." },
		{ 1001013, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждое попадание по врагу заклинанием из этого жезла." },
		{ 1001014, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждую секунду стоя на месте." },
		{ 1001015, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждый каст заклинания из этого жезла." },
		{ 1001016, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии, если ты нанес DamageThreshold или больше урона одним ударом из этого жезла." },
		{ 1001017, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии за каждый <color=#FE5D00>крит</color> этим жезлом." },
		{ 1001018, "Вторичный Слот: +PostSlotTriggerChargeRatio энергии при каждом получении урона." },
		{ 1001051, "Жезлы кастуют заклинания слева направо. Временной интервал между кастом этих заклинаний называется Интервал Каста." },
		{ 1001052, "После того как жезл заканчивает кастить все свои заклинания, у него начинается задержка. Как только задержка заканчивается, жезл может снова начать кастовать заклинания" },
		{ 1001053, "Макс. Мана которую может восстановить жезл" },
		{ 1001054, "Мана восстановленная за секунду" },
		{ 1001055, "Чем больше Разброс, тем шире случайный угол стрельбы заклинания." },
		{ 1001056, "Когда условия соблюдены, Вторичные Слоты восстановят энергию. Как только энергия во Вторичных Слотах равняется общей стоимости Маны всех Вторичных Слотов, все Вторичные Слоты будут запущены одновременно. Вторичные Слоты перезаряжаются только кастом заклинаний из жезла." },
		{ 1001057, "" },
		{ 1001058, "" },
		{ 1001059, "" },
		{ 1001060, "" },
		{ 1001101, "Урон" },
		{ 1001102, "УВС" },
		{ 1001103, "<color=#FFD700>Радиус Эффекта</color>" },
		{ 1001104, "Лимит Призыва" },
		{ 1001105, "Стоимость Маны" },
		{ 1001106, "Продолжительный Каст" },
		{ 1001107, "<color=#00BFFF>Одновременная Стрельба</color>" },
		{ 1001108, "<color=#FE5D00>Шанс Крита</color>" },
		{ 1001109, "<color=#DC143C>Итоговый Урон</color>" },
		{ 1001110, "Пробитие Заклинаний" },
		{ 1001111, "Используемые Слоты" },
		{ 1001112, "Слоты Заклинаний" },
		{ 1001113, "Число Выстрелов" },
		{ 1001114, "Заряжаемый Каст" },
		{ 1001115, "HP" },
		{ 1001116, "" },
		{ 1001117, "" },
		{ 1001118, "" },
		{ 1001119, "" },
		{ 1001120, "Базовые Заклинания" },
		{ 1001151, "Урон нанесенный заклинаниями" },
		{ 1001152, "Некоторые заклинания наносят урон несколько раз за 1 секунду. Для простоты, их урон отображается как урон в секунду." },
		{ 1001153, "Только некоторые заклинания имеют данный атрибут. На заклинания имеющие данный аттрибут, влияет увеличение <color=#FFD700>Радиуса Эффекта</color>." },
		{ 1001154, "Некоторые призывающие заклинания имеют лимит призыва. Когда число призванных существ превышает данной значение, первое призванное существо будет мгновенно убито. Если же лимит призыва не указан, значит что для данного заклинания нет ограничений на кол-во призывов." },
		{ 1001155, "Как правило, данное значение влияет на конечную стоимость заклинания" },
		{ 1001156, "При касте заклинаний, помеченных продолжительным кастом, ты не можешь использовать другие заклинания." },
		{ 1001157, "Несколько заклинаний будут кастоваться <color=#00BFFF>одновременно</color>." },
		{ 1001158, "Базовое значение <color=#FE5D00>Крит. Урона</color> равняется 200%." },
		{ 1001159, "Некоторые модификаторы Урона имеют приписку <color=#DC143C>Итоговый</color>, это обозначает что этот модификатор добавляется отдельным множителем, а не суммируется в один общий (как это делают остальные модификаторы Урона)." },
		{ 1001160, "Заклинания наносят урон при попадании в цель и проходят сквозь нее." },
		{ 1001161, "Заклинания могут занимать несколько слотов." },
		{ 1001201, "Быстрое Надевание/Снятие Заклинаний" },
		{ 1001202, "Групповое Надевание/Снятие Заклинаний" },
		{ 1001203, "Быстрая Смена Жезла" },
		{ 1001204, "Смена Зелья" },
		{ 1001251, "Правое нажатие кнопкой мыши по заклинанию включает быстрое одевание/снятие." },
		{ 1001252, "Удерживание кнопки Shift над заклинанием и клик по нему мышкой, позволяет быстро одевать/снимать." },
		{ 1001253, "Использование колесика мыши включает быструю смену жезлов." },
		{ 1001254, "Нажатие по слоту зелья, позволяет менять слот (если в этом слоте есть зелье)." },
		{ 1001301, "Алтарь" },
		{ 1001302, "Снимает одно случайное проклятие." },
		{ 1001303, "Котел для Крафта" },
		{ 1001304, "Комбинирует 3 одинаковых заклинания в 1 улучшенное." },
		{ 1001305, "Печь для Перековки" },
		{ 1001306, "Случайно трансформирует одни заклинания в другие." },
		{ 1001307, "Стол Слияния" },
		{ 1001308, "Комбинирует 4 любых заклинания в одно случайное и выше уровнем." },
		{ 1001309, "Не Хватает HP" },
		{ 1001310, "Не Хватает Монет" },
		{ 1001311, "Не Хватает Ключей" },
		{ 1001312, "Нет Проклятий" },
		{ 1001313, "Фонтан" },
		{ 1001314, "Восстанавливает int1% HP" },
		{ 1001315, "Освежитель" },
		{ 1001316, "Обновляет текущий ассортимент." },
		{ 1001317, "Русская Рулетка" },
		{ 1001318, "Рискни своей жизнью." },
		{ 1001401, "Начать Приключение" },
		{ 1001402, "Заклинания" },
		{ 1001403, "Реликвии" },
		{ 1001404, "Доп. HP" },
		{ 1001405, "Монеты" },
		{ 1001406, "Магазин" },
		{ 1001407, "Обработка" },
		{ 1001408, "Элитка" },
		{ 1001409, "Босс" },
		{ 1001410, "Следующая Глава" },
		{ 1001411, "Фонтан" },
		{ 1001501, "Купить" },
		{ 1001502, "Подобрать" },
		{ 1001503, "Войти" },
		{ 1001504, "Использовать" },
		{ 1001505, "Взаимодействовать" },
		{ 1001506, "Открыть" },
		{ 1001507, "Разговаривать" },
		{ 1001601, "Обычное" },
		{ 1001602, "Редкое" },
		{ 1001603, "Эпическое" },
		{ 1001604, "Уникальное" },
		{ 1001701, "Секретный Лагерь" },
		{ 1001702, "Лес Реликвий" },
		{ 1001703, "Крепость Вечности" },
		{ 1001704, "Паломнический Проход" },
		{ 1001705, "Бездна Древности" },
		{ 1001706, "Древний Трон" },
		{ 1001801, "Стрелять" },
		{ 1001802, "Использовать Зелье (Удерживать)" },
		{ 1001803, "Открыть/Закрыть Инвентарь" },
		{ 1001804, "Двигаться" },
		{ 1001805, "Сменить Жезл" },
		{ 1001806, "" },
		{ 1001807, "" },
		{ 1001808, "" },
		{ 1001901, "Скорость Движения" },
		{ 1001902, "Реген. Маны" },
		{ 1002001, "Уклонение" },
		{ 1002002, "Иммунитет" },
		{ 1002003, "Недопустимо" },
		{ 1002004, "Улучшить Реликвию" },
		{ 1002005, "Поглощено" },
		{ 1002006, "Увеличение Урона" },
		{ 1002007, "Проклятие Снято" },
		{ 1002008, " Выросло" },
		{ 1002009, "Новое Зелье" },
		{ 1002010, "Нет Реликвий" },
		{ 1002011, "Адава Керавда улучшено до Ур." },
		{ 1002012, "Адава Керавда достигло Макс. Ур." },
		{ 1002013, "Убийства" },
		{ 1002014, "Недостаточно Слотов" },
		{ 1002015, "Невидимый" },
		{ 1002016, "Захвачен" },
		{ 1002017, "Долгое нажатие чтобы отменить эффект" },
		{ 1002018, "В Сек. +" },
		{ 1002019, "Нет заклинаний для каста" },
		{ 1002020, "Неудаляемое" },
		{ 1002101, "Исследование" },
		{ 1002102, "Наборы" },
		{ 1002103, "Условие Открытия" },
		{ 1002104, "Открыто" },
		{ 1002105, "Улучшить" },
		{ 1002106, "Открыть" },
		{ 1002201, "Ресурс" },
		{ 1002202, "Реликвия" },
		{ 1002203, "Заклинания" },
		{ 1002204, "Жезлы" },
		{ 1002205, "Заклинание Снаряд" },
		{ 1002206, "Заклинание Призыв" },
		{ 1002207, "Заклинание Усилитель" },
		{ 1002208, "Заклинание Пассивное" },
		{ 1002209, "Зелья" },
		{ 1002210, "Проклятия" },
		{ 1002301, "Уничтожен" },
		{ 1002401, "Заклинания" },
		{ 1002402, "Жезлы" },
		{ 1002403, "Сброс" },
		{ 1002404, "Уровень +" },
		{ 1002405, "Уровень ++" },
		{ 1002406, "Тренировочная Площадка" },
		{ 1002407, "Получено Заклинание" },
		{ 1002501, "Скоро Будет" },
		{ 1002502, "Держи курсор над пустым пространством, чтобы использовать зелье" },
		{ 1002503, "Недостаточно HP" },
		{ 1002601, "Нормальная" },
		{ 1002602, "Тяжелая" },
		{ 1002603, "Кошмар" },
		{ 1002604, "Нажми еще раз чтобы начать!" },
		{ 1002611, "HP Монстров увеличено" },
		{ 1002612, "Монстры становятся более агрессивными" },
		{ 1002613, "Новая Локация: string1" },
		{ 1002614, "HP Монстров значительно увеличено" },
		{ 1002615, "Монстры становятся супер агрессивными" },
		{ 1002616, "Новая Локация: string1 (В разработке)" },
		{ 1002617, "Магические Кристаллы и Древняя Кровь +int1%" },
		{ 1002701, "Влияет на все доступные заклинания справа" },
		{ 1002702, "Постоянный эффект пока в жезле" },
		{ 1002703, "Влияет на все снаряды справа" },
		{ 1002704, "Влияет на всех призываемых существ справа" },
		{ 1002705, "Невозможно улучшить" },
		{ 1002706, "Невозможно перековать" },
		{ 1002707, "Невозможно улучшить и перековать" },
		{ 1002708, "Внешний вид реликвии можно отключить в настройках." },
		{ 1002709, "Уникальный эффект: использование нескольких заклинаний с одинаковым названием, будет использовать только самое сильное из них" },
		{ 1002801, "Чувствую себя непобедимым!" },
		{ 1002802, "Оч круто!!" },
		{ 1002803, "Что ж…" },
		{ 1002804, "Зачем утруждать себя выбором?" },
		{ 1002805, "Смогу ли я сделать это с закрытыми глазами?" },
		{ 1002806, "Монстр: И как мне выиграть это?" },
		{ 1002807, "Ора ора ора ора" },
		{ 1002808, "Муда муда муда муда" },
		{ 1002809, "Это неожиданно." },
		{ 1002810, "Это что, живой чат?" },
		{ 1002811, "Цкр" },
		{ 1002812, "Мило (╯3╰)" },
		{ 1002813, "Никогда не стоит недооценивать симпатичную девушку." },
		{ 1002814, "Беру свои слова обратно, теперь мне нравится это." },
		{ 1002815, "(*❦ω❦)" },
		{ 1002816, "Выглядит не очень круто." },
		{ 1002817, "Теперь я должен играть" },
		{ 1002818, "Задержите любого, кто делает рискованные комментарии." },
		{ 1002819, "Убери руки, это мое!" },
		{ 1002820, "Магическая девушка?" },
		{ 1002901, "Разблокированные заклинания благодаря исследованию ихора" },
		{ 1002902, "Потрясно" },
		{ 1003001, "Предопреждение Светочувствительным Людям" },
		{ 1003002, "У очень небольшого процента людей может начаться судорога при воздействии определенных визуальных образов, включая мигающие огни или узоры, которые могут появляться в видеоиграх. Даже у людей, у которых никогда не было судорог или эпилепсии, может возникнуть недиагностированное заболевание, которое может вызвать эти \"светочувствительные эпилептические припадки\" во время игры в видеоигры. При появлении любых симптомов немедленно прекратите игру и обратитесь к врачу." },
		{ 1003101, "Лидерборд" },
		{ 1003102, "Местный Рейтинг" },
		{ 1003103, "Рейтинг Среди Друзей Steam" },
		{ 1003104, "Имя" },
		{ 1003105, "Ранг" },
		{ 1003106, "Время" },
		{ 1003107, "Дата Завершения" },
		{ 1003108, "Нормальная Сложность" },
		{ 1003109, "Тяжелая Сложность" },
		{ 1003110, "Кошмарная Сложность (v0.8)" },
		{ 1003111, "Время Завершения" },
		{ 1003201, "Сохранить Изображение" },
		{ 1003202, "Удалить" },
		{ 1003203, "Сложность" },
		{ 1003204, "Нормальная" },
		{ 1003205, "Тяжелая" },
		{ 1003206, "Кошмар" },
		{ 1003207, "Файлы не поддерживаются данной версией" },
		{ 1003208, "Не найдено рекордов игры среди друзей" },
		{ 1003209, "Не подключено к Steam" },
		{ 1003210, "Загрузка…" },
		{ 1003211, "Повтор" },
		{ 1003212, "Ошибка загрузки! Пожалуйста проверьте подключение к серверам Steam или повторите." },
		{ 1003213, "Не найдено локальных рекордов" },
		{ 1003301, "Активация Заклинаний" },
		{ 1003302, "Долгое нажатие для активации" },
		{ 1003303, "Добавляет следующие заклинания в приключении после активации" },
		{ 1003304, "Добавляет следующие реликвии в приключении после активации" },
		{ 1003305, "Активировано" },
		{ 1003306, "Ты активировал следующие предметы." },
		{ 1003307, "Потрясно" },
		{ 1003308, "Добавлено в следующих приключениях." },
		{ 1003401, "Тип Джойстика" },
		{ 1003402, "Фиксированный Джойстик" },
		{ 1003403, "Плавающий Джойстик" },
		{ 1003404, "Следящий Джойстик" },
		{ 1003501, "Отключение Заклинаний" },
		{ 1003502, "Отключить это заклинание чтобы оно не появлялось в <color=#FF4C4C>этом приключении</color>." },
		{ 1003503, "или" },
		{ 1003504, "Осталось Отключений" },
		{ 1003505, "Бесплатные Попытки" },
		{ 1003601, "Продюсер" },
		{ 1003602, "Shujian Li" },
		{ 1003603, "Ведущий Художник" },
		{ 1003604, "Yubo Chen" },
		{ 1003605, "Дизайн и Программирование Заклинаний" },
		{ 1003606, "Zijun Wang" },
		{ 1003607, "Дизайн и Программирование Монстров" },
		{ 1003608, "Yifan Chen" },
		{ 1003609, "Арт" },
		{ 1003610, "Xinyi Liao" },
		{ 1003611, "Программирование и Оптимизация Заклинаний" },
		{ 1003612, "Yongkang Li" },
		{ 1003613, "Программирование и Планирование" },
		{ 1003614, "Yongning Han" },
		{ 1003615, "Анимации" },
		{ 1003616, "Pengfei Cui" },
		{ 1003617, "Издатель" },
		{ 1003618, "Bilibili Games" },
		{ 1003619, "Yang Yu" },
		{ 1003620, "Rongrong Lai" },
		{ 1003621, "Yueyue Wang" },
		{ 1003622, "Xiaopeng Liu" },
		{ 1003623, "Mengyu Li" },
		{ 1003624, "Jiahui Wang" },
		{ 1003625, "Jiaqi Yao" },
		{ 1003626, "Wei Cui" },
		{ 1003627, "Zhenhao Zhou" },
		{ 1003628, "Музыка" },
		{ 1003629, "Музыкальная тема лагеря:  Forest Walk от Alexander Nakarada | https://creatorchords.com" },
		{ 1003630, "Особая Благодарность" },
		{ 1003631, "Geyilang Yang" },
		{ 1003700, "Доп. Эффект: " },
		{ 1003701, "20% шанс, что атака Поп Кэта, превратится в мощную атаку бомбой с уроном, умноженным на bombDamage" },
		{ 1003702, "Череп Ктулху выращивает enhanceratio острых шипов, делая его более смертельным для врагов" },
		{ 1003703, "После каждой attackcount атаки, " },
		{ 1003704, "Его атака становится серией цепных атак, со скоростью атаки +attackspeed%" },
		{ 1003705, "Если в <color=#FFD700>Радиусе Эффекта</color> effectradium находятся враги, каждые time секунды столб будет наносить им урон в HpDamageRatio% от своего Макс. HP" },
		{ 1003706, "Каждые 9 кастов Гримуар будет автоматически телепортироваться в определенное место и использовать свою атаку <color=#00BFFF>одновременно</color> shootCount раз" }
	};

	public static readonly IReadOnlyDictionary<int, string> Story = new Dictionary<int, string>
	{
		{ 101, "А-а-а-а!!! Что, черт возьми, сейчас произошло?! Я увидел, как на меня несется поток белого вещества!" },
		{ 102, "Прошло столетие, и наконец, герой появляется." },
		{ 103, "Ох! Почему я слышу голоса внутри себя?" },
		{ 104, "Ты? Ты и есть герой? Ты выглядишь таким слабым, таким беспомощным, и в тебе нет ни намека на магию." },
		{ 105, "Эй, погоди-ка. Кто ты и почему ты внутри меня?" },
		{ 106, "Моя личность не имеет значения. А вот что имеет, так это ты, мой друг. Ты избранный" },
		{ 107, "Избранный?! Это означает что я главный герой? У меня будет свой гарем?" },
		{ 108, "Гарем? Что это?" },
		{ 109, "А, неважно. Это просто… эм, просто забудь об этом. Если я главный герой, то я требую, чтобы ты отправил меня домой. Мне еще надо покорить подземелья!" },
		{ 110, "Герой, ты теперь в мире, захваченном Древними Богами, где нарушена структура времени и пространства. И возможно, именно поэтому ты здесь." },
		{ 111, "Вернуться в свой мир будет нелегко. Но если ты сможешь победить Древних Богов, возможно, ты найдешь способ вернуться." },
		{ 112, "Поскольку я главный герой, то о чем мне вообще беспокоиться? Показывай дорогу!" },
		{ 201, "…" },
		{ 202, "Ты видела это? Он просто взял и вытащил жезл!" },
		{ 203, "Это всего лишь легенда… Виви." },
		{ 204, "Но учитель однажды сказал…" },
		{ 205, "Уф! Я не поверю ни в какую чушь про героя, пока он действительно не вернется живым!" },
		{ 301, "Раньше здесь был сад магов для медитации. Но теперь здесь только руины и эти свихнувшиеся монстры." },
		{ 302, "Надеюсь я не свихнусь." },
		{ 303, "<color=#FF00FF>Кристаллы</color> падающие с этих монстров, могут быть полезны. Собирая их, ты можешь усилить свою слабенькую ману." },
		{ 304, "Звучит немного странно." },
		{ 401, "Отлично, а ты быстро учишься." },
		{ 402, "Запомни, <color=#DDA300>Усилитель Заклинания</color> обычно находится слева от <color=#6CD0FF>Заклинания Снаряда</color>, только так <color=#DDA300>Усилитель Заклинания</color> может дать эффект." },
		{ 501, "Ха-ха, выглядит так, будто наш герой самую малость повержен." },
		{ 502, "Но почему он должен был встретить свой конец именно здесь?" },
		{ 601, "Погоди, он все еще дышит!" },
		{ 701, "Странно, почему я не вижу на нем ни единой царапины?" },
		{ 702, "Наверно умер от страха." },
		{ 801, "Кто вы двое? Пытаетесь воспользоваться мною пока я сплю?" },
		{ 802, "Кто будет пользоваться тобой? Невежественный идиот." },
		{ 803, "Герой, это такое облегчение - видеть, что с тобой все в порядке!" },
		{ 901, "Если тебе понадобится какая-либо помощь в борьбе с Древними Богами, то дай мне знать!" },
		{ 902, "Это очень любезно с вашей стороны." },
		{ 903, "Это моя обязанность. Учитель сказал нам помочь тому, кто сможет вытащить жезл" },
		{ 904, "Если ты найдешь немного <color=#FF00FF>Кристаллов</color> во время своего приключения, принеси их мне и я смогу улучшить твои способности." },
		{ 905, "Я думаю я уже нашел немного" },
		{ 906, "Фантастика, то что надо." },
		{ 1001, "Знаешь что? Было пророчество, в котором говорилось, что человек вытащивший жезл, станет героем, который спасет мир." },
		{ 1002, "А? Только что узнал." },
		{ 1003, "Если я убью его прямо сейчас, интересно, сбудется ли пророчество?" },
		{ 1004, "Э-э… приятно было познакомиться." },
		{ 1101, "Я попробовал кусочек, но даже и подозревать не мог, что эти паучьи лапки произведут такой эффект." },
		{ 1102, "Так-так! Это и есть тот герой, о котором вы все говорили?" },
		{ 1103, "Выглядит… не так, как в рассказах…" },
		{ 1104, "Да, он отлично бы слился с толпой" },
		{ 1105, "Добро пожаловать обратно, Герой! Тебе следует познакомиться с Лео. Он только что вернулся с приключения и возможно сможет помочь тебе." },
		{ 1201, "Лео раньше изучал природу, но с тех пор как наша родина была разрушена, он с головой ушел в исследование Древних Богов" },
		{ 1202, "Благодаря ему мы избежали встречи с монстрами и нашли это убежище. Возможно, его опыт - именно то, что тебе нужно" },
		{ 1301, "" },
		{ 1302, "" },
		{ 1303, "" },
		{ 1401, "Никогда не думал что увижу день, когда пророчество сбудется. Ты выглядишь… вполне неплохо." },
		{ 1402, "Я приму это за комплимент." },
		{ 1403, "Хорошо, если ты наткнешься на какую-нибудь <color=#FF4C4C>Древнюю Кровь</color> в своих путешествиях, пожалуйста передай ее мне для моих исследований." },
		{ 1404, "Я недавно изучал данный материал. Кажется он оказывает серьезное воздействие на растения и живых существ. Может оказаться полезным, кто знает." },
		{ 1501, "*Хнык* Я думала что уже никогда не найду здесь других людей. Я думала что мне уже конец." },
		{ 1502, "Они всегда говорили, что крепость неприступна, но кто знал, что монстры смогут пробраться?" },
		{ 1503, "Лагерь? Супер! Я отправлюсь туда прямо сейчас." },
		{ 1504, "Вот, я нашла это недавно. Надеюсь это поможет." },
		{ 1601,