Decompiled source of Bug Free Mistlands v1.0.0

plugins/Digitalroot.Valheim.BugFreeMistlands.dll

Decompiled 4 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
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;
using System.Threading;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Digitalroot.Modding.Framework.Common.Json;
using Digitalroot.Modding.Framework.Logging;
using Digitalroot.Modding.Framework.Names.Vanilla;
using Digitalroot.Modding.Framework.Utils;
using HarmonyLib;
using JetBrains.Annotations;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using SimpleJson;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Digitalroot.Valheim.BugFreeMistlands")]
[assembly: AssemblyDescription("Bug Free Mistlands")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Digitalroot Technologies")]
[assembly: AssemblyProduct("Digitalroot Valheim Mods")]
[assembly: AssemblyCopyright("Copyright © Digitalroot Technologies 2021 - 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("3ccc4dc1-5b17-47c1-b996-ca03b8639a61")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Digitalroot.Valheim.BugFreeMistlands
{
	[BepInPlugin("digitalroot.mods.bugfreemistlands", "Bug Free Mistlands", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class Main : BaseUnityPlugin, ITraceableLogging
	{
		internal static class PluginConfigSection
		{
			internal const string General = "General";

			internal const string Advanced = "Advanced";
		}

		private Harmony _harmony;

		public const string EvilDvergerPreFabName = "bfml_EvilDverger";

		public const string EvilDvergerMagePreFabName = "bfml_EvilDvergerMage";

		public const string EvilBonemassPreFabName = "bfml_EvilBonemass";

		public const string QueenAltarName = "offeraltar_queen";

		private static readonly string[] EvilBonemassParticlePaths = new string[3] { "Visual/particles/ooz", "Visual/particles/wetsplsh", "Visual/particles/wetsplsh (1)" };

		private const string EvilBonemassLightPath = "Visual/Point light";

		private const string EvilBonemassHeadsPath = "Visual/model/heads";

		private const string EvilBonemassBodyPath = "Visual/model/bonemass";

		private const string EvilBonemassMudMaterialName = "Bonemass_mud";

		public const string Version = "1.0.0";

		public const string Name = "Bug Free Mistlands";

		public const string Guid = "digitalroot.mods.bugfreemistlands";

		public const string Namespace = "Digitalroot.Valheim.BugFreeMistlands";

		public static Main Instance { get; private set; }

		[UsedImplicitly]
		public static ConfigEntry<int> NexusId { get; private set; }

		public string Source => "Digitalroot.Valheim.BugFreeMistlands";

		public bool EnableTrace { get; }

		public Main()
		{
			Instance = this;
			EnableTrace = false;
		}

		[UsedImplicitly]
		private void Awake()
		{
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Expected O, but got Unknown
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Expected O, but got Unknown
			try
			{
				if (Instance.EnableTrace)
				{
					Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name);
				}
				NexusId = ((BaseUnityPlugin)this).Config.Bind<int>("General", "NexusID", 4718, new ConfigDescription("Nexus mod ID for updates", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					Browsable = false,
					ReadOnly = true
				} }));
				SynchronizationManager.OnConfigurationSynchronized += SynchronizationManager_OnConfigurationSynchronized;
				CreatureManager.OnVanillaCreaturesAvailable += CreatureManager_OnVanillaCreaturesAvailable;
				_harmony = Harmony.CreateAndPatchAll(typeof(Main).Assembly, "digitalroot.mods.bugfreemistlands");
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
		}

		[UsedImplicitly]
		private void OnDestroy()
		{
			try
			{
				if (Instance.EnableTrace)
				{
					Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name);
				}
				Harmony harmony = _harmony;
				if (harmony != null)
				{
					harmony.UnpatchSelf();
				}
				SynchronizationManager.OnConfigurationSynchronized -= SynchronizationManager_OnConfigurationSynchronized;
				CreatureManager.OnVanillaCreaturesAvailable -= CreatureManager_OnVanillaCreaturesAvailable;
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
		}

		private CustomCreature CreateEvilBonemassPrefab()
		{
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: 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_00db: 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_00f7: Expected O, but got Unknown
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Expected O, but got Unknown
			GameObject val = PrefabManager.Instance.CreateClonedPrefab("bfml_EvilBonemass", BossNames.Bonemass);
			GameObject prefab = Cache.GetPrefab<GameObject>(BossNames.SeekerQueen);
			Character component = prefab.GetComponent<Character>();
			Humanoid component2 = val.GetComponent<Humanoid>();
			((Character)component2).m_boss = component.m_boss;
			((Character)component2).m_bossEvent = component.m_bossEvent;
			((Character)component2).m_defeatSetGlobalKey = component.m_defeatSetGlobalKey;
			CharacterDrop val2 = default(CharacterDrop);
			if (!val.TryGetComponent<CharacterDrop>(ref val2))
			{
				val2 = val.AddComponent<CharacterDrop>();
			}
			val2.m_drops = ((IEnumerable<Drop>)prefab.GetComponent<CharacterDrop>().m_drops).Select((Func<Drop, Drop>)((Drop d) => new Drop
			{
				m_prefab = d.m_prefab,
				m_amountMin = d.m_amountMin,
				m_amountMax = d.m_amountMax,
				m_chance = d.m_chance,
				m_onePerPlayer = d.m_onePerPlayer,
				m_levelMultiplier = d.m_levelMultiplier,
				m_dontScale = d.m_dontScale
			})).ToList();
			((Character)component2).m_health = component.m_health;
			MakeBonemassEvil(val, Color.red);
			RecolorBonemassBody(val, Color.red);
			ShrinkBonemass(val, 0.5f);
			val.GetComponent<BaseAI>().m_pathAgentType = (AgentType)2;
			return new CustomCreature(val, true, new CreatureConfig
			{
				Name = "$bfml_evil_bonemass",
				Faction = (Faction)8
			});
		}

		private CustomCreature CreateEvilDvergerPrefab()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Expected O, but got Unknown
			//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_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Expected O, but got Unknown
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: 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_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Expected O, but got Unknown
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Expected O, but got Unknown
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Expected O, but got Unknown
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Expected O, but got Unknown
			GameObject obj = PrefabManager.Instance.CreateClonedPrefab("bfml_EvilDverger", EnemyNames.Dverger);
			SetEyeColorToEvil(obj);
			CreatureConfig val = new CreatureConfig();
			val.Name = "$bfml_evil_dverger";
			val.Faction = (Faction)9;
			val.UseCumulativeLevelEffects = true;
			val.Group = string.Empty;
			val.DropConfigs = (DropConfig[])(object)new DropConfig[7]
			{
				new DropConfig
				{
					Chance = 80f,
					Item = ItemDropNames.Carapace,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 100f,
					Item = ItemDropNames.BugMeat,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 5f,
					Item = ItemDropNames.TrophySeeker,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 50f,
					Item = ItemDropNames.Coins,
					LevelMultiplier = false,
					MinAmount = 10,
					MaxAmount = 25
				},
				new DropConfig
				{
					Chance = 5f,
					Item = ItemDropNames.TrophyTick,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 50f,
					Item = ItemDropNames.GiantBloodSack,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 10f,
					Item = ItemDropNames.RoyalJelly,
					LevelMultiplier = false,
					MaxAmount = 1
				}
			};
			val.SpawnConfigs = (SpawnConfig[])(object)new SpawnConfig[1]
			{
				new SpawnConfig
				{
					Biome = (Biome)512,
					BiomeArea = (BiomeArea)2,
					HuntPlayer = false,
					MaxSpawned = 2,
					Name = "evil_dverger_spawn"
				}
			};
			return new CustomCreature(obj, true, val);
		}

		private CustomCreature CreateEvilDvergerMagePrefab()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Expected O, but got Unknown
			//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_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Expected O, but got Unknown
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Expected O, but got Unknown
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Expected O, but got Unknown
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Expected O, but got Unknown
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Expected O, but got Unknown
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Expected O, but got Unknown
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Expected O, but got Unknown
			GameObject obj = PrefabManager.Instance.CreateClonedPrefab("bfml_EvilDvergerMage", EnemyNames.DvergerMage);
			SetEyeColorToEvil(obj);
			CreatureConfig val = new CreatureConfig();
			val.Name = "$bfml_evil_dverger_mage";
			val.Faction = (Faction)9;
			val.UseCumulativeLevelEffects = true;
			val.Group = string.Empty;
			val.DropConfigs = (DropConfig[])(object)new DropConfig[8]
			{
				new DropConfig
				{
					Chance = 90f,
					Item = ItemDropNames.Carapace,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 100f,
					Item = ItemDropNames.BugMeat,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 85f,
					Item = ItemDropNames.Mandible,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 5f,
					Item = ItemDropNames.TrophySeekerBrute,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 5f,
					Item = ItemDropNames.TrophyGjall,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 50f,
					Item = ItemDropNames.Coins,
					LevelMultiplier = false,
					MinAmount = 10,
					MaxAmount = 30
				},
				new DropConfig
				{
					Chance = 50f,
					Item = ItemDropNames.Bilebag,
					LevelMultiplier = false,
					MaxAmount = 1
				},
				new DropConfig
				{
					Chance = 10f,
					Item = ItemDropNames.RoyalJelly,
					LevelMultiplier = false,
					MaxAmount = 2
				}
			};
			val.SpawnConfigs = (SpawnConfig[])(object)new SpawnConfig[1]
			{
				new SpawnConfig
				{
					Biome = (Biome)512,
					BiomeArea = (BiomeArea)2,
					HuntPlayer = false,
					MaxSpawned = 1,
					Name = "evil_dverger_mage_spawn"
				}
			};
			return new CustomCreature(obj, true, val);
		}

		private void CreatureManager_OnVanillaCreaturesAvailable()
		{
			try
			{
				if (Instance.EnableTrace)
				{
					Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name);
				}
				CreatureManager.Instance.AddCreature(CreateEvilDvergerPrefab());
				CreatureManager.Instance.AddCreature(CreateEvilDvergerMagePrefab());
				CreatureManager.Instance.AddCreature(CreateEvilBonemassPrefab());
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
			finally
			{
				CreatureManager.OnVanillaCreaturesAvailable -= CreatureManager_OnVanillaCreaturesAvailable;
			}
		}

		public static OfferingBowl FindClosestQueenAltar(Vector3 position, float maxDistance = 100f)
		{
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: 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_0089: Unknown result type (might be due to invalid IL or missing references)
			if (Instance.EnableTrace)
			{
				Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name);
			}
			OfferingBowl val = null;
			float num = maxDistance * maxDistance;
			OfferingBowl[] array = Object.FindObjectsByType<OfferingBowl>((FindObjectsSortMode)0);
			foreach (OfferingBowl val2 in array)
			{
				if (!(((Object)val2).name != "offeraltar_queen"))
				{
					Vector3 val3 = ((Component)val2).transform.position - position;
					float sqrMagnitude = ((Vector3)(ref val3)).sqrMagnitude;
					if (sqrMagnitude < num)
					{
						num = sqrMagnitude;
						val = val2;
					}
				}
			}
			if (Instance.EnableTrace)
			{
				Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " [" + (((val != null) ? ((Object)val).name : null) ?? "Null") + "]");
			}
			return val;
		}

		private static void MakeBonemassEvil(GameObject prefab, Color color)
		{
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				Transform transform = prefab.transform;
				string[] evilBonemassParticlePaths = EvilBonemassParticlePaths;
				foreach (string text in evilBonemassParticlePaths)
				{
					Transform val = transform.Find(text);
					if ((Object)(object)val == (Object)null)
					{
						Log.Warning(Instance, "Main.MakeBonemassEvil [" + ((Object)prefab).name + "] missing '" + text + "'");
					}
					else
					{
						ParticleSystem[] componentsInChildren = ((Component)val).GetComponentsInChildren<ParticleSystem>(true);
						for (int j = 0; j < componentsInChildren.Length; j++)
						{
							TintParticleSystem(componentsInChildren[j], color);
						}
					}
				}
				Transform val2 = transform.Find("Visual/Point light");
				Light val3 = default(Light);
				if ((Object)(object)val2 != (Object)null && ((Component)val2).TryGetComponent<Light>(ref val3))
				{
					val3.color = color;
				}
				else
				{
					Log.Warning(Instance, "Main.MakeBonemassEvil [" + ((Object)prefab).name + "] missing Light on 'Visual/Point light'");
				}
				Transform val4 = transform.Find("Visual/model/heads");
				if ((Object)(object)val4 != (Object)null)
				{
					((Component)val4).gameObject.SetActive(false);
				}
				else
				{
					Log.Warning(Instance, "Main.MakeBonemassEvil [" + ((Object)prefab).name + "] missing 'Visual/model/heads'");
				}
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
		}

		private static MinMaxGradient Recolor(MinMaxGradient source, Color color)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected I4, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			ParticleSystemGradientMode mode = ((MinMaxGradient)(ref source)).mode;
			switch ((int)mode)
			{
			case 0:
				return new MinMaxGradient(Tint(((MinMaxGradient)(ref source)).color, color));
			case 2:
				return new MinMaxGradient(Tint(((MinMaxGradient)(ref source)).colorMin, color), Tint(((MinMaxGradient)(ref source)).colorMax, color));
			case 1:
				return new MinMaxGradient(Recolor(((MinMaxGradient)(ref source)).gradient, color));
			case 3:
				return new MinMaxGradient(Recolor(((MinMaxGradient)(ref source)).gradientMin, color), Recolor(((MinMaxGradient)(ref source)).gradientMax, color));
			case 4:
			{
				MinMaxGradient result = default(MinMaxGradient);
				((MinMaxGradient)(ref result))..ctor(Recolor(((MinMaxGradient)(ref source)).gradient, color));
				((MinMaxGradient)(ref result)).mode = (ParticleSystemGradientMode)4;
				return result;
			}
			default:
				return source;
			}
		}

		private static Gradient Recolor(Gradient source, Color color)
		{
			//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)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			Gradient val = new Gradient
			{
				mode = source.mode
			};
			val.SetKeys(((IEnumerable<GradientColorKey>)source.colorKeys).Select((Func<GradientColorKey, GradientColorKey>)((GradientColorKey k) => new GradientColorKey(Tint(k.color, color), k.time))).ToArray(), source.alphaKeys);
			return val;
		}

		private static void RecolorBonemassBody(GameObject prefab, Color color)
		{
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Expected O, but got Unknown
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: 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)
			try
			{
				Transform val = prefab.transform.Find("Visual/model/bonemass");
				Renderer val2 = default(Renderer);
				if ((Object)(object)val == (Object)null || !((Component)val).TryGetComponent<Renderer>(ref val2))
				{
					Log.Warning(Instance, "Main.RecolorBonemassBody [" + ((Object)prefab).name + "] missing Renderer on 'Visual/model/bonemass'");
					return;
				}
				Material[] sharedMaterials = val2.sharedMaterials;
				int num = Array.FindIndex(sharedMaterials, (Material m) => (Object)(object)m != (Object)null && ((Object)m).name == "Bonemass_mud");
				if (num < 0)
				{
					Log.Warning(Instance, "Main.RecolorBonemassBody [" + ((Object)prefab).name + "] missing material 'Bonemass_mud'");
					return;
				}
				Material val3 = new Material(sharedMaterials[num])
				{
					name = ((Object)sharedMaterials[num]).name + "_evil"
				};
				string[] array = new string[3] { "_FlowColor", "_EmissiveColor", "_SSS" };
				foreach (string text in array)
				{
					if (val3.HasProperty(text))
					{
						val3.SetColor(text, Tint(val3.GetColor(text), color));
					}
				}
				float targetHue = default(float);
				float num3 = default(float);
				float num4 = default(float);
				Color.RGBToHSV(color, ref targetHue, ref num3, ref num4);
				array = new string[2] { "_MainTex", "_FlowTexture" };
				foreach (string text2 in array)
				{
					if (!val3.HasProperty(text2))
					{
						continue;
					}
					Texture texture = val3.GetTexture(text2);
					if (!((Object)(object)texture == (Object)null))
					{
						Texture2D val4 = RecolorTextureHueBand(texture, targetHue, 0.15f, 0.45f, 0.15f);
						if ((Object)(object)val4 != (Object)null)
						{
							val3.SetTexture(text2, (Texture)(object)val4);
						}
					}
				}
				sharedMaterials[num] = val3;
				val2.sharedMaterials = sharedMaterials;
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
		}

		private static Texture2D RecolorTextureHueBand(Texture source, float targetHue, float minHue, float maxHue, float minSaturation)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Invalid comparison between Unknown and I4
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Expected O, but got Unknown
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			if ((int)SystemInfo.graphicsDeviceType == 4)
			{
				return null;
			}
			RenderTexture temporary = RenderTexture.GetTemporary(source.width, source.height, 0, (RenderTextureFormat)0, (RenderTextureReadWrite)2);
			RenderTexture active = RenderTexture.active;
			try
			{
				Graphics.Blit(source, temporary);
				RenderTexture.active = temporary;
				Texture2D val = new Texture2D(source.width, source.height, (TextureFormat)4, true, false)
				{
					name = ((Object)source).name + "_evil",
					wrapMode = source.wrapMode,
					filterMode = source.filterMode,
					anisoLevel = source.anisoLevel
				};
				val.ReadPixels(new Rect(0f, 0f, (float)source.width, (float)source.height), 0, 0);
				Color32[] pixels = val.GetPixels32();
				float num = default(float);
				float num2 = default(float);
				float num3 = default(float);
				for (int i = 0; i < pixels.Length; i++)
				{
					Color val2 = Color32.op_Implicit(pixels[i]);
					Color.RGBToHSV(val2, ref num, ref num2, ref num3);
					if (!(num < minHue) && !(num > maxHue) && !(num2 < minSaturation))
					{
						Color val3 = Color.HSVToRGB(targetHue, num2, num3);
						val3.a = val2.a;
						pixels[i] = Color32.op_Implicit(val3);
					}
				}
				val.SetPixels32(pixels);
				val.Apply(true, false);
				val.Compress(true);
				val.Apply(false, true);
				return val;
			}
			finally
			{
				RenderTexture.active = active;
				RenderTexture.ReleaseTemporary(temporary);
			}
		}

		public static IEnumerator ReplaceSeekerQueen(Humanoid queen, ZNetView queenView, float altarTimeoutSeconds = 30f)
		{
			while ((Object)(object)queenView != (Object)null && queenView.IsValid() && !queenView.IsOwner())
			{
				yield return (object)new WaitForSeconds(0.5f);
			}
			if ((Object)(object)queenView == (Object)null || !queenView.IsValid())
			{
				yield break;
			}
			Vector3 queenPosition = ((Component)queen).transform.position;
			if (Instance.EnableTrace)
			{
				Log.Trace(Instance, "Main.ReplaceSeekerQueen [Removing " + BossNames.SeekerQueen + "]");
			}
			ZNetScene.instance.Destroy(((Component)queen).gameObject);
			float deadline = Time.time + altarTimeoutSeconds;
			OfferingBowl val;
			while ((Object)(object)(val = FindClosestQueenAltar(queenPosition)) == (Object)null || (Object)(object)val.m_nview == (Object)null || !val.m_nview.IsValid())
			{
				if (Time.time > deadline)
				{
					yield break;
				}
				yield return (object)new WaitForSeconds(0.5f);
			}
			val.m_nview.ClaimOwnership();
			if (!val.IsBossSpawnQueued())
			{
				Vector3 val2 = default(Vector3);
				if (val.CanSpawnBoss(val.GetSpawnPosition(), ref val2))
				{
					val.SpawnBoss(val2);
				}
				else
				{
					Log.Warning(Instance, string.Format("{0} at {1} found no valid boss spawn point", "offeraltar_queen", ((Component)val).transform.position));
				}
			}
		}

		private static void SetEyeColorToEvil(GameObject prefab)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0093: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				LevelEffects componentInChildren = prefab.GetComponentInChildren<LevelEffects>(true);
				Material[] sharedMaterials = componentInChildren.m_mainRender.sharedMaterials;
				Material val = new Material(sharedMaterials[0])
				{
					name = ((Object)sharedMaterials[0]).name + "_evil"
				};
				val.EnableKeyword("_EMISSION");
				val.SetColor("_EmissionColor", Color.red * 2f);
				sharedMaterials[0] = val;
				componentInChildren.m_mainRender.sharedMaterials = sharedMaterials;
				foreach (LevelSetup levelSetup in componentInChildren.m_levelSetups)
				{
					levelSetup.m_setEmissiveColor = true;
					levelSetup.m_emissiveColor = Color.red * 2f;
				}
			}
			catch (Exception e)
			{
				Log.Error(Instance, e);
			}
		}

		private static void ShrinkBonemass(GameObject prefab, float factor)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Expected O, but got Unknown
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			Transform transform = prefab.transform;
			CapsuleCollider val = default(CapsuleCollider);
			if (prefab.TryGetComponent<CapsuleCollider>(ref val))
			{
				CapsuleCollider obj = val;
				obj.center *= factor;
				CapsuleCollider obj2 = val;
				obj2.height *= factor;
				CapsuleCollider obj3 = val;
				obj3.radius *= factor;
			}
			foreach (Transform item in transform)
			{
				Transform val2 = item;
				if (((Object)val2).name == "Visual")
				{
					val2.localScale *= factor;
					val2.localPosition *= factor;
				}
				else
				{
					val2.localPosition *= factor;
					val2.localScale *= factor;
				}
			}
		}

		private void SynchronizationManager_OnConfigurationSynchronized(object sender, ConfigurationSynchronizationEventArgs e)
		{
			try
			{
				if (Instance.EnableTrace)
				{
					Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name);
				}
			}
			catch (Exception e2)
			{
				Log.Error(Instance, e2);
			}
		}

		private static Color Tint(Color source, Color target)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			float num = default(float);
			float num2 = default(float);
			float num3 = default(float);
			Color.RGBToHSV(target, ref num, ref num2, ref num3);
			float num4 = default(float);
			float num5 = default(float);
			Color.RGBToHSV(source, ref num3, ref num4, ref num5);
			Color result = Color.HSVToRGB(num, num2, num5, true);
			result.a = source.a;
			return result;
		}

		private static void TintParticleSystem(ParticleSystem ps, Color color)
		{
			//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_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: 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_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_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			MainModule main = ps.main;
			((MainModule)(ref main)).startColor = Recolor(((MainModule)(ref main)).startColor, color);
			ColorOverLifetimeModule colorOverLifetime = ps.colorOverLifetime;
			if (((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled)
			{
				((ColorOverLifetimeModule)(ref colorOverLifetime)).color = Recolor(((ColorOverLifetimeModule)(ref colorOverLifetime)).color, color);
			}
			ColorBySpeedModule colorBySpeed = ps.colorBySpeed;
			if (((ColorBySpeedModule)(ref colorBySpeed)).enabled)
			{
				((ColorBySpeedModule)(ref colorBySpeed)).color = Recolor(((ColorBySpeedModule)(ref colorBySpeed)).color, color);
			}
			ParticleSystemRenderer val = default(ParticleSystemRenderer);
			if (!((Component)ps).TryGetComponent<ParticleSystemRenderer>(ref val) || (Object)(object)((Renderer)val).sharedMaterial == (Object)null)
			{
				return;
			}
			Material val2 = new Material(((Renderer)val).sharedMaterial)
			{
				name = ((Object)((Renderer)val).sharedMaterial).name + "_evil"
			};
			string[] array = new string[2] { "_Color", "_TintColor" };
			foreach (string text in array)
			{
				if (val2.HasProperty(text))
				{
					val2.SetColor(text, Tint(val2.GetColor(text), color));
				}
			}
			if (val2.HasProperty("_EmissionColor"))
			{
				Color color2 = val2.GetColor("_EmissionColor");
				float maxColorComponent = ((Color)(ref color2)).maxColorComponent;
				if (maxColorComponent > 0f)
				{
					val2.SetColor("_EmissionColor", new Color(color.r, color.g, color.b) * maxColorComponent);
				}
			}
			((Renderer)val).sharedMaterial = val2;
		}
	}
	[UsedImplicitly]
	public class Patch
	{
		[HarmonyPatch(typeof(SpawnSystem))]
		public class PatchSpawnSystem
		{
			[HarmonyPostfix]
			[HarmonyPatch(typeof(SpawnSystem), "Awake")]
			private static void PostfixAwake(SpawnSystem __instance, ZNetView ___m_nview, List<SpawnSystemList> ___m_spawnLists)
			{
				try
				{
					if ((Object)(object)___m_nview == (Object)null || !___m_nview.IsValid() || ___m_spawnLists.Count <= 0)
					{
						return;
					}
					foreach (SpawnSystemList ___m_spawnList in ___m_spawnLists)
					{
						if (!(((Object)___m_spawnList).name == "_SpawnList_mistlands"))
						{
							continue;
						}
						foreach (SpawnData spawner in ___m_spawnList.m_spawners)
						{
							switch (((Object)spawner.m_prefab).name)
							{
							case "Seeker":
							case "Gjall":
							case "SeekerBrute":
							case "SeekerBrood":
							case "Tick":
								if (spawner.m_enabled)
								{
									spawner.m_enabled = false;
								}
								break;
							}
						}
					}
				}
				catch (Exception e)
				{
					Log.Error(Main.Instance, e);
				}
			}
		}

		[HarmonyPatch(typeof(CreatureSpawner))]
		public class PatchCreatureSpawner
		{
			[HarmonyPostfix]
			[HarmonyPatch(typeof(CreatureSpawner), "Awake")]
			private static void PostfixAwake(CreatureSpawner __instance, ZNetView ___m_nview, ref GameObject ___m_creaturePrefab)
			{
				try
				{
					if ((Object)(object)___m_nview == (Object)null || !___m_nview.IsValid() || (Object)(object)___m_creaturePrefab == (Object)null)
					{
						return;
					}
					switch (((Object)___m_creaturePrefab).name)
					{
					case "Seeker":
					{
						GameObject creaturePrefab2 = CreatureManager.Instance.GetCreaturePrefab("bfml_EvilDverger");
						if ((Object)(object)creaturePrefab2 != (Object)null)
						{
							___m_creaturePrefab = creaturePrefab2;
						}
						break;
					}
					case "Gjall":
					case "SeekerBrute":
					{
						GameObject creaturePrefab = CreatureManager.Instance.GetCreaturePrefab("bfml_EvilDvergerMage");
						if ((Object)(object)creaturePrefab != (Object)null)
						{
							___m_creaturePrefab = creaturePrefab;
						}
						break;
					}
					case "SeekerQueen":
						if (Main.Instance.EnableTrace)
						{
							Log.Trace(Main.Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " [" + ((Object)__instance).name + "] " + ((Object)___m_creaturePrefab).name);
						}
						break;
					case "SeekerBrood":
						break;
					case "Tick":
						break;
					}
				}
				catch (Exception e)
				{
					Log.Error(Main.Instance, e);
				}
			}

			[HarmonyPrefix]
			[HarmonyPatch(typeof(CreatureSpawner), "Spawn")]
			private static bool PrefixSpawn(CreatureSpawner __instance, ZNetView ___m_nview, GameObject ___m_creaturePrefab)
			{
				try
				{
					if ((Object)(object)___m_nview == (Object)null || !___m_nview.IsValid() || (Object)(object)___m_creaturePrefab == (Object)null)
					{
						return true;
					}
					switch (((Object)___m_creaturePrefab).name)
					{
					case "Seeker":
					case "Gjall":
					case "SeekerBrute":
					case "SeekerBrood":
					case "Tick":
					case "SeekerQueen":
						return false;
					}
				}
				catch (Exception e)
				{
					Log.Error(Main.Instance, e);
				}
				return true;
			}
		}

		[HarmonyPatch(typeof(Humanoid))]
		public class PatchHumanoid
		{
			[HarmonyPostfix]
			[HarmonyPatch(typeof(Humanoid), "Awake")]
			private static void PostfixAwake(Humanoid __instance, ZNetView ___m_nview)
			{
				try
				{
					if ((Object)(object)___m_nview == (Object)null || !___m_nview.IsValid() || ((Character)__instance).IsPlayer())
					{
						return;
					}
					switch (((Character)__instance).m_name)
					{
					case "$enemy_seeker":
					case "$enemy_tick":
					case "$enemy_gjall":
					case "$enemy_babyseeker":
					case "$enemy_seekerbrute":
						if (!___m_nview.HasOwner())
						{
							___m_nview.ClaimOwnership();
						}
						if (___m_nview.IsOwner())
						{
							ZNetScene.instance.Destroy(((Component)__instance).gameObject);
						}
						break;
					case "$enemy_seekerqueen":
						if (!___m_nview.HasOwner())
						{
							___m_nview.ClaimOwnership();
						}
						((MonoBehaviour)Main.Instance).StartCoroutine(Main.ReplaceSeekerQueen(__instance, ___m_nview));
						break;
					}
				}
				catch (Exception e)
				{
					Log.Error(Main.Instance, e);
				}
			}
		}

		[HarmonyPatch(typeof(OfferingBowl))]
		public class PatchOfferingBowl
		{
			[HarmonyPostfix]
			[HarmonyPatch(typeof(OfferingBowl), "Awake")]
			private static void PostfixAwake(OfferingBowl __instance)
			{
				try
				{
					if ((Object)(object)__instance.m_bossPrefab == (Object)null || !(((Object)__instance.m_bossPrefab).name == "SeekerQueen"))
					{
						return;
					}
					GameObject creaturePrefab = CreatureManager.Instance.GetCreaturePrefab("bfml_EvilBonemass");
					if ((Object)(object)creaturePrefab == (Object)null)
					{
						Log.Error(Main.Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " bfml_EvilBonemass is not registered; leaving " + BossNames.SeekerQueen + " on " + ((Object)__instance).name);
						return;
					}
					if (Main.Instance.EnableTrace)
					{
						Log.Trace(Main.Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " [" + ((Object)__instance).GetName() + "] Replacing '" + BossNames.SeekerQueen + "' with 'bfml_EvilBonemass'");
					}
					__instance.m_bossPrefab = creaturePrefab;
				}
				catch (Exception e)
				{
					Log.Error(Main.Instance, e);
				}
			}
		}
	}
}
namespace Digitalroot.Modding.Framework.Logging
{
	internal interface ITraceableLogging
	{
		string Source { get; }

		bool EnableTrace { get; }
	}
	internal sealed class Log
	{
		private static readonly Dictionary<string, TraceLogger> TraceLoggers;

		[UsedImplicitly]
		private static Log Instance { get; }

		static Log()
		{
			TraceLoggers = new Dictionary<string, TraceLogger>();
			Instance = new Log();
		}

		private Log()
		{
			TraceLoggers.Add("Digitalroot", new TraceLogger("Digitalroot", enableTrace: false));
		}

		public static void RegisterSource(ITraceableLogging sender)
		{
			if ((!TraceLoggers.ContainsKey(sender.Source) || TraceLoggers[sender.Source].IsTraceEnabled != sender.EnableTrace) && (!TraceLoggers.ContainsKey(sender.Source) || sender.EnableTrace))
			{
				if (TraceLoggers.ContainsKey(sender.Source) && sender.EnableTrace)
				{
					TraceLoggers[sender.Source].EnableTrace();
				}
				else
				{
					TraceLoggers.Add(sender.Source, new TraceLogger(sender.Source, sender.EnableTrace));
				}
			}
		}

		private static TraceLogger GetTraceLogger(ITraceableLogging sender)
		{
			if (!TraceLoggers.ContainsKey(sender.Source))
			{
				return TraceLoggers["Digitalroot"];
			}
			return TraceLoggers[sender.Source];
		}

		[UsedImplicitly]
		public static void SetEnableTrace(ITraceableLogging sender, bool value)
		{
			if (value)
			{
				GetTraceLogger(sender).EnableTrace();
			}
			else
			{
				GetTraceLogger(sender).DisableTrace();
			}
		}

		[UsedImplicitly]
		public static void SetEnableTraceForAllLoggers(bool value)
		{
			foreach (TraceLogger value2 in TraceLoggers.Values)
			{
				if (value)
				{
					value2.EnableTrace();
				}
				else
				{
					value2.DisableTrace();
				}
			}
		}

		[UsedImplicitly]
		public static void Debug(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogDebug(value);
		}

		[UsedImplicitly]
		public static void Error(ITraceableLogging sender, Exception e, int i = 1)
		{
			Error(sender, "Message: " + e.Message);
			Error(sender, $"TargetSite: {e.TargetSite}");
			Error(sender, "StackTrace: " + e.StackTrace);
			Error(sender, "Source: " + e.Source);
			if (e.Data.Count > 0)
			{
				foreach (object key in e.Data.Keys)
				{
					Error(sender, $"key: {key}, value: {e.Data[key]}");
				}
			}
			if (e.InnerException != null)
			{
				Error(sender, $"--- InnerException [{i}][Start] ---");
				Error(sender, e.InnerException, ++i);
			}
		}

		[UsedImplicitly]
		public static void Error(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogError(value);
		}

		[UsedImplicitly]
		public static void Info(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogInfo(value);
		}

		[UsedImplicitly]
		public static void Fatal(ITraceableLogging sender, Exception e, int i = 1)
		{
			Fatal(sender, "Message: " + e.Message);
			Fatal(sender, $"TargetSite: {e.TargetSite}");
			Fatal(sender, "StackTrace: " + e.StackTrace);
			Fatal(sender, "Source: " + e.Source);
			if (e.Data.Count > 0)
			{
				foreach (object key in e.Data.Keys)
				{
					Fatal(sender, $"key: {key}, value: {e.Data[key]}");
				}
			}
			if (e.InnerException != null)
			{
				Fatal(sender, $"--- InnerException [{i}][Start] ---");
				Fatal(sender, e.InnerException, ++i);
			}
		}

		[UsedImplicitly]
		public static void Fatal(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogFatal(value);
		}

		[UsedImplicitly]
		public static void Message(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogMessage(value);
		}

		[UsedImplicitly]
		public static void Trace(ITraceableLogging sender, object value)
		{
			if (GetTraceLogger(sender).IsTraceEnabled || sender.EnableTrace)
			{
				GetTraceLogger(sender).LoggerRef.Log((LogLevel)63, value);
			}
		}

		[UsedImplicitly]
		public static void Warning(ITraceableLogging sender, object value)
		{
			GetTraceLogger(sender).LoggerRef.LogWarning(value);
		}
	}
	internal class TraceLogger
	{
		internal readonly ManualLogSource LoggerRef;

		private readonly string _source;

		private readonly FileInfo _traceFileInfo;

		public bool IsTraceEnabled { get; private set; }

		private DirectoryInfo AssemblyDirectory => new FileInfo(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path)).Directory;

		public TraceLogger(string source, bool enableTrace)
		{
			_source = source;
			IsTraceEnabled = enableTrace;
			LoggerRef = Logger.CreateLogSource(_source);
			_traceFileInfo = new FileInfo(Path.Combine(Paths.BepInExRootPath ?? AssemblyDirectory.FullName, "logs", _source + ".Trace.log"));
			if (_traceFileInfo.DirectoryName != null)
			{
				Directory.CreateDirectory(_traceFileInfo.DirectoryName);
			}
			if (_traceFileInfo.Exists)
			{
				_traceFileInfo.Delete();
				_traceFileInfo.Refresh();
			}
			LoggerRef.LogEvent += OnLogEvent;
		}

		public void EnableTrace()
		{
			IsTraceEnabled = true;
		}

		public void DisableTrace()
		{
			IsTraceEnabled = false;
		}

		[UsedImplicitly]
		public void StopTrace()
		{
			LoggerRef.LogEvent -= OnLogEvent;
		}

		private void OnLogEvent(object sender, LogEventArgs e)
		{
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			if (e.Source.SourceName != _source || !IsTraceEnabled)
			{
				return;
			}
			using Mutex mutex = new Mutex(initiallyOwned: false, "Digitalroot.Modding.Log.TraceLogger." + _source);
			mutex.WaitOne();
			try
			{
				if (e.Data is string)
				{
					string contents = $"[{e.Level,-7}:{e.Source.SourceName,10}] {e.Data}{Environment.NewLine}";
					File.AppendAllText(_traceFileInfo.FullName, contents, Encoding.UTF8);
				}
				else
				{
					string contents2 = $"[{e.Level,-7}:{e.Source.SourceName,10}] {JsonSerializationProvider.Serialize(e.Data)}{Environment.NewLine}";
					File.AppendAllText(_traceFileInfo.FullName, contents2, Encoding.UTF8);
				}
			}
			finally
			{
				mutex.ReleaseMutex();
			}
		}
	}
}
namespace Digitalroot.Modding.Framework.Common.Json
{
	[UsedImplicitly]
	internal static class JsonSerializationProvider
	{
		public static T Deserialize<T>(string json)
		{
			return SimpleJson.DeserializeObject<T>(json, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy());
		}

		public static string Serialize(object obj)
		{
			return SimpleJson.SerializeObject(obj, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy());
		}
	}
	internal class DigitalrootJsonSerializerStrategy : PocoJsonSerializerStrategy
	{
		public override bool TrySerializeNonPrimitiveObject(object input, out object output)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			if (!(input is Vector3 val))
			{
				if (input is Quaternion val2)
				{
					output = new float[4] { val2.x, val2.y, val2.z, val2.w };
					return true;
				}
				return ((PocoJsonSerializerStrategy)this).TrySerializeNonPrimitiveObject(input, ref output);
			}
			output = new float[3] { val.x, val.y, val.z };
			return true;
		}

		public override object DeserializeObject(object value, Type type)
		{
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			if (type == null)
			{
				throw new ArgumentNullException("type");
			}
			if (value == null)
			{
				throw new ArgumentNullException("value");
			}
			if (value is string value2)
			{
				if (string.IsNullOrWhiteSpace(value2))
				{
					throw new ArgumentNullException("value");
				}
				if (type == typeof(Vector3))
				{
					if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array) || (array != null && array.Length != 3))
					{
						throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Vector3"), "value");
					}
					return (object)new Vector3(array[0], array[1], array[2]);
				}
				if (type == typeof(Quaternion))
				{
					if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array2) || (array2 != null && array2.Length != 4))
					{
						throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Quaternion"), "value");
					}
					return (object)new Quaternion(array2[0], array2[1], array2[2], array2[3]);
				}
				return ((PocoJsonSerializerStrategy)this).DeserializeObject(value, type);
			}
			throw new ArgumentException($"The value '{value}' can be converted to a {type.Name}.", "value");
		}
	}
}
namespace Digitalroot.Modding.Framework.Names.Vanilla
{
	internal static class BossNames
	{
		[UsedImplicitly]
		public static readonly IEnumerable<string> AllNames = ReflectionUtils.AllNames(typeof(BossNames));

		public static readonly string Eikthyr = "Eikthyr";

		public static readonly string TheElder = "gd_king";

		public static readonly string Bonemass = "Bonemass";

		public static readonly string Moder = "Dragon";

		public static readonly string Yagluth = "GoblinKing";

		public static readonly string SeekerQueen = "SeekerQueen";

		public static readonly string DragonQueen = "Dragonqueen";

		public static readonly string Fader = "Fader";

		[UsedImplicitly]
		public static IEnumerable<string> AllNamesByBiome(Biome biome)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			if ((int)biome <= 8)
			{
				switch (biome - 1)
				{
				case 0:
					yield return Eikthyr;
					yield break;
				case 1:
					yield return Bonemass;
					yield break;
				case 3:
					yield return Moder;
					yield break;
				case 2:
					yield break;
				}
				if ((int)biome == 8)
				{
					yield return TheElder;
				}
			}
			else if ((int)biome != 16)
			{
				if ((int)biome == 512)
				{
					yield return SeekerQueen;
				}
			}
			else
			{
				yield return Yagluth;
			}
		}
	}
}
namespace Digitalroot.Modding.Framework.Utils
{
	internal static class ReflectionUtils
	{
		[UsedImplicitly]
		public static List<T> AllOf<T>()
		{
			return Enum.GetValues(typeof(T)).OfType<T>().ToList();
		}

		[UsedImplicitly]
		public static IEnumerable<string> AllNames(Type type)
		{
			foreach (FieldInfo item in from f1 in type.GetFields()
				where f1.FieldType == typeof(string)
				select f1)
			{
				yield return item.GetValue(null).ToString();
			}
		}

		[UsedImplicitly]
		public static T GetPrivateField<T>(object instance, string name)
		{
			FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
			if (field != null)
			{
				return (T)field.GetValue(instance);
			}
			Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Variable {name} does not exist on type: {instance.GetType()}");
			return default(T);
		}

		[UsedImplicitly]
		public static object InvokePrivate(object instance, string name, object[] args = null)
		{
			MethodInfo method = instance.GetType().GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic);
			if (method == null)
			{
				Type[] types = ((args == null) ? Type.EmptyTypes : args.Select((object arg) => arg.GetType()).ToArray());
				method = instance.GetType().GetMethod(name, types);
			}
			if (method == null)
			{
				Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Method {name} does not exist on type: {instance.GetType()}");
				return null;
			}
			return method.Invoke(instance, args);
		}

		[UsedImplicitly]
		public static void SetPrivateField(object instance, string name, object value)
		{
			FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
			if (field == null)
			{
				Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Variable {name} does not exist on type: {instance.GetType()}");
			}
			else
			{
				field.SetValue(instance, value);
			}
		}
	}
}
namespace Digitalroot.Modding.Framework.Logging
{
	[DebuggerDisplay("Source = {Source}, EnableTrace = {EnableTrace}", Name = "{Source}")]
	internal class StaticSourceLogger : ITraceableLogging
	{
		public static readonly StaticSourceLogger PreMadeTraceableInstance = new StaticSourceLogger(enableTrace: true);

		public static StaticSourceLogger PreMadeNonTraceableInstance = new StaticSourceLogger();

		public string Source { get; }

		public bool EnableTrace { get; }

		public StaticSourceLogger(bool enableTrace = false)
			: this("Digitalroot", enableTrace)
		{
		}

		public StaticSourceLogger(string source, bool enableTrace = false)
		{
			Source = source;
			EnableTrace = enableTrace;
		}
	}
}
namespace Digitalroot.Modding.Framework.Names.Vanilla
{
	internal static class EnemyNames
	{
		[UsedImplicitly]
		public static readonly IEnumerable<string> AllNames = ReflectionUtils.AllNames(typeof(EnemyNames));

		public static readonly string Abomination = "Abomination";

		public static readonly string AxeBerzerkr = "AxeBerzerkr";

		public static readonly string AxeBerzerkrBlood = "AxeBerzerkrBlood";

		public static readonly string AxeBerzerkrLightning = "AxeBerzerkrLightning";

		public static readonly string AxeBerzerkrNature = "AxeBerzerkrNature";

		public static readonly string Bat = "Bat";

		public static readonly string Blob = "Blob";

		public static readonly string BlobElite = "BlobElite";

		public static readonly string BlobFrost = "BlobFrost";

		public static readonly string BlobLava = "BlobLava";

		public static readonly string BlobTar = "BlobTar";

		public static readonly string BlobVial = "BlobVial";

		public static readonly string Boar = "Boar";

		public static readonly string BoarPiggy = "Boar_piggy";

		public static readonly string BonemawSerpent = "BonemawSerpent";

		public static readonly string CharredArcher = "Charred_Archer";

		public static readonly string CharredArcherFader = "Charred_Archer_Fader";

		public static readonly string CharredMage = "Charred_Mage";

		public static readonly string CharredMelee = "Charred_Melee";

		public static readonly string CharredMeleeDyrnwyn = "Charred_Melee_Dyrnwyn";

		public static readonly string CharredMeleeFader = "Charred_Melee_Fader";

		public static readonly string CharredTwitcher = "Charred_Twitcher";

		public static readonly string Crow = "Crow";

		public static readonly string Deathsquito = "Deathsquito";

		public static readonly string DarkwoodWolf = "darkwood_wolf";

		public static readonly string Deer = "Deer";

		public static readonly string Drake = "Hatchling";

		public static readonly string Draugr = "Draugr";

		public static readonly string DraugrElite = "Draugr_Elite";

		public static readonly string DraugrRanged = "Draugr_Ranged";

		public static readonly string Dverger = "Dverger";

		public static readonly string DvergerArbalest = "DvergerArbalest";

		public static readonly string DvergerAshlands = "DvergerAshlands";

		public static readonly string DvergerMage = "DvergerMage";

		public static readonly string DvergerMageFire = "DvergerMageFire";

		public static readonly string DvergerMageIce = "DvergerMageIce";

		public static readonly string DvergerMageSupport = "DvergerMageSupport";

		public static readonly string FallenValkyrie = "FallenValkyrie";

		public static readonly string Fenring = "Fenring";

		public static readonly string FenringCultist = "Fenring_Cultist";

		public static readonly string FenringCultistHildir = "Fenring_Cultist_Hildir";

		public static readonly string FenringCultistHildirNochest = "Fenring_Cultist_Hildir_nochest";

		public static readonly string FulingTrap = "fuling_trap";

		public static readonly string FulingTurret = "fuling_turret";

		public static readonly string Ghost = "Ghost";

		public static readonly string Gjall = "Gjall";

		public static readonly string Goblin = "Goblin";

		public static readonly string GoblinArcher = "GoblinArcher";

		public static readonly string GoblinBrute = "GoblinBrute";

		public static readonly string GoblinBruteHildir = "GoblinBrute_Hildir";

		public static readonly string GoblinBruteBros = "GoblinBruteBros";

		public static readonly string GoblinShaman = "GoblinShaman";

		public static readonly string Greydwarf = "Greydwarf";

		public static readonly string GreydwarfElite = "Greydwarf_Elite";

		public static readonly string GreydwarfShaman = "Greydwarf_Shaman";

		public static readonly string Greyling = "Greyling";

		public static readonly string Hare = "Hare";

		public static readonly string Hen = "Hen";

		public static readonly string Hive = "Hive";

		public static readonly string Leech = "Leech";

		public static readonly string Lox = "Lox";

		public static readonly string LoxCalf = "Lox_Calf";

		public static readonly string Mistile = "Mistile";

		public static readonly string Morgen = "Morgen";

		public static readonly string MorgenNonSleeping = "Morgen_NonSleeping";

		public static readonly string Neck = "Neck";

		public static readonly string Seagal = "Seagal";

		public static readonly string Seeker = "Seeker";

		public static readonly string SeekerBrute = "SeekerBrute";

		public static readonly string SeekerAspic = "SeekerAspic";

		public static readonly string SeekerBrood = "SeekerBrood";

		public static readonly string Serpent = "Serpent";

		public static readonly string Skeleton = "Skeleton";

		public static readonly string SkeletonFriendly = "Skeleton_Friendly";

		public static readonly string SkeletonHildir = "Skeleton_Hildir";

		public static readonly string SkeletonHildirNochest = "Skeleton_Hildir_nochest";

		public static readonly string SkeletonNoArcher = "Skeleton_NoArcher";

		public static readonly string SkeletonPoison = "Skeleton_Poison";

		public static readonly string StoneGolem = "StoneGolem";

		public static readonly string Surtling = "Surtling";

		public static readonly string TheHive = "TheHive";

		public static readonly string Tick = "Tick";

		public static readonly string Troll = "Troll";

		public static readonly string Ulv = "Ulv";

		public static readonly string Volture = "Volture";

		public static readonly string Wolf = "Wolf";

		public static readonly string WolfCub = "Wolf_cub";

		public static readonly string Wraith = "Wraith";

		[UsedImplicitly]
		public static IEnumerable<string> AllNamesByBiome(Biome biome)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			if ((int)biome <= 16)
			{
				switch (biome - 1)
				{
				default:
					if ((int)biome != 8)
					{
						if ((int)biome != 16)
						{
							break;
						}
						yield return BlobTar;
						yield return Deathsquito;
						yield return Goblin;
						yield return GoblinArcher;
						yield return GoblinBrute;
						yield return GoblinShaman;
						yield return Lox;
						yield return LoxCalf;
						yield break;
					}
					yield return Crow;
					yield return Deer;
					yield return Ghost;
					yield return Greydwarf;
					yield return GreydwarfElite;
					yield return GreydwarfShaman;
					yield return Skeleton;
					yield return SkeletonPoison;
					yield return Troll;
					yield break;
				case 0:
					yield return Boar;
					yield return BoarPiggy;
					yield return Deer;
					yield return Draugr;
					yield return Ghost;
					yield return Greyling;
					yield return Greydwarf;
					yield return GreydwarfElite;
					yield return GreydwarfShaman;
					yield return Neck;
					yield return Seagal;
					yield return Skeleton;
					yield break;
				case 1:
					yield return Abomination;
					yield return Blob;
					yield return BlobElite;
					yield return Draugr;
					yield return DraugrElite;
					yield return DraugrRanged;
					yield return Leech;
					yield return Surtling;
					yield return Wraith;
					yield break;
				case 3:
					yield return Drake;
					yield return Fenring;
					yield return StoneGolem;
					yield return Wolf;
					yield return WolfCub;
					yield break;
				case 2:
					break;
				}
			}
			else if ((int)biome <= 64)
			{
				if ((int)biome == 32 || (int)biome == 64)
				{
					yield break;
				}
			}
			else
			{
				if ((int)biome == 256)
				{
					yield return Serpent;
					yield break;
				}
				if ((int)biome == 512)
				{
					yield return Dverger;
					yield return Gjall;
					yield return Hare;
					yield return Seeker;
					yield return SeekerBrute;
					yield return Tick;
					yield break;
				}
			}
			throw new ArgumentOutOfRangeException("biome", biome, null);
		}
	}
	internal static class ItemDropNames
	{
		public static readonly IEnumerable<string> AllNames = ReflectionUtils.AllNames(typeof(ItemDropNames));

		public static string Acorn = "Acorn";

		public static string Amber = "Amber";

		public static string AmberPearl = "AmberPearl";

		public static string AncientSkull = "ancient_skull";

		public static string AncientSeed = "AncientSeed";

		public static string ArmorCarapaceChest = "ArmorCarapaceChest";

		public static string ArmorCarapaceLegs = "ArmorCarapaceLegs";

		public static string ArmorDress1 = "ArmorDress1";

		public static string ArmorDress2 = "ArmorDress2";

		public static string ArmorDress3 = "ArmorDress3";

		public static string ArmorDress4 = "ArmorDress4";

		public static string ArmorDress5 = "ArmorDress5";

		public static string ArmorDress6 = "ArmorDress6";

		public static string ArmorDress7 = "ArmorDress7";

		public static string ArmorDress8 = "ArmorDress8";

		public static string ArmorDress9 = "ArmorDress9";

		public static string ArmorDress10 = "ArmorDress10";

		public static string ArmorFenringChest = "ArmorFenringChest";

		public static string ArmorFenringLegs = "ArmorFenringLegs";

		public static string ArmorFlametalChest = "ArmorFlametalChest";

		public static string ArmorFlametalLegs = "ArmorFlametalLegs";

		public static string ArmorHarvester1 = "ArmorHarvester1";

		public static string ArmorHarvester2 = "ArmorHarvester2";

		public static string ArmorAshlandsMediumChest = "ArmorAshlandsMediumChest";

		public static string ArmorAshlandsMediumlegs = "ArmorAshlandsMediumlegs";

		public static string ArmorBronzeChest = "ArmorBronzeChest";

		public static string ArmorBronzeLegs = "ArmorBronzeLegs";

		public static string ArmorIronChest = "ArmorIronChest";

		public static string ArmorIronLegs = "ArmorIronLegs";

		public static string ArmorMageChest = "ArmorMageChest";

		public static string ArmorMageLegs = "ArmorMageLegs";

		public static string ArmorMageLegsAshlands = "ArmorMageLegs_Ashlands";

		public static string ArmorLeatherChest = "ArmorLeatherChest";

		public static string ArmorLeatherLegs = "ArmorLeatherLegs";

		public static string ArmorPaddedCuirass = "ArmorPaddedCuirass";

		public static string ArmorPaddedGreaves = "ArmorPaddedGreaves";

		public static string ArmorRagsChest = "ArmorRagsChest";

		public static string ArmorRagsLegs = "ArmorRagsLegs";

		public static string ArmorRootChest = "ArmorRootChest";

		public static string ArmorRootLegs = "ArmorRootLegs";

		public static string ArmorTrollLeatherChest = "ArmorTrollLeatherChest";

		public static string ArmorTrollLeatherLegs = "ArmorTrollLeatherLegs";

		public static string ArmorTunic1 = "ArmorTunic1";

		public static string ArmorTunic2 = "ArmorTunic2";

		public static string ArmorTunic3 = "ArmorTunic3";

		public static string ArmorTunic4 = "ArmorTunic4";

		public static string ArmorTunic5 = "ArmorTunic5";

		public static string ArmorTunic6 = "ArmorTunic6";

		public static string ArmorTunic7 = "ArmorTunic7";

		public static string ArmorTunic8 = "ArmorTunic8";

		public static string ArmorTunic9 = "ArmorTunic9";

		public static string ArmorTunic10 = "ArmorTunic10";

		public static string ArmorWolfChest = "ArmorWolfChest";

		public static string ArmorWolfLegs = "ArmorWolfLegs";

		public static string ArrowBronze = "ArrowBronze";

		public static string ArrowCarapace = "ArrowCarapace";

		public static string ArrowCharred = "ArrowCharred";

		public static string ArrowFire = "ArrowFire";

		public static string ArrowFlint = "ArrowFlint";

		public static string ArrowFrost = "ArrowFrost";

		public static string ArrowIron = "ArrowIron";

		public static string ArrowNeedle = "ArrowNeedle";

		public static string ArrowObsidian = "ArrowObsidian";

		public static string ArrowPoison = "ArrowPoison";

		public static string ArrowSilver = "ArrowSilver";

		public static string ArrowWood = "ArrowWood";

		public static string AsksvinEgg = "AsksvinEgg";

		public static string AsksvinMeat = "AsksvinMeat";

		public static string AtgeirBlackmetal = "AtgeirBlackmetal";

		public static string AtgeirBronze = "AtgeirBronze";

		public static string AtgeirHimminAfl = "AtgeirHimminAfl";

		public static string AtgeirIron = "AtgeirIron";

		public static string AtgeirWood = "AtgeirWood";

		public static string AxeBlackMetal = "AxeBlackMetal";

		public static string AxeBronze = "AxeBronze";

		public static string AxeEarly = "AxeEarly";

		public static string AxeFlint = "AxeFlint";

		public static string AxeIron = "AxeIron";

		public static string AxeJotunBane = "AxeJotunBane";

		public static string AxeStone = "AxeStone";

		public static string AxeWood = "AxeWood";

		public static string BarberKit = "BarberKit";

		public static string Barley = "Barley";

		public static string BarleyFlour = "BarleyFlour";

		public static string BarleyWine = "BarleyWine";

		public static string BarleyWineBase = "BarleyWineBase";

		public static string BarrelRings = "BarrelRings";

		public static string Battleaxe = "Battleaxe";

		public static string BattleaxeCrystal = "BattleaxeCrystal";

		public static string BeechSeeds = "BeechSeeds";

		public static string Bell = "Bell";

		public static string BeltStrength = "BeltStrength";

		public static string Bilebag = "Bilebag";

		public static string BirchSeeds = "BirchSeeds";

		public static string BjornHide = "BjornHide";

		public static string BjornMeat = "BjornMeat";

		public static string BjornPaw = "BjornPaw";

		public static string BlackCore = "BlackCore";

		public static string BlackMarble = "BlackMarble";

		public static string BlackMetal = "BlackMetal";

		public static string BlackMetalScrap = "BlackMetalScrap";

		public static string BlackSoup = "BlackSoup";

		public static string Blackwood = "Blackwood";

		public static string Bloodbag = "Bloodbag";

		public static string BloodPudding = "BloodPudding";

		public static string Blueberries = "Blueberries";

		public static string BoarJerky = "BoarJerky";

		public static string BoltBlackmetal = "BoltBlackmetal";

		public static string BoltBone = "BoltBone";

		public static string BoltCarapace = "BoltCarapace";

		public static string BoltCharred = "BoltCharred";

		public static string BoltIron = "BoltIron";

		public static string BombBile = "BombBile";

		public static string BombLava = "BombLava";

		public static string BombOoze = "BombOoze";

		public static string BombSiege = "BombSiege";

		public static string BombSmoke = "BombSmoke";

		public static string BoneFragments = "BoneFragments";

		public static string BoneMawSerpentMeat = "BoneMawSerpentMeat";

		public static string BonemawSerpentScale = "BonemawSerpentScale";

		public static string BonemawSerpentTooth = "BonemawSerpentTooth";

		public static string Bow = "Bow";

		public static string BowAshlands = "BowAshlands";

		public static string BowAshlandsBlood = "BowAshlandsBlood";

		public static string BowAshlandsRoot = "BowAshlandsRoot";

		public static string BowAshlandsStorm = "BowAshlandsStorm";

		public static string BowDraugrFang = "BowDraugrFang";

		public static string BowFineWood = "BowFineWood";

		public static string BowHuntsman = "BowHuntsman";

		public static string BowSpineSnap = "BowSpineSnap";

		public static string Bread = "Bread";

		public static string BreadDough = "BreadDough";

		public static string Bronze = "Bronze";

		public static string BronzeNails = "BronzeNails";

		public static string BronzeScrap = "BronzeScrap";

		public static string BugMeat = "BugMeat";

		public static string CandleWick = "CandleWick";

		public static string CapeAsh = "CapeAsh";

		public static string CapeAsksvin = "CapeAsksvin";

		public static string CapeDeerHide = "CapeDeerHide";

		public static string CapeFeather = "CapeFeather";

		public static string CapeLinen = "CapeLinen";

		public static string CapeLox = "CapeLox";

		public static string CapeOdin = "CapeOdin";

		public static string CapeTest = "CapeTest";

		public static string CapeTrollHide = "CapeTrollHide";

		public static string CapeWolf = "CapeWolf";

		public static string Carapace = "Carapace";

		public static string Carrot = "Carrot";

		public static string CarrotSeeds = "CarrotSeeds";

		public static string CarrotSoup = "CarrotSoup";

		public static string CelestialFeather = "CelestialFeather";

		public static string CeramicPlate = "CeramicPlate";

		public static string Chain = "Chain";

		public static string CharcoalResin = "CharcoalResin";

		public static string CharredBone = "CharredBone";

		public static string CharredCogwheel = "CharredCogwheel";

		public static string CharredBreastplate = "Charred_Breastplate";

		public static string CharredHelmet = "Charred_Helmet";

		public static string CharredHipCloth = "Charred_HipCloth";

		public static string CharredMageCloths = "Charred_MageCloths";

		public static string ChestHildir1 = "chest_hildir1";

		public static string ChestHildir2 = "chest_hildir2";

		public static string ChestHildir3 = "chest_hildir3";

		public static string Chicken = "Chicken";

		public static string ChickenEgg = "ChickenEgg";

		public static string ChickenMeat = "ChickenMeat";

		public static string Chitin = "Chitin";

		public static string Cinder = "Cinder";

		public static string Cloudberry = "Cloudberry";

		public static string Club = "Club";

		public static string Coal = "Coal";

		public static string Coins = "Coins";

		public static string CookedAsksvinMeat = "CookedAsksvinMeat";

		public static string CookedBoneMawSerpentMeat = "CookedBoneMawSerpentMeat";

		public static string CookedBugMeat = "CookedBugMeat";

		public static string CookedChickenMeat = "CookedChickenMeat";

		public static string CookedDeerMeat = "CookedDeerMeat";

		public static string CookedEgg = "CookedEgg";

		public static string CookedHareMeat = "CookedHareMeat";

		public static string CookedLoxMeat = "CookedLoxMeat";

		public static string CookedWolfMeat = "CookedWolfMeat";

		public static string CookedMeat = "CookedMeat";

		public static string CookedVoltureMeat = "CookedVoltureMeat";

		public static string Copper = "Copper";

		public static string CopperOre = "CopperOre";

		public static string CopperScrap = "CopperScrap";

		public static string CrossbowArbalest = "CrossbowArbalest";

		public static string CryptKey = "CryptKey";

		public static string Crystal = "Crystal";

		public static string Cultivator = "Cultivator";

		public static string CuredSquirrelHamstring = "CuredSquirrelHamstring";

		public static string Dandelion = "Dandelion";

		public static string DeerHide = "DeerHide";

		public static string DeerMeat = "DeerMeat";

		public static string DeerStew = "DeerStew";

		public static string Demister = "Demister";

		public static string DragonEgg = "DragonEgg";

		public static string DragonTear = "DragonTear";

		public static string DvergrKey = "DvergrKey";

		public static string DvergrKeyFragment = "DvergrKeyFragment";

		public static string DvergrNeedle = "DvergrNeedle";

		public static string DvergerStaffFire = "DvergerStaffFire";

		public static string DvergerStaffHeal = "DvergerStaffHeal";

		public static string DvergerStaffIce = "DvergerStaffIce";

		public static string DvergerStaffSupport = "DvergerStaffSupport";

		public static string DvergerSuitArbalest = "DvergerSuitArbalest";

		public static string DvergerSuitArbalestAshlands = "DvergerSuitArbalest_Ashlands";

		public static string DvergerSuitFire = "DvergerSuitFire";

		public static string DvergerSuitIce = "DvergerSuitIce";

		public static string DvergerSuitSupport = "DvergerSuitSupport";

		public static string DyrnwynBladeFragment = "DyrnwynBladeFragment";

		public static string DyrnwynHiltFragment = "DyrnwynHiltFragment";

		public static string DyrnwynTipFragment = "DyrnwynTipFragment";

		public static string Eitr = "Eitr";

		public static string Eikthyrnir = "Eikthyrnir";

		public static string ElderBark = "ElderBark";

		public static string Entrails = "Entrails";

		public static string Eyescream = "Eyescream";

		public static string FaderDrop = "FaderDrop";

		public static string FeastAshlandsMaterial = "FeastAshlands_Material";

		public static string FeastBlackforestMaterial = "FeastBlackforest_Material";

		public static string Feaster = "Feaster";

		public static string FeastMeadowsMaterial = "FeastMeadows_Material";

		public static string FeastMistlandsMaterial = "FeastMistlands_Material";

		public static string FeastMountainsMaterial = "FeastMountains_Material";

		public static string FeastOceansMaterial = "FeastOceans_Material";

		public static string FeastPlainsMaterial = "FeastPlains_Material";

		public static string FeastSwampsMaterial = "FeastSwamps_Material";

		public static string Feathers = "Feathers";

		public static string FineWood = "FineWood";

		public static string FirCone = "FirCone";

		public static string FishAndBread = "FishAndBread";

		public static string FishAndBreadUncooked = "FishAndBreadUncooked";

		public static string FishAnglerRaw = "FishAnglerRaw";

		public static string FishCooked = "FishCooked";

		public static string FishingBait = "FishingBait";

		public static string FishingBaitAshlands = "FishingBaitAshlands";

		public static string FishingBaitCave = "FishingBaitCave";

		public static string FishingBaitDeepNorth = "FishingBaitDeepNorth";

		public static string FishingBaitForest = "FishingBaitForest";

		public static string FishingBaitMistlands = "FishingBaitMistlands";

		public static string FishingBaitOcean = "FishingBaitOcean";

		public static string FishingBaitPlains = "FishingBaitPlains";

		public static string FishingBaitSwamp = "FishingBaitSwamp";

		public static string FishingRod = "FishingRod";

		public static string FishRaw = "FishRaw";

		public static string FishWraps = "FishWraps";

		public static string FistFenrirClaw = "FistFenrirClaw";

		public static string Flametal = "Flametal";

		public static string FlametalNew = "FlametalNew";

		public static string FlametalOre = "FlametalOre";

		public static string FlametalOreNew = "FlametalOreNew";

		public static string Flax = "Flax";

		public static string Flint = "Flint";

		public static string FragrantBundle = "FragrantBundle";

		public static string FreezeGland = "FreezeGland";

		public static string FreshSeaweed = "FreshSeaweed";

		public static string GemstoneBlue = "GemstoneBlue";

		public static string GemstoneGreen = "GemstoneGreen";

		public static string GemstoneRed = "GemstoneRed";

		public static string GiantBloodSack = "GiantBloodSack";

		public static string GlowingMushroom = "GlowingMushroom";

		public static string GoblinGem = "Goblin_Gem";

		public static string GoblinTotem = "GoblinTotem";

		public static string Grausten = "Grausten";

		public static string GreydwarfEye = "GreydwarfEye";

		public static string Guck = "Guck";

		public static string Hammer = "Hammer";

		public static string HareMeat = "HareMeat";

		public static string HardAntler = "HardAntler";

		public static string HelmetAshlandsMediumHood = "HelmetAshlandsMediumHood";

		public static string HelmetBronze = "HelmetBronze";

		public static string HelmetCarapace = "HelmetCarapace";

		public static string HelmetDrake = "HelmetDrake";

		public static string HelmetDverger = "HelmetDverger";

		public static string HelmetFenring = "HelmetFenring";

		public static string HelmetFishingHat = "HelmetFishingHat";

		public static string HelmetFlametal = "HelmetFlametal";

		public static string HelmetHat1 = "HelmetHat1";

		public static string HelmetHat2 = "HelmetHat2";

		public static string HelmetHat3 = "HelmetHat3";

		public static string HelmetHat4 = "HelmetHat4";

		public static string HelmetHat5 = "HelmetHat5";

		public static string HelmetHat6 = "HelmetHat6";

		public static string HelmetHat7 = "HelmetHat7";

		public static string HelmetHat8 = "HelmetHat8";

		public static string HelmetHat9 = "HelmetHat9";

		public static string HelmetHat10 = "HelmetHat10";

		public static string HelmetIron = "HelmetIron";

		public static string HelmetLeather = "HelmetLeather";

		public static string HelmetMage = "HelmetMage";

		public static string HelmetMageAshlands = "HelmetMage_Ashlands";

		public static string HelmetMidsummerCrown = "HelmetMidsummerCrown";

		public static string HelmetOdin = "HelmetOdin";

		public static string HelmetPadded = "HelmetPadded";

		public static string HelmetPointyHat = "HelmetPointyHat";

		public static string HelmetRoot = "HelmetRoot";

		public static string HelmetTrollLeather = "HelmetTrollLeather";

		public static string HelmetYule = "HelmetYule";

		public static string Hoe = "Hoe";

		public static string Honey = "Honey";

		public static string HoneyGlazedChicken = "HoneyGlazedChicken";

		public static string HoneyGlazedChickenUncooked = "HoneyGlazedChickenUncooked";

		public static string Iron = "Iron";

		public static string IronNails = "IronNails";

		public static string IronOre = "IronOre";

		public static string IronScrap = "IronScrap";

		public static string JuteBlue = "JuteBlue";

		public static string JuteRed = "JuteRed";

		public static string KnifeBlackMetal = "KnifeBlackMetal";

		public static string KnifeButcher = "KnifeButcher";

		public static string KnifeChitin = "KnifeChitin";

		public static string KnifeCopper = "KnifeCopper";

		public static string KnifeFlint = "KnifeFlint";

		public static string KnifeSilver = "KnifeSilver";

		public static string KnifeSkollAndHati = "KnifeSkollAndHati";

		public static string Lantern = "Lantern";

		public static string Larva = "Larva";

		public static string LavaRock = "LavaRock";

		public static string LeatherScraps = "LeatherScraps";

		public static string LinenThread = "LinenThread";

		public static string LoxMeat = "LoxMeat";

		public static string LoxPelt = "LoxPelt";

		public static string LoxPie = "LoxPie";

		public static string LoxPieUncooked = "LoxPieUncooked";

		public static string LuredWisp = "LuredWisp";

		public static string MaceBronze = "MaceBronze";

		public static string MaceEldner = "MaceEldner";

		public static string MaceEldnerBlood = "MaceEldnerBlood";

		public static string MaceEldnerLightning = "MaceEldnerLightning";

		public static string MaceEldnerNature = "MaceEldnerNature";

		public static string MaceIron = "MaceIron";

		public static string MaceNeedle = "MaceNeedle";

		public static string MaceSilver = "MaceSilver";

		public static string MagicallyStuffedShroom = "MagicallyStuffedShroom";

		public static string MagicallyStuffedShroomUncooked = "MagicallyStuffedShroomUncooked";

		public static string Mandible = "Mandible";

		public static string MarinatedGreens = "MarinatedGreens";

		public static string MashedMeat = "MashedMeat";

		public static string MeadBaseBugRepellent = "MeadBaseBugRepellent";

		public static string MeadBaseBzerker = "MeadBaseBzerker";

		public static string MeadBaseEitrLingering = "MeadBaseEitrLingering";

		public static string MeadBaseEitrMinor = "MeadBaseEitrMinor";

		public static string MeadBaseFrostResist = "MeadBaseFrostResist";

		public static string MeadBaseHasty = "MeadBaseHasty";

		public static string MeadBaseHealthLingering = "MeadBaseHealthLingering";

		public static string MeadBaseHealthMajor = "MeadBaseHealthMajor";

		public static string MeadBaseHealthMedium = "MeadBaseHealthMedium";

		public static string MeadBaseHealthMinor = "MeadBaseHealthMinor";

		public static string MeadBaseLightFoot = "MeadBaseLightFoot";

		public static string MeadBasePoisonResist = "MeadBasePoisonResist";

		public static string MeadBaseStaminaLingering = "MeadBaseStaminaLingering";

		public static string MeadBaseStaminaMedium = "MeadBaseStaminaMedium";

		public static string MeadBaseStaminaMinor = "MeadBaseStaminaMinor";

		public static string MeadBaseStrength = "MeadBaseStrength";

		public static string MeadBaseSwimmer = "MeadBaseSwimmer";

		public static string MeadBaseTamer = "MeadBaseTamer";

		public static string MeadBaseTasty = "MeadBaseTasty";

		public static string MeadBugRepellent = "MeadBugRepellent";

		public static string MeadBzerker = "MeadBzerker";

		public static string MeadEitrLingering = "MeadEitrLingering";

		public static string MeadEitrMinor = "MeadEitrMinor";

		public static string MeadFrostResist = "MeadFrostResist";

		public static string MeadHasty = "MeadHasty";

		public static string MeadHealthLingering = "MeadHealthLingering";

		public static string MeadHealthMajor = "MeadHealthMajor";

		public static string MeadHealthMedium = "MeadHealthMedium";

		public static string MeadHealthMinor = "MeadHealthMinor";

		public static string MeadLightfoot = "MeadLightfoot";

		public static string MeadPoisonResist = "MeadPoisonResist";

		public static string MeadStaminaLingering = "MeadStaminaLingering";

		public static string MeadStaminaMedium = "MeadStaminaMedium";

		public static string MeadStaminaMinor = "MeadStaminaMinor";

		public static string MeadTasty = "MeadTasty";

		public static string MeadTrollPheromones = "MeadTrollPheromones";

		public static string MeatPlatter = "MeatPlatter";

		public static string MeatPlatterUncooked = "MeatPlatterUncooked";

		public static string MechanicalSpring = "MechanicalSpring";

		public static string MinceMeatSauce = "MinceMeatSauce";

		public static string MisthareSupreme = "MisthareSupreme";

		public static string MisthareSupremeUncooked = "MisthareSupremeUncooked";

		public static string MistileKamikaze = "Mistile_kamikaze";

		public static string MoltenCore = "MoltenCore";

		public static string MorgenHeart = "MorgenHeart";

		public static string Mushroom = "Mushroom";

		public static string MushroomBlue = "MushroomBlue";

		public static string MushroomBzerker = "MushroomBzerker";

		public static string MushroomJotunPuffs = "MushroomJotunPuffs";

		public static string MushroomMagecap = "MushroomMagecap";

		public static string MushroomOmelette = "MushroomOmelette";

		public static string MushroomSmokePuff = "MushroomSmokePuff";

		public static string MushroomYellow = "MushroomYellow";

		public static string NeckTail = "NeckTail";

		public static string NeckTailGrilled = "NeckTailGrilled";

		public static string Needle = "Needle";

		public static string Obsidian = "Obsidian";

		public static string Onion = "Onion";

		public static string OnionSeeds = "OnionSeeds";

		public static string OnionSoup = "OnionSoup";

		public static string Ooze = "Ooze";

		public static string PickaxeAntler = "PickaxeAntler";

		public static string PickaxeBlackMetal = "PickaxeBlackMetal";

		public static string PickaxeBronze = "PickaxeBronze";

		public static string PickaxeIron = "PickaxeIron";

		public static string PickaxeStone = "PickaxeStone";

		public static string PineCone = "PineCone";

		public static string PiquantPie = "PiquantPie";

		public static string PiquantPieUncooked = "PiquantPieUncooked";

		public static string PlaceofMystery1 = "PlaceofMystery1";

		public static string PlaceofMystery2 = "PlaceofMystery2";

		public static string PlaceofMystery3 = "PlaceofMystery3";

		public static string PotShardGreen = "Pot_Shard_Green";

		public static string PotShardRed = "Pot_Shard_Red";

		public static string PowderedDragonEgg = "PowderedDragonEgg";

		public static string ProustitePowder = "ProustitePowder";

		public static string PukeBerries = "Pukeberries";

		public static string PungentPebbles = "PungentPebbles";

		public static string QueenBee = "QueenBee";

		public static string QueenDrop = "QueenDrop";

		public static string QueensJam = "QueensJam";

		public static string Raspberry = "Raspberry";

		public static string RawMeat = "RawMeat";

		public static string Resin = "Resin";

		public static string RoastedCrustPie = "RoastedCrustPie";

		public static string RoastedCrustPieUncooked = "RoastedCrustPieUncooked";

		public static string RoundLog = "RoundLog";

		public static string RottenMeat = "RottenMeat";

		public static string RoyalJelly = "RoyalJelly";

		public static string Ruby = "Ruby";

		public static string SaddleLox = "SaddleLox";

		public static string Salad = "Salad";

		public static string Sap = "Sap";

		public static string Sausages = "Sausages";

		public static string ScaleHide = "ScaleHide";

		public static string ScorchingMedley = "ScorchingMedley";

		public static string Scythe = "Scythe";

		public static string ScytheHandle = "ScytheHandle";

		public static string SerpentMeat = "SerpentMeat";

		public static string SerpentMeatCooked = "SerpentMeatCooked";

		public static string SerpentScale = "SerpentScale";

		public static string SerpentStew = "SerpentStew";

		public static string SharpeningStone = "SharpeningStone";

		public static string ShieldBanded = "ShieldBanded";

		public static string ShieldBlackmetal = "ShieldBlackmetal";

		public static string ShieldBlackmetalTower = "ShieldBlackmetalTower";

		public static string ShieldBoneTower = "ShieldBoneTower";

		public static string ShieldBronzeBuckler = "ShieldBronzeBuckler";

		public static string ShieldCarapace = "ShieldCarapace";

		public static string ShieldCarapaceBuckler = "ShieldCarapaceBuckler";

		public static string ShieldCore = "ShieldCore";

		public static string ShieldFlametal = "ShieldFlametal";

		public static string ShieldFlametalTower = "ShieldFlametalTower";

		public static string ShieldIronBuckler = "ShieldIronBuckler";

		public static string ShieldIronSquare = "ShieldIronSquare";

		public static string ShieldIronTower = "ShieldIronTower";

		public static string ShieldKnight = "ShieldKnight";

		public static string ShieldSerpentscale = "ShieldSerpentscale";

		public static string ShieldSilver = "ShieldSilver";

		public static string ShieldWood = "ShieldWood";

		public static string ShieldWoodTower = "ShieldWoodTower";

		public static string ShocklateSmoothie = "ShocklateSmoothie";

		public static string Silver = "Silver";

		public static string SilverNecklace = "SilverNecklace";

		public static string SilverOre = "SilverOre";

		public static string SizzlingBerryBroth = "SizzlingBerryBroth";

		public static string SledgeCheat = "SledgeCheat";

		public static string SledgeDemolisher = "SledgeDemolisher";

		public static string SledgeIron = "SledgeIron";

		public static string SledgeStagbreaker = "SledgeStagbreaker";

		public static string Softtissue = "Softtissue";

		public static string SpearBronze = "SpearBronze";

		public static string SpearCarapace = "SpearCarapace";

		public static string SpearChitin = "SpearChitin";

		public static string SpearElderbark = "SpearElderbark";

		public static string SpearFlint = "SpearFlint";

		public static string SpearSplitner = "SpearSplitner";

		public static string SpearSplitnerBlood = "SpearSplitner_Blood";

		public static string SpearSplitnerLightning = "SpearSplitner_Lightning";

		public static string SpearSplitnerNature = "SpearSplitner_Nature";

		public static string SpearWolfFang = "SpearWolfFang";

		public static string SpiceAshlands = "SpiceAshlands";

		public static string SpiceForests = "SpiceForests";

		public static string SpiceMistlands = "SpiceMistlands";

		public static string SpiceMountains = "SpiceMountains";

		public static string SpiceOceans = "SpiceOceans";

		public static string SpicePlains = "SpicePlains";

		public static string SpicyMarmalade = "SpicyMarmalade";

		public static string StaffClusterbomb = "StaffClusterbomb";

		public static string StaffFireball = "StaffFireball";

		public static string StaffGreenRoots = "StaffGreenRoots";

		public static string StaffIceShards = "StaffIceShards";

		public static string StaffLightning = "StaffLightning";

		public static string StaffRedTroll = "StaffRedTroll";

		public static string StaffShield = "StaffShield";

		public static string StaffSkeleton = "StaffSkeleton";

		public static string StaminaUpgradeGreydwarf = "StaminaUpgrade_Greydwarf";

		public static string StaminaUpgradeTroll = "StaminaUpgrade_Troll";

		public static string StaminaUpgradeWraith = "StaminaUpgrade_Wraith";

		public static string Stone = "Stone";

		public static string SurtlingCore = "SurtlingCore";

		public static string SwordBlackmetal = "SwordBlackmetal";

		public static string SwordBronze = "SwordBronze";

		public static string SwordCheat = "SwordCheat";

		public static string SwordDyrnwyn = "SwordDyrnwyn";

		public static string SwordIron = "SwordIron";

		public static string SwordIronFire = "SwordIronFire";

		public static string SwordMistwalker = "SwordMistwalker";

		public static string SwordNiedhogg = "SwordNiedhogg";

		public static string SwordNiedhoggBlood = "SwordNiedhoggBlood";

		public static string SwordNiedhoggLightning = "SwordNiedhoggLightning";

		public static string SwordNiedhoggNature = "SwordNiedhoggNature";

		public static string SwordSilver = "SwordSilver";

		public static string Tankard = "Tankard";

		public static string TankardDvergr = "Tankard_dvergr";

		public static string TankardAnniversary = "TankardAnniversary";

		public static string TankardOdin = "TankardOdin";

		public static string Tar = "Tar";

		public static string TarLiquid = "TarLiquid";

		public static string ThSwordKrom = "THSwordKrom";

		public static string ThSwordSlayer = "THSwordSlayer";

		public static string ThSwordSlayerBlood = "THSwordSlayerBlood";

		public static string ThSwordSlayerLightning = "THSwordSlayerLightning";

		public static string ThSwordSlayerNature = "THSwordSlayerNature";

		public static string Thistle = "Thistle";

		public static string Thunderstone = "Thunderstone";

		public static string Tin = "Tin";

		public static string TinOre = "TinOre";

		public static string TolrokoFlyer = "tolroko_flyer";

		public static string Torch = "Torch";

		public static string TorchMist = "TorchMist";

		public static string TreasurePile = "treasure_pile";

		public static string TreasureStack = "treasure_stack";

		public static string TrollHide = "TrollHide";

		public static string TrophyAbomination = "TrophyAbomination";

		public static string TrophyAsksvin = "TrophyAsksvin";

		public static string TrophyBlob = "TrophyBlob";

		public static string TrophyBoar = "TrophyBoar";

		public static string TrophyBonemass = "TrophyBonemass";

		public static string TrophyBonemawSerpent = "TrophyBonemawSerpent";

		public static string TrophyCharredArcher = "TrophyCharredArcher";

		public static string TrophyCharredMage = "TrophyCharredMage";

		public static string TrophyCharredMelee = "TrophyCharredMelee";

		public static string TrophyCultist = "TrophyCultist";

		public static string TrophyCultistHildir = "TrophyCultist_Hildir";

		public static string TrophyDeathsquito = "TrophyDeathsquito";

		public static string TrophyDeer = "TrophyDeer";

		public static string TrophyDragonQueen = "TrophyDragonQueen";

		public static string TrophyDraugr = "TrophyDraugr";

		public static string TrophyDraugrElite = "TrophyDraugrElite";

		public static string TrophyDraugrFem = "TrophyDraugrFem";

		public static string TrophyDvergr = "TrophyDvergr";

		public static string TrophyEikthyr = "TrophyEikthyr";

		public static string TrophyFader = "TrophyFader";

		public static string TrophyFallenValkyrie = "TrophyFallenValkyrie";

		public static string TrophyFenring = "TrophyFenring";

		public static string TrophyForestTroll = "TrophyForestTroll";

		public static string TrophyFrostTroll = "TrophyFrostTroll";

		public static string TrophyGjall = "TrophyGjall";

		public static string TrophyGoblin = "TrophyGoblin";

		public static string TrophyGoblinBrute = "TrophyGoblinBrute";

		public static string TrophyGoblinBruteBrosBrute = "TrophyGoblinBruteBrosBrute";

		public static string TrophyGoblinBruteBrosShaman = "TrophyGoblinBruteBrosShaman";

		public static string TrophyGoblinKing = "TrophyGoblinKing";

		public static string TrophyGoblinShaman = "TrophyGoblinShaman";

		public static string TrophyGreydwarf = "TrophyGreydwarf";

		public static