Decompiled source of Valheim Legends v0.7.6

plugins/ValheimLegends.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ValheimLegendsFork")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ValheimLegendsFork")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("f0baf009-4135-4368-9987-850698809493")]
[assembly: AssemblyFileVersion("0.7.4.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.7.4.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace ValheimLegends
{
	public class AnimationClipOverrides : List<KeyValuePair<AnimationClip, AnimationClip>>
	{
		public AnimationClip this[string name]
		{
			get
			{
				string name2 = name;
				return Find((KeyValuePair<AnimationClip, AnimationClip> x) => ((Object)x.Key).name == name2).Value;
			}
			set
			{
				string name2 = name;
				int num = FindIndex((KeyValuePair<AnimationClip, AnimationClip> x) => ((Object)x.Key).name == name2);
				if (num != -1)
				{
					base[num] = new KeyValuePair<AnimationClip, AnimationClip>(base[num].Key, value);
				}
			}
		}

		public AnimationClipOverrides(int capacity)
			: base(capacity)
		{
		}
	}
	public class Class_Duelist
	{
		private static int ScriptChar_Layermask = LayerMask.GetMask(new string[11]
		{
			"Default", "static_solid", "Default_small", "piece_nonsolid", "terrain", "vehicle", "piece", "viewblock", "character", "character_net",
			"character_ghost"
		});

		private static GameObject GO_CastFX;

		private static GameObject GO_QuickShot;

		private static Projectile P_QuickShot;

		public static float riposte_returnDamageMultiplier_base = 1.5f;

		public static float riposte_returnDamageMultiplier_scaling = 0.01f;

		public static void Execute_Slash(Player player)
		{
			//IL_0011: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Expected O, but got Unknown
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: 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_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_BlinkStrike"), ((Character)player).GetCenterPoint() + ((Character)player).GetLookDir() * 3f, Quaternion.LookRotation(((Character)player).GetLookDir()));
			float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
			float num = 0.8f + level * 0.006f * VL_GlobalConfigs.g_DamageModifer * VL_GlobalConfigs.c_duelistSeismicSlash;
			Vector3 val = ((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 6f;
			List<Character> list = new List<Character>();
			list.Clear();
			Character.GetCharactersInRange(val, 6f, list);
			foreach (Character item in list)
			{
				if (BaseAI.IsEnemy((Character)(object)player, item) && VL_Utility.LOS_IsValid(item, val, val))
				{
					Vector3 val2 = ((Component)item).transform.position - ((Component)player).transform.position;
					HitData val3 = new HitData();
					val3.m_damage = ((Humanoid)player).GetCurrentWeapon().GetDamage();
					val3.ApplyModifier(Random.Range(0.8f, 1.2f) * num);
					val3.m_pushForce = 25f + 0.1f * level;
					val3.m_point = item.GetEyePoint();
					val3.m_dir = ((Component)player).transform.position - ((Component)item).transform.position;
					val3.m_skill = ValheimLegends.DisciplineSkill;
					item.Damage(val3);
				}
			}
		}

		public static void Process_Input(Player player)
		{
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0471: Unknown result type (might be due to invalid IL or missing references)
			//IL_0486: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0584: Unknown result type (might be due to invalid IL or missing references)
			//IL_0589: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0607: Unknown result type (might be due to invalid IL or missing references)
			//IL_060c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_0613: Unknown result type (might be due to invalid IL or missing references)
			//IL_061a: Expected O, but got Unknown
			//IL_0661: Unknown result type (might be due to invalid IL or missing references)
			//IL_0666: Unknown result type (might be due to invalid IL or missing references)
			//IL_066b: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0674: Unknown result type (might be due to invalid IL or missing references)
			//IL_0679: Unknown result type (might be due to invalid IL or missing references)
			//IL_0681: Unknown result type (might be due to invalid IL or missing references)
			//IL_068d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0692: Unknown result type (might be due to invalid IL or missing references)
			//IL_069c: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
			Random random = new Random();
			if (VL_Utility.Ability3_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability3_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetBlinkStrikeCost)
					{
						StatusEffect val = (StatusEffect)(object)(SE_Ability3_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability3_CD));
						val.m_ttl = VL_Utility.GetBlinkStrikeCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetBlinkStrikeCost);
						((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("knife_stab1");
						ValheimLegends.isChanneling = true;
						ValheimLegends.isChargingDash = true;
						ValheimLegends.dashCounter = 0;
						((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetBlinkStrikeSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina for S. Slash : (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetBlinkStrikeCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability2_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability2_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetRiposteCost)
					{
						StatusEffect val2 = (StatusEffect)(object)(SE_Ability2_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability2_CD));
						val2.m_ttl = VL_Utility.GetRiposteCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val2, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetRiposteCost);
						float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
						GO_CastFX = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_perfectblock"), ((Component)player).transform.position, Quaternion.identity);
						GO_CastFX = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_backstab"), ((Character)player).GetCenterPoint(), Quaternion.identity);
						SE_Riposte sE_Riposte = (SE_Riposte)(object)ScriptableObject.CreateInstance(typeof(SE_Riposte));
						sE_Riposte.damageMultiplier = riposte_returnDamageMultiplier_base + riposte_returnDamageMultiplier_scaling * level * VL_GlobalConfigs.c_duelistRiposte * VL_GlobalConfigs.g_DamageModifer;
						((StatusEffect)sE_Riposte).m_tooltip = $"Ready to riposte an enemy attack. Parrying an enemy will automatically return {(int)((sE_Riposte.damageMultiplier - 1f) * 100f)}% of the damage blocked while following up with the equipped weapon";
						((Character)player).GetSEMan().AddStatusEffect((StatusEffect)(object)sE_Riposte, false, 0, 0f);
						((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetRiposteSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina for Riposte: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetRiposteCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability1_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability1_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetQuickShotCost)
					{
						float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
						StatusEffect val3 = (StatusEffect)(object)(SE_Ability1_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability1_CD));
						val3.m_ttl = VL_Utility.GetQuickShotCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val3, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetQuickShotCost + 0.5f * level2);
						((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("interact");
						GO_CastFX = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_smelter_add"), ((Component)player).transform.position, Quaternion.identity);
						Vector3 val4 = ((Component)player).transform.position + ((Component)player).transform.up * 1.2f + ((Character)player).GetLookDir() * 0.5f;
						GO_CastFX = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_QuickShot"), val4, Quaternion.LookRotation(((Character)player).GetLookDir()));
						GameObject prefab = ZNetScene.instance.GetPrefab("Greydwarf_throw_projectile");
						GO_QuickShot = Object.Instantiate<GameObject>(prefab, val4, Quaternion.identity);
						P_QuickShot = GO_QuickShot.GetComponent<Projectile>();
						((Object)P_QuickShot).name = "QuickShot";
						P_QuickShot.m_respawnItemOnHit = false;
						P_QuickShot.m_spawnOnHit = null;
						P_QuickShot.m_ttl = 10f;
						P_QuickShot.m_gravity = 1.2f;
						P_QuickShot.m_rayRadius = 0.05f;
						P_QuickShot.m_hitNoise = 20f;
						((Component)P_QuickShot).transform.localRotation = Quaternion.LookRotation(((Humanoid)player).GetAimDir(val4));
						GO_QuickShot.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
						RaycastHit val5 = default(RaycastHit);
						Vector3 val6 = ((!Physics.Raycast(((Character)player).GetEyePoint(), ((Character)player).GetLookDir(), ref val5, float.PositiveInfinity, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val5)).collider)) ? (((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val5)).point);
						HitData val7 = new HitData();
						val7.m_damage.m_pierce = Random.Range(5f + 1f * level2, 30f + 1f * level2) * VL_GlobalConfigs.g_DamageModifer * VL_GlobalConfigs.c_duelistHipShot;
						val7.m_pushForce = 1f;
						val7.m_skill = ValheimLegends.DisciplineSkill;
						Vector3 val8 = Vector3.MoveTowards(val4, val6, 1f);
						P_QuickShot.Setup((Character)(object)player, (val8 - GO_QuickShot.transform.position) * 100f, -1f, val7, (ItemData)null, (ItemData)null);
						Traverse.Create((object)P_QuickShot).Field("m_skill").SetValue((object)ValheimLegends.DisciplineSkill);
						GO_QuickShot = null;
						VL_Utility.RotatePlayerToTarget(player);
						((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetQuickShotSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina to for Hip Shot: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetQuickShotCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else
			{
				ValheimLegends.isChanneling = false;
			}
		}
	}
	public class Class_Enchanter
	{
		public enum EnchanterAttackType
		{
			Charm = 10,
			Shock = 8,
			None = 0
		}

		private static int Script_Layermask = LayerMask.GetMask(new string[8] { "Default", "static_solid", "Default_small", "piece_nonsolid", "terrain", "vehicle", "piece", "viewblock" });

		private static int ScriptChar_Layermask = LayerMask.GetMask(new string[14]
		{
			"Default", "static_solid", "Default_small", "piece_nonsolid", "piece", "terrain", "vehicle", "viewblock", "character", "character_noenv",
			"character_trigger", "character_net", "character_ghost", "Water"
		});

		private static bool zonechargeCharging = false;

		private static float zonechargeCount;

		private static int zonechargeChargeAmount;

		private static int zonechargeChargeAmountMax;

		private static float zonechargeSkillGain = 0f;

		public static EnchanterAttackType QueuedAttack;

		public static StatusEffect HasZoneBuffTime(Player p)
		{
			foreach (StatusEffect statusEffect in ((Character)p).GetSEMan().GetStatusEffects())
			{
				if (statusEffect.m_name.StartsWith("VL_Biome"))
				{
					return statusEffect;
				}
			}
			return null;
		}

		public static void Execute_Attack(Player player, ref Rigidbody playerBody, ref float altitude)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_0272: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_0297: Unknown result type (might be due to invalid IL or missing references)
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Expected O, but got Unknown
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_033d: Unknown result type (might be due to invalid IL or missing references)
			//IL_033f: Unknown result type (might be due to invalid IL or missing references)
			//IL_035a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Expected O, but got Unknown
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03de: 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_03f6: Unknown result type (might be due to invalid IL or missing references)
			if (QueuedAttack == EnchanterAttackType.Charm)
			{
				float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AlterationSkillDef)).m_level;
				Vector3 val = ((Character)player).GetEyePoint() + ((Component)player).transform.up * 0.1f + ((Character)player).GetLookDir() * 0.5f + ((Component)player).transform.right * 0.25f;
				GameObject prefab = ZNetScene.instance.GetPrefab("VL_Charm");
				GameObject val2 = Object.Instantiate<GameObject>(prefab, val, Quaternion.identity);
				Projectile component = val2.GetComponent<Projectile>();
				((Object)component).name = "VL_Charm";
				component.m_respawnItemOnHit = false;
				component.m_spawnOnHit = null;
				component.m_ttl = 30f * VL_GlobalConfigs.c_enchanterCharm;
				component.m_gravity = 0f;
				component.m_rayRadius = 0.01f;
				component.m_aoe = 1f + 0.01f * level;
				((Component)component).transform.localRotation = Quaternion.LookRotation(((Humanoid)player).GetAimDir(val));
				val2.transform.localScale = Vector3.zero;
				RaycastHit val3 = default(RaycastHit);
				Vector3 position = ((Component)player).transform.position;
				Vector3 val4 = ((!Physics.Raycast(val, ((Character)player).GetLookDir(), ref val3, 1000f, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val3)).collider)) ? (position + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val3)).point);
				HitData val5 = new HitData();
				val5.m_skill = ValheimLegends.AlterationSkill;
				Vector3 val6 = Vector3.MoveTowards(val2.transform.position, val4, 1f);
				component.Setup((Character)(object)player, (val6 - val2.transform.position) * 40f, -1f, val5, (ItemData)null, (ItemData)null);
				Traverse.Create((object)component).Field("m_skill").SetValue((object)ValheimLegends.AlterationSkill);
			}
			else
			{
				if (QueuedAttack != EnchanterAttackType.Shock)
				{
					return;
				}
				StatusEffect val7 = HasZoneBuffTime(player);
				if (!((Object)(object)val7 != (Object)null))
				{
					return;
				}
				Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Shock"), ((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 2.5f + ((Component)player).transform.right * 0.25f, Quaternion.LookRotation(((Character)player).GetLookDir()));
				float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AlterationSkillDef)).m_level;
				Vector3 val8 = ((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 4f;
				List<Character> list = new List<Character>();
				list.Clear();
				Character.GetCharactersInRange(val8, 4f, list);
				foreach (Character item in list)
				{
					if (BaseAI.IsEnemy((Character)(object)player, item) && VL_Utility.LOS_IsValid(item, val8, val8))
					{
						Vector3 dir = ((Component)item).transform.position - ((Component)player).transform.position;
						HitData val9 = new HitData();
						val9.m_damage.m_lightning = 15f + level2 + val7.m_ttl * Random.Range(0.03f, 0.06f) * (1f + 0.1f * level2) * VL_GlobalConfigs.c_enchanterBiomeShock;
						val9.m_pushForce = 0f;
						val9.m_point = item.GetEyePoint();
						val9.m_dir = dir;
						val9.m_skill = ValheimLegends.AlterationSkill;
						item.Damage(val9);
						item.Stagger(val9.m_dir);
					}
				}
				if (((Object)val7).name == "SE_VL_BiomeSwamp")
				{
					SE_BiomeSwamp sE_BiomeSwamp = val7 as SE_BiomeSwamp;
					if ((Object)(object)sE_BiomeSwamp.biomeLight != (Object)null)
					{
						Object.Destroy((Object)(object)sE_BiomeSwamp.biomeLight);
					}
				}
				((Character)player).GetSEMan().RemoveStatusEffect(val7, false);
			}
		}

		public static void Process_Input(Player player, ref float altitude)
		{
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0314: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_043f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0445: Invalid comparison between Unknown and I4
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058d: Invalid comparison between Unknown and I4
			//IL_0f23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c9: Invalid comparison between Unknown and I4
			//IL_0805: Unknown result type (might be due to invalid IL or missing references)
			//IL_080b: Invalid comparison between Unknown and I4
			//IL_10b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_10da: Unknown result type (might be due to invalid IL or missing references)
			//IL_10e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_095c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0963: Invalid comparison between Unknown and I4
			//IL_110f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1112: Unknown result type (might be due to invalid IL or missing references)
			//IL_111c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a94: Invalid comparison between Unknown and I4
			//IL_1126: Unknown result type (might be due to invalid IL or missing references)
			//IL_1137: Unknown result type (might be due to invalid IL or missing references)
			//IL_1139: Unknown result type (might be due to invalid IL or missing references)
			//IL_1108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc5: Invalid comparison between Unknown and I4
			//IL_0e46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf3: Invalid comparison between Unknown and I4
			//IL_0551: 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_115f: Unknown result type (might be due to invalid IL or missing references)
			//IL_116a: Unknown result type (might be due to invalid IL or missing references)
			//IL_117e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1183: Unknown result type (might be due to invalid IL or missing references)
			//IL_1188: Unknown result type (might be due to invalid IL or missing references)
			//IL_068d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0692: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a54: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a59: Unknown result type (might be due to invalid IL or missing references)
			//IL_1243: Unknown result type (might be due to invalid IL or missing references)
			//IL_1248: Unknown result type (might be due to invalid IL or missing references)
			//IL_124a: Unknown result type (might be due to invalid IL or missing references)
			//IL_124f: Unknown result type (might be due to invalid IL or missing references)
			//IL_12de: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b85: 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_0cb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de9: Unknown result type (might be due to invalid IL or missing references)
			if (VL_Utility.Ability3_Input_Down && !zonechargeCharging)
			{
				StatusEffect val = HasZoneBuffTime(player);
				if ((Object)(object)val != (Object)null && val.m_ttl > 0f && QueuedAttack != EnchanterAttackType.Shock)
				{
					QueuedAttack = EnchanterAttackType.Shock;
					ValheimLegends.isChargingDash = true;
					ValheimLegends.dashCounter = 0;
					VL_Utility.RotatePlayerToTarget(player);
					((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("unarmed_attack0");
				}
				else if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability3_CD")) && !zonechargeCharging)
				{
					if (player.GetStamina() >= VL_Utility.GetZoneChargeCost)
					{
						float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AbjurationSkillDef)).m_level;
						player.StartEmote("challenge", true);
						ValheimLegends.isChanneling = true;
						ValheimLegends.shouldUseGuardianPower = false;
						StatusEffect val2 = (StatusEffect)(object)(SE_Ability3_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability3_CD));
						val2.m_ttl = VL_Utility.GetZoneChargeCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val2, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetZoneChargeCost);
						Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_ParticleTailField"), ((Component)player).transform.position, Quaternion.identity);
						zonechargeCharging = true;
						zonechargeChargeAmount = 0;
						zonechargeChargeAmountMax = Mathf.RoundToInt(15f * (1f - level * 0.005f));
						zonechargeCount = 10f;
						zonechargeSkillGain += VL_Utility.GetZoneChargeSkillGain;
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina to begin Zone Charge : (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetZoneChargeCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability3_Input_Pressed && player.GetStamina() > 1f && player.GetStamina() > VL_Utility.GetZoneChargeCostPerUpdate && Mathf.Max(0f, altitude - ((Component)player).transform.position.y) <= 1f && zonechargeCharging && ValheimLegends.isChanneling)
			{
				VL_Utility.SetTimer();
				ValheimLegends.isChanneling = true;
				zonechargeChargeAmount++;
				((Character)player).UseStamina(VL_Utility.GetZoneChargeCostPerUpdate);
				if (zonechargeChargeAmount >= zonechargeChargeAmountMax)
				{
					zonechargeCount += 2f;
					zonechargeChargeAmount = 0;
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_ParticleTailField"), ((Component)player).transform.position, Quaternion.identity);
					zonechargeSkillGain += 0.2f;
				}
			}
			else if ((VL_Utility.Ability3_Input_Up || player.GetStamina() <= 1f || player.GetStamina() <= VL_Utility.GetZoneChargeCostPerUpdate || Mathf.Max(0f, altitude - ((Component)player).transform.position.y) >= 1f) && zonechargeCharging && ValheimLegends.isChanneling)
			{
				float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AbjurationSkillDef)).m_level;
				Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_ParticleFieldBurst"), ((Component)player).transform.position, Quaternion.identity);
				List<Character> list = new List<Character>();
				list.Clear();
				Character.GetCharactersInRange(((Component)player).transform.position, 30f + 0.2f * level2, list);
				float num = (3f * level2 + 2f * zonechargeCount) * VL_GlobalConfigs.c_enchanterBiome;
				if ((int)player.GetCurrentBiome() == 1)
				{
					GameObject prefab = ZNetScene.instance.GetPrefab("vfx_Potion_stamina_medium");
					foreach (Character item in list)
					{
						SE_BiomeMeadows sE_BiomeMeadows = (SE_BiomeMeadows)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeMeadows));
						((StatusEffect)sE_BiomeMeadows).m_ttl = SE_BiomeMeadows.m_baseTTL + num;
						sE_BiomeMeadows.regenBonus = (1f + 0.1f * level2) * VL_GlobalConfigs.g_DamageModifer;
						sE_BiomeMeadows.doOnce = false;
						if (!BaseAI.IsEnemy(item, (Character)(object)player))
						{
							if ((Object)(object)item == (Object)(object)Player.m_localPlayer)
							{
								item.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMeadows, true, 0, 0f);
							}
							else if (item.IsPlayer())
							{
								item.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeMeadows).name), true, 0, 0f);
							}
							else
							{
								item.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMeadows, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab, item.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 8)
				{
					GameObject prefab2 = ZNetScene.instance.GetPrefab("fx_Potion_frostresist");
					foreach (Character item2 in list)
					{
						SE_BiomeBlackForest sE_BiomeBlackForest = (SE_BiomeBlackForest)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeBlackForest));
						((StatusEffect)sE_BiomeBlackForest).m_ttl = SE_BiomeBlackForest.m_baseTTL + num;
						sE_BiomeBlackForest.carryModifier = 50f + level2;
						sE_BiomeBlackForest.doOnce = false;
						if (!BaseAI.IsEnemy(item2, (Character)(object)player))
						{
							if ((Object)(object)item2 == (Object)(object)Player.m_localPlayer)
							{
								item2.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeBlackForest, true, 0, 0f);
							}
							else if (item2.IsPlayer())
							{
								item2.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeBlackForest).name), true, 0, 0f);
							}
							else
							{
								item2.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeBlackForest, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab2, item2.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 2)
				{
					GameObject prefab3 = ZNetScene.instance.GetPrefab("vfx_Potion_health_medium");
					foreach (Character item3 in list)
					{
						SE_BiomeSwamp sE_BiomeSwamp = (SE_BiomeSwamp)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeSwamp));
						((StatusEffect)sE_BiomeSwamp).m_ttl = SE_BiomeSwamp.m_baseTTL + num;
						sE_BiomeSwamp.resistModifier = 0.8f - 0.002f * level2;
						sE_BiomeSwamp.doOnce = false;
						if (!BaseAI.IsEnemy(item3, (Character)(object)player))
						{
							if ((Object)(object)item3 == (Object)(object)Player.m_localPlayer)
							{
								item3.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeSwamp, true, 0, 0f);
							}
							else if (item3.IsPlayer())
							{
								item3.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeSwamp).name), true, 0, 0f);
							}
							else
							{
								item3.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeSwamp, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab3, item3.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 4)
				{
					GameObject prefab4 = ZNetScene.instance.GetPrefab("fx_Potion_frostresist");
					foreach (Character item4 in list)
					{
						SE_BiomeMountain sE_BiomeMountain = (SE_BiomeMountain)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeMountain));
						((StatusEffect)sE_BiomeMountain).m_ttl = SE_BiomeMountain.m_baseTTL + num;
						sE_BiomeMountain.resistModifier = 1f + 0.1f * level2;
						sE_BiomeMountain.staminaRegen = 5f + 0.075f * level2;
						sE_BiomeMountain.doOnce = false;
						if (!BaseAI.IsEnemy(item4, (Character)(object)player))
						{
							if ((Object)(object)item4 == (Object)(object)Player.m_localPlayer)
							{
								item4.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMountain, true, 0, 0f);
							}
							else if (item4.IsPlayer())
							{
								item4.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeMountain).name), true, 0, 0f);
							}
							else
							{
								item4.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMountain, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab4, item4.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 16)
				{
					GameObject prefab5 = ZNetScene.instance.GetPrefab("vfx_Potion_stamina_medium");
					foreach (Character item5 in list)
					{
						SE_BiomePlains sE_BiomePlains = (SE_BiomePlains)(object)ScriptableObject.CreateInstance(typeof(SE_BiomePlains));
						((StatusEffect)sE_BiomePlains).m_ttl = SE_BiomePlains.m_baseTTL + num;
						sE_BiomePlains.doOnce = false;
						if (!BaseAI.IsEnemy(item5, (Character)(object)player))
						{
							if ((Object)(object)item5 == (Object)(object)Player.m_localPlayer)
							{
								item5.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomePlains, true, 0, 0f);
							}
							else if (item5.IsPlayer())
							{
								item5.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomePlains).name), true, 0, 0f);
							}
							else
							{
								item5.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomePlains, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab5, item5.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 256)
				{
					GameObject prefab6 = ZNetScene.instance.GetPrefab("fx_Potion_frostresist");
					foreach (Character item6 in list)
					{
						SE_BiomeOcean sE_BiomeOcean = (SE_BiomeOcean)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeOcean));
						((StatusEffect)sE_BiomeOcean).m_ttl = SE_BiomeOcean.m_baseTTL + num;
						sE_BiomeOcean.doOnce = false;
						if (!BaseAI.IsEnemy(item6, (Character)(object)player))
						{
							if ((Object)(object)item6 == (Object)(object)Player.m_localPlayer)
							{
								item6.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeOcean, true, 0, 0f);
							}
							else if (item6.IsPlayer())
							{
								item6.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeOcean).name), true, 0, 0f);
							}
							else
							{
								item6.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeOcean, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab6, item6.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 512)
				{
					GameObject prefab7 = ZNetScene.instance.GetPrefab("fx_Potion_frostresist");
					foreach (Character item7 in list)
					{
						SE_BiomeMist sE_BiomeMist = (SE_BiomeMist)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeMist));
						((StatusEffect)sE_BiomeMist).m_ttl = SE_BiomeMist.m_baseTTL + num;
						sE_BiomeMist.doOnce = false;
						if (!BaseAI.IsEnemy(item7, (Character)(object)player))
						{
							if ((Object)(object)item7 == (Object)(object)Player.m_localPlayer)
							{
								item7.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMist, true, 0, 0f);
							}
							else if (item7.IsPlayer())
							{
								item7.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeMist).name), true, 0, 0f);
							}
							else
							{
								item7.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeMist, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab7, item7.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else if ((int)player.GetCurrentBiome() == 32)
				{
					GameObject prefab8 = ZNetScene.instance.GetPrefab("vfx_Potion_health_medium");
					foreach (Character item8 in list)
					{
						SE_BiomeAsh sE_BiomeAsh = (SE_BiomeAsh)(object)ScriptableObject.CreateInstance(typeof(SE_BiomeAsh));
						((StatusEffect)sE_BiomeAsh).m_ttl = SE_BiomeAsh.m_baseTTL + num;
						sE_BiomeAsh.doOnce = false;
						if (!BaseAI.IsEnemy(item8, (Character)(object)player))
						{
							if ((Object)(object)item8 == (Object)(object)Player.m_localPlayer)
							{
								item8.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeAsh, true, 0, 0f);
							}
							else if (item8.IsPlayer())
							{
								item8.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_BiomeAsh).name), true, 0, 0f);
							}
							else
							{
								item8.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_BiomeAsh, true, 0, 0f);
							}
							Object.Instantiate<GameObject>(prefab8, item8.GetCenterPoint(), Quaternion.identity);
						}
					}
				}
				else
				{
					ZLog.Log((object)"Biome invalid.");
				}
				zonechargeCharging = false;
				zonechargeCount = 0f;
				zonechargeChargeAmount = 0;
				ValheimLegends.isChanneling = false;
				QueuedAttack = EnchanterAttackType.None;
				((Character)player).RaiseSkill(ValheimLegends.AbjurationSkill, zonechargeSkillGain);
				zonechargeSkillGain = 0f;
			}
			else if (VL_Utility.Ability2_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability2_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetCharmCost)
					{
						StatusEffect val3 = (StatusEffect)(object)(SE_Ability2_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability2_CD));
						val3.m_ttl = VL_Utility.GetCharmCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val3, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetCharmCost);
						ValheimLegends.isChargingDash = true;
						ValheimLegends.dashCounter = 0;
						QueuedAttack = EnchanterAttackType.Charm;
						((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("knife_stab0");
						VL_Utility.RotatePlayerToTarget(player);
						((Character)player).RaiseSkill(ValheimLegends.AlterationSkill, VL_Utility.GetCharmSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina for Charm: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetCharmCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability1_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability1_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetWeakenCost)
					{
						ValheimLegends.shouldUseGuardianPower = false;
						float level3 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AlterationSkillDef)).m_level;
						StatusEffect val4 = (StatusEffect)(object)(SE_Ability1_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability1_CD));
						val4.m_ttl = VL_Utility.GetWeakenCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val4, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetWeakenCost + 0.5f * level3);
						ValheimLegends.shouldUseGuardianPower = false;
						((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("gpower");
						RaycastHit val5 = default(RaycastHit);
						Vector3 position = ((Component)player).transform.position;
						Vector3 val6 = ((!Physics.Raycast(((Character)player).GetEyePoint(), ((Character)player).GetLookDir(), ref val5, float.PositiveInfinity, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val5)).collider)) ? (position + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val5)).point);
						Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Weaken"), val6, Quaternion.identity);
						for (int i = 0; i < 4; i++)
						{
							Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_WeakenStatus"), ((Component)player).transform.position + ((Component)player).transform.up * Random.Range(0.4f, 1.1f), Quaternion.identity);
						}
						SE_Weaken sE_Weaken = (SE_Weaken)(object)ScriptableObject.CreateInstance(typeof(SE_Weaken));
						((StatusEffect)sE_Weaken).m_ttl = SE_Weaken.m_baseTTL;
						sE_Weaken.damageReduction = (0.15f + 0.0015f * level3) * VL_GlobalConfigs.c_enchanterWeaken;
						sE_Weaken.speedReduction = 0.8f - 0.001f * level3;
						sE_Weaken.staminaDrain = (0.1f + 0.001f * level3) * VL_GlobalConfigs.c_enchanterWeaken;
						List<Character> allCharacters = Character.GetAllCharacters();
						foreach (Character item9 in allCharacters)
						{
							if (!BaseAI.IsEnemy((Character)(object)player, item9))
							{
								continue;
							}
							Vector3 val7 = ((Component)item9).transform.position - val6;
							if (((Vector3)(ref val7)).magnitude <= 5f + 0.01f * level3)
							{
								if (item9.IsPlayer())
								{
									item9.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_Weaken).name), true, 0, 0f);
								}
								else
								{
									item9.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_Weaken, true, 0, 0f);
								}
							}
						}
						((Character)player).RaiseSkill(ValheimLegends.AlterationSkill, VL_Utility.GetWeakenSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina for Weaken: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetWeakenCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else
			{
				ValheimLegends.isChanneling = false;
			}
		}
	}
	public class Class_Rogue
	{
		private static int ScriptChar_Layermask = LayerMask.GetMask(new string[14]
		{
			"character", "character_noenv", "character_trigger", "character_net", "character_ghost", "Default", "static_solid", "Default_small", "piece_nonsolid", "piece",
			"terrain", "vehicle", "viewblock", "Water"
		});

		public static Vector3 fadePoint;

		public static Quaternion fadeRotation;

		public static Vector3 backstabPoint;

		public static Vector3 backstabVector;

		public static bool throwDagger = false;

		public static bool canDoubleJump = true;

		public static bool canGainTrick = false;

		public static bool PlayerUsingDaggerOnly
		{
			get
			{
				Player localPlayer = Player.m_localPlayer;
				if (((Humanoid)localPlayer).GetCurrentWeapon() != null)
				{
					SharedData shared = ((Humanoid)localPlayer).GetCurrentWeapon().m_shared;
					ItemData value = Traverse.Create((object)localPlayer).Field("m_leftItem").GetValue<ItemData>();
					if (shared != null && (shared.m_name.ToLower().Contains("knife") || shared.m_name.Contains("dagger")) && value == null)
					{
						return true;
					}
				}
				return false;
			}
		}

		public static void Execute_Throw(Player player)
		{
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_035a: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0376: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_038f: 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_0396: 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_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: 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_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: 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_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_03df: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e8: Expected O, but got Unknown
			//IL_0417: Unknown result type (might be due to invalid IL or missing references)
			//IL_041c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0431: Unknown result type (might be due to invalid IL or missing references)
			//IL_0436: Unknown result type (might be due to invalid IL or missing references)
			//IL_043d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_0450: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0484: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: 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_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Expected O, but got Unknown
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			if (!throwDagger)
			{
				float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.AlterationSkillDef)).m_level;
				Vector3 val = ((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 0.2f + ((Component)player).transform.up * 0.3f + ((Component)player).transform.right * 0.28f;
				GameObject prefab = ZNetScene.instance.GetPrefab("VL_PoisonBomb");
				GameObject val2 = Object.Instantiate<GameObject>(prefab, val, Quaternion.identity);
				GameObject prefab2 = ZNetScene.instance.GetPrefab("VL_PoisonBombExplosion");
				Aoe componentInChildren = prefab2.gameObject.GetComponentInChildren<Aoe>();
				componentInChildren.m_damage.m_poison = (10f + 2f * level) * VL_GlobalConfigs.c_roguePoisonBomb;
				componentInChildren.m_ttl = 4f + 0.1f * level;
				componentInChildren.m_hitInterval = 0.5f;
				Projectile component = val2.GetComponent<Projectile>();
				((Object)component).name = "Poison Bomb";
				component.m_respawnItemOnHit = false;
				component.m_spawnOnHit = null;
				component.m_ttl = 10f;
				((Component)component).transform.localRotation = Quaternion.LookRotation(((Humanoid)player).GetAimDir(val));
				component.m_spawnOnHit = prefab2;
				val2.transform.localScale = Vector3.one * 0.5f;
				RaycastHit val3 = default(RaycastHit);
				Vector3 position = ((Component)player).transform.position;
				Vector3 val4 = ((!Physics.Raycast(val, ((Character)player).GetLookDir(), ref val3, float.PositiveInfinity, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val3)).collider)) ? (position + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val3)).point);
				HitData val5 = new HitData();
				val5.m_skill = ValheimLegends.AlterationSkill;
				val5.SetAttacker((Character)(object)player);
				Vector3 val6 = Vector3.MoveTowards(val2.transform.position, val4, 1f);
				component.Setup((Character)(object)player, (val6 - val2.transform.position) * 25f, -1f, val5, (ItemData)null, (ItemData)null);
				Traverse.Create((object)component).Field("m_skill").SetValue((object)ValheimLegends.AlterationSkill);
				val2 = null;
			}
			else
			{
				float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
				Vector3 val7 = ((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 0.2f + ((Component)player).transform.up * 0.3f + ((Component)player).transform.right * 0.28f;
				GameObject prefab3 = ZNetScene.instance.GetPrefab("VL_ThrowingKnife");
				GameObject val8 = Object.Instantiate<GameObject>(prefab3, val7, Quaternion.identity);
				Projectile component2 = val8.GetComponent<Projectile>();
				((Object)component2).name = "ThrowingKnife";
				component2.m_respawnItemOnHit = false;
				component2.m_spawnOnHit = null;
				component2.m_ttl = 10f;
				((Component)component2).transform.localRotation = Quaternion.LookRotation(((Humanoid)player).GetAimDir(val7));
				val8.transform.localScale = Vector3.one * 0.2f;
				RaycastHit val9 = default(RaycastHit);
				Vector3 position2 = ((Component)player).transform.position;
				Vector3 val10 = ((!Physics.Raycast(val7, ((Character)player).GetLookDir(), ref val9, float.PositiveInfinity, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val9)).collider)) ? (position2 + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val9)).point);
				HitData val11 = new HitData();
				val11.m_damage.m_pierce = Random.Range(5f + level2, 10f + 2f * level2) * VL_GlobalConfigs.c_rogueBonusThrowingDagger;
				val11.m_skill = ValheimLegends.DisciplineSkill;
				val11.SetAttacker((Character)(object)player);
				Vector3 val12 = Vector3.MoveTowards(val8.transform.position, val10, 1f);
				component2.Setup((Character)(object)player, (val12 - val8.transform.position) * 30f, -1f, val11, (ItemData)null, (ItemData)null);
				Traverse.Create((object)component2).Field("m_skill").SetValue((object)ValheimLegends.AlterationSkill);
				val8 = null;
			}
		}

		public static void Process_Input(Player player, ref Rigidbody playerBody, ref float altitude)
		{
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08da: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9f: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0922: 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_0947: Unknown result type (might be due to invalid IL or missing references)
			//IL_0954: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fc: 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_0821: Unknown result type (might be due to invalid IL or missing references)
			//IL_0826: Unknown result type (might be due to invalid IL or missing references)
			//IL_0833: Unknown result type (might be due to invalid IL or missing references)
			//IL_0838: Unknown result type (might be due to invalid IL or missing references)
			//IL_0844: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Expected O, but got Unknown
			//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_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_040a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0416: Unknown result type (might be due to invalid IL or missing references)
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_042b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0430: Unknown result type (might be due to invalid IL or missing references)
			//IL_0443: Unknown result type (might be due to invalid IL or missing references)
			//IL_0450: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0518: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0477: Unknown result type (might be due to invalid IL or missing references)
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_048d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Unknown result type (might be due to invalid IL or missing references)
			//IL_061b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0620: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0645: Unknown result type (might be due to invalid IL or missing references)
			//IL_064f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0654: Unknown result type (might be due to invalid IL or missing references)
			//IL_065a: Unknown result type (might be due to invalid IL or missing references)
			//IL_065f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0672: Unknown result type (might be due to invalid IL or missing references)
			//IL_0568: Unknown result type (might be due to invalid IL or missing references)
			//IL_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_0578: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_057f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0586: Expected O, but got Unknown
			//IL_058e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0593: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fc: Unknown result type (might be due to invalid IL or missing references)
			if (ZInput.GetButtonDown("Jump") && !((Character)player).IsDead() && !((Character)player).InAttack() && !((Character)player).IsEncumbered() && !((Character)player).InDodge() && !((Character)player).IsKnockedBack())
			{
				SE_Rogue sE_Rogue = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
				if (!((Character)player).IsOnGround() && canDoubleJump && (Object)(object)sE_Rogue != (Object)null && sE_Rogue.hitCount > 0)
				{
					Vector3 velocity = ((Character)player).GetVelocity();
					velocity.y = 0f;
					playerBody.velocity = velocity * 2f + new Vector3(0f, 8f, 0f);
					sE_Rogue.hitCount--;
					canDoubleJump = false;
					altitude = 0f;
					((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("jump");
				}
				else if (((Character)player).IsOnGround())
				{
					canDoubleJump = true;
				}
			}
			if (((Character)player).IsBlocking() && ZInput.GetButtonDown("Attack"))
			{
				SE_Rogue sE_Rogue2 = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
				if ((Object)(object)sE_Rogue2 != (Object)null && sE_Rogue2.hitCount > 0)
				{
					sE_Rogue2.hitCount--;
					((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("throw_bomb");
					ValheimLegends.isChargingDash = true;
					ValheimLegends.dashCounter = 0;
					throwDagger = true;
					((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetPoisonBombSkillGain * 0.3f);
				}
			}
			if (VL_Utility.Ability3_Input_Down)
			{
				RaycastHit val = default(RaycastHit);
				Vector3 position = ((Component)player).transform.position;
				Physics.SphereCast(((Character)player).GetEyePoint(), 0.2f, ((Character)player).GetLookDir(), ref val, 150f, ScriptChar_Layermask);
				VL_Utility.SetTimer();
				if ((Object)(object)((RaycastHit)(ref val)).collider != (Object)null && (Object)(object)((Component)((RaycastHit)(ref val)).collider).gameObject != (Object)null)
				{
					Character val2 = null;
					((Component)((RaycastHit)(ref val)).collider).gameObject.TryGetComponent<Character>(ref val2);
					bool flag = (Object)(object)val2 != (Object)null;
					List<Component> list = new List<Component>();
					list.Clear();
					((Component)((RaycastHit)(ref val)).collider).gameObject.GetComponents<Component>(list);
					if ((Object)(object)val2 == (Object)null)
					{
						val2 = (Character)((Component)((RaycastHit)(ref val)).collider).GetComponentInParent(typeof(Character));
						flag = (Object)(object)val2 != (Object)null;
						if ((Object)(object)val2 == (Object)null)
						{
							val2 = ((Component)((RaycastHit)(ref val)).collider).GetComponentInChildren<Character>();
							flag = (Object)(object)val2 != (Object)null;
						}
					}
					if (flag && !val2.IsPlayer())
					{
						if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability3_CD")))
						{
							if (player.GetStamina() >= VL_Utility.GetBackstabCost)
							{
								StatusEffect val3 = (StatusEffect)(object)(SE_Ability3_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability3_CD));
								val3.m_ttl = VL_Utility.GetBackstabCooldownTime;
								((Character)player).GetSEMan().AddStatusEffect(val3, false, 0, 0f);
								((Character)player).UseStamina(VL_Utility.GetBackstabCost);
								float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
								Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Smokeburst"), ((Character)player).GetEyePoint(), Quaternion.identity);
								backstabVector = (((Component)val2).transform.position - ((Component)player).transform.position) / Vector3.Distance(((Component)val2).transform.position, ((Component)player).transform.position);
								float num = -1.5f;
								_ = ((RaycastHit)(ref val)).collider.bounds;
								Bounds bounds = ((RaycastHit)(ref val)).collider.bounds;
								_ = ((Bounds)(ref bounds)).size;
								if (true)
								{
									bounds = ((RaycastHit)(ref val)).collider.bounds;
									float x2 = ((Bounds)(ref bounds)).size.x;
									bounds = ((RaycastHit)(ref val)).collider.bounds;
									num = (x2 + ((Bounds)(ref bounds)).size.z) / 2f;
									num = Mathf.Clamp(num, 0.6f, 2f);
									num *= -1f;
								}
								backstabPoint = ((Component)val2).transform.position + ((Component)val2).transform.forward * num;
								backstabPoint.y += 0.1f;
								playerBody.position = backstabPoint;
								((Component)player).transform.rotation = ((Component)val2).transform.rotation;
								((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("knife_stab2");
								if (BaseAI.IsEnemy((Character)(object)player, val2))
								{
									Vector3 dir = ((Component)val2).transform.position - ((Component)player).transform.position;
									HitData val4 = new HitData();
									val4.m_damage = ((Humanoid)player).GetCurrentWeapon().GetDamage();
									((DamageTypes)(ref val4.m_damage)).Modify(Random.Range(0.6f, 0.8f) * (1f + 0.005f * level) * VL_GlobalConfigs.c_rogueBackstab);
									val4.m_pushForce = 10f + 0.1f * level;
									val4.m_point = val2.GetEyePoint();
									val4.m_dir = dir;
									val4.m_skill = ValheimLegends.DisciplineSkill;
									val2.Damage(val4);
								}
								Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Smokeburst"), backstabPoint, Quaternion.identity);
								Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Shadowburst"), backstabPoint + ((Component)player).transform.up * 0.5f, Quaternion.LookRotation(((Character)player).GetLookDir()));
								altitude = 0f;
								((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetBackstabSkillGain);
							}
							else
							{
								((Character)player).Message((MessageType)1, "Not enough stamina for Backstab: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetBackstabCost + ")", 0, (Sprite)null);
							}
						}
						else
						{
							((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
						}
					}
					else
					{
						((Character)player).Message((MessageType)1, "Invalid target", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "No target", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability2_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability2_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetFadeCost)
					{
						StatusEffect val5 = (StatusEffect)(object)(SE_Ability2_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability2_CD));
						val5.m_ttl = VL_Utility.GetFadeCooldownTime * VL_GlobalConfigs.c_rogueFadeCooldown;
						((Character)player).GetSEMan().AddStatusEffect(val5, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetFadeCost);
						float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.EvocationSkillDef)).m_level;
						GameObject prefab = ZNetScene.instance.GetPrefab("vfx_odin_despawn");
						Object.Instantiate<GameObject>(prefab, ((Character)player).GetCenterPoint(), Quaternion.identity);
						Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
						fadePoint = playerBody.position;
						canGainTrick = true;
						((Character)player).RaiseSkill(ValheimLegends.EvocationSkill, VL_Utility.GetFadeSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina to set Fade point: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetFadeCost + ")", 0, (Sprite)null);
					}
				}
				else if (((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability2_CD")))
				{
					float num2 = 50f;
					Vector3 val6 = fadePoint - ((Component)player).transform.position;
					if (((Vector3)(ref val6)).sqrMagnitude < num2 * num2)
					{
						GameObject prefab2 = ZNetScene.instance.GetPrefab("vfx_odin_despawn");
						Object.Instantiate<GameObject>(prefab2, ((Character)player).GetCenterPoint(), Quaternion.identity);
						Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
						playerBody.MovePosition(fadePoint);
						altitude = 0f;
						if (canGainTrick)
						{
							SE_Rogue sE_Rogue3 = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
							sE_Rogue3.hitCount++;
							canGainTrick = false;
						}
					}
					else
					{
						((Character)player).Message((MessageType)1, "Cannot fade at this distance.", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else if (VL_Utility.Ability1_Input_Down)
			{
				if (!((Character)player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Ability1_CD")))
				{
					if (player.GetStamina() >= VL_Utility.GetPoisonBombCost)
					{
						StatusEffect val7 = (StatusEffect)(object)(SE_Ability1_CD)(object)ScriptableObject.CreateInstance(typeof(SE_Ability1_CD));
						val7.m_ttl = VL_Utility.GetPoisonBombCooldownTime;
						((Character)player).GetSEMan().AddStatusEffect(val7, false, 0, 0f);
						((Character)player).UseStamina(VL_Utility.GetPoisonBombCost);
						((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("throw_bomb");
						ValheimLegends.isChargingDash = true;
						ValheimLegends.dashCounter = 0;
						throwDagger = false;
						((Character)player).RaiseSkill(ValheimLegends.AlterationSkill, VL_Utility.GetPoisonBombSkillGain);
					}
					else
					{
						((Character)player).Message((MessageType)1, "Not enough stamina to throw Poison Bomb: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetPoisonBombCost + ")", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
				}
			}
			else
			{
				ValheimLegends.isChanneling = false;
			}
		}
	}
	public class Class_Monk
	{
		public enum MonkAttackType
		{
			MeteorPunch = 12,
			MeteorSlam = 13,
			FlyingKick = 1,
			FlyingKickStart = 8,
			Surge = 20,
			Psibolt = 15
		}

		private static int Script_Solidmask = LayerMask.GetMask(new string[8] { "Default", "static_solid", "Default_small", "piece_nonsolid", "terrain", "vehicle", "piece", "viewblock" });

		private static int Script_Layermask = LayerMask.GetMask(new string[11]
		{
			"Default", "static_solid", "Default_small", "piece_nonsolid", "terrain", "vehicle", "character", "character_noenv", "character_trigger", "character_net",
			"character_ghost"
		});

		private static int ScriptChar_Layermask = LayerMask.GetMask(new string[14]
		{
			"Default", "static_solid", "Default_small", "piece_nonsolid", "piece", "terrain", "vehicle", "viewblock", "character", "character_noenv",
			"character_trigger", "character_net", "character_ghost", "Water"
		});

		public static MonkAttackType QueuedAttack;

		private static int fkickCount;

		private static int fkickCountMax;

		private static Vector3 kickDir;

		private static List<int> kicklist;

		public static bool PlayerIsUnarmed
		{
			get
			{
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0042: Invalid comparison between Unknown and I4
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Invalid comparison between Unknown and I4
				Player localPlayer = Player.m_localPlayer;
				if (((Humanoid)localPlayer).GetCurrentWeapon() != null)
				{
					ItemData value = Traverse.Create((object)localPlayer).Field("m_leftItem").GetValue<ItemData>();
					SharedData shared = ((Humanoid)localPlayer).GetCurrentWeapon().m_shared;
					if (shared != null && ((int)shared.m_skillType == 11 || (int)shared.m_attachOverride == 12) && value == null)
					{
						return true;
					}
				}
				return false;
			}
		}

		public static void Impact_Effect(Player player, float altitude)
		{
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			List<Character> allCharacters = Character.GetAllCharacters();
			ValheimLegends.shouldValkyrieImpact = false;
			foreach (Character item in allCharacters)
			{
				float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
				if (!BaseAI.IsEnemy((Character)(object)player, item))
				{
					continue;
				}
				Vector3 splash_alternate = ((Component)item).transform.position - ((Component)player).transform.position;
				if (((Vector3)(ref splash_alternate)).magnitude <= 6f + 0.03f * level)
				{
					Vector3 position = ((Component)player).transform.position;
					splash_alternate = default(Vector3);
					if (VL_Utility.LOS_IsValid(item, position, splash_alternate))
					{
						Vector3 dir = ((Component)item).transform.position - ((Component)player).transform.position;
						HitData val = new HitData();
						val.m_damage.m_blunt = 5f + 3f * altitude + Random.Range(1f * level, 2f * level) * VL_GlobalConfigs.g_DamageModifer * VL_GlobalConfigs.c_monkChiSlam;
						val.m_pushForce = 20f * VL_GlobalConfigs.g_DamageModifer;
						val.m_point = item.GetEyePoint();
						val.m_dir = dir;
						val.m_skill = ValheimLegends.DisciplineSkill;
						item.Damage(val);
					}
				}
			}
			Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_MeteorSlam"), ((Component)player).transform.position + ((Component)player).transform.up * 0.2f, Quaternion.identity);
		}

		public static void Execute_Attack(Player player, ref Rigidbody playerBody, ref float altitude)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: 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_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0376: 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_038f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b8: 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_03d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_044e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0453: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_054f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0555: Unknown result type (might be due to invalid IL or missing references)
			//IL_055f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0564: Unknown result type (might be due to invalid IL or missing references)
			//IL_056f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0579: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0589: Unknown result type (might be due to invalid IL or missing references)
			//IL_0593: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0606: Unknown result type (might be due to invalid IL or missing references)
			//IL_0608: Unknown result type (might be due to invalid IL or missing references)
			//IL_060d: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0638: Unknown result type (might be due to invalid IL or missing references)
			//IL_063d: Unknown result type (might be due to invalid IL or missing references)
			//IL_063f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0671: Unknown result type (might be due to invalid IL or missing references)
			//IL_0674: Unknown result type (might be due to invalid IL or missing references)
			//IL_067e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0683: Unknown result type (might be due to invalid IL or missing references)
			//IL_0688: Unknown result type (might be due to invalid IL or missing references)
			//IL_068a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0691: Expected O, but got Unknown
			//IL_0711: Unknown result type (might be due to invalid IL or missing references)
			//IL_0716: Unknown result type (might be due to invalid IL or missing references)
			//IL_072b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0730: Unknown result type (might be due to invalid IL or missing references)
			//IL_0737: Unknown result type (might be due to invalid IL or missing references)
			//IL_073c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0741: Unknown result type (might be due to invalid IL or missing references)
			//IL_074a: Unknown result type (might be due to invalid IL or missing references)
			//IL_074f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_066a: Unknown result type (might be due to invalid IL or missing references)
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0830: Unknown result type (might be due to invalid IL or missing references)
			//IL_0853: Unknown result type (might be due to invalid IL or missing references)
			//IL_0858: Unknown result type (might be due to invalid IL or missing references)
			//IL_085d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0862: Unknown result type (might be due to invalid IL or missing references)
			//IL_0867: Unknown result type (might be due to invalid IL or missing references)
			//IL_0874: Unknown result type (might be due to invalid IL or missing references)
			//IL_087a: Unknown result type (might be due to invalid IL or missing references)
			//IL_087f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0887: Unknown result type (might be due to invalid IL or missing references)
			//IL_088c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0894: Unknown result type (might be due to invalid IL or missing references)
			//IL_0899: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Expected O, but got Unknown
			//IL_08f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c37: Unknown result type (might be due to invalid IL or missing references)
			//IL_090f: Unknown result type (might be due to invalid IL or missing references)
			//IL_091a: Unknown result type (might be due to invalid IL or missing references)
			//IL_091f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_093e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0943: Unknown result type (might be due to invalid IL or missing references)
			//IL_0947: Unknown result type (might be due to invalid IL or missing references)
			//IL_0953: Unknown result type (might be due to invalid IL or missing references)
			//IL_095f: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a02: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a13: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0997: Unknown result type (might be due to invalid IL or missing references)
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0976: Unknown result type (might be due to invalid IL or missing references)
			//IL_098a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9c: Unknown result type (might be due to invalid IL or missing references)