Decompiled source of BAMod v1.0.1

Plugins/BAMod.dll

Decompiled 2 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Threading.Tasks;
using BAMod.GlobalContent.Components;
using BAMod.GlobalContent.Scripts;
using BAMod.Mashiro;
using BAMod.Mashiro.Components;
using BAMod.Mashiro.Content;
using BAMod.Mashiro.SkillStates.BaseStates;
using BAMod.Mashiro.SkillStates.Primary;
using BAMod.Mashiro.SkillStates.Secondary;
using BAMod.Mashiro.SkillStates.Special;
using BAMod.Mashiro.SkillStates.SpecialLock;
using BAMod.Mashiro.SkillStates.Utility;
using BAMod.Modules;
using BAMod.Modules.Achievements;
using BAMod.Modules.Characters;
using BAMod.Saori;
using BAMod.Saori.Content;
using BAMod.Saori.SkillStates.BaseStates;
using BAMod.Saori.SkillStates.Primary;
using BAMod.Saori.SkillStates.Secondary;
using BAMod.Saori.SkillStates.Special;
using BAMod.Saori.SkillStates.SpecialLock;
using BAMod.Saori.SkillStates.Utility;
using BAMod.Tsurugi;
using BAMod.Tsurugi.Components;
using BAMod.Tsurugi.Content;
using BAMod.Tsurugi.SkillStates.BaseStates;
using BAMod.Tsurugi.SkillStates.Primary;
using BAMod.Tsurugi.SkillStates.Secondary;
using BAMod.Tsurugi.SkillStates.Special;
using BAMod.Tsurugi.SkillStates.SpecialLock;
using BAMod.Tsurugi.SkillStates.Utility;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.AI.Walker;
using EntityStates.Commando.CommandoWeapon;
using HG;
using HG.BlendableTypes;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Projectile;
using RoR2.Skills;
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Rendering;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("BAMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+7d97801a7a5a1f5ff1b2da3bc16c4e23ff27f992")]
[assembly: AssemblyProduct("BAMod")]
[assembly: AssemblyTitle("BAMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace BAMod
{
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.ami.BAMod", "BASurvivors", "0.1.0")]
	public class BAPlugin : BaseUnityPlugin
	{
		public const string MODUID = "com.ami.BAMod";

		public const string MODNAME = "BASurvivors";

		public const string MODVERSION = "0.1.0";

		public const string DEVELOPER_PREFIX = "AMI";

		public static BAPlugin instance;

		private void Awake()
		{
			instance = this;
			Log.Init(((BaseUnityPlugin)this).Logger);
			Language.Init();
			AwaitRunStart.Init();
			new SaoriSurvivor().Initialize();
			new MashiroSurvivor().Initialize();
			new TsurugiSurvivor().Initialize();
			new ContentPacks().Initialize();
		}
	}
	internal static class Log
	{
		internal static ManualLogSource _logSource;

		internal static void Init(ManualLogSource logSource)
		{
			_logSource = logSource;
		}

		internal static void Debug(object data)
		{
			_logSource.LogDebug(data);
		}

		internal static void Error(object data)
		{
			_logSource.LogError(data);
		}

		internal static void ErrorAssetBundle(string assetName, string bundleName)
		{
			Error("failed to load asset, " + assetName + ", because it does not exist in asset bundle, " + bundleName);
		}

		internal static void Fatal(object data)
		{
			_logSource.LogFatal(data);
		}

		internal static void Info(object data)
		{
			_logSource.LogInfo(data);
		}

		internal static void Message(object data)
		{
			_logSource.LogMessage(data);
		}

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
}
namespace BAMod.Tsurugi
{
	public class TsurugiSurvivor : SurvivorBase<TsurugiSurvivor>
	{
		public const string V1_PREFIX = "AMI_TSURUGI_";

		public static SkillDef BloodReload;

		public static SkillDef Blood;

		public static SkillDef Gunpowder;

		public static SkillDef GunpowderReload;

		public static SkillDef TsurugiUlt;

		public static SkillDef TsurugiStunRoll;

		public static SkillDef Lock;

		public override string assetBundleName => "tsurugiassetbundle";

		public override string bodyName => "TsurugiBody";

		public override string masterName => "TsurugiMonsterMaster";

		public override string modelPrefabName => "mdlTsurugi";

		public override string displayPrefabName => "TsurugiDisplay";

		public override string survivorTokenPrefix => "AMI_TSURUGI_";

		public override BodyInfo bodyInfo => new BodyInfo
		{
			bodyName = bodyName,
			bodyNameToken = "AMI_TSURUGI_NAME",
			subtitleNameToken = "AMI_TSURUGI_SUBTITLE",
			characterPortrait = LegacyResourcesAPI.Load<Texture>("RoR2/Base/Commando/texCommandoIcon"),
			bodyColor = Color.white,
			sortPosition = 100f,
			crosshair = Asset.LoadCrosshair("Standard"),
			podPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/SurvivorPod"),
			maxHealth = 90f,
			healthRegen = 0.5f,
			armor = 0f,
			healthGrowth = 10f,
			moveSpeed = 10f,
			jumpCount = 2
		};

		public override UnlockableDef characterUnlockableDef => TsurugiUnlockables.characterUnlockableDef;

		public override ItemDisplaysBase itemDisplays => new TsurugiItemDisplays();

		public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[0];

		public override AssetBundle assetBundle { get; protected set; }

		public override GameObject bodyPrefab { get; protected set; }

		public override CharacterBody prefabCharacterBody { get; protected set; }

		public override GameObject characterModelObject { get; protected set; }

		public override CharacterModel prefabCharacterModel { get; protected set; }

		public override GameObject displayPrefab { get; protected set; }

		public override void Initialize()
		{
			base.Initialize();
		}

		public override void InitializeCharacter()
		{
			TsurugiUnlockables.Init();
			base.InitializeCharacter();
			TsurugiConfig.Init();
			TsurugiStates.Init();
			TsurugiTokens.Init();
			TsurugiAssets.Init(assetBundle);
			TsurugiBuffs.Init();
			InitializeEntityStateMachines();
			InitializeSkills();
			AdditionalBodySetup();
			AddHooks();
			InitializeCharacterMaster();
		}

		private void AdditionalBodySetup()
		{
			AddHitboxes();
			bodyPrefab.AddComponent<BAMod.Tsurugi.Components.CrazyWomanPassiveDictator>();
			bodyPrefab.AddComponent<ModelSkinController>();
			displayPrefab.AddComponent<ModelSkinController>();
		}

		public void AddHitboxes()
		{
		}

		public override void InitializeEntityStateMachines()
		{
			Prefabs.ClearEntityStateMachines(bodyPrefab);
			Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(TsurugiCharacterMain), typeof(SpawnTeleporterState));
			Prefabs.AddEntityStateMachine(bodyPrefab, "RightShotgun");
			Prefabs.AddEntityStateMachine(bodyPrefab, "LeftShotgun");
			Prefabs.AddEntityStateMachine(bodyPrefab, "Movement");
			Prefabs.AddEntityStateMachine(bodyPrefab, "Ult");
			prefabCharacterBody.vehicleIdleStateMachine = (EntityStateMachine[])(object)new EntityStateMachine[4]
			{
				EntityStateMachine.FindByCustomName(bodyPrefab, "RightShotgun"),
				EntityStateMachine.FindByCustomName(bodyPrefab, "LeftShotgun"),
				EntityStateMachine.FindByCustomName(bodyPrefab, "Movement"),
				EntityStateMachine.FindByCustomName(bodyPrefab, "Ult")
			};
		}

		public override void InitializeSkills()
		{
			Skills.ClearGenericSkills(bodyPrefab);
			AddPrimarySkills();
			AddSecondarySkills();
			AddUtiitySkills();
			AddSpecialSkills();
			AddLockSkill();
		}

		private void AddPrimarySkills()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)0);
			SkillDefInfo skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Blood";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_PRIMARY_GUN_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_PRIMARY_GUN_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(Blood));
			skillDefInfo.activationStateMachineName = "LeftShotgun";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = float.MaxValue;
			skillDefInfo.rechargeStock = 0;
			skillDefInfo.requiredStock = 1;
			skillDefInfo.stockToConsume = 1;
			skillDefInfo.baseMaxStock = 5;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = false;
			skillDefInfo.mustKeyPress = false;
			skillDefInfo.beginSkillCooldownOnSkillEnd = false;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			Blood = Skills.CreateSkillDef(skillDefInfo);
			skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Blood_Reload";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_PRIMARY_RELOAD_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_PRIMARY_RELOAD_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(BloodReload));
			skillDefInfo.activationStateMachineName = "LeftShotgun";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = float.MaxValue;
			skillDefInfo.rechargeStock = 0;
			skillDefInfo.requiredStock = 0;
			skillDefInfo.stockToConsume = 0;
			skillDefInfo.baseMaxStock = 0;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = true;
			skillDefInfo.mustKeyPress = true;
			skillDefInfo.beginSkillCooldownOnSkillEnd = false;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			BloodReload = Skills.CreateSkillDef(skillDefInfo);
			Skills.AddPrimarySkills(bodyPrefab, Blood);
		}

		private void AddSecondarySkills()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)1);
			SkillDefInfo skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Gunpowder";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_SECONDARY_GUN_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_SECONDARY_GUN_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(Gunpowder));
			skillDefInfo.activationStateMachineName = "RightShotgun";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = float.MaxValue;
			skillDefInfo.rechargeStock = 0;
			skillDefInfo.requiredStock = 1;
			skillDefInfo.stockToConsume = 1;
			skillDefInfo.baseMaxStock = 5;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = false;
			skillDefInfo.mustKeyPress = false;
			skillDefInfo.beginSkillCooldownOnSkillEnd = false;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			Gunpowder = Skills.CreateSkillDef(skillDefInfo);
			skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Gunpowder_Reload";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_SECONDARY_RELOAD_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_SECONDARY_RELOAD_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(GunpowderReload));
			skillDefInfo.activationStateMachineName = "LeftShotgun";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = float.MaxValue;
			skillDefInfo.rechargeStock = 0;
			skillDefInfo.requiredStock = 0;
			skillDefInfo.stockToConsume = 0;
			skillDefInfo.baseMaxStock = 0;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = true;
			skillDefInfo.mustKeyPress = true;
			skillDefInfo.beginSkillCooldownOnSkillEnd = false;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			GunpowderReload = Skills.CreateSkillDef(skillDefInfo);
			Skills.AddSecondarySkills(bodyPrefab, Gunpowder);
		}

		private void AddUtiitySkills()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)2);
			SkillDefInfo skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "StunRoll";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_UTILITY_STUN_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_UTILITY_STUN_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(BAMod.Tsurugi.SkillStates.Utility.StunRoll));
			skillDefInfo.activationStateMachineName = "Movement";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = 3f;
			skillDefInfo.rechargeStock = 1;
			skillDefInfo.requiredStock = 1;
			skillDefInfo.stockToConsume = 1;
			skillDefInfo.baseMaxStock = 1;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = false;
			skillDefInfo.mustKeyPress = true;
			skillDefInfo.beginSkillCooldownOnSkillEnd = false;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			TsurugiStunRoll = Skills.CreateSkillDef(skillDefInfo);
			Skills.AddUtilitySkills(bodyPrefab, TsurugiStunRoll);
		}

		private void AddSpecialSkills()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)3);
			SkillDefInfo skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Ultimate";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_SPECIAL_ULTIMATE_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_SPECIAL_ULTIMATE_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(TsurugiUlt));
			skillDefInfo.activationStateMachineName = "Ult";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = 120f;
			skillDefInfo.rechargeStock = 1;
			skillDefInfo.requiredStock = 1;
			skillDefInfo.stockToConsume = 1;
			skillDefInfo.baseMaxStock = 1;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = true;
			skillDefInfo.mustKeyPress = true;
			skillDefInfo.beginSkillCooldownOnSkillEnd = true;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			TsurugiUlt = Skills.CreateSkillDef(skillDefInfo);
			Skills.AddSpecialSkills(bodyPrefab, TsurugiUlt);
		}

		private void AddLockSkill()
		{
			//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_0074: Unknown result type (might be due to invalid IL or missing references)
			SkillDefInfo skillDefInfo = new SkillDefInfo();
			skillDefInfo.skillName = "Ultimate";
			skillDefInfo.skillNameToken = "AMI_TSURUGI_SPECIAL_ULTIMATE_NAME";
			skillDefInfo.skillDescriptionToken = "AMI_TSURUGI_SPECIAL_ULTIMATE_DESCRIPTION";
			skillDefInfo.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texUtilityIcon");
			skillDefInfo.activationState = new SerializableEntityStateType(typeof(BAMod.Tsurugi.SkillStates.SpecialLock.SpecialLockDown));
			skillDefInfo.activationStateMachineName = "Ult";
			skillDefInfo.interruptPriority = (InterruptPriority)1;
			skillDefInfo.baseRechargeInterval = float.MaxValue;
			skillDefInfo.rechargeStock = 0;
			skillDefInfo.requiredStock = 1;
			skillDefInfo.stockToConsume = 1;
			skillDefInfo.baseMaxStock = 0;
			skillDefInfo.resetCooldownTimerOnUse = false;
			skillDefInfo.fullRestockOnAssign = true;
			skillDefInfo.dontAllowPastMaxStocks = true;
			skillDefInfo.mustKeyPress = true;
			skillDefInfo.beginSkillCooldownOnSkillEnd = true;
			skillDefInfo.isCombatSkill = false;
			skillDefInfo.canceledFromSprinting = false;
			skillDefInfo.cancelSprintingOnActivation = false;
			skillDefInfo.forceSprintDuringState = false;
			Lock = Skills.CreateSkillDef(skillDefInfo);
		}

		public override void InitializeSkins()
		{
			ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent<ModelSkinController>();
			RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos;
			List<SkinDef> list = new List<SkinDef>();
			SkinDef item = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset<Sprite>("texMainSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject);
			list.Add(item);
			val.skins = list.ToArray();
		}

		public override void InitializeCharacterMaster()
		{
			TsurugiAI.Init(bodyPrefab, masterName);
		}

		private void AddHooks()
		{
			TsurugiHooks.Init();
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.Utility
{
	internal class StunRoll : BaseTsurugiSkillState
	{
		private float tick;

		protected override float baseFireDelay => 0f;

		protected override float baseDuration => 0.3f;

		protected override float fireTime => 0f;

		public override void OnEnter()
		{
			base.OnEnter();
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.fakeActorCounter += 1;
			((EntityState)this).characterBody.AddBuff(LegacyResourcesAPI.Load<BuffDef>("RoR2/Base/Common/bdHiddenInvincibility"));
		}

		public override void FixedUpdate()
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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_0088: Expected O, but got Unknown
			//IL_008a: 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_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			if (!((EntityState)this).isAuthority)
			{
				return;
			}
			if (((EntityState)this).fixedAge < baseDuration)
			{
				((EntityState)this).characterMotor.velocity = Vector3.zero;
				CharacterMotor characterMotor = ((EntityState)this).characterMotor;
				characterMotor.rootMotion += GetMoveVector();
				tick += 1f;
				if (!(tick >= 10f))
				{
					return;
				}
				BullseyeSearch val = new BullseyeSearch();
				val.sortMode = (SortMode)3;
				Ray aimRay = ((BaseState)this).GetAimRay();
				val.searchDirection = ((Ray)(ref aimRay)).direction;
				val.searchOrigin = ((EntityState)this).gameObject.transform.position;
				val.maxAngleFilter = 360f;
				val.maxDistanceFilter = 5f;
				val.RefreshCandidates();
				{
					SetStateOnHurt val2 = default(SetStateOnHurt);
					foreach (CandidateInfo item in val.candidatesEnumerable)
					{
						if (item.hurtBox.teamIndex != ((EntityState)this).teamComponent.teamIndex && ((Component)item.hurtBox.healthComponent).TryGetComponent<SetStateOnHurt>(ref val2))
						{
							val2.CallRpcSetStun(5f);
						}
					}
					return;
				}
			}
			((EntityState)this).outer.SetNextStateToMain();
		}

		public override void OnExit()
		{
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.fakeActorCounter -= 1;
			((EntityState)this).characterBody.RemoveBuff(LegacyResourcesAPI.Load<BuffDef>("RoR2/Base/Common/bdHiddenInvincibility"));
			((EntityState)this).OnExit();
		}

		private Vector3 GetMoveVector()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: 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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: 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_0054: 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)
			Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector);
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			return normalized * (5f * ((BaseState)this).moveSpeedStat * ((EntityState)this).GetDeltaTime());
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.Special
{
	internal class TsurugiUlt : BaseTsurugiSkillState
	{
		protected override float baseDuration => 3f;

		protected override float baseFireDelay => 2f;

		protected override float fireTime => 0f;

		public override void OnEnter()
		{
			base.OnEnter();
			TsurugiMain.primaryStock = ((EntityState)this).skillLocator.primary.stock;
			TsurugiMain.secondaryStock = ((EntityState)this).skillLocator.secondary.stock;
			((EntityState)this).skillLocator.primary.SetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((EntityState)this).skillLocator.secondary.SetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((EntityState)this).skillLocator.utility.SetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((Behaviour)((EntityState)this).characterMotor).enabled = false;
			((EntityState)this).characterBody.AddBuff(TsurugiBuffs.TsurugiUltShield);
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).isAuthority)
			{
				CharacterBody characterBody = ((EntityState)this).characterBody;
				characterBody.fakeActorCounter += 1;
				if (((EntityState)this).fixedAge > base.duration)
				{
					TsurugiMain.primaryMysterious = true;
					TsurugiMain.secondaryMysterious = true;
					((EntityState)this).outer.SetNextStateToMain();
				}
			}
		}

		public override void OnExit()
		{
			//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)
			((EntityState)this).OnExit();
			((EntityState)this).skillLocator.primary.UnsetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((EntityState)this).skillLocator.secondary.UnsetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((EntityState)this).skillLocator.utility.UnsetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.Lock, (SkillOverridePriority)0);
			((Behaviour)((EntityState)this).characterMotor).enabled = true;
			((EntityState)this).characterMotor.velocity = Vector3.zero;
			((EntityState)this).characterBody.RemoveBuff(TsurugiBuffs.TsurugiUltShield);
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.SpecialLock
{
	internal class SpecialLockDown : BaseSkillState
	{
		public override void FixedUpdate()
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.Secondary
{
	internal class Gunpowder : BaseTsurugiSkillState
	{
		private bool fired = false;

		public GameObject hitEffectPrefab = FireBarrage.hitEffectPrefab;

		public GameObject tracerEffectPrefab = FireBarrage.tracerEffectPrefab;

		public DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0);

		protected override float baseDuration => 4f;

		protected override float baseFireDelay => 0.5f;

		protected override float fireTime => 1f;

		public override void OnEnter()
		{
			base.OnEnter();
		}

		public override void FixedUpdate()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Expected O, but got Unknown
			//IL_01db: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: 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_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: 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_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cb: Expected O, but got Unknown
			//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: 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_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: 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_0130: 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_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: 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_0197: Expected O, but got Unknown
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			if (!((EntityState)this).isAuthority)
			{
				return;
			}
			if (((EntityState)this).fixedAge > base.fireDelay && ((BaseSkillState)this).IsKeyDownAuthority() && !fired)
			{
				Ray aimRay = ((BaseState)this).GetAimRay();
				if (!TsurugiMain.secondaryMysterious)
				{
					List<Vector3> list = ScatterVectors(((Ray)(ref aimRay)).direction, 30, 20f, 0.2f);
					foreach (Vector3 item in list)
					{
						BulletAttack val = new BulletAttack
						{
							owner = ((EntityState)this).gameObject,
							weapon = ((EntityState)this).gameObject,
							origin = ((Ray)(ref aimRay)).origin,
							aimVector = item + ((Ray)(ref aimRay)).direction * 2f,
							minSpread = 0f,
							maxSpread = ((EntityState)this).characterBody.spreadBloomAngle,
							bulletCount = 1u,
							procCoefficient = 1f,
							damage = ((EntityState)this).characterBody.damage * 0.1f,
							force = 3f,
							falloffModel = (FalloffModel)1,
							tracerEffectPrefab = tracerEffectPrefab,
							hitEffectPrefab = hitEffectPrefab,
							isCrit = ((BaseState)this).RollCrit(),
							HitEffectNormal = false,
							stopperMask = ((LayerIndex)(ref LayerIndex.world)).collisionMask,
							smartCollision = true,
							maxDistance = 300f,
							damageType = damageType,
							radius = 4f
						};
						DamageAPI.AddModdedDamageType(val, TsurugiCustomDamageTypes.GunpowderHeal);
						val.Fire();
					}
				}
				else
				{
					BullseyeSearch val2 = new BullseyeSearch();
					val2.sortMode = (SortMode)3;
					val2.searchDirection = ((Ray)(ref aimRay)).direction;
					val2.searchOrigin = ((Ray)(ref aimRay)).origin;
					val2.maxAngleFilter = 60f;
					val2.maxDistanceFilter = 100f;
					val2.viewer = ((EntityState)this).characterBody;
					val2.RefreshCandidates();
					foreach (CandidateInfo item2 in val2.candidatesEnumerable)
					{
						BlastAttack val3 = new BlastAttack
						{
							attacker = ((EntityState)this).gameObject,
							radius = 5f,
							canRejectForce = true,
							baseForce = 0f,
							crit = ((BaseState)this).RollCrit(),
							teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex,
							falloffModel = (FalloffModel)0,
							position = item2.position,
							baseDamage = 10f * ((BaseState)this).damageStat,
							procCoefficient = 5f
						};
						DamageAPI.AddModdedDamageType(val3, TsurugiCustomDamageTypes.GunpowderHeal);
						val3.Fire();
					}
				}
				((BaseState)this).AddRecoil(20f, 20f, 0f, 0f);
				fired = true;
			}
			if (fired && ((EntityState)this).fixedAge > base.duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
			else if (!fired && !((BaseSkillState)this).IsKeyDownAuthority() && ((EntityState)this).fixedAge < base.fireDelay)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			if (!fired)
			{
				((BaseSkillState)this).activatorSkillSlot.AddOneStock();
			}
			else if (base.stock <= 0)
			{
				TsurugiMain.confirmedSecondaryKills = 0;
				TsurugiMain.secondaryMysterious = false;
				((EntityState)this).skillLocator.secondary.SetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.GunpowderReload, (SkillOverridePriority)0);
			}
		}

		public static List<Vector3> ScatterVectors(Vector3 forward, int pelletCount, float maxAngle, float randomness = 0.5f)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: 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_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			List<Vector3> list = new List<Vector3>();
			((Vector3)(ref forward)).Normalize();
			Quaternion val = Quaternion.LookRotation(forward);
			for (int i = 0; i < pelletCount; i++)
			{
				float num = ((float)i + Random.value * randomness) / (float)pelletCount;
				float num2 = maxAngle * Mathf.Sqrt(num);
				float num3 = (float)i * 137.5f % 360f;
				num3 += Random.Range(-180f, 180f) * randomness;
				Quaternion val2 = Quaternion.AngleAxis(num3, Vector3.forward);
				Quaternion val3 = Quaternion.AngleAxis(num2, Vector3.right);
				Vector3 val4 = val * (val2 * val3 * Vector3.forward);
				val4 = Vector3.Slerp(forward, val4, 0.9f);
				list.Add(((Vector3)(ref val4)).normalized);
			}
			return list;
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)2;
		}
	}
	internal class GunpowderReload : BaseTsurugiSkillState
	{
		protected override float baseDuration => 1f;

		protected override float baseFireDelay => 1f;

		protected override float fireTime => 1f;

		public override void OnEnter()
		{
			base.OnEnter();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).fixedAge >= base.duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			((EntityState)this).skillLocator.secondary.UnsetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.GunpowderReload, (SkillOverridePriority)0);
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.Primary
{
	internal class Blood : BaseTsurugiSkillState
	{
		private bool fired = false;

		public GameObject hitEffectPrefab = FireBarrage.hitEffectPrefab;

		public GameObject tracerEffectPrefab = FireBarrage.tracerEffectPrefab;

		public DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0);

		protected override float baseDuration => 3f;

		protected override float baseFireDelay => 0.5f;

		protected override float fireTime => 1f;

		public override void OnEnter()
		{
			base.OnEnter();
		}

		public override void FixedUpdate()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Expected O, but got Unknown
			//IL_01d6: 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_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: 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_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_029d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: 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_02c6: Expected O, but got Unknown
			//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: 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_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: 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_0130: 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_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: 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_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Expected O, but got Unknown
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			if (!((EntityState)this).isAuthority)
			{
				return;
			}
			if (((EntityState)this).fixedAge > base.fireDelay && ((BaseSkillState)this).IsKeyDownAuthority() && !fired)
			{
				Ray aimRay = ((BaseState)this).GetAimRay();
				if (!TsurugiMain.primaryMysterious)
				{
					List<Vector3> list = ScatterVectors(((Ray)(ref aimRay)).direction, 30, 20f, 0.2f);
					foreach (Vector3 item in list)
					{
						BulletAttack val = new BulletAttack
						{
							owner = ((EntityState)this).gameObject,
							weapon = ((EntityState)this).gameObject,
							origin = ((Ray)(ref aimRay)).origin,
							aimVector = item + ((Ray)(ref aimRay)).direction * 2f,
							minSpread = 0f,
							maxSpread = ((EntityState)this).characterBody.spreadBloomAngle,
							bulletCount = 1u,
							procCoefficient = 1f,
							damage = ((EntityState)this).characterBody.damage * 0.1f,
							force = 3f,
							falloffModel = (FalloffModel)1,
							tracerEffectPrefab = tracerEffectPrefab,
							hitEffectPrefab = hitEffectPrefab,
							isCrit = ((BaseState)this).RollCrit(),
							HitEffectNormal = false,
							stopperMask = BulletAttack.defaultHitMask,
							smartCollision = true,
							maxDistance = 300f,
							damageType = damageType,
							radius = 4f
						};
						DamageAPI.AddModdedDamageType(val, TsurugiCustomDamageTypes.BloodBleed);
						val.Fire();
					}
				}
				else
				{
					BullseyeSearch val2 = new BullseyeSearch();
					val2.sortMode = (SortMode)3;
					val2.searchDirection = ((Ray)(ref aimRay)).direction;
					val2.searchOrigin = ((Ray)(ref aimRay)).origin;
					val2.maxAngleFilter = 60f;
					val2.maxDistanceFilter = 100f;
					val2.viewer = ((EntityState)this).characterBody;
					val2.RefreshCandidates();
					foreach (CandidateInfo item2 in val2.candidatesEnumerable)
					{
						BlastAttack val3 = new BlastAttack
						{
							attacker = ((EntityState)this).gameObject,
							radius = 5f,
							canRejectForce = true,
							baseForce = 0f,
							crit = ((BaseState)this).RollCrit(),
							teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex,
							falloffModel = (FalloffModel)0,
							position = item2.position,
							baseDamage = 10f * ((BaseState)this).damageStat,
							procCoefficient = 5f
						};
						DamageAPI.AddModdedDamageType(val3, TsurugiCustomDamageTypes.BloodBleed);
						val3.Fire();
					}
				}
				((BaseState)this).AddRecoil(20f, 20f, 0f, 0f);
				fired = true;
			}
			if (fired && ((EntityState)this).fixedAge > base.duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
			else if (!fired && !((BaseSkillState)this).IsKeyDownAuthority() && ((EntityState)this).fixedAge < base.fireDelay)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			if (!fired)
			{
				((EntityState)this).skillLocator.primary.AddOneStock();
			}
			else if (base.stock <= 0)
			{
				TsurugiMain.confirmedPrimaryKills = 0;
				TsurugiMain.primaryMysterious = false;
				((EntityState)this).skillLocator.primary.SetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.BloodReload, (SkillOverridePriority)0);
			}
		}

		public static List<Vector3> ScatterVectors(Vector3 forward, int pelletCount, float maxAngle, float randomness = 0.5f)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: 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_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			List<Vector3> list = new List<Vector3>();
			((Vector3)(ref forward)).Normalize();
			Quaternion val = Quaternion.LookRotation(forward);
			for (int i = 0; i < pelletCount; i++)
			{
				float num = ((float)i + Random.value * randomness) / (float)pelletCount;
				float num2 = maxAngle * Mathf.Sqrt(num);
				float num3 = (float)i * 137.5f % 360f;
				num3 += Random.Range(-180f, 180f) * randomness;
				Quaternion val2 = Quaternion.AngleAxis(num3, Vector3.forward);
				Quaternion val3 = Quaternion.AngleAxis(num2, Vector3.right);
				Vector3 val4 = val * (val2 * val3 * Vector3.forward);
				val4 = Vector3.Slerp(forward, val4, 0.9f);
				list.Add(((Vector3)(ref val4)).normalized);
			}
			return list;
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)2;
		}
	}
	internal class BloodReload : BaseTsurugiSkillState
	{
		protected override float baseDuration => 2f;

		protected override float baseFireDelay => 1f;

		protected override float fireTime => 1f;

		public override void OnEnter()
		{
			base.OnEnter();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).fixedAge >= base.duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			((EntityState)this).skillLocator.primary.UnsetSkillOverride((object)((EntityState)this).gameObject, TsurugiSurvivor.BloodReload, (SkillOverridePriority)0);
		}
	}
}
namespace BAMod.Tsurugi.SkillStates.BaseStates
{
	public abstract class BaseTsurugiSkillState : BaseSkillState
	{
		public TsurugiCharacterMain TsurugiMain;

		protected abstract float baseFireDelay { get; }

		public float fireDelay => baseFireDelay * ((BaseState)this).attackSpeedStat;

		protected abstract float baseDuration { get; }

		public float duration => baseDuration * ((BaseState)this).attackSpeedStat;

		public float invduration => baseDuration / ((BaseState)this).attackSpeedStat;

		public int stock
		{
			get
			{
				return ((BaseSkillState)this).activatorSkillSlot.stock;
			}
			set
			{
				((BaseSkillState)this).activatorSkillSlot.stock = value;
			}
		}

		public bool FullyChanneled
		{
			get
			{
				if (((EntityState)this).fixedAge > duration && (((BaseSkillState)this).IsKeyDownAuthority() || ((BaseSkillState)this).IsKeyJustReleasedAuthority()))
				{
					return true;
				}
				return false;
			}
		}

		protected abstract float fireTime { get; }

		public bool Channeling
		{
			get
			{
				if (FullyChanneled)
				{
					return false;
				}
				if (((BaseSkillState)this).IsKeyDownAuthority())
				{
					return true;
				}
				return false;
			}
		}

		public bool Charged
		{
			get
			{
				if (((BaseSkillState)this).IsKeyJustReleasedAuthority() && ((EntityState)this).fixedAge > fireDelay)
				{
					return true;
				}
				if (FullyChanneled)
				{
					return true;
				}
				return false;
			}
		}

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			TsurugiMain = (TsurugiCharacterMain)(object)EntityStateMachine.FindByCustomName(((EntityState)this).gameObject, "Body").state;
		}
	}
	public class BaseTsurugiState : BaseSkillState
	{
	}
	public class TsurugiCharacterMain : GenericCharacterMain
	{
		public int confirmedPrimaryKills;

		public int confirmedSecondaryKills;

		public int primaryStock;

		public int secondaryStock;

		public bool primaryCritRack;

		public bool secondaryCritRack;

		public bool primaryMysterious;

		public bool secondaryMysterious;

		public bool resetStocks;

		public float HealBy;

		private ItemDef Magazine;

		public override void OnEnter()
		{
			((GenericCharacterMain)this).OnEnter();
			Magazine = LegacyResourcesAPI.Load<ItemDef>("RoR2/Base/SecondarySkillMagazine/SecondarySkillMagazine");
		}

		public override void FixedUpdate()
		{
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterMain)this).FixedUpdate();
			if (((EntityState)this).isAuthority)
			{
				if (resetStocks)
				{
					((EntityState)this).skillLocator.utility.stock = ((EntityState)this).skillLocator.utility.maxStock;
					((EntityState)this).skillLocator.special.stock = ((EntityState)this).skillLocator.special.maxStock;
					resetStocks = false;
				}
				int num = ((EntityState)this).characterBody.inventory.GetItemCountEffective(Magazine) + 5;
				if (((EntityState)this).skillLocator.primary.maxStock != num)
				{
					((EntityState)this).skillLocator.primary.OverrideMaxStock(num);
				}
				if (HealBy > 0f)
				{
					((EntityState)this).healthComponent.Heal(HealBy, default(ProcChainMask), true);
					HealBy = 0f;
				}
			}
		}

		public override void OnExit()
		{
			((GenericCharacterMain)this).OnExit();
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)8;
		}
	}
}
namespace BAMod.Tsurugi.Content
{
	public static class TsurugiAI
	{
		public static void Init(GameObject bodyPrefab, string masterName)
		{
			//IL_003a: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: 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_0137: 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_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: 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_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: 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_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: 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_02ec: 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_0330: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName);
			BaseAI component = val.GetComponent<BaseAI>();
			component.aimVectorDampTime = 0.1f;
			component.aimVectorMaxSpeed = 360f;
			AISkillDriver val2 = val.AddComponent<AISkillDriver>();
			val2.customName = "Use Primary Swing";
			val2.skillSlot = (SkillSlot)0;
			val2.requiredSkill = null;
			val2.requireSkillReady = false;
			val2.requireEquipmentReady = false;
			val2.minUserHealthFraction = float.NegativeInfinity;
			val2.maxUserHealthFraction = float.PositiveInfinity;
			val2.minTargetHealthFraction = float.NegativeInfinity;
			val2.maxTargetHealthFraction = float.PositiveInfinity;
			val2.minDistance = 0f;
			val2.maxDistance = 8f;
			val2.selectionRequiresTargetLoS = false;
			val2.selectionRequiresOnGround = false;
			val2.selectionRequiresAimTarget = false;
			val2.maxTimesSelected = -1;
			val2.moveTargetType = (TargetType)0;
			val2.activationRequiresTargetLoS = false;
			val2.activationRequiresAimTargetLoS = false;
			val2.activationRequiresAimConfirmation = false;
			val2.movementType = (MovementType)1;
			val2.moveInputScale = 1f;
			val2.aimType = (AimType)1;
			val2.ignoreNodeGraph = false;
			val2.shouldSprint = false;
			val2.shouldFireEquipment = false;
			val2.buttonPressType = (ButtonPressType)0;
			val2.driverUpdateTimerOverride = -1f;
			val2.resetCurrentEnemyOnNextDriverSelection = false;
			val2.noRepeat = false;
			val2.nextHighPriorityOverride = null;
			AISkillDriver val3 = val.AddComponent<AISkillDriver>();
			val3.customName = "Use Secondary Shoot";
			val3.skillSlot = (SkillSlot)1;
			val3.requireSkillReady = true;
			val3.minDistance = 0f;
			val3.maxDistance = 25f;
			val3.selectionRequiresTargetLoS = false;
			val3.selectionRequiresOnGround = false;
			val3.selectionRequiresAimTarget = false;
			val3.maxTimesSelected = -1;
			val3.moveTargetType = (TargetType)0;
			val3.activationRequiresTargetLoS = false;
			val3.activationRequiresAimTargetLoS = false;
			val3.activationRequiresAimConfirmation = true;
			val3.movementType = (MovementType)1;
			val3.moveInputScale = 1f;
			val3.aimType = (AimType)1;
			val3.buttonPressType = (ButtonPressType)0;
			AISkillDriver val4 = val.AddComponent<AISkillDriver>();
			val4.customName = "Use Utility Roll";
			val4.skillSlot = (SkillSlot)2;
			val4.requireSkillReady = true;
			val4.minDistance = 8f;
			val4.maxDistance = 20f;
			val4.selectionRequiresTargetLoS = true;
			val4.selectionRequiresOnGround = false;
			val4.selectionRequiresAimTarget = false;
			val4.maxTimesSelected = -1;
			val4.moveTargetType = (TargetType)0;
			val4.activationRequiresTargetLoS = false;
			val4.activationRequiresAimTargetLoS = false;
			val4.activationRequiresAimConfirmation = false;
			val4.movementType = (MovementType)2;
			val4.moveInputScale = 1f;
			val4.aimType = (AimType)1;
			val4.buttonPressType = (ButtonPressType)0;
			AISkillDriver val5 = val.AddComponent<AISkillDriver>();
			val5.customName = "Use Special bomb";
			val5.skillSlot = (SkillSlot)3;
			val5.requireSkillReady = true;
			val5.minDistance = 0f;
			val5.maxDistance = 20f;
			val5.selectionRequiresTargetLoS = false;
			val5.selectionRequiresOnGround = false;
			val5.selectionRequiresAimTarget = false;
			val5.maxTimesSelected = -1;
			val5.moveTargetType = (TargetType)0;
			val5.activationRequiresTargetLoS = false;
			val5.activationRequiresAimTargetLoS = false;
			val5.activationRequiresAimConfirmation = false;
			val5.movementType = (MovementType)1;
			val5.moveInputScale = 1f;
			val5.aimType = (AimType)1;
			val5.buttonPressType = (ButtonPressType)0;
			AISkillDriver val6 = val.AddComponent<AISkillDriver>();
			val6.customName = "Chase";
			val6.skillSlot = (SkillSlot)(-1);
			val6.requireSkillReady = false;
			val6.minDistance = 0f;
			val6.maxDistance = float.PositiveInfinity;
			val6.moveTargetType = (TargetType)0;
			val6.activationRequiresTargetLoS = false;
			val6.activationRequiresAimTargetLoS = false;
			val6.activationRequiresAimConfirmation = false;
			val6.movementType = (MovementType)1;
			val6.moveInputScale = 1f;
			val6.aimType = (AimType)1;
			val6.buttonPressType = (ButtonPressType)0;
		}
	}
	public static class TsurugiAssets
	{
		public static GameObject swordSwingEffect;

		public static GameObject swordHitImpactEffect;

		public static GameObject bombExplosionEffect;

		public static NetworkSoundEventDef swordHitSoundEvent;

		public static GameObject bombProjectilePrefab;

		public static Sprite SchoolgirlSoulConsume;

		private static AssetBundle _assetBundle;

		public static Sprite Malice;

		public static void Init(AssetBundle assetBundle)
		{
			_assetBundle = assetBundle;
			CreateEffects();
			CreateProjectiles();
			GrabBuffIcons();
		}

		private static void CreateEffects()
		{
		}

		private static void GrabBuffIcons()
		{
			Malice = _assetBundle.LoadAsset<Sprite>("Textures/Malice");
		}

		private static void CreateProjectiles()
		{
		}
	}
	public static class TsurugiBuffs
	{
		public static BuffDef TsurugiUltShield;

		public static BuffDef MaliceDef;

		public static DotIndex Malice;

		public static void Init()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: 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_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			MaliceDef = BAMod.Modules.Content.CreateAndAddBuff("Malice", TsurugiAssets.Malice, Color.white, canStack: true, isDebuff: true);
			TsurugiUltShield = BAMod.Modules.Content.CreateAndAddBuff("Ult Shield", LegacyResourcesAPI.Load<BuffDef>("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false);
			Malice = DotAPI.RegisterDotDef(new DotDef
			{
				associatedBuff = MaliceDef,
				damageCoefficient = 0f,
				interval = 0.5f,
				resetTimerOnAdd = true,
				terminalTimedBuffDuration = 2f,
				damageColorIndex = (DamageColorIndex)2
			}, (CustomDotBehaviour)null, (CustomDotVisual)null);
		}
	}
	public static class TsurugiConfig
	{
		public static ConfigEntry<bool> someConfigBool;

		public static ConfigEntry<float> someConfigFloat;

		public static ConfigEntry<float> someConfigFloatWithCustomRange;

		public static void Init()
		{
			string section = "Henry";
			someConfigBool = Config.BindAndOptions(section, "someConfigBool", defaultValue: true, "this creates a bool config, and a checkbox option in risk of options");
			someConfigFloat = Config.BindAndOptions(section, "someConfigfloat", 5f);
			someConfigFloatWithCustomRange = Config.BindAndOptions(section, "someConfigfloat2", 5f, 0f, 50f, "if a custom range is not passed in, a float will default to a slider with range 0-20. risk of options only has sliders");
		}
	}
	internal class TsurugiCustomDamageTypes
	{
		public static ModdedDamageType BloodBleed = DamageAPI.ReserveDamageType();

		public static ModdedDamageType GunpowderHeal = DamageAPI.ReserveDamageType();
	}
	internal static class TsurugiHooks
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_OnCharacterDeath <0>__GlobalEventManager_OnCharacterDeath;

			public static Action<DamageReport> <1>__GlobalEventManager_onServerDamageDealt;

			public static StatHookEventHandler <2>__RecalculateStatsAPI_GetStatCoefficients;
		}

		private static BuffDef BleedDebuff;

		public static void Init()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0062: 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_006d: Expected O, but got Unknown
			BleedDebuff = LegacyResourcesAPI.Load<BuffDef>("RoR2/Base/Common/bdBleeding");
			object obj = <>O.<0>__GlobalEventManager_OnCharacterDeath;
			if (obj == null)
			{
				hook_OnCharacterDeath val = GlobalEventManager_OnCharacterDeath;
				<>O.<0>__GlobalEventManager_OnCharacterDeath = val;
				obj = (object)val;
			}
			GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj;
			GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt;
			object obj2 = <>O.<2>__RecalculateStatsAPI_GetStatCoefficients;
			if (obj2 == null)
			{
				StatHookEventHandler val2 = RecalculateStatsAPI_GetStatCoefficients;
				<>O.<2>__RecalculateStatsAPI_GetStatCoefficients = val2;
				obj2 = (object)val2;
			}
			RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj2;
		}

		private static void GlobalEventManager_onServerDamageDealt(DamageReport obj)
		{
			//IL_0070: 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_0084: 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_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			EntityStateMachine val = default(EntityStateMachine);
			if (Object.op_Implicit((Object)(object)obj.victim) && Object.op_Implicit((Object)(object)obj.attacker) && EntityStateMachine.TryFindByCustomName(((Component)obj.attackerBody).gameObject, "Body", ref val) && ((object)val.state).GetType() == typeof(TsurugiCharacterMain))
			{
				TsurugiCharacterMain tsurugiCharacterMain = (TsurugiCharacterMain)(object)val.state;
				if (DamageAPI.HasModdedDamageType(ref obj.damageInfo.damageType, TsurugiCustomDamageTypes.BloodBleed))
				{
					InflictDotInfo val2 = default(InflictDotInfo);
					val2.dotIndex = TsurugiBuffs.Malice;
					val2.duration = 5f;
					val2.maxStacksFromAttacker = 40u;
					val2.damageMultiplier = 1f;
					val2.totalDamage = obj.victim.combinedHealth / 0.5f;
					val2.victimObject = ((Component)obj.victimBody).gameObject;
					val2.attackerObject = ((Component)obj.attackerBody).gameObject;
					val2.hitHurtBox = obj.victimBody.mainHurtBox;
					InflictDotInfo val3 = val2;
					DotController.InflictDot(ref val3);
				}
				if (DamageAPI.HasModdedDamageType(ref obj.damageInfo.damageType, TsurugiCustomDamageTypes.GunpowderHeal))
				{
					tsurugiCharacterMain.HealBy += obj.damageDealt * 0.1f;
				}
			}
		}

		private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			if ((Object)(object)sender != (Object)null && args != null)
			{
				EntityStateMachine val = default(EntityStateMachine);
				if (EntityStateMachine.TryFindByCustomName(((Component)sender).gameObject, "Body", ref val) && ((object)val.state).GetType() == typeof(TsurugiCharacterMain))
				{
					args.primarySkill.bonusStockAdd += sender.skillLocator.secondary.maxStock - 5;
				}
				if (sender.HasBuff(TsurugiBuffs.TsurugiUltShield))
				{
					args.baseShieldAdd += sender.healthComponent.fullCombinedHealth * 0.25f;
				}
			}
		}

		private static void GlobalEventManager_OnCharacterDeath(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport)
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			EntityStateMachine val = default(EntityStateMachine);
			if (Object.op_Implicit((Object)(object)damageReport.victim) && Object.op_Implicit((Object)(object)damageReport.attacker) && EntityStateMachine.TryFindByCustomName(((Component)damageReport.attackerBody).gameObject, "Body", ref val) && (Object)(object)self != (Object)null && ((object)val.state).GetType() == typeof(TsurugiCharacterMain))
			{
				TsurugiCharacterMain tsurugiCharacterMain = (TsurugiCharacterMain)(object)val.state;
				if (DamageAPI.HasModdedDamageType(ref damageReport.damageInfo.damageType, TsurugiCustomDamageTypes.BloodBleed))
				{
					tsurugiCharacterMain.confirmedPrimaryKills++;
				}
				if (DamageAPI.HasModdedDamageType(ref damageReport.damageInfo.damageType, TsurugiCustomDamageTypes.GunpowderHeal))
				{
					tsurugiCharacterMain.confirmedSecondaryKills++;
				}
				BAMod.Tsurugi.Components.CrazyWomanPassiveDictator crazyWomanPassiveDictator = default(BAMod.Tsurugi.Components.CrazyWomanPassiveDictator);
				if (damageReport.attacker.gameObject.TryGetComponent<BAMod.Tsurugi.Components.CrazyWomanPassiveDictator>(ref crazyWomanPassiveDictator))
				{
					switch (crazyWomanPassiveDictator.GetPassiveType())
					{
					case BAMod.Tsurugi.Components.CrazyWomanPassiveDictator.TsurugiPassive.BloodLust:
						tsurugiCharacterMain.primaryCritRack = true;
						tsurugiCharacterMain.secondaryCritRack = true;
						break;
					case BAMod.Tsurugi.Components.CrazyWomanPassiveDictator.TsurugiPassive.BloodSewing:
						tsurugiCharacterMain.resetStocks = true;
						break;
					}
				}
			}
			orig.Invoke(self, damageReport);
		}
	}
	public class TsurugiItemDisplays : ItemDisplaysBase
	{
		protected override void SetItemDisplayRules(List<KeyAssetRuleGroup> itemDisplayRules)
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: 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_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: 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_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: 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_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: 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_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_0497: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: 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_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: 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_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: Unknown result type (might be due to invalid IL or missing references)
			//IL_0596: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0604: Unknown result type (might be due to invalid IL or missing references)
			//IL_0609: Unknown result type (might be due to invalid IL or missing references)
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_064f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0663: Unknown result type (might be due to invalid IL or missing references)
			//IL_0677: Unknown result type (might be due to invalid IL or missing references)
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0681: Unknown result type (might be due to invalid IL or missing references)
			//IL_0686: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_073f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_076c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0771: Unknown result type (might be due to invalid IL or missing references)
			//IL_0776: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_082f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_085c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_0866: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a7: 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_08cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08de: 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_0933: 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_094c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0951: Unknown result type (might be due to invalid IL or missing references)
			//IL_0956: 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_09ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a87: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aaf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab4: 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_0abe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b13: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b2c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c03: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c94: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c99: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cf3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d6b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d7f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d8e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dcf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e01: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e06: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e79: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ecc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ee0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0efe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f50: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0faf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fc8: 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_0fd2: Unknown result type (might be due to invalid IL or missing references)
			//IL_1013: Unknown result type (might be due to invalid IL or missing references)
			//IL_1027: Unknown result type (might be due to invalid IL or missing references)
			//IL_103b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1040: Unknown result type (might be due to invalid IL or missing references)
			//IL_1045: Unknown result type (might be due to invalid IL or missing references)
			//IL_104a: Unknown result type (might be due to invalid IL or missing references)
			//IL_108b: Unknown result type (might be due to invalid IL or missing references)
			//IL_109f: Unknown result type (might be due to invalid IL or missing references)
			//IL_10b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_10b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_10bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c2: 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_1117: Unknown result type (might be due to invalid IL or missing references)
			//IL_112b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1130: Unknown result type (might be due to invalid IL or missing references)
			//IL_1135: Unknown result type (might be due to invalid IL or missing references)
			//IL_113a: Unknown result type (might be due to invalid IL or missing references)
			//IL_117b: Unknown result type (might be due to invalid IL or missing references)
			//IL_118f: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_11b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_1207: Unknown result type (might be due to invalid IL or missing references)
			//IL_121b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1220: Unknown result type (might be due to invalid IL or missing references)
			//IL_1225: 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_126b: Unknown result type (might be due to invalid IL or missing references)
			//IL_127f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1293: Unknown result type (might be due to invalid IL or missing references)
			//IL_1298: Unknown result type (might be due to invalid IL or missing references)
			//IL_129d: Unknown result type (might be due to invalid IL or missing references)
			//IL_12a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_12f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_130b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1310: Unknown result type (might be due to invalid IL or missing references)
			//IL_1315: Unknown result type (might be due to invalid IL or missing references)
			//IL_131a: Unknown result type (might be due to invalid IL or missing references)
			//IL_135b: Unknown result type (might be due to invalid IL or missing references)
			//IL_136f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1383: Unknown result type (might be due to invalid IL or missing references)
			//IL_1388: Unknown result type (might be due to invalid IL or missing references)
			//IL_138d: Unknown result type (might be due to invalid IL or missing references)
			//IL_13b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_13c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_13da: Unknown result type (might be due to invalid IL or missing references)
			//IL_13df: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_142a: Unknown result type (might be due to invalid IL or missing references)
			//IL_143e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1452: Unknown result type (might be due to invalid IL or missing references)
			//IL_1457: Unknown result type (might be due to invalid IL or missing references)
			//IL_145c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1461: Unknown result type (might be due to invalid IL or missing references)
			//IL_14a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_14b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_14ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_14cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_14d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_14d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_151a: Unknown result type (might be due to invalid IL or missing references)
			//IL_152e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1542: Unknown result type (might be due to invalid IL or missing references)
			//IL_1547: Unknown result type (might be due to invalid IL or missing references)
			//IL_154c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1551: Unknown result type (might be due to invalid IL or missing references)
			//IL_1592: Unknown result type (might be due to invalid IL or missing references)
			//IL_15a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_15ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_15bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_15c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_15c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_160a: Unknown result type (might be due to invalid IL or missing references)
			//IL_161e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1632: Unknown result type (might be due to invalid IL or missing references)
			//IL_1637: Unknown result type (might be due to invalid IL or missing references)
			//IL_163c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1641: Unknown result type (might be due to invalid IL or missing references)
			//IL_1682: Unknown result type (might be due to invalid IL or missing references)
			//IL_1696: Unknown result type (might be due to invalid IL or missing references)
			//IL_16aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_16af: Unknown result type (might be due to invalid IL or missing references)
			//IL_16b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_16b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_16fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_170e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1722: Unknown result type (might be due to invalid IL or missing references)
			//IL_1727: Unknown result type (might be due to invalid IL or missing references)
			//IL_172c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1731: Unknown result type (might be due to invalid IL or missing references)
			//IL_1772: Unknown result type (might be due to invalid IL or missing references)
			//IL_1786: Unknown result type (might be due to invalid IL or missing references)
			//IL_179a: Unknown result type (might be due to invalid IL or missing references)
			//IL_179f: Unknown result type (might be due to invalid IL or missing references)
			//IL_17a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_17a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_17ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_17fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_1812: Unknown result type (might be due to invalid IL or missing references)
			//IL_1817: Unknown result type (might be due to invalid IL or missing references)
			//IL_181c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1821: Unknown result type (might be due to invalid IL or missing references)
			//IL_1862: Unknown result type (might be due to invalid IL or missing references)
			//IL_1876: Unknown result type (might be due to invalid IL or missing references)
			//IL_188a: Unknown result type (might be due to invalid IL or missing references)
			//IL_188f: Unknown result type (might be du