Decompiled source of Valheim Legends Fork v0.5.6

plugins/ValheimLegends.dll

Decompiled 2 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 BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[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.5.5.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("0.5.5.0")]
namespace ValheimLegends;

public class AnimationClipOverrides : List<KeyValuePair<AnimationClip, AnimationClip>>
{
	public AnimationClip this[string name]
	{
		get
		{
			return Find((KeyValuePair<AnimationClip, AnimationClip> x) => ((Object)x.Key).name == name).Value;
		}
		set
		{
			int num = FindIndex((KeyValuePair<AnimationClip, AnimationClip> x) => ((Object)x.Key).name == name);
			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_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: 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_0091: 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_00a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: 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_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Expected O, but got Unknown
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_0155: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: 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_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0184: Unknown result type (might be due to invalid IL or missing references)
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		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.6f + 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))
			{
				_ = ((Component)item).transform.position - ((Component)player).transform.position;
				HitData val2 = new HitData();
				val2.m_damage = ((Humanoid)player).GetCurrentWeapon().GetDamage();
				val2.ApplyModifier(Random.Range(0.8f, 1.2f) * num);
				val2.m_pushForce = 25f + 0.1f * level;
				val2.m_point = item.GetEyePoint();
				val2.m_dir = ((Component)player).transform.position - ((Component)item).transform.position;
				val2.m_skill = ValheimLegends.DisciplineSkill;
				item.Damage(val2);
			}
		}
	}

	public static void Process_Input(Player player)
	{
		//IL_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01de: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_028c: 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_03ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0409: 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_041e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0423: Unknown result type (might be due to invalid IL or missing references)
		//IL_0429: Unknown result type (might be due to invalid IL or missing references)
		//IL_0433: Unknown result type (might be due to invalid IL or missing references)
		//IL_0438: 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_044e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0451: Unknown result type (might be due to invalid IL or missing references)
		//IL_0456: Unknown result type (might be due to invalid IL or missing references)
		//IL_0474: Unknown result type (might be due to invalid IL or missing references)
		//IL_0476: 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_0502: Unknown result type (might be due to invalid IL or missing references)
		//IL_0507: Unknown result type (might be due to invalid IL or missing references)
		//IL_052a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0536: Unknown result type (might be due to invalid IL or missing references)
		//IL_053d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0543: 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_0579: Unknown result type (might be due to invalid IL or missing references)
		//IL_0583: Unknown result type (might be due to invalid IL or missing references)
		//IL_0588: Unknown result type (might be due to invalid IL or missing references)
		//IL_058d: Unknown result type (might be due to invalid IL or missing references)
		//IL_058f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0596: Expected O, but got Unknown
		//IL_05dd: 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_05e9: 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_05f5: 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_0609: Unknown result type (might be due to invalid IL or missing references)
		//IL_060e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0618: 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_065c: Unknown result type (might be due to invalid IL or missing references)
		//IL_056b: Unknown result type (might be due to invalid IL or missing references)
		new Random();
		if (VL_Utility.Ability3_Input_Down)
		{
			if (!((Character)player).GetSEMan().HaveStatusEffect("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, false);
					((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("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, false);
					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("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, false);
					((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()));
					GO_QuickShot = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("Greydwarf_throw_projectile"), 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_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_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: 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_0086: 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_00a0: 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_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: 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_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0141: 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_0233: Unknown result type (might be due to invalid IL or missing references)
		//IL_0239: Unknown result type (might be due to invalid IL or missing references)
		//IL_0243: Unknown result type (might be due to invalid IL or missing references)
		//IL_0248: Unknown result type (might be due to invalid IL or missing references)
		//IL_0253: Unknown result type (might be due to invalid IL or missing references)
		//IL_025d: 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_026d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0172: Unknown result type (might be due to invalid IL or missing references)
		//IL_0175: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_02af: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c4: 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_02d9: 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_018b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: Expected O, but got Unknown
		//IL_0194: 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_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_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b9: 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)
		//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_016b: 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_030f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0322: Unknown result type (might be due to invalid IL or missing references)
		//IL_032d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0332: Unknown result type (might be due to invalid IL or missing references)
		//IL_0337: Unknown result type (might be due to invalid IL or missing references)
		//IL_0339: Unknown result type (might be due to invalid IL or missing references)
		//IL_0340: Expected O, but got Unknown
		//IL_0391: 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_039d: Unknown result type (might be due to invalid IL or missing references)
		//IL_039f: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bd: 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 val2 = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("VL_Charm"), 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_023c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0313: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_038c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0391: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ed: Invalid comparison between Unknown and I4
		//IL_0d66: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d7c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0507: Unknown result type (might be due to invalid IL or missing references)
		//IL_050d: Invalid comparison between Unknown and I4
		//IL_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Unknown result type (might be due to invalid IL or missing references)
		//IL_061b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0621: Invalid comparison between Unknown and I4
		//IL_02c4: 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_0ec1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ed2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ede: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ee3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ee6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eec: Unknown result type (might be due to invalid IL or missing references)
		//IL_0735: Unknown result type (might be due to invalid IL or missing references)
		//IL_073b: Invalid comparison between Unknown and I4
		//IL_0f1b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f1e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f28: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f2d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0864: Unknown result type (might be due to invalid IL or missing references)
		//IL_086b: Invalid comparison between Unknown and I4
		//IL_0f32: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f43: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f45: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f14: Unknown result type (might be due to invalid IL or missing references)
		//IL_096a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0974: Invalid comparison between Unknown and I4
		//IL_0cab: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a73: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a7d: Invalid comparison between Unknown and I4
		//IL_0f6a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f75: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f89: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f8e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f93: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b7c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b83: Invalid comparison between Unknown and I4
		//IL_04d7: 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_05eb: 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_0705: Unknown result type (might be due to invalid IL or missing references)
		//IL_070a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0834: Unknown result type (might be due to invalid IL or missing references)
		//IL_0839: Unknown result type (might be due to invalid IL or missing references)
		//IL_1041: Unknown result type (might be due to invalid IL or missing references)
		//IL_1046: Unknown result type (might be due to invalid IL or missing references)
		//IL_1048: Unknown result type (might be due to invalid IL or missing references)
		//IL_104d: Unknown result type (might be due to invalid IL or missing references)
		//IL_10c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_093a: Unknown result type (might be due to invalid IL or missing references)
		//IL_093f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a43: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a48: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b4c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b51: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c52: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c57: 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("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, false);
					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, false);
			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("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, false);
					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("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, 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;
					foreach (Character allCharacter in Character.GetAllCharacters())
					{
						if (!BaseAI.IsEnemy((Character)(object)player, allCharacter))
						{
							continue;
						}
						Vector3 val7 = ((Component)allCharacter).transform.position - val6;
						if (((Vector3)(ref val7)).magnitude <= 5f + 0.01f * level3)
						{
							if (allCharacter.IsPlayer())
							{
								allCharacter.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_Weaken).name), true, 0, 0f);
							}
							else
							{
								allCharacter.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 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_027a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0280: Unknown result type (might be due to invalid IL or missing references)
		//IL_028a: Unknown result type (might be due to invalid IL or missing references)
		//IL_028f: Unknown result type (might be due to invalid IL or missing references)
		//IL_029a: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02be: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c3: 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_02d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02db: Unknown result type (might be due to invalid IL or missing references)
		//IL_0319: Unknown result type (might be due to invalid IL or missing references)
		//IL_031b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0320: Unknown result type (might be due to invalid IL or missing references)
		//IL_0331: Unknown result type (might be due to invalid IL or missing references)
		//IL_033b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0347: 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_0358: 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_035d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: 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_009f: 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_0132: Unknown result type (might be due to invalid IL or missing references)
		//IL_0137: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0170: Unknown result type (might be due to invalid IL or missing references)
		//IL_0175: Unknown result type (might be due to invalid IL or missing references)
		//IL_0177: Unknown result type (might be due to invalid IL or missing references)
		//IL_0179: Unknown result type (might be due to invalid IL or missing references)
		//IL_038c: 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_0399: Unknown result type (might be due to invalid IL or missing references)
		//IL_039e: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ac: Expected O, but got Unknown
		//IL_03db: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f9: 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_0405: Unknown result type (might be due to invalid IL or missing references)
		//IL_0409: Unknown result type (might be due to invalid IL or missing references)
		//IL_0412: Unknown result type (might be due to invalid IL or missing references)
		//IL_0417: 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_0443: Unknown result type (might be due to invalid IL or missing references)
		//IL_0385: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bf: 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)
		//IL_01c8: Expected O, but got Unknown
		//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ff: 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_020e: 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_01a1: 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 val2 = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("VL_PoisonBomb"), val, Quaternion.identity);
			GameObject prefab = ZNetScene.instance.GetPrefab("VL_PoisonBombExplosion");
			Aoe componentInChildren = prefab.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 = prefab;
			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 val8 = Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("VL_ThrowingKnife"), 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_01d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0193: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_081f: Unknown result type (might be due to invalid IL or missing references)
		//IL_082a: Unknown result type (might be due to invalid IL or missing references)
		//IL_082f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0834: Unknown result type (might be due to invalid IL or missing references)
		//IL_029b: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a2: Expected O, but got Unknown
		//IL_0980: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0857: Unknown result type (might be due to invalid IL or missing references)
		//IL_085c: Unknown result type (might be due to invalid IL or missing references)
		//IL_087c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0881: Unknown result type (might be due to invalid IL or missing references)
		//IL_0892: 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_075e: 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_0783: Unknown result type (might be due to invalid IL or missing references)
		//IL_0794: Unknown result type (might be due to invalid IL or missing references)
		//IL_0799: Unknown result type (might be due to invalid IL or missing references)
		//IL_07a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: 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_0103: 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_03a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_03ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0401: 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_0412: Unknown result type (might be due to invalid IL or missing references)
		//IL_0417: Unknown result type (might be due to invalid IL or missing references)
		//IL_041b: Unknown result type (might be due to invalid IL or missing references)
		//IL_042c: 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_0435: 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_0478: Unknown result type (might be due to invalid IL or missing references)
		//IL_047f: 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_0489: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a3: 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_04e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_05dd: 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_05ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f2: 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_060a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0503: Unknown result type (might be due to invalid IL or missing references)
		//IL_050e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0513: 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_051a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0521: Expected O, but got Unknown
		//IL_0529: Unknown result type (might be due to invalid IL or missing references)
		//IL_052e: Unknown result type (might be due to invalid IL or missing references)
		//IL_057c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0581: Unknown result type (might be due to invalid IL or missing references)
		//IL_0588: Unknown result type (might be due to invalid IL or missing references)
		//IL_058a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0591: Unknown result type (might be due to invalid IL or missing references)
		//IL_0596: Unknown result type (might be due to invalid IL or missing references)
		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);
			_ = ((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("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, false);
							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;
							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("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, false);
					_ = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.EvocationSkillDef)).m_level;
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_odin_despawn"), ((Character)player).GetCenterPoint(), Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
					fadePoint = ((Component)player).transform.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("SE_VL_Ability2_CD"))
			{
				Vector3 val6 = fadePoint - ((Component)player).transform.position;
				if (((Vector3)(ref val6)).magnitude < 100f)
				{
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_odin_despawn"), ((Character)player).GetCenterPoint(), Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
					((Component)player).transform.position = fadePoint;
					if (canGainTrick)
					{
						((SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"))).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("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, false);
					((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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: 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 && (shared.m_name.ToLower() == "unarmed" || (int)shared.m_attachOverride == 12) && value == null)
				{
					return true;
				}
			}
			return false;
		}
	}

	public static void Impact_Effect(Player player, float altitude)
	{
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: 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_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c9: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Expected O, but got Unknown
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_012a: 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_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_013f: 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_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//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_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_0098: 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_0338: Unknown result type (might be due to invalid IL or missing references)
		//IL_034c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0351: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0476: Unknown result type (might be due to invalid IL or missing references)
		//IL_047b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_012a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_0378: 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_0397: Unknown result type (might be due to invalid IL or missing references)
		//IL_039c: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d9: 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_040c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0427: Unknown result type (might be due to invalid IL or missing references)
		//IL_042c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_014b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0501: Unknown result type (might be due to invalid IL or missing references)
		//IL_050c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0516: Unknown result type (might be due to invalid IL or missing references)
		//IL_051b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0526: Unknown result type (might be due to invalid IL or missing references)
		//IL_0530: Unknown result type (might be due to invalid IL or missing references)
		//IL_0535: Unknown result type (might be due to invalid IL or missing references)
		//IL_053a: Unknown result type (might be due to invalid IL or missing references)
		//IL_054b: Unknown result type (might be due to invalid IL or missing references)
		//IL_054d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0596: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_05ae: 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_05c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_05cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_07a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_07aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_07d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_07d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_07dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_07e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_07ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0800: Unknown result type (might be due to invalid IL or missing references)
		//IL_0805: Unknown result type (might be due to invalid IL or missing references)
		//IL_080d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0812: Unknown result type (might be due to invalid IL or missing references)
		//IL_081a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0825: Unknown result type (might be due to invalid IL or missing references)
		//IL_082f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0834: Unknown result type (might be due to invalid IL or missing references)
		//IL_083f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0849: Unknown result type (might be due to invalid IL or missing references)
		//IL_084e: 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_05ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0602: 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_0616: Unknown result type (might be due to invalid IL or missing references)
		//IL_0618: Unknown result type (might be due to invalid IL or missing references)
		//IL_061f: Expected O, but got Unknown
		//IL_069f: Unknown result type (might be due to invalid IL or missing references)
		//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_06b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bd: 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_06c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_06cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_06db: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0707: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_020d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0214: Unknown result type (might be due to invalid IL or missing references)
		//IL_021e: 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_01cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d3: Expected O, but got Unknown
		//IL_086f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b63: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b6a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0886: Unknown result type (might be due to invalid IL or missing references)
		//IL_0891: Unknown result type (might be due to invalid IL or missing references)
		//IL_0896: Unknown result type (might be due to invalid IL or missing references)
		//IL_089d: Unknown result type (might be due to invalid IL or missing references)
		//IL_08a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_08be: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d6: 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_095f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0964: Unknown result type (might be due to invalid IL or missing references)
		//IL_096b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0970: Unknown result type (might be due to invalid IL or missing references)
		//IL_097e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0983: Unknown result type (might be due to invalid IL or missing references)
		//IL_098c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0998: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b80: Unknown result type (might be due to invalid IL or missing references)
		//IL_0906: Unknown result type (might be due to invalid IL or missing references)
		//IL_090d: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_08fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bf2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bfc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c01: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c7b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c09: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c0f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bdf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0275: Unknown result type (might be due to invalid IL or missing references)
		//IL_0280: Unknown result type (might be due to invalid IL or missing references)
		//IL_0285: Unknown result type (might be due to invalid IL or missing references)
		//IL_028a: 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_0293: Expected O, but got Unknown
		//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e7: 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_02f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0936: Unknown result type (might be due to invalid IL or missing references)
		//IL_093b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a09: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a10: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a17: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_09d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_09d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_09df: Unknown result type (might be due to invalid IL or missing references)
		//IL_09e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e19: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e21: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e2b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e30: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e3b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e40: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c93: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c99: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ca0: Unknown result type (might be due to invalid IL or missing references)
		//IL_09f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_09f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_09fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a00: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e77: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e94: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e9b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eaf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eb4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a3d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a44: Expected O, but got Unknown
		//IL_0a4c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a51: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a73: Unknown result type (might be due to invalid IL or missing references)
		//IL_0