Decompiled source of Valheim Legends v0.5.0

plugins/ValheimLegends.dll

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

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ValheimLegends")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ValheimLegends")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("f0baf009-4135-4368-9987-850698809493")]
[assembly: AssemblyFileVersion("0.4.9.3")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.4.9.3")]
[module: UnverifiableCode]
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 void Execute_Slash(Player player)
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_008c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_0115: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_011e: Expected O, but got Unknown
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_017f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0184: Unknown result type (might be due to invalid IL or missing references)
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_0195: Unknown result type (might be due to invalid IL or missing references)
		Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_BlinkStrike"), ((Character)player).GetCenterPoint() + ((Character)player).GetLookDir() * 3f, Quaternion.LookRotation(((Character)player).GetLookDir()));
		float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
		float num = 0.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))
			{
				Vector3 val2 = ((Component)item).transform.position - ((Component)player).transform.position;
				HitData val3 = new HitData();
				val3.m_damage = ((Humanoid)player).GetCurrentWeapon().GetDamage();
				val3.ApplyModifier(Random.Range(0.8f, 1.2f) * num);
				val3.m_pushForce = 25f + 0.1f * level;
				val3.m_point = item.GetEyePoint();
				val3.m_dir = ((Component)player).transform.position - ((Component)item).transform.position;
				val3.m_skill = ValheimLegends.DisciplineSkill;
				item.Damage(val3);
			}
		}
	}

	public static void Process_Input(Player player)
	{
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0224: 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_0283: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_040d: 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_0427: Unknown result type (might be due to invalid IL or missing references)
		//IL_0432: Unknown result type (might be due to invalid IL or missing references)
		//IL_043c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0441: Unknown result type (might be due to invalid IL or missing references)
		//IL_0447: 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_045b: 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_046f: 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_0496: Unknown result type (might be due to invalid IL or missing references)
		//IL_0498: Unknown result type (might be due to invalid IL or missing references)
		//IL_0523: Unknown result type (might be due to invalid IL or missing references)
		//IL_0525: 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_054e: Unknown result type (might be due to invalid IL or missing references)
		//IL_055b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0562: Unknown result type (might be due to invalid IL or missing references)
		//IL_0568: 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_059e: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_05bb: Expected O, but got Unknown
		//IL_0602: Unknown result type (might be due to invalid IL or missing references)
		//IL_0607: Unknown result type (might be due to invalid IL or missing references)
		//IL_060c: Unknown result type (might be due to invalid IL or missing references)
		//IL_060e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0615: Unknown result type (might be due to invalid IL or missing references)
		//IL_061a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0622: Unknown result type (might be due to invalid IL or missing references)
		//IL_062e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0633: Unknown result type (might be due to invalid IL or missing references)
		//IL_063d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0665: Unknown result type (might be due to invalid IL or missing references)
		//IL_0683: Unknown result type (might be due to invalid IL or missing references)
		//IL_0590: Unknown result type (might be due to invalid IL or missing references)
		Random random = new Random();
		if (VL_Utility.Ability3_Input_Down)
		{
			if (!((Character)player).GetSEMan().HaveStatusEffect("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));
					((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()));
					GameObject prefab = ZNetScene.instance.GetPrefab("Greydwarf_throw_projectile");
					GO_QuickShot = Object.Instantiate<GameObject>(prefab, val4, Quaternion.identity);
					P_QuickShot = GO_QuickShot.GetComponent<Projectile>();
					((Object)P_QuickShot).name = "QuickShot";
					P_QuickShot.m_respawnItemOnHit = false;
					P_QuickShot.m_spawnOnHit = null;
					P_QuickShot.m_ttl = 10f;
					P_QuickShot.m_gravity = 1.2f;
					P_QuickShot.m_rayRadius = 0.05f;
					P_QuickShot.m_hitNoise = 20f;
					((Component)P_QuickShot).transform.localRotation = Quaternion.LookRotation(((Humanoid)player).GetAimDir(val4));
					GO_QuickShot.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
					RaycastHit val5 = default(RaycastHit);
					Vector3 val6 = ((!Physics.Raycast(((Character)player).GetEyePoint(), ((Character)player).GetLookDir(), ref val5, float.PositiveInfinity, ScriptChar_Layermask) || !Object.op_Implicit((Object)(object)((RaycastHit)(ref val5)).collider)) ? (((Character)player).GetEyePoint() + ((Character)player).GetLookDir() * 1000f) : ((RaycastHit)(ref val5)).point);
					HitData val7 = new HitData();
					val7.m_damage.m_pierce = Random.Range(5f + 1f * level2, 30f + 1f * level2) * VL_GlobalConfigs.g_DamageModifer * VL_GlobalConfigs.c_duelistHipShot;
					val7.m_pushForce = 1f;
					val7.m_skill = ValheimLegends.DisciplineSkill;
					Vector3 val8 = Vector3.MoveTowards(val4, val6, 1f);
					P_QuickShot.Setup((Character)(object)player, (val8 - GO_QuickShot.transform.position) * 100f, -1f, val7, (ItemData)null, (ItemData)null);
					Traverse.Create((object)P_QuickShot).Field("m_skill").SetValue((object)ValheimLegends.DisciplineSkill);
					GO_QuickShot = null;
					VL_Utility.RotatePlayerToTarget(player);
					((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetQuickShotSkillGain);
				}
				else
				{
					((Character)player).Message((MessageType)1, "Not enough stamina to for Hip Shot: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetQuickShotCost + ")", 0, (Sprite)null);
				}
			}
			else
			{
				((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
			}
		}
		else
		{
			ValheimLegends.isChanneling = false;
		}
	}
}
public class Class_Enchanter
{
	public enum EnchanterAttackType
	{
		Charm = 10,
		Shock = 8,
		None = 0
	}

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

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

	private static bool zonechargeCharging = false;

	private static float zonechargeCount;

	private static int zonechargeChargeAmount;

	private static int zonechargeChargeAmountMax;

	private static float zonechargeSkillGain = 0f;

	public static EnchanterAttackType QueuedAttack;

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

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

	public static void Process_Input(Player player, ref float altitude)
	{
		//IL_026f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0308: 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_035d: 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_0182: Unknown result type (might be due to invalid IL or missing references)
		//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_0400: 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_043e: Invalid comparison between Unknown and I4
		//IL_0580: Unknown result type (might be due to invalid IL or missing references)
		//IL_0586: Invalid comparison between Unknown and I4
		//IL_0f18: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f30: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_06c2: Invalid comparison between Unknown and I4
		//IL_07fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0804: Invalid comparison between Unknown and I4
		//IL_109b: Unknown result type (might be due to invalid IL or missing references)
		//IL_10ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_10b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_10be: Unknown result type (might be due to invalid IL or missing references)
		//IL_10c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_10c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0955: Unknown result type (might be due to invalid IL or missing references)
		//IL_095c: Invalid comparison between Unknown and I4
		//IL_10f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_10f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_1103: Unknown result type (might be due to invalid IL or missing references)
		//IL_1108: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a83: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a8d: Invalid comparison between Unknown and I4
		//IL_110d: Unknown result type (might be due to invalid IL or missing references)
		//IL_111e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1120: Unknown result type (might be due to invalid IL or missing references)
		//IL_10ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bbe: Invalid comparison between Unknown and I4
		//IL_0e3f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ce5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cec: Invalid comparison between Unknown and I4
		//IL_054a: Unknown result type (might be due to invalid IL or missing references)
		//IL_054f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1146: Unknown result type (might be due to invalid IL or missing references)
		//IL_1151: Unknown result type (might be due to invalid IL or missing references)
		//IL_1165: Unknown result type (might be due to invalid IL or missing references)
		//IL_116a: Unknown result type (might be due to invalid IL or missing references)
		//IL_116f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0686: Unknown result type (might be due to invalid IL or missing references)
		//IL_068b: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c8: 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_091f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0924: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a4d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a52: Unknown result type (might be due to invalid IL or missing references)
		//IL_122a: Unknown result type (might be due to invalid IL or missing references)
		//IL_122f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1231: Unknown result type (might be due to invalid IL or missing references)
		//IL_1236: Unknown result type (might be due to invalid IL or missing references)
		//IL_12c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b7e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b83: Unknown result type (might be due to invalid IL or missing references)
		//IL_0caf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cb4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ddd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0de2: Unknown result type (might be due to invalid IL or missing references)
		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;
					List<Character> allCharacters = Character.GetAllCharacters();
					foreach (Character item9 in allCharacters)
					{
						if (!BaseAI.IsEnemy((Character)(object)player, item9))
						{
							continue;
						}
						Vector3 val7 = ((Component)item9).transform.position - val6;
						if (((Vector3)(ref val7)).magnitude <= 5f + 0.01f * level3)
						{
							if (item9.IsPlayer())
							{
								item9.GetSEMan().AddStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)sE_Weaken).name), true, 0, 0f);
							}
							else
							{
								item9.GetSEMan().AddStatusEffect((StatusEffect)(object)sE_Weaken, true, 0, 0f);
							}
						}
					}
					((Character)player).RaiseSkill(ValheimLegends.AlterationSkill, VL_Utility.GetWeakenSkillGain);
				}
				else
				{
					((Character)player).Message((MessageType)1, "Not enough stamina for Weaken: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetWeakenCost + ")", 0, (Sprite)null);
				}
			}
			else
			{
				((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
			}
		}
		else
		{
			ValheimLegends.isChanneling = false;
		}
	}
}
public class Class_Rogue
{
	private static int ScriptChar_Layermask = LayerMask.GetMask(new string[14]
	{
		"character", "character_noenv", "character_trigger", "character_net", "character_ghost", "Default", "static_solid", "Default_small", "piece_nonsolid", "piece",
		"terrain", "vehicle", "viewblock", "Water"
	});

	public static Vector3 fadePoint;

	public static Vector3 backstabPoint;

	public static Vector3 backstabVector;

	public static bool throwDagger = false;

	public static bool canDoubleJump = true;

	public static bool canGainTrick = false;

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

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

	public static void Process_Input(Player player, ref Rigidbody playerBody, ref float altitude)
	{
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_0207: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_08c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a59: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a7c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0905: Unknown result type (might be due to invalid IL or missing references)
		//IL_090a: Unknown result type (might be due to invalid IL or missing references)
		//IL_092a: Unknown result type (might be due to invalid IL or missing references)
		//IL_092f: Unknown result type (might be due to invalid IL or missing references)
		//IL_093c: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0815: 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_082b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0830: Unknown result type (might be due to invalid IL or missing references)
		//IL_083c: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d0: Expected O, but got Unknown
		//IL_03df: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0401: Unknown result type (might be due to invalid IL or missing references)
		//IL_0406: 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_041d: 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_043f: Unknown result type (might be due to invalid IL or missing references)
		//IL_044c: 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_0455: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_04dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e2: 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_0514: Unknown result type (might be due to invalid IL or missing references)
		//IL_053b: Unknown result type (might be due to invalid IL or missing references)
		//IL_046a: Unknown result type (might be due to invalid IL or missing references)
		//IL_046f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0473: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_048d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0617: Unknown result type (might be due to invalid IL or missing references)
		//IL_061c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0636: Unknown result type (might be due to invalid IL or missing references)
		//IL_0641: Unknown result type (might be due to invalid IL or missing references)
		//IL_064b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0650: Unknown result type (might be due to invalid IL or missing references)
		//IL_0656: Unknown result type (might be due to invalid IL or missing references)
		//IL_065b: Unknown result type (might be due to invalid IL or missing references)
		//IL_066e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0564: Unknown result type (might be due to invalid IL or missing references)
		//IL_056f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0574: 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_057b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0582: Expected O, but got Unknown
		//IL_058a: 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_05de: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f3: 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)
		if (ZInput.GetButtonDown("Jump") && !((Character)player).IsDead() && !((Character)player).InAttack() && !((Character)player).IsEncumbered() && !((Character)player).InDodge() && !((Character)player).IsKnockedBack())
		{
			SE_Rogue sE_Rogue = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
			if (!((Character)player).IsOnGround() && canDoubleJump && (Object)(object)sE_Rogue != (Object)null && sE_Rogue.hitCount > 0)
			{
				Vector3 velocity = ((Character)player).GetVelocity();
				velocity.y = 0f;
				playerBody.velocity = velocity * 2f + new Vector3(0f, 8f, 0f);
				sE_Rogue.hitCount--;
				canDoubleJump = false;
				altitude = 0f;
				((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("jump");
			}
			else if (((Character)player).IsOnGround())
			{
				canDoubleJump = true;
			}
		}
		if (((Character)player).IsBlocking() && ZInput.GetButtonDown("Attack"))
		{
			SE_Rogue sE_Rogue2 = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
			if ((Object)(object)sE_Rogue2 != (Object)null && sE_Rogue2.hitCount > 0)
			{
				sE_Rogue2.hitCount--;
				((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("throw_bomb");
				ValheimLegends.isChargingDash = true;
				ValheimLegends.dashCounter = 0;
				throwDagger = true;
				((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetPoisonBombSkillGain * 0.3f);
			}
		}
		if (VL_Utility.Ability3_Input_Down)
		{
			RaycastHit val = default(RaycastHit);
			Vector3 position = ((Component)player).transform.position;
			Physics.SphereCast(((Character)player).GetEyePoint(), 0.2f, ((Character)player).GetLookDir(), ref val, 150f, ScriptChar_Layermask);
			VL_Utility.SetTimer();
			if ((Object)(object)((RaycastHit)(ref val)).collider != (Object)null && (Object)(object)((Component)((RaycastHit)(ref val)).collider).gameObject != (Object)null)
			{
				Character val2 = null;
				((Component)((RaycastHit)(ref val)).collider).gameObject.TryGetComponent<Character>(ref val2);
				bool flag = (Object)(object)val2 != (Object)null;
				List<Component> list = new List<Component>();
				list.Clear();
				((Component)((RaycastHit)(ref val)).collider).gameObject.GetComponents<Component>(list);
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = (Character)((Component)((RaycastHit)(ref val)).collider).GetComponentInParent(typeof(Character));
					flag = (Object)(object)val2 != (Object)null;
					if ((Object)(object)val2 == (Object)null)
					{
						val2 = ((Component)((RaycastHit)(ref val)).collider).GetComponentInChildren<Character>();
						flag = (Object)(object)val2 != (Object)null;
					}
				}
				if (flag && !val2.IsPlayer())
				{
					if (!((Character)player).GetSEMan().HaveStatusEffect("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;
							if (true)
							{
								bounds = ((RaycastHit)(ref val)).collider.bounds;
								float x2 = ((Bounds)(ref bounds)).size.x;
								bounds = ((RaycastHit)(ref val)).collider.bounds;
								num = (x2 + ((Bounds)(ref bounds)).size.z) / 2f;
								num = Mathf.Clamp(num, 0.6f, 2f);
								num *= -1f;
							}
							backstabPoint = ((Component)val2).transform.position + ((Component)val2).transform.forward * num;
							backstabPoint.y += 0.1f;
							playerBody.position = backstabPoint;
							((Component)player).transform.rotation = ((Component)val2).transform.rotation;
							((ZSyncAnimation)typeof(Player).GetField("m_zanim", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(player)).SetTrigger("knife_stab2");
							if (BaseAI.IsEnemy((Character)(object)player, val2))
							{
								Vector3 dir = ((Component)val2).transform.position - ((Component)player).transform.position;
								HitData val4 = new HitData();
								val4.m_damage = ((Humanoid)player).GetCurrentWeapon().GetDamage();
								((DamageTypes)(ref val4.m_damage)).Modify(Random.Range(0.6f, 0.8f) * (1f + 0.005f * level) * VL_GlobalConfigs.c_rogueBackstab);
								val4.m_pushForce = 10f + 0.1f * level;
								val4.m_point = val2.GetEyePoint();
								val4.m_dir = dir;
								val4.m_skill = ValheimLegends.DisciplineSkill;
								val2.Damage(val4);
							}
							Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Smokeburst"), backstabPoint, Quaternion.identity);
							Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_Shadowburst"), backstabPoint + ((Component)player).transform.up * 0.5f, Quaternion.LookRotation(((Character)player).GetLookDir()));
							altitude = 0f;
							((Character)player).RaiseSkill(ValheimLegends.DisciplineSkill, VL_Utility.GetBackstabSkillGain);
						}
						else
						{
							((Character)player).Message((MessageType)1, "Not enough stamina for Backstab: (" + player.GetStamina().ToString("#.#") + "/" + VL_Utility.GetBackstabCost + ")", 0, (Sprite)null);
						}
					}
					else
					{
						((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Invalid target", 0, (Sprite)null);
				}
			}
			else
			{
				((Character)player).Message((MessageType)1, "No target", 0, (Sprite)null);
			}
		}
		else if (VL_Utility.Ability2_Input_Down)
		{
			if (!((Character)player).GetSEMan().HaveStatusEffect("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);
					float level2 = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.EvocationSkillDef)).m_level;
					GameObject prefab = ZNetScene.instance.GetPrefab("vfx_odin_despawn");
					Object.Instantiate<GameObject>(prefab, ((Character)player).GetCenterPoint(), Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
					fadePoint = ((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)
				{
					GameObject prefab2 = ZNetScene.instance.GetPrefab("vfx_odin_despawn");
					Object.Instantiate<GameObject>(prefab2, ((Character)player).GetCenterPoint(), Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_wraith_death"), ((Component)player).transform.position, Quaternion.identity);
					playerBody.position = fadePoint;
					if (canGainTrick)
					{
						SE_Rogue sE_Rogue3 = (SE_Rogue)(object)((Character)player).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_VL_Rogue"));
						sE_Rogue3.hitCount++;
						canGainTrick = false;
					}
				}
				else
				{
					((Character)player).Message((MessageType)1, "Cannot fade at this distance.", 0, (Sprite)null);
				}
			}
			else
			{
				((Character)player).Message((MessageType)1, "Ability not ready", 0, (Sprite)null);
			}
		}
		else if (VL_Utility.Ability1_Input_Down)
		{
			if (!((Character)player).GetSEMan().HaveStatusEffect("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_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: 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_018a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0195: Unknown result type (might be due to invalid IL or missing references)
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Expected O, but got Unknown
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0133: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0143: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		List<Character> allCharacters = Character.GetAllCharacters();
		ValheimLegends.shouldValkyrieImpact = false;
		foreach (Character item in allCharacters)
		{
			float level = ((IEnumerable<Skill>)((Character)player).GetSkills().GetSkillList()).FirstOrDefault((Func<Skill, bool>)((Skill x) => x.m_info == ValheimLegends.DisciplineSkillDef)).m_level;
			if (!BaseAI.IsEnemy((Character)(object)player, item))
			{
				continue;
			}
			Vector3 splash_alternate = ((Component)item).transform.position - ((Component)player).transform.position;
			if (((Vector3)(ref splash_alternate)).magnitude <= 6f + 0.03f * level)
			{
				Vector3 position = ((Component)player).transform.position;
				splash_alternate = default(Vector3);
				if (VL_Utility.LOS_IsValid(item, position, splash_alternate))
				{
					Vector3 dir = ((Component)item).transform.position - ((Component)player).transform.position;
					HitData val = new HitData();
					val.m_damage.m_blunt = 5f + 3f * altitude + Random.Range(1f * level, 2f * level) * VL_GlobalConfigs.g_DamageModifer * VL_GlobalConfigs.c_monkChiSlam;
					val.m_pushForce = 20f * VL_GlobalConfigs.g_DamageModifer;
					val.m_point = item.GetEyePoint();
					val.m_dir = dir;
					val.m_skill = ValheimLegends.DisciplineSkill;
					item.Damage(val);
				}
			}
		}
		Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("fx_VL_MeteorSlam"), ((Component)player).transform.position + ((Component)player).transform.up * 0.2f, Quaternion.identity);
	}

	public static void Execute_Attack(Player player, ref Rigidbody playerBody, ref float altitude)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0376: Unknown result type (might be due to invalid IL or missing references)
		//IL_038a: Unknown result type (might be due to invalid IL or missing references)
		//IL_038f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_04cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0400: Unknown result type (might be due to invalid IL or missing references)
		//IL_0414: Unknown result type (might be due to invalid IL or missing references)
		//IL_0419: Unknown result type (might be due to invalid IL or missing references)
		//IL_044e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0453: Unknown result type (might be due to invalid IL or missing references)
		//IL_046e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0473: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0127: Unknown result type (might be due to invalid IL or missing references)
		//IL_054f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0555: Unknown result type (might be due to invalid IL or missing references)
		//IL_055f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0564: Unknown result type (might be due to invalid IL or missing references)
		//IL_056f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0579: Unknown result type (might be due to invalid IL or missing references)
		//IL_057e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0589: Unknown result type (might be due to invalid IL or missing references)
		//IL_0593: Unknown result type (might be due to invalid IL or missing references)
		//IL_0598: Unknown result type (might be due to invalid IL or missing references)
		//IL_059d: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0606: Unknown result type (might be due to invalid IL or missing references)
		//IL_0608: Unknown result type (might be due to invalid IL or missing references)
		//IL_060d: Unknown result type (might be due to invalid IL or missing references)
		//IL_061f: Unknown result type (might be due to invalid IL or missing references)
		//IL_062c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0638: Unknown result type (might be due to invalid IL or missing references)
		//IL_063d: Unknown result type (might be due to invalid IL or missing references)
		//IL_063f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0642: Unknown result type (might be due to invalid IL or missing references)
		//IL_0671: Unknown result type (might be due to invalid IL or missing references)
		//IL_0674: Unknown result type (might be due to invalid IL or missing references)
		//IL_067e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0683: Unknown result type (might be due to invalid IL or missing references)
		//IL_0688: Unknown result type (might be due to invalid IL or missing references)
		//IL_068a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0691: Expected O, but got Unknown
		//IL_0711: Unknown result type (might be due to invalid IL or missing references)
		//IL_0716: Unknown result type (might be due to invalid IL or missing references)
		//IL_072b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0730: Unknown result type (might be due to invalid IL or missing references)
		//IL_0737: Unknown result type (might be due to invalid IL or missing references)
		//IL_073c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0741: Unknown result type (might be due to invalid IL or missing references)
		//IL_074a: Unknown result type (might be due to invalid IL or missing references)
		//IL_074f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0759: Unknown result type (might be due to invalid IL or missing references)
		//IL_077e: Unknown result type (might be due to invalid IL or missing references)
		//IL_066a: Unknown result type (might be due to invalid IL or missing references)
		//IL_082b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0830: Unknown result type (might be due to invalid IL or missing references)
		//IL_0853: Unknown result type (might be due to invalid IL or missing references)
		//IL_0858: Unknown result type (might be due to invalid IL or missing references)
		//IL_085d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0862: Unknown result type (might be due to invalid IL or missing references)
		//IL_0867: Unknown result type (might be due to invalid IL or missing references)
		//IL_0874: Unknown result type (might be due to invalid IL or missing references)
		//IL_087a: Unknown result type (might be due to invalid IL or missing references)
		//IL_087f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0887: Unknown result type (might be due to invalid IL or missing references)
		//IL_088c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0894: Unknown result type (might be due to invalid IL or missing references)
		//IL_0899: Unknown result type (might be due to invalid IL or missing references)
		//IL_08a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_08bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_08c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_08da: Unknown result type (might be due to invalid IL or missing references)
		//IL_0227: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0238: Unknown result type (might be due to invalid IL or missing references)
		//IL_023d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01de: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Expected O, but got Unknown
		//IL_08f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c30: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c37: Unknown result type (might be due to invalid IL or missing references)
		//IL_090f: Unknown result type (might be due to invalid IL or missing references)
		//IL_091a: Unknown result type (might be due to invalid IL or missing references)
		//IL_091f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0926: Unknown result type (might be due to invalid IL or missing references)
		//IL_092b: Unknown result type (might be due to invalid IL or missing references)
		//IL_093e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0943: Unknown result type (might be due to invalid IL or missing references)
		//IL_0947: Unknown result type (might be due to invalid IL or missing references)
		//IL_0953: Unknown result type (might be due to invalid IL or missing references)
		//IL_095f: Unknown result type (might be due to invalid IL or missing references)
		//IL_09f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a02: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a07: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a0e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a13: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a26: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a2f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a3b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0997: Unknown result type (might be due to invalid IL or missing references)
		//IL_099e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0976: Unknown result type (might be due to invalid IL or missing references)
		//IL_098a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a5d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a4f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c5a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c8a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c91: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c9c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a6d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a74: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a7b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a82: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a87: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cd1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cd6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ce0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ce5: 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_02af: 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_02b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c2: Expected O, but got Unknown
		//IL_0311: Unknown result type (might be due to invalid IL or missing references)
		//IL_0316: Unknown result type (might be due to invalid IL or missing references)
		//IL_031d: Unknown result type (might be due to invalid IL or missing references)
		//IL_031f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0326: Unknown result type (might be due to invalid IL or missing references)
		//IL_032b: Unknown result type (might be due to invalid IL or missing references)
		//IL_09cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_09d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d7d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cea: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cee: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cf4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cc4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ac0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ac7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aa2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aa4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aab: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f41: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f49: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f53: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f58: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f63: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f68: Unknown result type (might be due to invalid IL or missing references)
		//IL_0da0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0da9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0db0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fa8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fc6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fcd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fe1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fe6: Unknown result type (might be due to invalid I