Decompiled source of Horemvores Assembly Mod v1.0.13

Assembly_Horemvore.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using Jotunn;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("Assembly_Horemvore")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Assembly_Horemvore")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b5c28acd-e0e2-4e63-8988-2276f02aa042")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
public class IsPieceInWater_HS : MonoBehaviour
{
	private void Start()
	{
	}

	private void Update()
	{
	}
}
namespace Assembly_Horemvore
{
	public class GFXRotation_HS : MonoBehaviour
	{
		public enum spaceEnum
		{
			Local,
			World
		}

		[Header("Rotate by degrees per second")]
		public Vector3 rotateVector = Vector3.zero;

		public spaceEnum rotateSpace;

		private void Update()
		{
			//IL_0015: 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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			if (rotateSpace == spaceEnum.Local)
			{
				((Component)this).transform.Rotate(rotateVector * Time.deltaTime);
			}
			if (rotateSpace == spaceEnum.World)
			{
				((Component)this).transform.Rotate(rotateVector * Time.deltaTime, (Space)0);
			}
		}
	}
	public class RandomSpawner_HS : MonoBehaviour
	{
		private int randomArrayLength = -1;

		public GameObject[] m_prefabList = (GameObject[])(object)new GameObject[0];

		[Header("Levels of Monsters or Items")]
		public int m_maxLevel = 3;

		public int m_minLevel = 1;

		public float m_levelupChance = 15f;

		[Header("Spawn settings")]
		public bool m_setPatrolSpawnPoint;

		private ZNetView m_nview;

		private GameObject m_prefab;

		private int selecter;

		private void Start()
		{
			randomArrayLength = m_prefabList.Length;
			m_nview = ((Component)this).GetComponentInParent<ZNetView>();
			if ((Object)(object)m_nview == (Object)null)
			{
				ZLog.LogWarning((object)("RandomSpawner_HS cant find netview " + ((Object)((Component)this).gameObject).name));
			}
			else
			{
				((MonoBehaviour)this).Invoke("DoSpawn", 1f);
			}
		}

		private void DoSpawn()
		{
			//IL_0088: 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)
			if (!m_nview.IsValid() || !m_nview.IsOwner())
			{
				return;
			}
			string text = "RandomSpawner_HS_" + ((Object)((Component)this).gameObject).name;
			if (!m_nview.GetZDO().GetBool(text, false))
			{
				selecter = Random.Range(0, randomArrayLength);
				m_prefab = m_prefabList[selecter];
				GameObject val = Object.Instantiate<GameObject>(m_prefab, ((Component)this).transform.position, ((Component)this).transform.rotation);
				BaseAI component = val.GetComponent<BaseAI>();
				if ((Object)(object)component != (Object)null && m_setPatrolSpawnPoint)
				{
					component.SetPatrolPoint();
				}
				int minLevel = m_minLevel;
				int maxLevel = m_maxLevel;
				float levelupChance = m_levelupChance;
				if (maxLevel > 1)
				{
					Character component2 = val.GetComponent<Character>();
					if (Object.op_Implicit((Object)(object)component2))
					{
						int i;
						for (i = minLevel; i < maxLevel; i++)
						{
							if (!(Random.Range(0f, 100f) <= levelupChance))
							{
								break;
							}
						}
						if (i > 1)
						{
							component2.SetLevel(i);
						}
					}
					else
					{
						ItemDrop component3 = val.GetComponent<ItemDrop>();
						if (Object.op_Implicit((Object)(object)component3))
						{
							int j;
							for (j = minLevel; j < maxLevel; j++)
							{
								if (!(Random.Range(0f, 100f) <= levelupChance))
								{
									break;
								}
							}
							if (j > 1)
							{
								component3.SetQuality(j);
							}
						}
					}
				}
				m_nview.GetZDO().Set(text, true);
			}
			((MonoBehaviour)this).CancelInvoke("DoSpawn");
		}
	}
	public class Rotator_HS : MonoBehaviour
	{
		public float x = 0f;

		public float y = 0f;

		public float z = 0f;

		private void OnEnable()
		{
			((MonoBehaviour)this).InvokeRepeating("Rotate", 0f, 0.0167f);
		}

		private void OnDisable()
		{
			((MonoBehaviour)this).CancelInvoke();
		}

		private void Rotate()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			Transform transform = ((Component)this).transform;
			transform.localEulerAngles += new Vector3(x, y, z);
		}
	}
	public class SE_ThrowUp_HS : StatusEffect
	{
		[Header("__Throw Up__")]
		public EffectList m_pukeEffects = new EffectList();

		public float m_pukeInterval = 1f;

		public DamageTypes m_damagePerTick;

		public DamageTypes m_tickDamagePerLevel;

		public float m_damageModifier;

		public int m_itemLevel = 1;

		private float m_pukeTimer;

		public override void Setup(Character character)
		{
			((StatusEffect)this).Setup(character);
		}

		private DamageTypes GetDamage()
		{
			//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_0010: Unknown result type (might be due to invalid IL or missing references)
			return GetDamage(m_itemLevel);
		}

		private DamageTypes GetDamage(int itemQuality)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: 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_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			if (itemQuality <= 1)
			{
				itemQuality = 1;
			}
			DamageTypes damagePerTick = m_damagePerTick;
			((DamageTypes)(ref damagePerTick)).Add(m_tickDamagePerLevel, itemQuality);
			((DamageTypes)(ref damagePerTick)).Modify(m_damageModifier);
			return damagePerTick;
		}

		public override void UpdateStatusEffect(float dt)
		{
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//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)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: 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_006e: Unknown result type (might be due to invalid IL or missing references)
			((StatusEffect)this).UpdateStatusEffect(dt);
			m_pukeTimer += dt;
			if (m_pukeTimer > m_pukeInterval)
			{
				m_pukeTimer = 0f;
				Character character = base.m_character;
				if (((Player)((character is Player) ? character : null)).RemoveOneFood())
				{
					m_pukeEffects.Create(((Component)base.m_character).transform.position, ((Component)base.m_character).transform.rotation, (Transform)null, 1f, -1);
				}
				HitData val = new HitData();
				val.m_point = base.m_character.GetCenterPoint();
				val.m_damage = GetDamage();
				base.m_character.ApplyDamage(val, true, true, (DamageModifier)0);
			}
		}
	}
}
namespace HoremvoreAssembly
{
	[RequireComponent(typeof(Character))]
	public class BossStage_BossObject_HS : MonoBehaviour
	{
		public StatusEffect m_bossStatusEffect;

		private Character m_character;

		private int m_statusEffectHash;

		private void Start()
		{
			m_character = ((Component)this).GetComponent<Character>();
			if (!Object.op_Implicit((Object)(object)m_character))
			{
				return;
			}
			Character character = m_character;
			string text = ((Object)m_bossStatusEffect).name.ToString() ?? "";
			bool flag = character.GetSEMan().HaveStatusEffect(text);
			float healthPercentage = character.GetHealthPercentage();
			float maxHealth = character.GetMaxHealth();
			if (!flag)
			{
				m_statusEffectHash = ((object)m_bossStatusEffect).GetHashCode();
				character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
				if (healthPercentage <= 1f)
				{
					character.Heal(maxHealth, true);
				}
			}
		}

		private void Update()
		{
		}
	}
	public class BossStage_Controller_HS : StatusEffect
	{
		[Header("__Boss Stage Controller__")]
		public int m_uniqueID;

		public float m_checkHealthInterval = 60f;

		public string m_youLostMessage;

		public bool m_killBossAtEndOfTimer;

		public bool m_removeAddsAtEndOfTimer;

		[Header("Stage One")]
		public string m_stageOneStartMessage;

		public Sprite m_stageOneIcon;

		public float m_firstHealthPercent = 0.8f;

		public StatusEffect m_firstStatusEffect;

		[Header("Stage One - Monster Wave")]
		public bool m_enableFirstWave;

		public GameObject m_firstWaveMonster;

		public int m_firstWaveMinToSpawn;

		public int m_firstWaveMaxToSpawn;

		public float m_firstWaveSpawnRadius;

		public bool m_firstWaveSnapToTerrain;

		public float m_firstWaveSpawnGroundOffset;

		[Header("Stage One - Boss Effect")]
		public bool m_enableFirstBossEffect;

		public GameObject m_firstBossEffect;

		public float m_firstBossEffectRadius;

		public int m_firstBossEffectMinAmount;

		public int m_firstBossEffectMaxAmount;

		public bool m_firstBossEffectMoveTowardBoss;

		public bool m_firstBossEffectHealsBoss;

		public bool m_destroyFirstBossEffectAfterHealingBoss;

		public bool m_firstBossEffectRandomStartMovement;

		[Header("Stage One - Boss Effect - Manual Settings")]
		public int m_firstBossEffectForcePowerMin = 1;

		public int m_firstBossEffectForcePowerMax = 5;

		public bool m_manuallySetFirstBossEffectVector3;

		public Vector3 m_firstBossEffectAddForceVector3;

		[Header("Stage Two")]
		public string m_stageTwoStartMessage;

		public Sprite m_stageTwoIcon;

		public float m_secondHealthPercent = 0.6f;

		public StatusEffect m_secondStatusEffect;

		[Header("Stage Two - Monster Wave")]
		public bool m_enableSecondWave;

		public GameObject m_secondWaveMonster;

		public int m_secondWaveMinToSpawn;

		public int m_secondWaveMaxToSpawn;

		public float m_secondWaveSpawnRadius;

		public bool m_secondWaveSnapToTerrain;

		public float m_secondWaveSpawnGroundOffset;

		[Header("Stage Two - Boss Effect")]
		public bool m_enableSecondBossEffect;

		public GameObject m_secondBossEffect;

		public float m_secondBossEffectRadius;

		public int m_secondBossEffectMinAmount;

		public int m_secondBossEffectMaxAmount;

		public bool m_secondBossEffectMoveTowardBoss;

		public bool m_secondBossEffectRandomStartMovement;

		public bool m_secondBossEffectHealsBoss;

		public bool m_destroySecondBossEffectAfterHealingBoss;

		[Header("Stage Two - Boss Effect - Manual Settings")]
		public int m_secondBossEffectForcePowerMin = 1;

		public int m_secondBossEffectForcePowerMax = 5;

		public bool m_manuallySetSecondBossEffectVector3;

		public Vector3 m_secondBossEffectAddForceVector3;

		[Header("Stage Three")]
		public string m_stageThreeStartMessage;

		public Sprite m_stageThreeIcon;

		public float m_thirdHealthPercent = 0.4f;

		public StatusEffect m_thirdStatusEffect;

		[Header("Stage Three - Monster Wave")]
		public bool m_enableThirdWave;

		public GameObject m_thirdWaveMonster;

		public int m_thirdWaveMinToSpawn;

		public int m_thirdWaveMaxToSpawn;

		public float m_thirdWaveSpawnRadius;

		public bool m_thirdWaveSnapToTerrain;

		public float m_thirdWaveSpawnGroundOffset;

		[Header("Stage Three - Boss Effect")]
		public bool m_enableThirdBossEffect;

		public GameObject m_thirdBossEffect;

		public float m_thirdBossEffectRadius;

		public int m_thirdBossEffectMinAmount;

		public int m_thirdBossEffectMaxAmount;

		public bool m_thirdBossEffectMoveTowardBoss;

		public bool m_thirdBossEffectRandomStartMovement;

		public bool m_thirdBossEffectHealsBoss;

		public bool m_destroyThirdBossEffectAfterHealingBoss;

		[Header("Stage Three - Boss Effect - Manual Settings")]
		public int m_thirdBossEffectForcePowerMin = 1;

		public int m_thirdBossEffectForcePowerMax = 5;

		public bool m_manuallySetThirdBossEffectVector3;

		public Vector3 m_thirdBossEffectAddForceVector3;

		[Header("Stage Four")]
		public string m_stageFourStartMessage;

		public Sprite m_stageFourIcon;

		public float m_fourthHealthPercent = 0.2f;

		public StatusEffect m_fourthStatusEffect;

		[Header("Stage Four - Monster Wave")]
		public bool m_enableFourthWave;

		public GameObject m_fourthWaveMonster;

		public int m_fourthWaveMinToSpawn;

		public int m_fourthWaveMaxToSpawn;

		public float m_fourthWaveSpawnRadius;

		public bool m_fourthWaveSnapToTerrain;

		public float m_fourthWaveSpawnGroundOffset;

		[Header("Stage Four - Boss Effect")]
		public bool m_enableFourthBossEffect;

		public GameObject m_fourthBossEffect;

		public float m_fourthBossEffectRadius;

		public int m_fourthBossEffectMinAmount;

		public int m_fourthBossEffectMaxAmount;

		public bool m_fourthBossEffectMoveTowardBoss;

		public bool m_fourthBossEffectRandomStartMovement;

		public bool m_fourthBossEffectHealsBoss;

		public bool m_destroyFourthBossEffectAfterHealingBoss;

		[Header("Stage Four - Boss Effect - Manual Settings")]
		public int m_fourthBossEffectForcePowerMin = 1;

		public int m_fourthBossEffectForcePowerMax = 5;

		public bool m_manuallySetFourthBossEffectVector3;

		public Vector3 m_fourthBossEffectAddForceVector3;

		[Header("Shared Settings")]
		public bool m_alertSpawnedCreatures;

		public int m_getSolidHeightMargin = 1000;

		public EffectList m_spawnEffect = new EffectList();

		private float m_addTimer;

		private float m_HealthPercent;

		private int m_statusEffectHash;

		private int m_removeStatusEffectHash;

		private Vector3 vSpawnPoint;

		private Quaternion quaternion;

		public string m_prefabNameOfThisScriptableObject;

		private int iStageCount = 0;

		private int iForcePowerFirstEffect;

		private int iForcePowerSecondEffect;

		private int iForcePowerThirdEffect;

		private int iForcePowerFourthEffect;

		private readonly float fEndCounter = 60f;

		private string sStatusEffect;

		private bool m_isDone;

		private ZNetView m_nview;

		public void OnEnable()
		{
			m_prefabNameOfThisScriptableObject = ((Object)this).name.ToString() ?? "";
		}

		public override bool CanAdd(Character character)
		{
			if (character.GetSEMan().HaveStatusEffect(m_prefabNameOfThisScriptableObject))
			{
				return false;
			}
			if (!((Character)((Component)character).GetComponent<Humanoid>()).m_boss)
			{
				return false;
			}
			return ((StatusEffect)this).CanAdd(character);
		}

		public override void Setup(Character character)
		{
			((StatusEffect)this).Setup(character);
		}

		public override void UpdateStatusEffect(float dt)
		{
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: 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_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Unknown result type (might be due to invalid IL or missing references)
			//IL_0399: Unknown result type (might be due to invalid IL or missing references)
			//IL_039b: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0773: Unknown result type (might be due to invalid IL or missing references)
			//IL_0778: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0785: Unknown result type (might be due to invalid IL or missing references)
			//IL_078a: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			//IL_078f: Unknown result type (might be due to invalid IL or missing references)
			//IL_079b: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d96: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dca: Unknown result type (might be due to invalid IL or missing references)
			//IL_13af: Unknown result type (might be due to invalid IL or missing references)
			//IL_13b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_13b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_13c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_13c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_13c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_13cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_13d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_13de: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_0428: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_09da: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0801: Unknown result type (might be due to invalid IL or missing references)
			//IL_0806: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ff8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fff: Unknown result type (might be due to invalid IL or missing references)
			//IL_1004: Unknown result type (might be due to invalid IL or missing references)
			//IL_1009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e24: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de2: Unknown result type (might be due to invalid IL or missing references)
			//IL_15ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_15f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_15f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1600: Unknown result type (might be due to invalid IL or missing references)
			//IL_1605: Unknown result type (might be due to invalid IL or missing references)
			//IL_1608: Unknown result type (might be due to invalid IL or missing references)
			//IL_160a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1616: Unknown result type (might be due to invalid IL or missing references)
			//IL_161d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1622: Unknown result type (might be due to invalid IL or missing references)
			//IL_1627: Unknown result type (might be due to invalid IL or missing references)
			//IL_143d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1442: Unknown result type (might be due to invalid IL or missing references)
			//IL_1400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0324: Unknown result type (might be due to invalid IL or missing references)
			//IL_0330: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a33: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a01: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a06: Unknown result type (might be due to invalid IL or missing references)
			//IL_104c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1051: Unknown result type (might be due to invalid IL or missing references)
			//IL_101f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1024: Unknown result type (might be due to invalid IL or missing references)
			//IL_166a: Unknown result type (might be due to invalid IL or missing references)
			//IL_166f: Unknown result type (might be due to invalid IL or missing references)
			//IL_163d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a40: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a46: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_105e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f11: Unknown result type (might be due to invalid IL or missing references)
			//IL_167c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1682: Unknown result type (might be due to invalid IL or missing references)
			//IL_152f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0942: Unknown result type (might be due to invalid IL or missing references)
			//IL_094e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_157e: Unknown result type (might be due to invalid IL or missing references)
			//IL_158a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0556: Unknown result type (might be due to invalid IL or missing references)
			//IL_0562: Unknown result type (might be due to invalid IL or missing references)
			//IL_056c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0596: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0600: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b80: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1192: Unknown result type (might be due to invalid IL or missing references)
			//IL_119e: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_17b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_17bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_17c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bca: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bea: Unknown result type (might be due to invalid IL or missing references)
			//IL_11d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11de: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_11fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_1208: Unknown result type (might be due to invalid IL or missing references)
			//IL_17f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_17fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_1801: Unknown result type (might be due to invalid IL or missing references)
			//IL_1806: Unknown result type (might be due to invalid IL or missing references)
			//IL_180a: Unknown result type (might be due to invalid IL or missing references)
			//IL_180f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1813: Unknown result type (might be due to invalid IL or missing references)
			//IL_181c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1826: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c08: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1226: Unknown result type (might be due to invalid IL or missing references)
			//IL_1232: Unknown result type (might be due to invalid IL or missing references)
			//IL_123c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1844: Unknown result type (might be due to invalid IL or missing references)
			//IL_1850: Unknown result type (might be due to invalid IL or missing references)
			//IL_185a: Unknown result type (might be due to invalid IL or missing references)
			((StatusEffect)this).UpdateStatusEffect(dt);
			m_addTimer += dt;
			if (!(m_addTimer > m_checkHealthInterval))
			{
				return;
			}
			m_HealthPercent = base.m_character.GetHealthPercentage();
			vSpawnPoint = ((Component)base.m_character).transform.position;
			m_addTimer = 0f;
			Vector3 val6;
			switch (iStageCount)
			{
			case 0:
				if (!(m_HealthPercent <= m_firstHealthPercent))
				{
					break;
				}
				if (m_stageOneStartMessage != "")
				{
					MessageHud.instance.ShowMessage((MessageType)2, m_stageOneStartMessage, 0, (Sprite)null);
				}
				base.m_icon = m_stageOneIcon;
				m_statusEffectHash = ((object)m_firstStatusEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
				iForcePowerFirstEffect = Random.Range(m_firstBossEffectForcePowerMin, m_firstBossEffectForcePowerMax);
				if (m_enableFirstWave)
				{
					int num15 = Random.Range(m_firstWaveMinToSpawn, m_firstWaveMaxToSpawn);
					int num16 = 0;
					float y3 = default(float);
					while (num16 < num15)
					{
						Vector3 position5 = ((Component)base.m_character).transform.position;
						Vector2 val11 = Random.insideUnitCircle * m_firstWaveSpawnRadius;
						vSpawnPoint = position5 + new Vector3(val11.x, 0f, val11.y);
						if (m_firstWaveSnapToTerrain)
						{
							ZoneSystem.instance.GetSolidHeight(vSpawnPoint, ref y3, m_getSolidHeightMargin);
							vSpawnPoint.y = y3;
						}
						vSpawnPoint.y += m_firstWaveSpawnGroundOffset;
						GameObject val12 = Object.Instantiate<GameObject>(m_firstWaveMonster, vSpawnPoint, Quaternion.identity);
						val12.AddComponent(typeof(BossStage_Object_HS));
						val12.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component11 = val12.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component11))
							{
								val12.AddComponent(typeof(CharacterTimedDestruction));
								val12.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val12.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val12.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val12.AddComponent(typeof(TimedDestruction));
								val12.GetComponent<TimedDestruction>().m_timeout = 60f;
								val12.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						Projectile component12 = val12.GetComponent<Projectile>();
						if (Object.op_Implicit((Object)(object)component12))
						{
							component12.Setup(base.m_character, Vector3.zero, -1f, (HitData)null, (ItemData)null, (ItemData)null);
						}
						BaseAI component13 = val12.GetComponent<BaseAI>();
						if (Object.op_Implicit((Object)(object)component13) && m_alertSpawnedCreatures)
						{
							component13.Alert();
						}
						m_spawnEffect.Create(val12.transform.position, val12.transform.rotation, (Transform)null, 1f, -1);
						int num17 = num16 + 1;
						num16 = num17;
					}
				}
				if (m_enableFirstBossEffect)
				{
					int num18 = Random.Range(m_firstBossEffectMinAmount, m_firstBossEffectMaxAmount);
					int num19 = 0;
					while (num19 < num18)
					{
						Vector3 position6 = ((Component)base.m_character).transform.position;
						Vector2 val13 = Random.insideUnitCircle * m_firstBossEffectRadius;
						vSpawnPoint = position6 + new Vector3(val13.x, 0f, val13.y);
						if (!m_firstBossEffectRandomStartMovement)
						{
							quaternion = Quaternion.identity;
						}
						else
						{
							int num20 = Random.Range(-359, 359);
							quaternion = Quaternion.Euler(0f, (float)num20, 0f);
						}
						GameObject val14 = Object.Instantiate<GameObject>(m_firstBossEffect, vSpawnPoint, quaternion);
						val14.AddComponent(typeof(BossStage_Object_HS));
						val14.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component14 = val14.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component14))
							{
								val14.AddComponent(typeof(CharacterTimedDestruction));
								val14.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val14.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val14.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val14.AddComponent(typeof(TimedDestruction));
								val14.GetComponent<TimedDestruction>().m_timeout = 60f;
								val14.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						if (m_firstBossEffectHealsBoss)
						{
							val14.GetComponent<BossStage_Object_HS>().m_healsBoss = true;
							if (m_destroyFirstBossEffectAfterHealingBoss)
							{
								val14.GetComponent<BossStage_Object_HS>().m_killSelf = true;
							}
						}
						Rigidbody component15 = val14.GetComponent<Rigidbody>();
						if (Object.op_Implicit((Object)(object)component15))
						{
							if (m_manuallySetFirstBossEffectVector3)
							{
								component15.AddForce(m_firstBossEffectAddForceVector3 * (float)iForcePowerFirstEffect * Time.fixedDeltaTime, (ForceMode)0);
							}
							else if (m_firstBossEffectMoveTowardBoss)
							{
								val6 = ((Component)base.m_character).transform.position - val14.transform.position;
								Vector3 normalized3 = ((Vector3)(ref val6)).normalized;
								component15.AddForce(normalized3 * (float)iForcePowerFirstEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
							else if (m_firstBossEffectRandomStartMovement)
							{
								component15.AddForce(Vector3.forward * (float)iForcePowerFirstEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
						}
						int num21 = num19 + 1;
						num19 = num21;
					}
				}
				iStageCount++;
				break;
			case 1:
				if (!(m_HealthPercent <= m_secondHealthPercent))
				{
					break;
				}
				if (m_stageTwoStartMessage != "")
				{
					MessageHud.instance.ShowMessage((MessageType)2, m_stageOneStartMessage, 0, (Sprite)null);
				}
				sStatusEffect = ((Object)m_firstStatusEffect).name.ToString() ?? "";
				if (base.m_character.GetSEMan().HaveStatusEffect(sStatusEffect))
				{
					m_removeStatusEffectHash = ((object)m_firstStatusEffect).GetHashCode();
					base.m_character.GetSEMan().RemoveStatusEffect(m_removeStatusEffectHash, false);
				}
				base.m_icon = m_stageTwoIcon;
				m_statusEffectHash = ((object)m_secondStatusEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
				iForcePowerSecondEffect = Random.Range(m_secondBossEffectForcePowerMin, m_secondBossEffectForcePowerMax);
				if (m_enableSecondWave)
				{
					int num8 = Random.Range(m_secondWaveMinToSpawn, m_secondWaveMaxToSpawn);
					int num9 = 0;
					float y2 = default(float);
					while (num9 < num8)
					{
						Vector3 position3 = ((Component)base.m_character).transform.position;
						Vector2 val7 = Random.insideUnitCircle * m_secondWaveSpawnRadius;
						vSpawnPoint = position3 + new Vector3(val7.x, 0f, val7.y);
						if (m_secondWaveSnapToTerrain)
						{
							ZoneSystem.instance.GetSolidHeight(vSpawnPoint, ref y2, m_getSolidHeightMargin);
							vSpawnPoint.y = y2;
						}
						vSpawnPoint.y += m_secondWaveSpawnGroundOffset;
						GameObject val8 = Object.Instantiate<GameObject>(m_secondWaveMonster, vSpawnPoint, Quaternion.identity);
						val8.AddComponent(typeof(BossStage_Object_HS));
						val8.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component6 = val8.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component6))
							{
								val8.AddComponent(typeof(CharacterTimedDestruction));
								val8.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val8.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val8.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val8.AddComponent(typeof(TimedDestruction));
								val8.GetComponent<TimedDestruction>().m_timeout = 60f;
								val8.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						Projectile component7 = val8.GetComponent<Projectile>();
						if (Object.op_Implicit((Object)(object)component7))
						{
							component7.Setup(base.m_character, Vector3.zero, -1f, (HitData)null, (ItemData)null, (ItemData)null);
						}
						BaseAI component8 = val8.GetComponent<BaseAI>();
						if (Object.op_Implicit((Object)(object)component8) && m_alertSpawnedCreatures)
						{
							component8.Alert();
						}
						m_spawnEffect.Create(val8.transform.position, val8.transform.rotation, (Transform)null, 1f, -1);
						int num10 = num9 + 1;
						num9 = num10;
					}
				}
				if (m_enableSecondBossEffect)
				{
					int num11 = Random.Range(m_secondBossEffectMinAmount, m_secondBossEffectMaxAmount);
					int num12 = 0;
					while (num12 < num11)
					{
						Vector3 position4 = ((Component)base.m_character).transform.position;
						Vector2 val9 = Random.insideUnitCircle * m_secondBossEffectRadius;
						vSpawnPoint = position4 + new Vector3(val9.x, 0f, val9.y);
						if (!m_secondBossEffectRandomStartMovement)
						{
							quaternion = Quaternion.identity;
						}
						else
						{
							int num13 = Random.Range(-359, 359);
							quaternion = Quaternion.Euler(0f, (float)num13, 0f);
						}
						GameObject val10 = Object.Instantiate<GameObject>(m_secondBossEffect, vSpawnPoint, quaternion);
						val10.AddComponent(typeof(BossStage_Object_HS));
						val10.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component9 = val10.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component9))
							{
								val10.AddComponent(typeof(CharacterTimedDestruction));
								val10.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val10.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val10.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val10.AddComponent(typeof(TimedDestruction));
								val10.GetComponent<TimedDestruction>().m_timeout = 60f;
								val10.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						if (m_secondBossEffectHealsBoss)
						{
							val10.GetComponent<BossStage_Object_HS>().m_healsBoss = true;
							if (m_destroySecondBossEffectAfterHealingBoss)
							{
								val10.GetComponent<BossStage_Object_HS>().m_killSelf = true;
							}
						}
						Rigidbody component10 = val10.GetComponent<Rigidbody>();
						if (Object.op_Implicit((Object)(object)component10))
						{
							if (m_manuallySetSecondBossEffectVector3)
							{
								component10.AddForce(m_secondBossEffectAddForceVector3 * (float)iForcePowerSecondEffect * Time.fixedDeltaTime, (ForceMode)0);
							}
							else if (m_secondBossEffectMoveTowardBoss)
							{
								val6 = ((Component)base.m_character).transform.position - val10.transform.position;
								Vector3 normalized2 = ((Vector3)(ref val6)).normalized;
								component10.AddForce(normalized2 * (float)iForcePowerSecondEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
							else if (m_secondBossEffectRandomStartMovement)
							{
								component10.AddForce(Vector3.forward * (float)iForcePowerSecondEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
						}
						int num14 = num12 + 1;
						num12 = num14;
					}
				}
				iStageCount++;
				break;
			case 2:
				if (!(m_HealthPercent <= m_thirdHealthPercent))
				{
					break;
				}
				if (m_stageThreeStartMessage != "")
				{
					MessageHud.instance.ShowMessage((MessageType)2, m_stageOneStartMessage, 0, (Sprite)null);
				}
				sStatusEffect = ((Object)m_secondStatusEffect).name.ToString() ?? "";
				if (base.m_character.GetSEMan().HaveStatusEffect(sStatusEffect))
				{
					m_removeStatusEffectHash = ((object)m_secondStatusEffect).GetHashCode();
					base.m_character.GetSEMan().RemoveStatusEffect(m_removeStatusEffectHash, false);
				}
				base.m_icon = m_stageThreeIcon;
				m_statusEffectHash = ((object)m_thirdStatusEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
				iForcePowerThirdEffect = Random.Range(m_thirdBossEffectForcePowerMin, m_thirdBossEffectForcePowerMax);
				if (m_enableThirdWave)
				{
					int num22 = Random.Range(m_thirdWaveMinToSpawn, m_thirdWaveMaxToSpawn);
					int num23 = 0;
					float y4 = default(float);
					while (num23 < num22)
					{
						Vector3 position7 = ((Component)base.m_character).transform.position;
						Vector2 val15 = Random.insideUnitCircle * m_thirdWaveSpawnRadius;
						vSpawnPoint = position7 + new Vector3(val15.x, 0f, val15.y);
						if (m_thirdWaveSnapToTerrain)
						{
							ZoneSystem.instance.GetSolidHeight(vSpawnPoint, ref y4, m_getSolidHeightMargin);
							vSpawnPoint.y = y4;
						}
						vSpawnPoint.y += m_thirdWaveSpawnGroundOffset;
						GameObject val16 = Object.Instantiate<GameObject>(m_thirdWaveMonster, vSpawnPoint, Quaternion.identity);
						val16.AddComponent(typeof(BossStage_Object_HS));
						val16.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component16 = val16.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component16))
							{
								val16.AddComponent(typeof(CharacterTimedDestruction));
								val16.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val16.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val16.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val16.AddComponent(typeof(TimedDestruction));
								val16.GetComponent<TimedDestruction>().m_timeout = 60f;
								val16.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						Projectile component17 = val16.GetComponent<Projectile>();
						if (Object.op_Implicit((Object)(object)component17))
						{
							component17.Setup(base.m_character, Vector3.zero, -1f, (HitData)null, (ItemData)null, (ItemData)null);
						}
						BaseAI component18 = val16.GetComponent<BaseAI>();
						if (Object.op_Implicit((Object)(object)component18) && m_alertSpawnedCreatures)
						{
							component18.Alert();
						}
						m_spawnEffect.Create(val16.transform.position, val16.transform.rotation, (Transform)null, 1f, -1);
						int num24 = num23 + 1;
						num23 = num24;
					}
				}
				if (m_enableThirdBossEffect)
				{
					int num25 = Random.Range(m_thirdBossEffectMinAmount, m_thirdBossEffectMaxAmount);
					int num26 = 0;
					while (num26 < num25)
					{
						Vector3 position8 = ((Component)base.m_character).transform.position;
						Vector2 val17 = Random.insideUnitCircle * m_thirdBossEffectRadius;
						vSpawnPoint = position8 + new Vector3(val17.x, 0f, val17.y);
						if (!m_thirdBossEffectRandomStartMovement)
						{
							quaternion = Quaternion.identity;
						}
						else
						{
							int num27 = Random.Range(-359, 359);
							quaternion = Quaternion.Euler(0f, (float)num27, 0f);
						}
						GameObject val18 = Object.Instantiate<GameObject>(m_thirdBossEffect, vSpawnPoint, quaternion);
						val18.AddComponent(typeof(BossStage_Object_HS));
						val18.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component19 = val18.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component19))
							{
								val18.AddComponent(typeof(CharacterTimedDestruction));
								val18.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val18.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val18.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val18.AddComponent(typeof(TimedDestruction));
								val18.GetComponent<TimedDestruction>().m_timeout = 60f;
								val18.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						if (m_thirdBossEffectHealsBoss)
						{
							val18.GetComponent<BossStage_Object_HS>().m_healsBoss = true;
							if (m_destroyThirdBossEffectAfterHealingBoss)
							{
								val18.GetComponent<BossStage_Object_HS>().m_killSelf = true;
							}
						}
						Rigidbody component20 = val18.GetComponent<Rigidbody>();
						if (Object.op_Implicit((Object)(object)component20))
						{
							if (m_manuallySetThirdBossEffectVector3)
							{
								component20.AddForce(m_thirdBossEffectAddForceVector3 * (float)iForcePowerThirdEffect * Time.fixedDeltaTime, (ForceMode)0);
							}
							else if (m_thirdBossEffectMoveTowardBoss)
							{
								val6 = ((Component)base.m_character).transform.position - val18.transform.position;
								Vector3 normalized4 = ((Vector3)(ref val6)).normalized;
								component20.AddForce(normalized4 * (float)iForcePowerThirdEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
							else if (m_thirdBossEffectRandomStartMovement)
							{
								component20.AddForce(Vector3.forward * (float)iForcePowerThirdEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
						}
						int num28 = num26 + 1;
						num26 = num28;
					}
				}
				iStageCount++;
				break;
			case 3:
				if (!(m_HealthPercent <= m_fourthHealthPercent))
				{
					break;
				}
				if (m_stageFourStartMessage != "")
				{
					MessageHud.instance.ShowMessage((MessageType)2, m_stageOneStartMessage, 0, (Sprite)null);
				}
				sStatusEffect = ((Object)m_thirdStatusEffect).name.ToString() ?? "";
				if (base.m_character.GetSEMan().HaveStatusEffect(sStatusEffect))
				{
					m_removeStatusEffectHash = ((object)m_thirdStatusEffect).GetHashCode();
					base.m_character.GetSEMan().RemoveStatusEffect(m_removeStatusEffectHash, false);
				}
				base.m_icon = m_stageFourIcon;
				m_statusEffectHash = ((object)m_fourthStatusEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
				iForcePowerFourthEffect = Random.Range(m_fourthBossEffectForcePowerMin, m_fourthBossEffectForcePowerMax);
				if (m_enableFourthWave)
				{
					int num = Random.Range(m_fourthWaveMinToSpawn, m_fourthWaveMaxToSpawn);
					int num2 = 0;
					float y = default(float);
					while (num2 < num)
					{
						Vector3 position = ((Component)base.m_character).transform.position;
						Vector2 val2 = Random.insideUnitCircle * m_fourthWaveSpawnRadius;
						vSpawnPoint = position + new Vector3(val2.x, 0f, val2.y);
						if (m_fourthWaveSnapToTerrain)
						{
							ZoneSystem.instance.GetSolidHeight(vSpawnPoint, ref y, m_getSolidHeightMargin);
							vSpawnPoint.y = y;
						}
						vSpawnPoint.y += m_fourthWaveSpawnGroundOffset;
						GameObject val3 = Object.Instantiate<GameObject>(m_fourthWaveMonster, vSpawnPoint, Quaternion.identity);
						val3.AddComponent(typeof(BossStage_Object_HS));
						val3.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component = val3.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component))
							{
								val3.AddComponent(typeof(CharacterTimedDestruction));
								val3.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val3.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val3.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val3.AddComponent(typeof(TimedDestruction));
								val3.GetComponent<TimedDestruction>().m_timeout = 60f;
								val3.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						Projectile component2 = val3.GetComponent<Projectile>();
						if (Object.op_Implicit((Object)(object)component2))
						{
							component2.Setup(base.m_character, Vector3.zero, -1f, (HitData)null, (ItemData)null, (ItemData)null);
						}
						BaseAI component3 = val3.GetComponent<BaseAI>();
						if (Object.op_Implicit((Object)(object)component3) && m_alertSpawnedCreatures)
						{
							component3.Alert();
						}
						m_spawnEffect.Create(val3.transform.position, val3.transform.rotation, (Transform)null, 1f, -1);
						int num3 = num2 + 1;
						num2 = num3;
					}
				}
				if (m_enableFourthBossEffect)
				{
					int num4 = Random.Range(m_fourthBossEffectMinAmount, m_fourthBossEffectMaxAmount);
					int num5 = 0;
					while (num5 < num4)
					{
						Vector3 position2 = ((Component)base.m_character).transform.position;
						Vector2 val4 = Random.insideUnitCircle * m_fourthBossEffectRadius;
						vSpawnPoint = position2 + new Vector3(val4.x, 0f, val4.y);
						if (!m_fourthBossEffectRandomStartMovement)
						{
							quaternion = Quaternion.identity;
						}
						else
						{
							int num6 = Random.Range(-359, 359);
							quaternion = Quaternion.Euler(0f, (float)num6, 0f);
						}
						GameObject val5 = Object.Instantiate<GameObject>(m_fourthBossEffect, vSpawnPoint, quaternion);
						val5.AddComponent(typeof(BossStage_Object_HS));
						val5.GetComponent<BossStage_Object_HS>().m_spawnedUniqueID = m_uniqueID;
						if (m_removeAddsAtEndOfTimer)
						{
							MonsterAI component4 = val5.GetComponent<MonsterAI>();
							if (Object.op_Implicit((Object)(object)component4))
							{
								val5.AddComponent(typeof(CharacterTimedDestruction));
								val5.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								val5.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								val5.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
							else
							{
								val5.AddComponent(typeof(TimedDestruction));
								val5.GetComponent<TimedDestruction>().m_timeout = 60f;
								val5.GetComponent<TimedDestruction>().m_triggerOnAwake = true;
							}
						}
						if (m_fourthBossEffectHealsBoss)
						{
							val5.GetComponent<BossStage_Object_HS>().m_healsBoss = true;
							if (m_destroyFourthBossEffectAfterHealingBoss)
							{
								val5.GetComponent<BossStage_Object_HS>().m_killSelf = true;
							}
						}
						Rigidbody component5 = val5.GetComponent<Rigidbody>();
						if (Object.op_Implicit((Object)(object)component5))
						{
							if (m_manuallySetFourthBossEffectVector3)
							{
								component5.AddForce(m_fourthBossEffectAddForceVector3 * (float)iForcePowerFourthEffect * Time.fixedDeltaTime, (ForceMode)0);
							}
							else if (m_fourthBossEffectMoveTowardBoss)
							{
								val6 = ((Component)base.m_character).transform.position - val5.transform.position;
								Vector3 normalized = ((Vector3)(ref val6)).normalized;
								component5.AddForce(normalized * (float)iForcePowerFourthEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
							else if (m_fourthBossEffectRandomStartMovement)
							{
								component5.AddForce(Vector3.forward * (float)iForcePowerFourthEffect * Time.fixedDeltaTime, (ForceMode)1);
							}
						}
						int num7 = num5 + 1;
						num5 = num7;
					}
				}
				iStageCount++;
				break;
			case 4:
				if (!(base.m_ttl - base.m_time <= fEndCounter))
				{
					break;
				}
				if (m_killBossAtEndOfTimer)
				{
					Character character = base.m_character;
					Player val = (Player)(object)((character is Player) ? character : null);
					if (!Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)ZNetScene.instance))
					{
						m_nview = ((Component)base.m_character).gameObject.GetComponent<ZNetView>();
						if (Object.op_Implicit((Object)(object)m_nview))
						{
							m_nview.ClaimOwnership();
							if (m_nview.IsValid() && m_nview.IsOwner())
							{
								((Component)base.m_character).gameObject.AddComponent(typeof(CharacterTimedDestruction));
								((Component)base.m_character).gameObject.GetComponent<CharacterTimedDestruction>().m_timeoutMin = 60f;
								((Component)base.m_character).gameObject.GetComponent<CharacterTimedDestruction>().m_timeoutMax = 60f;
								((Component)base.m_character).gameObject.GetComponent<CharacterTimedDestruction>().m_triggerOnAwake = true;
							}
						}
						if (m_youLostMessage != "")
						{
							MessageHud.instance.ShowMessage((MessageType)2, m_youLostMessage, 0, (Sprite)null);
						}
					}
				}
				m_isDone = true;
				break;
			}
		}

		public override bool IsDone()
		{
			if (((StatusEffect)this).IsDone())
			{
				return true;
			}
			if (m_isDone)
			{
				return true;
			}
			if (!Object.op_Implicit((Object)(object)base.m_character))
			{
				return true;
			}
			return false;
		}
	}
	public class BossStage_Object_HS : MonoBehaviour
	{
		public int m_spawnedUniqueID;

		public bool m_healsBoss;

		public bool m_killSelf;

		private void Start()
		{
		}

		private void Update()
		{
		}
	}
	public class EmissiveMesh_HS : MonoBehaviour
	{
		[Header("Required")]
		public MeshRenderer[] renderers;

		public Color color = Color.white;

		[Header("Options")]
		public bool pulse = true;

		public float fadeLength = 1f;

		public float minPower = 0f;

		public float maxPower = 1f;

		public Color[] colors;

		private float _startPower = 1f;

		private float _currentPower = 1f;

		private float _desiredPower = 1f;

		private float _timer = 0f;

		public void SetColor(Color value)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			color = value;
		}

		public void SetColor(int index)
		{
			//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)
			color = colors[index];
		}

		public void SetMaxPower(float value)
		{
			maxPower = value;
		}

		public void SetLength(float value)
		{
			fadeLength = value;
		}

		public void SetEmissive(float value)
		{
			//IL_0002: 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_002e: Unknown result type (might be due to invalid IL or missing references)
			Color val = color * Mathf.LinearToGammaSpace(value);
			MeshRenderer[] array = renderers;
			foreach (MeshRenderer val2 in array)
			{
				((Renderer)val2).material.SetColor("_EmissionColor", val);
			}
		}

		public void FadeTo(float value, float start = -1f)
		{
			_startPower = ((start < 0f) ? _currentPower : start);
			_desiredPower = value;
			_timer = 0f;
		}

		private void Start()
		{
			if (renderers.Length != 0)
			{
				_startPower = maxPower;
				SetEmissive(_currentPower);
			}
		}

		private void Update()
		{
			if (renderers.Length == 0)
			{
				Object.Destroy((Object)(object)this);
			}
			if (pulse)
			{
				FadeEmissive();
			}
		}

		private void FadeEmissive()
		{
			CheckForSwitch();
			_currentPower = Mathf.Lerp(_startPower, _desiredPower, _timer / fadeLength);
			SetEmissive(_currentPower);
			_timer += Time.deltaTime;
		}

		private void CheckForSwitch()
		{
			if (!(_timer < fadeLength))
			{
				FadeTo((_desiredPower <= minPower) ? maxPower : minPower, (_desiredPower <= minPower) ? minPower : maxPower);
			}
		}
	}
	[BepInPlugin("assembly.horemvore", "Horemvores Assembly", "1.0.13")]
	[BepInIncompatibility("Azumatt.AzuDevMod")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	internal class HoremvoreAssemblyBundle : BaseUnityPlugin
	{
		public const string PluginGUID = "assembly.horemvore";

		public const string PluginName = "Horemvores Assembly";

		public const string PluginVersion = "1.0.13";

		public AssetBundle assemblyAssets;

		public ConfigEntry<bool> ModEnable;

		public ConfigEntry<bool> DemoEnable;

		public ConfigEntry<bool> LoggingEnable;

		public ConfigEntry<bool> DisableLocalization;

		public ConfigEntry<bool> MinorBleedEnable;

		public ConfigEntry<bool> BleedEnable;

		public ConfigEntry<bool> MajorBleedEnable;

		public ConfigEntry<bool> CriticalBleedEnable;

		public ConfigEntry<bool> LifeDrainEnable;

		public ConfigEntry<bool> LifeSiphonEnable;

		public ConfigEntry<bool> DeathSiphonEnable;

		public ConfigEntry<bool> InfectionEnable;

		public ConfigEntry<bool> MajorInfectionEnable;

		public ConfigEntry<bool> CriticalInfectionEnable;

		public ConfigEntry<bool> RTDEnable;

		public ConfigEntry<bool> DedsArmyEnable;

		public ConfigEntry<bool> FantasyCreaturesEnable;

		public ConfigEntry<bool> GiantsEnable;

		public ConfigEntry<bool> MinotaursEnable;

		public ConfigEntry<bool> MushroomMonstersEnable;

		public ConfigEntry<bool> SkitteringMadnessEnable;

		public ConfigEntry<bool> SlimesEnable;

		public ConfigEntry<bool> CreepyCrawliesEnable;

		public ConfigEntry<bool> ItemSetsEnable;

		public ConfigEntry<bool> PickablesEnable;

		public string[] prefabList = new string[18]
		{
			"Projectile_RangerBowLightning_AH", "Projectile_RangerBow_AH", "FX_Star_AH", "Projectile_CheatStaff_AH", "Projectile_ClericStaff_AH", "Projectile_DruidStaff_AH", "Projectile_WizardStaff_AH", "FX_RareFlower_AH", "FX_TreeBase_Noise_AH", "FX_Pickable_Haste_AH",
			"FX_MineRock_Noise_AH", "VFX_StaminaStart_AH", "VFX_ManaStart_AH", "VFX_HealStart_AH", "VFX_JudgementHit_AH", "VFX_BleedActive_AH", "VFX_InfectionActive_AH", "VFX_LeechActive_AH"
		};

		public string[] sfxList = new string[14]
		{
			"FX_ArrowRangerLightning_Hit_AH", "FX_ArrowRanger_Hit_AH", "FX_CheatStaff_Hit_AH", "FX_ClericStaff_Hit_AH", "FX_DruidStaff_Hit_AH", "FX_WizardStaff_Hit_AH", "SFX_FireballShoot_AH", "SFX_RareItem_AH", "SFX_NoiseDampening_AH", "SFX_NoiseReduction_AH",
			"SFX_Haste_AH", "SFX_Effect_OnDamaged_AH", "SFX_RemoveEffect_AH", "SFX_SetBuff_AH"
		};

		public string[] itemList = new string[83]
		{
			"Item_Bark_SwampAspen_AH", "Item_Bark_ChillingAcacia_AH", "Item_Bark_BlisterBirch_AH", "Item_Bark_TangledElm_AH", "Item_Bark_HollowBeech_AH", "Item_BloodSaffron_AH", "Item_Dracflorus_AH", "Item_NightHood_AH", "Item_PurpleStrand_AH", "Item_Poisonflower_AH",
			"Item_DeathsRye_AH", "Item_VolcanoClove_AH", "Item_ShadowLavender_AH", "Item_SneezingBower_AH", "CheatStaff_AH", "HelmetDruid_AH", "ArmorDruidLegs_AH", "ArmorDruidChest_AH", "CapeDruid_AH", "RingDruid_AH",
			"StaffDruid_AH", "CapeRogue_AH", "HelmetRogue_AH", "ArmorRogueChest_AH", "ArmorRogueLegs_AH", "BeltRogue_AH", "SkollRogue_AH", "StaffWizard_AH", "CapeWizard_AH", "RingWizard_AH",
			"HelmetWizard_AH", "ArmorWizardChest_AH", "ArmorWizardLegs_AH", "CapePaladin_AH", "HelmetPaladin_AH", "ArmorPaladinChest_AH", "ArmorPaladinLegs_AH", "SwordPaladin_AH", "BeltPaladin_AH", "CapeWarrior_AH",
			"HelmetWarrior_AH", "ArmorWarriorChest_AH", "ArmorWarriorLegs_AH", "ShieldWarrior_AH", "HammerWarrior_AH", "CapeBarbarian_AH", "HelmetBarbarian_AH", "ArmorBarbarianChest_AH", "ArmorBarbarianLegs_AH", "RingBarbarian_AH",
			"BattleaxeBarbarian_AH", "BowRanger_AH", "RingRanger_AH", "CapeRanger_AH", "HelmetRanger_AH", "ArmorRangerChest_AH", "ArmorRangerLegs_AH", "CapeCleric_AH", "HelmetCleric_AH", "ArmorClericChest_AH",
			"ArmorClericLegs_AH", "ShieldCleric_AH", "HammerCleric_AH", "StaffCleric_AH", "RingCleric_AH", "Item_Potion_Yellow_1_AH", "Item_Potion_Yellow_2_AH", "Item_Potion_Yellow_3_AH", "Item_Potion_Bless_AH", "Item_Potion_Dispel_AH",
			"Item_Potion_Purify_AH", "Item_Potion_CureMinorWounds_AH", "Item_Potion_CureWounds_AH", "Item_Potion_CureMajorWounds_AH", "Item_Flask_Red_3_AH", "Item_Flask_Red_2_AH", "Item_Flask_Red_1_AH", "Item_Elixir_Red_3_AH", "Item_Elixir_Red_2_AH", "Item_Elixir_Red_1_AH",
			"Item_Potion_Red_3_AH", "Item_Potion_Red_2_AH", "Item_Potion_Red_1_AH"
		};

		public string[] divingList = new string[1] { "SE_ToTheDepths_AH" };

		public string[] tradeEffectList = new string[6] { "SE_PickableBuff_RareFlower_AH", "SE_PickableBuff_Haste_AH", "SE_MineRockBuff_Gems_AH", "SE_MineRockBuff_Noise_AH", "SE_TreeBaseBuff_RareWood_AH", "SE_TreeBaseBuff_Noise_AH" };

		public string[] eotEffectList = new string[1] { "SE_EitrRecovery_AH" };

		public string[] sotEffectList = new string[1] { "SE_StaminaRecovery_AH" };

		public string[] dotEffectList = new string[19]
		{
			"SE_Judgement_AH", "SE_Vengance_AH", "SE_Smite_AH", "SE_Rend_AH", "SE_Gore_AH", "SE_Lacerate_AH", "SE_Maul_AH", "SE_Shred_AH", "SE_Mangle_AH", "SE_Maim_AH",
			"SE_Hemorrage_AH", "SE_Rupture_AH", "SE_LeechLife_AH", "SE_VampiresTouch_AH", "SE_LifeDrain_AH", "SE_SiphonLife_AH", "SE_VampiricEmbrace_AH", "SE_DeathSiphon_AH", "SE_DeathCoil_AH"
		};

		public string[] hotEffectList = new string[9] { "SE_FlaskRed_1_AH", "SE_FlaskRed_2_AH", "SE_FlaskRed_3_AH", "SE_ElixirRed_1_AH", "SE_ElixirRed_2_AH", "SE_ElixirRed_3_AH", "SE_PotionRed_1_AH", "SE_PotionRed_2_AH", "SE_PotionRed_3_AH" };

		public string[] infectionEffectList = new string[29]
		{
			"SE_DeathsRye_AH", "SE_Poisonflower_AH", "SE_VolcanoClove_AH", "SE_CriticalFrostbite_AH", "SE_DeadlyFrostbite_AH", "SE_Frostbite_AH", "SE_JuniorFrostbite_AH", "SE_MajorFrostbite_AH", "SE_MinorFrostbite_AH", "SE_SeniorFrostbite_AH",
			"SE_Burns_AH", "SE_CriticalBurns_AH", "SE_DeadlyBurns_AH", "SE_JuniorBurns_AH", "SE_MajorBurns_AH", "SE_MinorBurns_AH", "SE_SeniorBurns_AH", "SE_Weak_AH", "SE_Poison_AH", "SE_Venom_AH",
			"SE_Infection_AH", "SE_Scourge_AH", "SE_Disease_AH", "SE_Contagion_AH", "SE_Pestilence_AH", "SE_Bane_AH", "SE_Blight_AH", "SE_Corrosion_AH", "SE_Corruption_AH"
		};

		public string[] passiveEffectList = new string[78]
		{
			"SE_Admin_AH", "SE_Mining_AH", "SE_WoodCutting_AH", "SE_Harvesting_AH", "SE_ShadowLavender_AH", "SE_SneezingBower_AH", "SE_DruidArmor_AH", "SE_DruidCloak_AH", "SE_DruidHelm_AH", "SE_DruidLeggings_AH",
			"SE_DruidUtility_AH", "SE_DruidWeapon_AH", "SE_SetEffectDruid_AH", "SE_SetEffectDruidWeapons_AH", "SE_SetDruidBuff_AH", "SE_SetEffectPaladinWeapons_AH", "SE_SetEffectRogueWeapons_AH", "SE_SetEffectClericWeapons_AH", "SE_SetEffectWarriorWeapons_AH", "SE_SetEffectWizardWeapons_AH",
			"SE_SetEffectBarbarianWeapons_AH", "SE_SetEffectRangerWeapons_AH", "SE_SetBarbarianBuff_AH", "SE_SetClericBuff_AH", "SE_SetPaladinBuff_AH", "SE_SetRangerBuff_AH", "SE_SetRogueBuff_AH", "SE_SetWarriorBuff_AH", "SE_SetWizardBuff_AH", "SE_SetEffectBarbarian_AH",
			"SE_SetEffectCleric_AH", "SE_SetEffectPaladin_AH", "SE_SetEffectRanger_AH", "SE_SetEffectRogue_AH", "SE_SetEffectWarrior_AH", "SE_SetEffectWizard_AH", "SE_BarbarianArmor_AH", "SE_BarbarianHelm_AH", "SE_BarbarianLeggings_AH", "SE_BarbarianCloak_AH",
			"SE_BarbarianUtility_AH", "SE_BarbarianWeapon_AH", "SE_ClericHelm_AH", "SE_ClericArmor_AH", "SE_ClericLeggings_AH", "SE_ClericUtility_AH", "SE_ClericWeapon_AH", "SE_ClericShield_AH", "SE_PaladinArmor_AH", "SE_PaladinHelm_AH",
			"SE_PaladinLeggings_AH", "SE_PaladinUtility_AH", "SE_PaladinWeapon_AH", "SE_PaladinCloak_AH", "SE_RangerArmor_AH", "SE_RangerHelm_AH", "SE_RangerLeggings_AH", "SE_RangerCloak_AH", "SE_RangerUtility_AH", "SE_RangerWeapon_AH",
			"SE_RogueArmor_AH", "SE_RogueHelm_AH", "SE_RogueLeggings_AH", "SE_RogueUtility_AH", "SE_RogueWeapon_AH", "SE_RogueCloak_AH", "SE_WarriorArmor_AH", "SE_WarriorHelm_AH", "SE_WarriorLeggings_AH", "SE_WarriorUtility_AH",
			"SE_WarriorWeapon_AH", "SE_WarriorShield_AH", "SE_WizardArmor_AH", "SE_WizardCloak_AH", "SE_WizardHelm_AH", "SE_WizardLeggings_AH", "SE_WizardUtility_AH", "SE_WizardWeapon_AH"
		};

		public string[] cureEffectList = new string[7] { "SE_CureMajorWounds_AH", "SE_CureMinorWounds_AH", "SE_CureWounds_AH", "SE_Bless_AH", "SE_Cleanse_AH", "SE_Dispel_AH", "SE_Purify_AH" };

		public string[] randomEffectList = new string[15]
		{
			"SE_RandomMinorFrostbite_AH", "SE_RandomFrostbite_AH", "SE_RandomMajorFrostbite_AH", "SE_RandomMinorBurn_AH", "SE_RandomBurn_AH", "SE_RandomMajorBurn_AH", "SE_RandomMinorInfection_AH", "SE_RandomInfection_AH", "SE_RandomMajorInfection_AH", "SE_RandomCriticalInfection_AH",
			"SE_RandomDeadlyInfection_AH", "SE_RandomMinorBleed_AH", "SE_RandomBleed_AH", "SE_RandomMajorBleed_AH", "SE_RandomCriticalBleed_AH"
		};

		public string[] minorBleedList = new string[3] { "boar_base_attack", "Neck_BiteAttack", "Greyling_attack" };

		public string[] bleedList = new string[2] { "Greydwarf_attack", "Greydwarf_elite_attack" };

		public string[] majorBleedList = new string[8] { "lox_bite", "GoblinBrute_Attack", "GoblinSpear", "stonegolem_attack3_spikesweep", "stonegolem_attack1_spike", "Wolf_Attack1", "Wolf_Attack2", "Wolf_Attack3" };

		public string[] criticalBleedList = new string[7] { "DvergerArbalest_shoot", "Dverger_melee", "SeekerBrute_ram", "SeekerBrute_bite", "seeker_pincers", "seeker_claw_right", "seeker_claw_left" };

		public string[] infectionList = new string[2] { "skeleton_mace", "Leech_BiteAttack" };

		public string[] majorInfectionList = new string[2] { "bat_melee", "Deathsquito_sting" };

		public string[] criticalInfectionList = new string[2] { "tick_attack", "gjall_attack_spit" };

		public string[] curseList = new string[2] { "skeleton_bow", "skeleton_sword" };

		public string[] lifeDrainList = new string[2] { "skeleton_bow", "skeleton_sword" };

		public string[] lifeSiphonList = new string[4] { "wraith_melee", "draugr_sword", "draugr_axe", "draugr_bow" };

		public string[] deathSiphonList = new string[2] { "Fenring_attack_jump", "Fenring_attack_claw" };

		public string[] rtdCriticalBleedList = new string[4] { "ElfWarriorAttackF4_RtD", "ElfWarriorAttackM4_RtD", "WolfAttack2_RtD", "HunterMelee3_RtD" };

		public string[] rtdMajorBleedList = new string[4] { "BoarAttack2_RtD", "AssassinAttack2_RtD", "BerserkerAttack4_RtD", "CrusaderAttack2_RtD" };

		public string[] rtdMajorBurnList = new string[2] { "FairyAttackFire1_RtD", "DemonHornAttack_RtD" };

		public string[] rtdMajorFrostbiteList = new string[3] { "ElementalAttack1_RtD", "FairyAttackIce1_RtD", "PriestMelee1_RtD" };

		public string[] dedsArmyInfectionList = new string[4] { "Undead_Attack3_DA", "Vampire_Attack3_DA", "Skeleton2H_Attack3_DA", "Skeleton1H_Attack3_DA" };

		public string[] fantMinorBleedList = new string[2] { "Hobgoblin_Attack3_DoD", "Kobold_Attack3_DoD" };

		public string[] fantBleedList = new string[2] { "Ogre_Attack3_DoD", "Ent_Attack3_DoD" };

		public string[] fantMajorBleedList = new string[4] { "Cyclops_AttackSmash_DoD", "Manticore_Attack3_DoD", "Griffin_Attack3_DoD", "Harpy_Attack3_DoD" };

		public string[] fantCriticalBleedList = new string[3] { "Element_AttackGrab_DoD", "Element_AttackSmash_DoD", "Element_AttackSwipe_DoD" };

		public string[] fantInfectionList = new string[3] { "Manticore_Attack3_DoD", "Mummy_Attack3_DoD", "Ghoul_Attack3_DoD" };

		public string[] fantMajorBurnList = new string[3] { "FireElement_AttackSwipe_DoD", "FireElement_AttackSmash_DoD", "FireElement_AttackGrab_DoD" };

		public string[] fantMajorFrostbiteList = new string[3] { "IceElement_AttackSwipe_DoD", "IceElement_AttackSmash_DoD", "IceElement_AttackGrab_DoD" };

		public string[] giantMinorBleedList = new string[1] { "HillGiant_Attack3_HG" };

		public string[] giantBleedList = new string[1] { "Giant_Attack3_HG" };

		public string[] giantMajorBurnList = new string[1] { "FireGiant_Attack3_HG" };

		public string[] giantFrostbiteList = new string[1] { "MountainGiant_Attack3_HG" };

		public string[] giantMajorFrostbiteList = new string[1] { "FrostGiant_Attack3_HG" };

		public string[] minotaurMajorBleedList = new string[1] { "Minotaur_Attack3_HG" };

		public string[] minotaurMajorBurnList = new string[1] { "FireMinotaur_Attack3_HG" };

		public string[] minotaurMajorFrostbiteList = new string[1] { "FrostMinotaur_Attack3_HG" };

		public string[] mushInfectionList = new string[3] { "MushroomSwamp_Attack3_MP", "MushroomForest_Attack3_MP", "MushroomMeadows_Attack3_MP" };

		public string[] mushMajorInfectionList = new string[2] { "MushroomPlains_Attack3_MP", "MushroomMountain_Attack3_MP" };

		public string[] mushCriticalInfectionList = new string[3] { "MushroomDeepNorth_Attack3_MP", "MushroomAshLands_Attack3_MP", "MushroomMistlands_Attack3_MP" };

		public string[] scorpionCriticalInfectionList = new string[5] { "Scorpion_AttackSting_SM", "ScorpionM_AttackSting_SM", "ScorpionDN_AttackSting_SM", "ScorpionAL_AttackSting_SM", "ScorpionBoss_AttackSting_SM" };

		public string[] slimeInfectionList = new string[2] { "SlimeGreen_Attack3_HS", "SlimeYellow_Attack3_HS" };

		public string[] slimeMinorBurnList = new string[1] { "SlimePink_Attack3_HS" };

		public string[] slimeMajorBurnList = new string[1] { "SlimeRed_Attack3_HS" };

		public string[] slimeMinorFrostbiteList = new string[1] { "SlimeBlue_Attack3_HS" };

		public string[] creepyMinorBleedList = new string[8] { "Attack_SpiderForest_Jump_CC", "Attack_SpiderForest_Pounce_CC", "Attack_CrabForest_Double_CC", "Attack_CrabForest_Jump_CC", "Attack_CrabOcean_Double_CC", "Attack_CrabOcean_Jump_CC", "Attack_BeetleGold_Fly_CC", "Attack_BeetleShrub_Fly_CC" };

		public string[] creepyMinorInfectionList = new string[3] { "Attack_BeetleStink_Fly_CC", "Attack_SpiderSwamp_Jump_CC", "Attack_SpiderSwamp_Pounce_CC" };

		public string[] creepyMinorFrostbiteList = new string[6] { "Attack_SpiderCave_Pounce_CC", "Attack_SpiderCave_Jump_CC", "Attack_InsectCave_Jump_CC", "Attack_InsectCave_Double_CC", "Attack_CrabCave_Jump_CC", "Attack_CrabCave_Double_CC" };

		public string[] creepyBleedList = new string[2] { "Attack_SpiderCamel_Jump_CC", "Attack_SpiderCamel_Pounce_CC" };

		public string[] creepyInfectionList = new string[2] { "Attack_InsectMist_Double_CC", "Attack_InsectMist_Jump_CC" };

		public string[] creepyBurnList = new string[4] { "Attack_SpiderLava_Jump_CC", "Attack_SpiderLava_Pounce_CC", "Attack_InsectLava_Double_CC", "Attack_InsectLava_Jump_CC" };

		public string[] creepyFrostbiteList = new string[4] { "Attack_InsectHoarfrost_Jump_CC", "Attack_InsectHoarfrost_Double_CC", "Attack_SpiderHoarfrost_Jump_CC", "Attack_SpiderHoarfrost_Pounce_CC" };

		public CustomLocalization LocalAH;

		public void CreateConfigurationValues()
		{
			//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_003d: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Expected O, but got Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Expected O, but got Unknown
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Expected O, but got Unknown
			//IL_0123: 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_0131: Expected O, but got Unknown
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Expected O, but got Unknown
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Expected O, but got Unknown
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: 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_01ab: Expected O, but got Unknown
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Expected O, but got Unknown
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Expected O, but got Unknown
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected O, but got Unknown
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Expected O, but got Unknown
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Expected O, but got Unknown
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Expected O, but got Unknown
			//IL_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Expected O, but got Unknown
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Expected O, but got Unknown
			//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dc: Expected O, but got Unknown
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Expected O, but got Unknown
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Expected O, but got Unknown
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Expected O, but got Unknown
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Expected O, but got Unknown
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_0360: Expected O, but got Unknown
			//IL_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Expected O, but got Unknown
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_039d: Expected O, but got Unknown
			//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Expected O, but got Unknown
			//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_040d: Expected O, but got Unknown
			//IL_040d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0417: Expected O, but got Unknown
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Expected O, but got Unknown
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Expected O, but got Unknown
			//IL_0479: Unknown result type (might be due to invalid IL or missing references)
			//IL_047e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Expected O, but got Unknown
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Expected O, but got Unknown
			//IL_04b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Expected O, but got Unknown
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ce: Expected O, but got Unknown
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0501: Expected O, but got Unknown
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_050b: Expected O, but got Unknown
			//IL_0530: Unknown result type (might be due to invalid IL or missing references)
			//IL_0535: Unknown result type (might be due to invalid IL or missing references)
			//IL_053e: Expected O, but got Unknown
			//IL_053e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Expected O, but got Unknown
			//IL_056d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0572: Unknown result type (might be due to invalid IL or missing references)
			//IL_057b: Expected O, but got Unknown
			//IL_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Expected O, but got Unknown
			//IL_05aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_05af: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Expected O, but got Unknown
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c2: Expected O, but got Unknown
			//IL_05e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f5: Expected O, but got Unknown
			//IL_05f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Expected O, but got Unknown
			try
			{
				((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
				ModEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1 Horemvores Assembly", "Enable", true, new ConfigDescription("Admin only, Enables this mod", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				PickablesEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.001 Gathering and Collecting", "Enable", true, new ConfigDescription("Admin only, none this has been tested. It is here cause I am to lazy to go uncomment what I need to :), its off, so, if you turn it on and it implodes, just turn it off again :D. Enables pickables, trees and ores, to give a bonus effect when picked.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				RTDEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.01 Ready to Die", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				DedsArmyEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.02 Deds Army", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				FantasyCreaturesEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.03 Fantasy Creatures", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				GiantsEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.04 Fee Fi Fo", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				MinotaursEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.05 Minotaurs", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				MushroomMonstersEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.06 Mushroom Monsters", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				SkitteringMadnessEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.07 Skittering Madness", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				SlimesEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.08 Slimes R Us", "Enable", false, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				ItemSetsEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.09 Items", "Enable", true, new ConfigDescription("Admin only, adds potions and 8 armour and 8 weapon sets with custom effects.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				DemoEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.1 Demo", "Enable", false, new ConfigDescription("Admin only, enables the status effect demo", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				MinorBleedEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.11 Demo - Minor Bleed", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Minor Bleed to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				BleedEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.12 Demo - Bleed", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Bleed to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				MajorBleedEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.13 Demo - Major Bleed", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Major Bleed to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				CriticalBleedEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.14 Demo - Critical Bleed", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Critical Bleed to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				LifeDrainEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.15 Demo - Life Drain", "Enable", true, new ConfigDescription("Admin only, adds the status effect Life Drain to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				LifeSiphonEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.16 Demo - Life Siphon", "Enable", true, new ConfigDescription("Admin only, adds the status effect Life Siphon to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				DeathSiphonEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.17 Demo - Death Siphon", "Enable", true, new ConfigDescription("Admin only, adds the status effect Death Siphon to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				InfectionEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.18 Demo - Infection", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Infection to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				MajorInfectionEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.19 Demo - Major Infection", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Major Infection to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				CriticalInfectionEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.20 Demo - Critical Infection", "Enable", true, new ConfigDescription("Admin only, adds the status effect Random Critical Infection to Vanilla Monsters", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				CreepyCrawliesEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1.3 Creepy Crawlies", "Enable", true, new ConfigDescription("Admin only, enables adding random effects to monsters from this mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				DisableLocalization = ((BaseUnityPlugin)this).Config.Bind<bool>("1.5 Localization", "Disable", false, new ConfigDescription("Enable or Disable the hardcoded English localization.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				LoggingEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("2 Logging", "Enable", false, new ConfigDescription("Enables logging.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr)
				{
					if (attr.InitialSynchronization)
					{
						Logger.LogMessage((object)"Initial Config sync event received for Frog Monster's");
					}
					else
					{
						Logger.LogMessage((object)"Config sync event received for Frog Monster's");
					}
				};
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding configuration values: {arg}");
			}
		}

		private void Awake()
		{
			try
			{
				CreateConfigurationValues();
				if (ModEnable.Value)
				{
					if (!DisableLocalization.Value)
					{
						AddLocalization();
					}
					AddTranslationsFromJson();
					LoadBundle();
					AddVFX();
					AddSFX();
					AddEoTEffects();
					AddSoTEffects();
					AddHoTEffects();
					AddDoTEffects();
					AddInfectionEffects();
					AddRandomEffects();
					AddPassiveEffects();
					AddCureEffects();
					AddDivingEffects();
					if (ItemSetsEnable.Value)
					{
						AddItems();
					}
					if (RTDEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateReadyToDie;
					}
					if (DedsArmyEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateDedsArmy;
					}
					if (FantasyCreaturesEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateFantasyCreatures;
					}
					if (GiantsEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateGiants;
					}
					if (MinotaursEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateMinotaurs;
					}
					if (MushroomMonstersEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateMushroomMonsters;
					}
					if (SkitteringMadnessEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateScorpions;
					}
					if (SlimesEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateSlimes;
					}
					if (CreepyCrawliesEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdateCreepyCrawlies;
					}
					if (DemoEnable.Value)
					{
						PrefabManager.OnVanillaPrefabsAvailable += UpdateVanillaBleedAttacks;
						PrefabManager.OnVanillaPrefabsAvailable += UpdateVanillaInfectionAttacks;
					}
					if (PickablesEnable.Value)
					{
						PrefabManager.OnPrefabsRegistered += UpdatePickables;
						PrefabManager.OnPrefabsRegistered += UpdateTrees;
					}
					PrefabManager.OnPrefabsRegistered += FixSFX;
					UnloadBundle();
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while initalizing plugin: {arg}");
			}
		}

		public void AddLocalization()
		{
			try
			{
				LocalAH = LocalizationManager.Instance.GetLocalization();
				CustomLocalization localAH = LocalAH;
				string text = "English";
				localAH.AddTranslation(ref text, new Dictionary<string, string>
				{
					{ "se_divedamage_ah", "Diving Rate Damage" },
					{ "se_limitdivespeed_ah", "Diving Rate" },
					{ "se_diveduration_ah", "Dive Duration" },
					{ "se_surfaceduration_ah", "Surface Duration" },
					{ "se_dropchance_ah", "Rare Item Drop Chance" },
					{ "se_gatherbuff_ah", "Gathering Buff: " },
					{ "se_rareitem_ah", "Found: " },
					{ "se_pickableeffect_ah", "Buff" },
					{ "effect_curemajorwounds_ah", "Cure Major Wounds" },
					{ "effect_curewounds_ah", "Cure Wounds" },
					{ "effect_cureminorwounds_ah", "Cure Minor Wounds" },
					{ "effect_cleanse_ah", "Cleanse" },
					{ "effect_purify_ah", "Purify" },
					{ "effect_dispelspell_ah", "Dispel" },
					{ "effect_bless_ah", "Bless" },
					{ "effect_smite_ah", "Smite" },
					{ "effect_fanknives_ah", "Fan of Knives" },
					{ "effect_roguedance_ah", "Shadow Dance" },
					{ "effect_staminarecovery_ah", "Stamina Recovery" },
					{ "effect_staminarecovery_tooltip_ah", "Effects" },
					{ "effect_eitrrecovery_ah", "Eitr Recovery" },
					{ "effect_eitrrecovery_tooltip_ah", "Effects" },
					{ "effect_judgement_ah", "Judgement" },
					{ "effect_judgement_tooltip_ah", "Effects" },
					{ "effect_vengance_ah", "Vengance" },
					{ "effect_vengance_tooltip_ah", "Effects" },
					{ "plant_bloodsaffron_ah", "Blood Saffron" },
					{ "plant_dracflorus_ah", "Dracflorus" },
					{ "plant_purplestrand_ah", "Purple Strand" },
					{ "plant_nighthood_ah", "Night Hood" },
					{ "plant_deathsrye_ah", "Death's Rye" },
					{ "plant_poisonflower_ah", "Poisonflower" },
					{ "plant_shadowlavender_ah", "Shadow Lavender" },
					{ "plant_volcanocolve_ah", "Volcano Clove" },
					{ "plant_sneezingbower_ah", "Sneezing Bower" },
					{ "item_flower_desc_ah", "Know any good Botanists? No? Well, your a Viking, you will figure it out!" },
					{ "item_flowerhostile_desc_ah", "Know any good Botanists? No? Well, down the hatch, one for the team!" },
					{ "item_flowerhostile_repeate_ah", "Deadly Dose" },
					{ "item_bark_blisterbirch_ah", "Blister Birch Bark" },
					{ "item_bark_chillingacacia_ah", "Chilling Acacia Bark" },
					{ "item_bark_hollowbeech_ah", "Hollow Beech Bark" },
					{ "item_bark_swampaspen_ah", "Swamp Aspen Bark" },
					{ "item_bark_tangledelm_ah", "Tangled Elm Bark" },
					{ "item_bark_desc_ah", "What a strange looking piece of bark, wonder what it is?" },
					{ "item_potion_bless_ah", "Bless" },
					{ "item_potion_bless_desc_ah", "Removes certain afflictions" },
					{ "item_potion_dispel_ah", "Dispel" },
					{ "item_potion_dispel_desc_ah", "Removes certain afflictions" },
					{ "item_potion_purify_ah", "Purify" },
					{ "item_potion_purify_desc_ah", "Removes certain afflictions" },
					{ "item_potion_cleanse_ah", "Cleanse" },
					{ "item_potion_cleanse_desc_ah", "Removes certain afflictions" },
					{ "item_potion_cureminorwounds_ah", "Cure Minor Wounds" },
					{ "item_potion_cureminorwounds_desc_ah", "Removes certain afflictions" },
					{ "item_potion_curewounds_ah", "Cure Wounds" },
					{ "item_potion_curewounds_desc_ah", "Removes certain afflictions" },
					{ "item_potion_curemajorwounds_ah", "Cure Major Wounds" },
					{ "item_potion_curemajorwounds_desc_ah", "Removes certain afflictions" },
					{ "item_staff_cheat_ah", "Cheat Staff" },
					{ "item_staff_cheat_desc_ah", "Lazer's!!!" },
					{ "item_staff_druid_ah", "Staff of Nature" },
					{ "item_staff_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_helmet_druid_ah", "Helmet of Nature" },
					{ "item_helmet_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_chest_druid_ah", "Armor of Nature" },
					{ "item_chest_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_legs_druid_ah", "Leggings of Nature" },
					{ "item_legs_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_cape_druid_ah", "Cloak of Nature" },
					{ "item_cape_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_ring_druid_ah", "Ring of Nature" },
					{ "item_ring_druid_desc_ah", "Looks to be of asgardian origin." },
					{ "item_cape_rogue_ah", "Shadow Cape" },
					{ "item_cape_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_belt_rogue_ah", "Shadow Belt" },
					{ "item_belt_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_knife_rogue_ah", "Darkness" },
					{ "item_knife_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_helmet_rogue_ah", "Shadow Hood" },
					{ "item_helmet_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_chest_rogue_ah", "Shadow Armor" },
					{ "item_chest_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_legs_rogue_ah", "Shadow Leggings" },
					{ "item_legs_rogue_desc_ah", "This once belonged to Loki, before he went green..." },
					{ "item_ring_wizard_ah", "Arcane Ring" },
					{ "item_ring_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_staff_wizard_ah", "Arcane Staff" },
					{ "item_staff_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_cape_wizard_ah", "Arcane Cape" },
					{ "item_cape_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_helmet_wizard_ah", "Arcane Hood" },
					{ "item_helmet_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_chest_wizard_ah", "Arcane Armor" },
					{ "item_chest_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_legs_wizard_ah", "Arcane Leggings" },
					{ "item_legs_wizard_desc_ah", "Some Dark Elf once owned this." },
					{ "item_sword_paladin_ah", "Oathsunder" },
					{ "item_sword_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_belt_paladin_ah", "Divine Belt" },
					{ "item_belt_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_cape_paladin_ah", "Divine Cape" },
					{ "item_cape_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_helmet_paladin_ah", "Divine Helmet" },
					{ "item_helmet_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_chest_paladin_ah", "Divine Armor" },
					{ "item_chest_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_legs_paladin_ah", "Divine Leggings" },
					{ "item_legs_paladin_desc_ah", "Looks to be of asgardian origin." },
					{ "item_cape_warrior_ah", "Defender's Cape" },
					{ "item_cape_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_helmet_warrior_ah", "Defender's Helmet" },
					{ "item_helmet_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_chest_warrior_ah", "Defender's Armor" },
					{ "item_chest_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_legs_warrior_ah", "Defender's Greaves" },
					{ "item_legs_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_shield_warrior_ah", "Protector" },
					{ "item_shield_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_hammer_warrior_ah", "Restitution" },
					{ "item_hammer_warrior_desc_ah", "Looks to be of asgardian origin." },
					{ "item_ring_barbarian_ah", "Primal Ring" },
					{ "item_ring_barbarian_desc_ah", "Looks to be of asgardian origin." },
					{ "item_battleaxe_barbarian_ah", "Primal Axe" },
					{ "item_battleaxe_barbarian_desc_ah", "Looks to be of asgardian origin." },
					{ "item_cape_barbarian_ah", "Primal Cape" },
					{ "item_cape_barbarian_desc_ah", "Looks to be of asgardian origin." },
					{ "item_helmet_barbaria