Decompiled source of Katarina v2.3.0

Katarina.dll

Decompiled 4 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Merc;
using ExtraSkillSlots;
using HG.BlendableTypes;
using JetBrains.Annotations;
using KinematicCharacterController;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
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("Katarina")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+8efcd1570d3abb25c7c57c88c8d7b21803bb851d")]
[assembly: AssemblyProduct("Katarina")]
[assembly: AssemblyTitle("Katarina")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Katarina;

internal class BladeController : MonoBehaviour
{
	public enum BladeIndex
	{
		blade1 = 1,
		blade2,
		blade3,
		blade4,
		blade5,
		blade6
	}

	private GameObject areaIndicator;

	private ChildLocator childLocator;

	private List<string> childNameList = new List<string> { "blade1", "blade2", "blade3", "blade4", "blade5", "blade6" };

	private BladeIndex blade = (BladeIndex)0;

	public Vector3 areaIndicatorPosition => Object.op_Implicit((Object)(object)areaIndicator) ? areaIndicator.transform.position : Vector3.zero;

	public BladeIndex bladeIndex => blade;

	public void InstantiateAreaIndicator()
	{
		//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_0029: 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)
		areaIndicator = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion());
		areaIndicator.transform.localScale = Vector3.one * 3f;
	}

	public void UpdateAreIndicatorPosition(Ray aimRay)
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)areaIndicator))
		{
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(aimRay, ref val, GlobalValues.maxBlinkDistance, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)))
			{
				areaIndicator.transform.position = ((RaycastHit)(ref val)).point;
				areaIndicator.transform.up = ((RaycastHit)(ref val)).normal;
			}
			else
			{
				areaIndicator.transform.position = ((Ray)(ref aimRay)).GetPoint(GlobalValues.maxBlinkDistance);
			}
		}
	}

	public void DestroyAreaIndicator()
	{
		if (Object.op_Implicit((Object)(object)areaIndicator))
		{
			Object.Destroy((Object)(object)areaIndicator);
		}
	}

	public void SetBlade(BladeIndex index)
	{
		blade = index;
		UpdateModel();
	}

	private void Awake()
	{
		blade = BladeIndex.blade1;
		ModelLocator component = ((Component)this).GetComponent<ModelLocator>();
		if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelTransform))
		{
			childLocator = ((Component)component.modelTransform).GetComponent<ChildLocator>();
		}
	}

	private void UpdateModel()
	{
		if (!Object.op_Implicit((Object)(object)childLocator))
		{
			return;
		}
		string text = blade.ToString();
		foreach (string childName in childNameList)
		{
			if (childName == text)
			{
				((Component)childLocator.FindChild(text)).gameObject.SetActive(true);
			}
			else
			{
				((Component)childLocator.FindChild(childName)).gameObject.SetActive(false);
			}
		}
	}
}
internal class BladePickupBehaviour : MonoBehaviour, IProjectileImpactBehavior
{
	private bool inAir = true;

	private SphereSearch sphereSearch = new SphereSearch();

	private float stopwatch;

	private float searchInterval = 0.5f;

	private ProjectileController controller;

	private GameObject owner;

	public void OnProjectileImpact(ProjectileImpactInfo impactInfo)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)impactInfo.collider) && !Object.op_Implicit((Object)(object)((Component)impactInfo.collider).GetComponent<HurtBox>()))
		{
			inAir = false;
		}
	}

	private void OnEnable()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		sphereSearch = new SphereSearch();
		sphereSearch.origin = ((Component)this).transform.position;
		sphereSearch.radius = GlobalValues.daggerPickupRadius;
		sphereSearch.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
	}

	private void FixedUpdate()
	{
		//IL_00ca: 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)
		stopwatch += Time.fixedDeltaTime;
		if (!Object.op_Implicit((Object)(object)controller) || !Object.op_Implicit((Object)(object)owner))
		{
			controller = ((Component)this).GetComponent<ProjectileController>();
			if (Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)controller.owner))
			{
				owner = controller.owner;
			}
		}
		if (!Object.op_Implicit((Object)(object)owner))
		{
			return;
		}
		EntityStateMachine val = Array.Find(owner.GetComponents<EntityStateMachine>(), (EntityStateMachine element) => element.customName == "Speen");
		float num = Vector3.Distance(((Component)this).transform.position, owner.transform.position);
		if (!(num <= GlobalValues.daggerPickupRadius))
		{
			return;
		}
		if (Object.op_Implicit((Object)(object)val))
		{
			CharacterMotor component = owner.GetComponent<CharacterMotor>();
			if (inAir)
			{
				val.SetInterruptState((EntityState)(object)new DaggerPickupAir(), (InterruptPriority)5);
			}
			else
			{
				val.SetInterruptState((EntityState)(object)new BaseDaggerPickupState(), (InterruptPriority)5);
			}
		}
		Object.Destroy((Object)(object)((Component)this).gameObject);
	}
}
internal class DestroyProjectileOnImpact : MonoBehaviour, IProjectileImpactBehavior
{
	public bool destroyOnEntity = true;

	public bool destroyOnTerrain = false;

	public void OnProjectileImpact(ProjectileImpactInfo impactInfo)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)((Component)impactInfo.collider).GetComponent<HurtBox>()) && destroyOnEntity)
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
}
internal class KatarinaSkillSwitchBehaviour : MonoBehaviour
{
}
internal class KatarinaTracker : HuntressTracker
{
	public bool enable = true;

	private float stopwatch;

	public bool canExecute => Object.op_Implicit((Object)(object)base.trackingTarget) ? true : false;

	private void Awake()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected O, but got Unknown
		base.indicator = new Indicator(((Component)this).gameObject, Prefabs.aimIndicator);
	}

	private void Start()
	{
		base.maxTrackingDistance = 370f;
		base.search.viewer = null;
		((HuntressTracker)this).Start();
	}

	private void FixedUpdate()
	{
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: 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)
		base.trackerUpdateStopwatch = 10f;
		stopwatch += Time.fixedDeltaTime;
		if (stopwatch >= 1f / base.trackerUpdateFrequency)
		{
			stopwatch -= 1f / base.trackerUpdateFrequency;
			Ray aimRay = default(Ray);
			((Ray)(ref aimRay))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection);
			SearchForTargetNoLos(aimRay);
			base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null);
		}
	}

	private void SearchForTargetNoLos(Ray aimRay)
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: 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_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: 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)
		base.search.teamMaskFilter = TeamMask.GetUnprotectedTeams(base.teamComponent.teamIndex);
		base.search.filterByLoS = false;
		base.search.searchOrigin = ((Ray)(ref aimRay)).origin;
		base.search.searchDirection = ((Ray)(ref aimRay)).direction;
		base.search.sortMode = (SortMode)1;
		base.search.maxDistanceFilter = base.maxTrackingDistance;
		base.search.maxAngleFilter = 15f;
		base.search.RefreshCandidates();
		base.search.FilterOutGameObject(((Component)this).gameObject);
		base.trackingTarget = base.search.GetResults().FirstOrDefault();
	}
}
internal class LotusBladeOrb : Orb
{
	public float speed;

	public float damage;

	internal GameObject owner;

	public GameObject orbEffect;

	public float procCoefficient;

	public override void Begin()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Expected O, but got Unknown
		((Orb)this).duration = ((Orb)this).distanceToTarget / speed;
		EffectData val = new EffectData
		{
			origin = base.origin,
			genericFloat = ((Orb)this).duration
		};
		val.SetHurtBoxReference(base.target);
		EffectManager.SpawnEffect(orbEffect, val, true);
	}

	public override void OnArrival()
	{
		//IL_0026: 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_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_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_0067: 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_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: 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: Expected O, but got Unknown
		if (Object.op_Implicit((Object)(object)base.target) && Object.op_Implicit((Object)(object)base.target.healthComponent))
		{
			DamageInfo val = new DamageInfo
			{
				attacker = owner,
				inflictor = owner,
				damage = damage,
				procCoefficient = procCoefficient,
				damageType = DamageTypeCombo.op_Implicit((DamageTypeExtended)0),
				damageColorIndex = (DamageColorIndex)0,
				position = ((Component)base.target).transform.position,
				rejected = false
			};
			base.target.healthComponent.TakeDamage(val);
		}
	}
}
internal class GlobalValues
{
	internal static float secondaryHealCoefficient = 0.1f;

	internal static float daggerPickupRadius = MainPlugin.daggerpickupzone.Value;

	internal static float daggerPickupExplosionRadius = MainPlugin.daggerpickupslash.Value;

	internal static float maxBlinkDistance = 175f;

	internal static float specialProjectileSpeed = 51f;

	internal static float specialCDReductionOnKill = 4f;
}
internal class Hook
{
	internal static void Hooks()
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Expected O, but got Unknown
		HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
		GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal;
		GlobalEventManager.onClientDamageNotified += GlobalEventManager_onClientDamageNotified;
	}

	private static void GlobalEventManager_onClientDamageNotified(DamageDealtMessage damageDealtMessage)
	{
	}

	private static void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport)
	{
		//IL_0046: 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_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_022d: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0422: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0449: Unknown result type (might be due to invalid IL or missing references)
		//IL_044e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_05fc: Invalid comparison between Unknown and I4
		//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_068b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0690: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_0207: Unknown result type (might be due to invalid IL or missing references)
		//IL_0210: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_0217: Unknown result type (might be due to invalid IL or missing references)
		//IL_0228: Expected O, but got Unknown
		//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f8: Expected O, but got Unknown
		//IL_031b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0320: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_036f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0374: Unknown result type (might be due to invalid IL or missing references)
		//IL_0376: Unknown result type (might be due to invalid IL or missing references)
		//IL_0387: Expected O, but got Unknown
		//IL_0392: Unknown result type (might be due to invalid IL or missing references)
		//IL_0397: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b8: Expected O, but got Unknown
		//IL_0404: Unknown result type (might be due to invalid IL or missing references)
		//IL_0409: Unknown result type (might be due to invalid IL or missing references)
		//IL_040b: Unknown result type (might be due to invalid IL or missing references)
		//IL_041c: Expected O, but got Unknown
		//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f5: Expected O, but got Unknown
		//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_05be: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d6: Expected O, but got Unknown
		//IL_058e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0593: Unknown result type (might be due to invalid IL or missing references)
		//IL_0595: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a6: Expected O, but got Unknown
		DamageInfo damageInfo = damageReport.damageInfo;
		if (!Object.op_Implicit((Object)(object)damageReport.victim) || !Object.op_Implicit((Object)(object)damageReport.victimBody) || !Object.op_Implicit((Object)(object)damageReport.attacker) || !Object.op_Implicit((Object)(object)damageReport.attackerBody))
		{
			return;
		}
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6))
		{
			if (damageReport.attackerBody.skillLocator.secondary.baseRechargeInterval == 9f)
			{
				damageReport.attackerBody.skillLocator.secondary.AddOneStock();
			}
			else if (damageReport.attackerBody.skillLocator.secondary.baseRechargeInterval == 5.5f)
			{
				bool flag = damageReport.attackerBody.skillLocator.secondary.stock == 1;
				bool flag2 = damageReport.attackerBody.skillLocator.secondary.stock == 0;
				if (flag || flag2)
				{
					damageReport.attackerBody.skillLocator.secondary.Reset();
				}
				else
				{
					damageReport.attackerBody.skillLocator.secondary.AddOneStock();
				}
			}
			if (NetworkServer.active)
			{
				damageReport.attackerBody.healthComponent.Heal(damageReport.victimBody.healthComponent.fullHealth * GlobalValues.secondaryHealCoefficient, default(ProcChainMask), true);
			}
			if (MainPlugin.killexplosionfx.Value)
			{
				if (!MainPlugin.collapseEveryone.Value)
				{
					EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
				else
				{
					EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
			}
		}
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blink))
		{
			ExtraSkillLocator component = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>();
			if (component.extraThird.stock == 0)
			{
				component.extraThird.AddOneStock();
			}
			if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0)
			{
				damageReport.attackerBody.skillLocator.utility.AddOneStock();
			}
			if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.secondary.stock == 0)
			{
				damageReport.attackerBody.skillLocator.secondary.AddOneStock();
			}
			bool isFlying = damageReport.victimBody.isFlying;
			bool flag3 = damageReport.victimBody.bodyIndex == MainPlugin.vultureIndex;
			bool flag4 = damageReport.victimBody.bodyIndex == MainPlugin.pestIndex;
			switch (MainPlugin.shunpoSetting.Value)
			{
			case 0:
				EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData
				{
					origin = damageInfo.position
				}, true);
				break;
			case 1:
				EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData
				{
					origin = damageInfo.position
				}, true);
				break;
			case 2:
				if (isFlying || flag4 || flag3)
				{
					EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
				else
				{
					EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
				break;
			}
		}
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.daggerPickup))
		{
			ExtraSkillLocator component2 = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>();
			if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && Object.op_Implicit((Object)(object)damageReport.attackerBody))
			{
				damageReport.attackerBody.AddTimedBuff(Buffs.KillMoveSpeed, 2f);
			}
			if (component2.extraThird.stock == 0)
			{
				component2.extraThird.AddOneStock();
			}
			if (component2.extraSecond.stock == 0)
			{
				component2.extraSecond.AddOneStock();
			}
			if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.secondary.stock == 0)
			{
				damageReport.attackerBody.skillLocator.secondary.AddOneStock();
			}
			if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0)
			{
				damageReport.attackerBody.skillLocator.utility.AddOneStock();
			}
			if (MainPlugin.killexplosionfx.Value)
			{
				if (!MainPlugin.collapseEveryone.Value)
				{
					EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
				else
				{
					EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData
					{
						origin = damageInfo.position
					}, true);
				}
			}
		}
		if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 524288)
		{
			ExtraSkillLocator component3 = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>();
			if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0)
			{
				damageReport.attackerBody.skillLocator.utility.AddOneStock();
			}
			if (component3.extraThird.stock == 0)
			{
				component3.extraThird.AddOneStock();
			}
		}
		if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator.special) && NetworkServer.active)
		{
			damageReport.attackerBody.skillLocator.special.RunRecharge(GlobalValues.specialCDReductionOnKill);
		}
	}

	private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00be: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Invalid comparison between Unknown and I4
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0225: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_0196: Unknown result type (might be due to invalid IL or missing references)
		//IL_0258: Unknown result type (might be due to invalid IL or missing references)
		//IL_0262: Unknown result type (might be due to invalid IL or missing references)
		//IL_0267: 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_0276: Unknown result type (might be due to invalid IL or missing references)
		//IL_027b: Unknown result type (might be due to invalid IL or missing references)
		//IL_027e: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0346: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_030a: Unknown result type (might be due to invalid IL or missing references)
		//IL_030f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0311: Unknown result type (might be due to invalid IL or missing references)
		//IL_040e: Unknown result type (might be due to invalid IL or missing references)
		//IL_036e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0373: Unknown result type (might be due to invalid IL or missing references)
		//IL_0375: 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_03d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0436: Unknown result type (might be due to invalid IL or missing references)
		//IL_043b: Unknown result type (might be due to invalid IL or missing references)
		//IL_043d: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_049e: Unknown result type (might be due to invalid IL or missing references)
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.bladeBleed) && NetworkServer.active)
		{
			DotController.InflictDot(((Component)self).gameObject, damageInfo.attacker, (DotIndex)6, 15f * damageInfo.procCoefficient, 1f, (uint?)null);
		}
		if (Object.op_Implicit((Object)(object)damageInfo.attacker) && ((Object)damageInfo.attacker).name.Contains("NinesKatarinaBody"))
		{
			CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component) && NetworkServer.active && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) != 2)
			{
			}
		}
		if ((DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6)) && NetworkServer.active)
		{
			CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
			component2.healthComponent.Heal(damageInfo.damage * 0.08f, default(ProcChainMask), true);
		}
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.daggerPickup))
		{
			CharacterBody component3 = damageInfo.attacker.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component3) && NetworkServer.active)
			{
				component3.healthComponent.Heal(damageInfo.damage * 0.03f, default(ProcChainMask), true);
			}
		}
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blink))
		{
			CharacterBody component4 = damageInfo.attacker.GetComponent<CharacterBody>();
			float num = self.health * 0.1f;
			float num2 = damageInfo.damage + num;
			float damage = ((!self.body.isBoss) ? num2 : (num2 * 0.7f));
			damageInfo.damage = damage;
			float num3 = damageInfo.damage * 0.07f;
			component4.healthComponent.Heal(num3, default(ProcChainMask), true);
		}
		orig.Invoke(self, damageInfo);
		if (!Object.op_Implicit((Object)(object)damageInfo.attacker) || !self.alive)
		{
			return;
		}
		Vector3 val = Vector3.up * 40f + Vector3.forward * 15f;
		if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1))
		{
			if (NetworkServer.active)
			{
				ProjectileManager.instance.FireProjectile(Prefabs.dagger1ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
			}
		}
		else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2))
		{
			if (NetworkServer.active)
			{
				ProjectileManager.instance.FireProjectile(Prefabs.dagger2ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
			}
		}
		else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3))
		{
			if (NetworkServer.active)
			{
				ProjectileManager.instance.FireProjectile(Prefabs.dagger3ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
			}
		}
		else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4))
		{
			if (NetworkServer.active)
			{
				ProjectileManager.instance.FireProjectile(Prefabs.dagger4ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
			}
		}
		else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5))
		{
			if (NetworkServer.active)
			{
				ProjectileManager.instance.FireProjectile(Prefabs.dagger5ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
			}
		}
		else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6) && NetworkServer.active)
		{
			ProjectileManager.instance.FireProjectile(Prefabs.dagger6ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
		}
	}
}
internal class KatarinaSkillDef : SkillDef
{
	private class InstanceData : BaseSkillInstanceData
	{
		public KatarinaTracker katarinaTracker;
	}

	public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot)
	{
		return (BaseSkillInstanceData)(object)new InstanceData
		{
			katarinaTracker = ((Component)skillSlot).GetComponent<KatarinaTracker>()
		};
	}

	internal static bool IsExecutable([NotNull] GenericSkill skillSlot)
	{
		KatarinaTracker katarinaTracker = ((InstanceData)(object)skillSlot.skillInstanceData).katarinaTracker;
		return katarinaTracker.canExecute;
	}

	public override bool CanExecute([NotNull] GenericSkill skillSlot)
	{
		return IsExecutable(skillSlot) && ((SkillDef)this).CanExecute(skillSlot);
	}

	public override bool IsReady([NotNull] GenericSkill skillSlot)
	{
		return ((SkillDef)this).IsReady(skillSlot) && IsExecutable(skillSlot);
	}
}
internal class KatAssets
{
	public static AssetBundle MainAssetBundle;

	public static void PopulateAssets()
	{
		if ((Object)(object)MainAssetBundle == (Object)null)
		{
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Katarina.katarinaassets");
			MainAssetBundle = AssetBundle.LoadFromStream(stream);
		}
		using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Katarina.BattleQueenSounds.bnk");
		byte[] array = new byte[stream2.Length];
		stream2.Read(array, 0, array.Length);
		SoundBanks.Add(array);
	}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Nines.Katarina", "Katarina", "2.2.0")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class MainPlugin : BaseUnityPlugin
{
	public const string MODUID = "com.Nines.Katarina";

	public const string MODNAME = "Katarina";

	public const string VERSION = "2.2.0";

	public const string SURVIVORNAME = "NinesKatarina";

	public const string SURVIVORNAMEKEY = "NINESKATARINA";

	public static GameObject characterPrefab;

	private static readonly Color characterColor = new Color(0.9254902f, 37f / 85f, 0.9137255f);

	internal static ConfigEntry<bool> shunpofx;

	internal static ConfigEntry<bool> killexplosionfx;

	internal static ConfigEntry<bool> enablelotusvoice;

	internal static ConfigEntry<bool> enablemeleevoice;

	internal static ConfigEntry<bool> enabledaggervoice;

	internal static ConfigEntry<bool> loudshunpo;

	internal static ConfigEntry<bool> silentslash;

	internal static ConfigEntry<bool> randomdaggers;

	internal static ConfigEntry<bool> altlotusfx;

	internal static ConfigEntry<bool> shunpodamagefx;

	internal static ConfigEntry<bool> collapseEveryone;

	internal static ConfigEntry<float> throwvelocity;

	internal static ConfigEntry<float> daggerpickupzone;

	internal static ConfigEntry<float> daggerpickupslash;

	internal static ConfigEntry<float> radialhealpercent;

	internal static ConfigEntry<float> blinkdmg;

	internal static ConfigEntry<float> ihateflyingenemies;

	internal static ConfigEntry<float> daggerspherebox;

	internal static ConfigEntry<int> shunpoSetting;

	internal static ConfigEntry<float> mainRootSpeed;

	internal static ConfigEntry<float> baseMaxHealth;

	internal static ConfigEntry<float> levelMaxHealth;

	internal static ConfigEntry<float> baseRegen;

	internal static ConfigEntry<float> levelRegen;

	internal static ConfigEntry<float> baseMoveSpeed;

	internal static ConfigEntry<float> levelMoveSpeed;

	internal static ConfigEntry<float> baseAcceleration;

	internal static ConfigEntry<float> baseJumpPower;

	internal static ConfigEntry<float> levelJumpPower;

	internal static ConfigEntry<float> levelDamage;

	internal static ConfigEntry<float> baseAttackSpeed;

	internal static ConfigEntry<float> levelAttackSpeed;

	internal static ConfigEntry<float> baseArmor;

	internal static ConfigEntry<float> levelArmor;

	internal static ConfigEntry<float> sprintingSpeedMultiplier;

	internal static Shader hopooshaders = Resources.Load<Shader>("Shaders/Deferred/HGStandard");

	public static BodyIndex vultureIndex;

	public static BodyIndex pestIndex;

	public static BodyIndex katIndex;

	private void Awake()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Expected O, but got Unknown
		//IL_002c: Expected O, but got Unknown
		//IL_0041: 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_005c: Expected O, but got Unknown
		//IL_005c: Expected O, but got Unknown
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_008c: Expected O, but got Unknown
		//IL_008c: Expected O, but got Unknown
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Expected O, but got Unknown
		//IL_00bc: Expected O, but got Unknown
		//IL_00d1: 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_00ec: Expected O, but got Unknown
		//IL_00ec: Expected O, but got Unknown
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Expected O, but got Unknown
		//IL_011c: Expected O, but got Unknown
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_014c: Expected O, but got Unknown
		//IL_014c: Expected O, but got Unknown
		//IL_0161: 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_017c: Expected O, but got Unknown
		//IL_017c: Expected O, but got Unknown
		//IL_0191: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Expected O, but got Unknown
		//IL_01ac: Expected O, but got Unknown
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dc: Expected O, but got Unknown
		//IL_01dc: Expected O, but got Unknown
		//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_020c: Expected O, but got Unknown
		//IL_020c: Expected O, but got Unknown
		//IL_0221: Unknown result type (might be due to invalid IL or missing references)
		//IL_0232: Unknown result type (might be due to invalid IL or missing references)
		//IL_023c: Expected O, but got Unknown
		//IL_023c: Expected O, but got Unknown
		//IL_0251: 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_0270: Expected O, but got Unknown
		//IL_0270: Expected O, but got Unknown
		//IL_0285: Unknown result type (might be due to invalid IL or missing references)
		//IL_029a: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a4: Expected O, but got Unknown
		//IL_02a4: Expected O, but got Unknown
		//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d8: Expected O, but got Unknown
		//IL_02d8: Expected O, but got Unknown
		//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0302: Unknown result type (might be due to invalid IL or missing references)
		//IL_030c: Expected O, but got Unknown
		//IL_030c: Expected O, but got Unknown
		//IL_0321: Unknown result type (might be due to invalid IL or missing references)
		//IL_0336: Unknown result type (might be due to invalid IL or missing references)
		//IL_0340: Expected O, but got Unknown
		//IL_0340: Expected O, but got Unknown
		//IL_0355: Unknown result type (might be due to invalid IL or missing references)
		//IL_036a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0374: Expected O, but got Unknown
		//IL_0374: Expected O, but got Unknown
		//IL_0389: Unknown result type (might be due to invalid IL or missing references)
		//IL_039e: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a8: Expected O, but got Unknown
		//IL_03a8: Expected O, but got Unknown
		shunpofx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Shunpo VFX"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		killexplosionfx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Special Effects On Reset"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		collapseEveryone = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Special Effect Choice"), false, new ConfigDescription("false for Lights Out, true for Collapse", (AcceptableValueBase)null, Array.Empty<object>()));
		shunpoSetting = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("VFX", "Shunpo Kill Effect"), 2, new ConfigDescription("0: Lights Out 1: Collapse 2: Lights Out for ground enemies and Collapse for flying enemies", (AcceptableValueBase)null, Array.Empty<object>()));
		altlotusfx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Alternate Death Lotus Projectiles"), false, new ConfigDescription("False for red daggers, True for Scheman magic bursts", (AcceptableValueBase)null, Array.Empty<object>()));
		enablelotusvoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Death Lotus Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		enablemeleevoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Sinister Steel Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		enabledaggervoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Voracious Blade Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		randomdaggers = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Daggers", "True Random Daggers"), false, new ConfigDescription("true to randomize her weapons and dagger pickups, false to sync them together", (AcceptableValueBase)null, Array.Empty<object>()));
		loudshunpo = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Shunpo", "Shunpo Explosion Sound"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		silentslash = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Sinister Steel", "Quieter Impact"), true, new ConfigDescription("Mercenary slash impact sfx, turned off by default", (AcceptableValueBase)null, Array.Empty<object>()));
		shunpodamagefx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Shunpo", "Enemy Damage FX"), true, new ConfigDescription("Collapse effect on enemy", (AcceptableValueBase)null, Array.Empty<object>()));
		blinkdmg = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Shunpo", "Damage Coefficient"), 2.6f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		ihateflyingenemies = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Shunpo", "Flying Enemy Damage Coefficient"), 4.6f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		daggerpickupzone = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Pickup Zone Radius"), 5f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		daggerpickupslash = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Pickup Slash Radius"), 15f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		radialhealpercent = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Omnivamp"), 0.3f, new ConfigDescription("Percent of damage dealt on a per enemy basis. 0.3 is 3% of damage done to one enemy, times the number of enemies hit.", (AcceptableValueBase)null, Array.Empty<object>()));
		daggerspherebox = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Hitbox"), 1.1f, new ConfigDescription("Feel free to mess with this, it's measured as a radius. Serrated Shiv is 0.3", (AcceptableValueBase)null, Array.Empty<object>()));
		throwvelocity = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Velocity"), 200f, new ConfigDescription("Default is 185, changed to 200 for v2.2, Serrated Shiv is 160", (AcceptableValueBase)null, Array.Empty<object>()));
		KatAssets.PopulateAssets();
		Prefabs.CreatePrefabs();
		CreateSurvPrefab();
		RegisterStates();
		RegisterCharacter();
		Hook.Hooks();
		RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			vultureIndex = BodyCatalog.FindBodyIndex("VultureBody");
			pestIndex = BodyCatalog.FindBodyIndex("FlyingVerminBody");
			katIndex = BodyCatalog.FindBodyIndex("NinesKatarinaBody");
		});
	}

	internal static void CreateSurvPrefab()
	{
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00db: Expected O, but got Unknown
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_0137: Unknown result type (might be due to invalid IL or missing references)
		//IL_0147: Unknown result type (might be due to invalid IL or missing references)
		//IL_014d: Expected O, but got Unknown
		//IL_0174: 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_0196: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0200: Unknown result type (might be due to invalid IL or missing references)
		//IL_0278: Unknown result type (might be due to invalid IL or missing references)
		//IL_0281: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0412: Unknown result type (might be due to invalid IL or missing references)
		//IL_0417: Unknown result type (might be due to invalid IL or missing references)
		//IL_047b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0480: Unknown result type (might be due to invalid IL or missing references)
		//IL_0498: Unknown result type (might be due to invalid IL or missing references)
		//IL_049d: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_04b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_04da: Unknown result type (might be due to invalid IL or missing references)
		//IL_04df: Unknown result type (might be due to invalid IL or missing references)
		//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0504: Unknown result type (might be due to invalid IL or missing references)
		//IL_050e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0515: Expected O, but got Unknown
		//IL_0542: Unknown result type (might be due to invalid IL or missing references)
		//IL_0554: 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_061d: Unknown result type (might be due to invalid IL or missing references)
		//IL_063b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0654: Unknown result type (might be due to invalid IL or missing references)
		//IL_0672: Unknown result type (might be due to invalid IL or missing references)
		//IL_067f: 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_0685: Unknown result type (might be due to invalid IL or missing references)
		//IL_0708: Unknown result type (might be due to invalid IL or missing references)
		//IL_0752: Unknown result type (might be due to invalid IL or missing references)
		//IL_0766: Unknown result type (might be due to invalid IL or missing references)
		//IL_077a: Unknown result type (might be due to invalid IL or missing references)
		//IL_078e: Unknown result type (might be due to invalid IL or missing references)
		//IL_07e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a65: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a6a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a98: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a9d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ac6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0acb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0adc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ae1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b0a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b0f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b20: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b25: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b4e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b53: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b64: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b69: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b92: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b97: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bad: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c19: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c3b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c60: Unknown result type (might be due to invalid IL or missing references)
		characterPrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody"), "NinesKatarinaBody", true);
		characterPrefab.AddComponent<BladeController>();
		characterPrefab.AddComponent<ExtraSkillLocator>();
		characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true;
		Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("ModelBase")).gameObject);
		Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("CameraPivot")).gameObject);
		Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("AimOrigin")).gameObject);
		GameObject val = KatAssets.MainAssetBundle.LoadAsset<GameObject>("katarina");
		KatarinaTracker katarinaTracker = characterPrefab.AddComponent<KatarinaTracker>();
		((HuntressTracker)katarinaTracker).maxTrackingAngle = 93f;
		((HuntressTracker)katarinaTracker).maxTrackingDistance = 21f;
		GameObject val2 = new GameObject("ModelBase");
		val2.transform.parent = characterPrefab.transform;
		val2.transform.localPosition = new Vector3(0f, -0.94f, 0f);
		val2.transform.localRotation = Quaternion.identity;
		val2.transform.localScale = new Vector3(1.42f, 1.42f, 1.42f);
		GameObject val3 = new GameObject("AimOrigin");
		val3.transform.parent = val2.transform;
		val3.transform.localPosition = new Vector3(0f, 1.7f, 0f);
		val3.transform.localRotation = Quaternion.identity;
		val3.transform.localScale = Vector3.one;
		Transform transform = val.transform;
		transform.parent = val2.transform;
		transform.localPosition = Vector3.zero;
		transform.localScale = new Vector3(1f, 1f, 1f);
		transform.localRotation = Quaternion.identity;
		CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>();
		component.moveVector = Vector3.zero;
		component.targetTransform = val2.transform;
		component.overrideAnimatorForwardTransform = null;
		component.rootMotionAccumulator = null;
		component.modelAnimator = val.GetComponentInChildren<Animator>();
		component.driveFromRootRotation = false;
		component.turnSpeed = 720f;
		CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>();
		((Object)component2).name = "NinesKatarinaBody";
		component2.baseNameToken = "NINESKATARINA_NAME";
		component2.subtitleNameToken = "NINESKATARINA_SUBTITLE";
		component2.bodyFlags = (BodyFlags)16;
		component2.bodyFlags = (BodyFlags)32;
		component2.rootMotionInMainState = false;
		component2.mainRootSpeed = 0f;
		component2.baseMaxHealth = 120f;
		component2.levelMaxHealth = 35f;
		component2.baseRegen = 1f;
		component2.levelRegen = 0.33f;
		component2.baseMaxShield = 0f;
		component2.levelMaxShield = 0f;
		component2.baseMoveSpeed = 7f;
		component2.levelMoveSpeed = 0f;
		component2.baseAcceleration = 110f;
		component2.baseJumpPower = 15f;
		component2.levelJumpPower = 0f;
		component2.baseDamage = 13f;
		component2.levelDamage = 2.8f;
		component2.baseAttackSpeed = 1.3f;
		component2.levelAttackSpeed = 0.02f;
		component2.baseCrit = 1f;
		component2.levelCrit = 0f;
		component2.baseArmor = 20f;
		component2.levelArmor = 0f;
		component2.baseJumpCount = 1;
		component2.sprintingSpeedMultiplier = 1.45f;
		component2.wasLucky = false;
		component2._defaultCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2CrosshairPrepRevolver.prefab").WaitForCompletion();
		component2.hideCrosshair = false;
		component2.aimOriginTransform = val3.transform;
		component2.hullClassification = (HullClassification)0;
		component2.portraitIcon = KatAssets.MainAssetBundle.LoadAsset<Texture>("KatIcon");
		component2.isChampion = false;
		component2.currentVehicle = null;
		component2.skinIndex = 0u;
		component2.preferredPodPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/networkedobjects/robocratepod");
		component2.bodyColor = characterColor;
		CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>();
		component3.walkSpeedPenaltyCoefficient = 1f;
		component3.characterDirection = component;
		component3.muteWalkMotion = false;
		component3.mass = 110f;
		component3.airControl = 0.25f;
		component3.disableAirControlUntilCollision = false;
		component3.generateParametersOnAwake = true;
		InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>();
		component4.moveVector = Vector3.zero;
		CharacterCameraParams val4 = ScriptableObject.CreateInstance<CharacterCameraParams>();
		val4.data.minPitch = BlendableFloat.op_Implicit(-70f);
		val4.data.maxPitch = BlendableFloat.op_Implicit(70f);
		val4.data.wallCushion = BlendableFloat.op_Implicit(0.1f);
		val4.data.pivotVerticalOffset = BlendableFloat.op_Implicit(0.6f);
		val4.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, -10f));
		GameObject val5 = new GameObject("CameraPivot");
		val5.transform.parent = characterPrefab.transform;
		val5.transform.localPosition = new Vector3(0f, 0.5f, 0f);
		val5.transform.localRotation = Quaternion.identity;
		CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>();
		component5.cameraParams = val4;
		component5.cameraPivotTransform = characterPrefab.transform.Find("CameraPivot");
		component5.recoil = Vector2.zero;
		component5.dontRaycastToPivot = false;
		ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>();
		component6.modelTransform = transform;
		component6.modelBaseTransform = val2.transform;
		component6.dontReleaseModelOnDeath = false;
		component6.autoUpdateModelTransform = true;
		component6.dontDetatchFromParent = false;
		component6.noCorpse = false;
		component6.normalizeToFloor = false;
		component6.preserveModel = false;
		ChildLocator component7 = val.GetComponent<ChildLocator>();
		CharacterModel val6 = val.AddComponent<CharacterModel>();
		SkinnedMeshRenderer[] componentsInChildren = val.GetComponentsInChildren<SkinnedMeshRenderer>();
		List<RendererInfo> list = new List<RendererInfo>();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			RendererInfo val7 = default(RendererInfo);
			val7.renderer = (Renderer)(object)componentsInChildren[i];
			val7.defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.color, ((Renderer)componentsInChildren[i]).material.GetTexture("_MainTex"), Color.white, 0f, null, 1f, null);
			val7.defaultShadowCastingMode = (ShadowCastingMode)1;
			val7.ignoreOverlays = false;
			RendererInfo item = val7;
			list.Add(item);
		}
		val6.baseRendererInfos = list.ToArray();
		val6.autoPopulateLightInfos = true;
		val6.invisibilityCount = 0;
		val6.temporaryOverlays = new List<TemporaryOverlayInstance>();
		Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val6, "mainSkinnedMeshRenderer", componentsInChildren[0]);
		SkinnedMeshRenderer fieldValue = Reflection.GetFieldValue<SkinnedMeshRenderer>((object)val6, "mainSkinnedMeshRenderer");
		ModelSkinController val8 = val.AddComponent<ModelSkinController>();
		LanguageAPI.Add("NINESKATARINABODY_DEFAULT_SKIN_NAME", "Default");
		SkinDefInfo val9 = default(SkinDefInfo);
		val9.BaseSkins = Array.Empty<SkinDef>();
		val9.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val9.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val9.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[0];
		val9.Icon = LoadoutAPI.CreateSkinIcon(new Color(0.9098039f, 23f / 51f, 0.8901961f), new Color(0.9372549f, 44f / 51f, 56f / 85f), new Color(38f / 85f, 0.38039216f, 0.5254902f), new Color(50f / 51f, 16f / 51f, 49f / 85f));
		val9.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val9.Name = "Default";
		val9.NameToken = "Battle Queen";
		val9.RendererInfos = val6.baseRendererInfos;
		val9.RootObject = val;
		val9.UnlockableDef = null;
		SkinDef val10 = LoadoutAPI.CreateNewSkinDef(val9);
		val8.skins = (SkinDef[])(object)new SkinDef[1] { val10 };
		HealthComponent component8 = characterPrefab.GetComponent<HealthComponent>();
		component8.health = 110f;
		component8.shield = 0f;
		component8.barrier = 0f;
		component8.magnetiCharge = 0f;
		component8.body = null;
		component8.dontShowHealthbar = false;
		component8.globalDeathEventChanceCoefficient = 1f;
		characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f;
		characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true;
		SfxLocator component9 = characterPrefab.GetComponent<SfxLocator>();
		component9.deathSound = "Play_DeathQuote";
		component9.barkSound = "";
		component9.openSound = "";
		component9.landingSound = "Play_char_land";
		component9.fallDamageSound = "Play_char_land_fall_damage";
		component9.aliveLoopStart = "";
		component9.aliveLoopStop = "";
		Rigidbody component10 = characterPrefab.GetComponent<Rigidbody>();
		component10.mass = 100f;
		component10.drag = 0f;
		component10.angularDrag = 0f;
		component10.useGravity = false;
		component10.isKinematic = true;
		component10.interpolation = (RigidbodyInterpolation)0;
		component10.collisionDetectionMode = (CollisionDetectionMode)0;
		component10.constraints = (RigidbodyConstraints)0;
		CapsuleCollider component11 = ((Component)component7.FindChild("collider")).GetComponent<CapsuleCollider>();
		((Collider)component11).isTrigger = false;
		((Collider)component11).material = null;
		KinematicCharacterMotor component12 = characterPrefab.GetComponent<KinematicCharacterMotor>();
		HurtBoxGroup val11 = val.AddComponent<HurtBoxGroup>();
		HurtBox val12 = ((Component)component11).gameObject.AddComponent<HurtBox>();
		((Component)val12).gameObject.layer = LayerIndex.entityPrecise.intVal;
		val12.healthComponent = component8;
		val12.isBullseye = true;
		val12.damageModifier = (DamageModifier)0;
		val12.hurtBoxGroup = val11;
		val12.indexInGroup = 0;
		val11.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val12 };
		val11.mainHurtBox = val12;
		val11.bullseyeCount = 1;
		AimAnimator val13 = val.AddComponent<AimAnimator>();
		val13.inputBank = component4;
		val13.directionComponent = component;
		val13.pitchRangeMax = 55f;
		val13.pitchRangeMin = -50f;
		val13.yawRangeMin = -44f;
		val13.yawRangeMax = 44f;
		val13.pitchGiveupRange = 30f;
		val13.yawGiveupRange = 10f;
		val13.giveupDuration = 8f;
		EntityStateMachine component13 = ((Component)component2).GetComponent<EntityStateMachine>();
		component13.mainStateType = new SerializableEntityStateType(typeof(CharacterMain));
		CharacterDeathBehavior component14 = characterPrefab.GetComponent<CharacterDeathBehavior>();
		component14.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>();
		component14.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath));
		EntityStateMachine val14 = characterPrefab.AddComponent<EntityStateMachine>();
		val14.customName = "Blade";
		val14.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val14.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val15 = characterPrefab.AddComponent<EntityStateMachine>();
		val15.customName = "Blink";
		val15.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val15.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val16 = characterPrefab.AddComponent<EntityStateMachine>();
		val16.customName = "Speen";
		val16.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val16.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val17 = characterPrefab.AddComponent<EntityStateMachine>();
		val17.customName = "Swipe";
		val17.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val17.mainStateType = new SerializableEntityStateType(typeof(Idle));
		NetworkStateMachine component15 = ((Component)component2).GetComponent<NetworkStateMachine>();
		List<EntityStateMachine> list2 = component15.stateMachines.ToList();
		list2.Add(val14);
		list2.Add(val15);
		list2.Add(val16);
		list2.Add(val17);
		component15.stateMachines = list2.ToArray();
		GameObject val18 = Utils.CreateHitbox("Primary", val.transform, new Vector3(3.5f, 4.5f, 3.8f));
		val18.transform.localPosition = new Vector3(0f, 1f, 1f);
		Utils.CreateHitbox("Utility", val.transform, new Vector3(8f, 8f, 8f));
		ContentAddition.AddBody(characterPrefab);
	}

	private void RegisterCharacter()
	{
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = PrefabAPI.InstantiateClone(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "NinesKatarinaDisplay", true);
		val.AddComponent<NetworkIdentity>();
		string text = "Katarina is a blazing-speed melee assassin who can infinitely reset her abilities so long as there is something to kill.<style=cSub>\r\n\r\n< ! > Using your abilities in the correct order will allow you to reset them more than once against even a single enemy. Experiment with different combos to maximize your damage output and zip around the battlefield.<style=cSub>\r\n\r\n< ! > The fan of daggers from Voracious Blade will not spawn pickups, but are good for dealing with tanky enemies at range.<style=cSub>\r\n\r\n< ! > Shunpo does additional bonus damage based on the target's current % HP and heals you for a portion of that amount. Naturally you'll yield the highest damage/healing output by casting it on full-health targets.<style=cSub>\r\n\r\n< ! > Death lotus targets more enemies the greater attack speed you have and its cooldown is decreased by 4 seconds with each kill.";
		string text2 = "..and so she left, her instincts, and her blades honed evermore.";
		string text3 = "..and so she stayed, her hubris proving lethal.";
		LanguageAPI.Add("NINESKATARINA_NAME", "Katarina");
		LanguageAPI.Add("NINESKATARINA_DESCRIPTION", text);
		LanguageAPI.Add("NINESKATARINA_SUBTITLE", "The Sinister Blade");
		LanguageAPI.Add("NINESKATARINA_OUTRO", text2);
		LanguageAPI.Add("NINESKATARINA_FAIL", text3);
		SurvivorDef val2 = ScriptableObject.CreateInstance<SurvivorDef>();
		val2.cachedName = "NINESKATARINA_NAME";
		val2.unlockableDef = null;
		val2.descriptionToken = "NINESKATARINA_DESCRIPTION";
		val2.primaryColor = characterColor;
		val2.bodyPrefab = characterPrefab;
		val2.displayPrefab = val;
		val2.outroFlavorToken = "NINESKATARINA_OUTRO";
		val2.desiredSortPosition = 30f;
		val2.mainEndingEscapeFailureFlavorToken = "NINESKATARINA_FAIL";
		ContentAddition.AddSurvivorDef(val2);
		SkillSetup();
		GameObject val3 = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterMasters/CommandoMonsterMaster"), "NinesKatarinaMaster", true);
		ContentAddition.AddMaster(val3);
		CharacterMaster component = val3.GetComponent<CharacterMaster>();
		component.bodyPrefab = characterPrefab;
	}

	private void RegisterStates()
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: 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_003b: 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_004b: 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_005b: Unknown result type (might be due to invalid IL or missing references)
		bool flag = default(bool);
		ContentAddition.AddEntityState<Primary>(ref flag);
		ContentAddition.AddEntityState<Secondary>(ref flag);
		ContentAddition.AddEntityState<ThrowSingleDagger>(ref flag);
		ContentAddition.AddEntityState<ThrowGenjiDaggers>(ref flag);
		ContentAddition.AddEntityState<Utility>(ref flag);
		ContentAddition.AddEntityState<AltUtility>(ref flag);
		ContentAddition.AddEntityState<Blink>(ref flag);
		ContentAddition.AddEntityState<BlinkTarget>(ref flag);
		ContentAddition.AddEntityState<Special>(ref flag);
		ContentAddition.AddEntityState<CharacterMain>(ref flag);
		ContentAddition.AddEntityState<BaseDaggerPickupState>(ref flag);
		ContentAddition.AddEntityState<DaggerPickupAir>(ref flag);
	}

	private void SkillSetup()
	{
		GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>();
		foreach (GenericSkill val in componentsInChildren)
		{
			Object.DestroyImmediate((Object)(object)val);
		}
		PassiveSetup();
		PrimarySetup();
		SecondarySetup();
		ExtraSecondary();
		AltUtilitySetup();
		ExtraUtility();
		SpecialSetup();
	}

	private void PassiveSetup()
	{
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("NINESKATARINA_PASSIVE_NAME", "Voracity");
		LanguageAPI.Add("NINESKATARINA_PASSIVE_DESCRIPTION", "Always looking for her next target, Katarina <color=#E92630>resets</color> her ability cooldowns <style=cIsDamage>on-kill</style>. Hitting an enemy with a Voracious Blade will spawn a <color=#E92630>dagger</color> that can be picked up for <style=cIsDamage>500% damage</style>.");
		component.passiveSkill.enabled = true;
		component.passiveSkill.skillNameToken = "NINESKATARINA_PASSIVE_NAME";
		component.passiveSkill.skillDescriptionToken = "NINESKATARINA_PASSIVE_DESCRIPTION";
		component.passiveSkill.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("Passive1");
	}

	private void PrimarySetup()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0144: 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_0166: Expected O, but got Unknown
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("NINESKATARINA_M1", "Sinister Steel");
		LanguageAPI.Add("NINESKATARINA_M1_DESCRIPTION", "<style=cIsDamage>Slayer.</style> Swipe your blades in front of you for <style=cIsDamage>210% damage.</style>");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(Primary));
		val.activationStateMachineName = "Weapon";
		val.baseMaxStock = 0;
		val.baseRechargeInterval = 0f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = true;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = false;
		val.cancelSprintingOnActivation = true;
		val.rechargeStock = 0;
		val.requiredStock = 0;
		val.stockToConsume = 0;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("primary");
		val.skillDescriptionToken = "NINESKATARINA_M1_DESCRIPTION";
		val.skillName = "NINESKATARINA_M1";
		val.skillNameToken = "NINESKATARINA_M1";
		val.keywordTokens = new string[1] { "KEYWORD_SLAYER" };
		ContentAddition.AddSkillDef(val);
		component.primary = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val2);
		SkillFamily skillFamily = component.primary.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void SecondarySetup()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0159: Expected O, but got Unknown
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("NINESKATARINA_M2", "Voracious Blade");
		LanguageAPI.Add("NINESKATARINA_M2_DESCRIPTION", "Throw a dagger for <style=cIsDamage>360% damage</style>, or hold to throw a fan of daggers for <style=cIsDamage>5x135% damage</style> that <style=cIsHealth>hemorrhage.</style>");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(Secondary));
		val.activationStateMachineName = "Blade";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 5.5f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.dontAllowPastMaxStocks = true;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("secondary");
		val.skillDescriptionToken = "NINESKATARINA_M2_DESCRIPTION";
		val.skillName = "NINESKATARINA_M2";
		val.skillNameToken = "NINESKATARINA_M2";
		ContentAddition.AddSkillDef(val);
		component.secondary = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val2);
		SkillFamily skillFamily = component.secondary.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void ExtraSecondary()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Expected O, but got Unknown
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0155: Unknown result type (might be due to invalid IL or missing references)
		ExtraSkillLocator component = characterPrefab.GetComponent<ExtraSkillLocator>();
		LanguageAPI.Add("NINESKATARINA_ALT2_SECONDARY", "Preparation");
		LanguageAPI.Add("NINESKATARINA_ALT2_SECONDARY_DESCRIPTION", "Swipe your blades around you for <style=cIsDamage>500% damage</style>. Decreases the cooldown of both <color=#E92630>Shunpo</color> techniques by <style=cIsUtility>7 seconds</style>.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(BaseDaggerPickupState));
		val.activationStateMachineName = "Swipe";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 6f;
		val.beginSkillCooldownOnSkillEnd = false;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("Preparation");
		val.skillDescriptionToken = "NINESKATARINA_ALT2_SECONDARY_DESCRIPTION";
		val.skillName = "NINESKATARINA_ALT2_SECONDARY";
		val.skillNameToken = "NINESKATARINA_ALT2_SECONDARY";
		ContentAddition.AddSkillDef(val);
		component.extraSecond = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.extraSecond, "_skillFamily", val2);
		SkillFamily skillFamily = component.extraSecond.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void UtilitySetup()
	{
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0135: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Expected O, but got Unknown
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		KatarinaSkillSwitchBehaviour component = characterPrefab.GetComponent<KatarinaSkillSwitchBehaviour>();
		SkillLocator component2 = characterPrefab.GetComponent<SkillLocator>();
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(Utility));
		val.activationStateMachineName = "Blink";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 10f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = false;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = true;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility");
		val.skillDescriptionToken = "NINESKATARINA_UTIL_DESCRIPTION";
		val.skillName = "NINESKATARINA_UTIL";
		val.skillNameToken = "NINESKATARINA_UTIL";
		ContentAddition.AddSkillDef(val);
		component2.utility = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component2.utility, "_skillFamily", val2);
		SkillFamily skillFamily = component2.utility.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void AltUtilitySetup()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0159: Expected O, but got Unknown
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("NINESKATARINAALT_UTIL", "Scheman Shunpo");
		LanguageAPI.Add("NINESKATARINAALT_UTIL_DESCRIPTION", "Dash in the <color=#E92630>blink of an eye</color> to target enemy for <style=cIsDamage>260% damage</style> on-arrival.");
		KatarinaSkillDef katarinaSkillDef = ScriptableObject.CreateInstance<KatarinaSkillDef>();
		((SkillDef)katarinaSkillDef).activationState = new SerializableEntityStateType(typeof(AltUtility));
		((SkillDef)katarinaSkillDef).activationStateMachineName = "Blink";
		((SkillDef)katarinaSkillDef).baseMaxStock = 1;
		((SkillDef)katarinaSkillDef).baseRechargeInterval = 6.5f;
		((SkillDef)katarinaSkillDef).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)katarinaSkillDef).canceledFromSprinting = false;
		((SkillDef)katarinaSkillDef).fullRestockOnAssign = false;
		((SkillDef)katarinaSkillDef).interruptPriority = (InterruptPriority)0;
		((SkillDef)katarinaSkillDef).isCombatSkill = false;
		((SkillDef)katarinaSkillDef).mustKeyPress = true;
		((SkillDef)katarinaSkillDef).cancelSprintingOnActivation = false;
		((SkillDef)katarinaSkillDef).rechargeStock = 1;
		((SkillDef)katarinaSkillDef).requiredStock = 1;
		((SkillDef)katarinaSkillDef).stockToConsume = 1;
		((SkillDef)katarinaSkillDef).forceSprintDuringState = true;
		((SkillDef)katarinaSkillDef).icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility2");
		((SkillDef)katarinaSkillDef).skillDescriptionToken = "NINESKATARINAALT_UTIL_DESCRIPTION";
		((SkillDef)katarinaSkillDef).skillName = "NINESKATARINAALT_UTIL";
		((SkillDef)katarinaSkillDef).skillNameToken = "NINESKATARINAALT_UTIL";
		ContentAddition.AddSkillDef((SkillDef)(object)katarinaSkillDef);
		component.utility = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>();
		val.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.utility, "_skillFamily", val);
		SkillFamily skillFamily = component.utility.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val2 = new Variant
		{
			skillDef = (SkillDef)(object)katarinaSkillDef
		};
		((Variant)(ref val2)).viewableNode = new Node(((SkillDef)katarinaSkillDef).skillNameToken, false, (Node)null);
		variants[0] = val2;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void ExtraUtility()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Expected O, but got Unknown
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0155: Unknown result type (might be due to invalid IL or missing references)
		ExtraSkillLocator component = characterPrefab.GetComponent<ExtraSkillLocator>();
		LanguageAPI.Add("NINESKATARINA_UTIL", "Noxian Shunpo");
		LanguageAPI.Add("NINESKATARINA_UTIL_DESCRIPTION", "Dash in the <color=#E92630>blink of an eye</color> to target location for <style=cIsDamage>260% damage</style> on-arrival.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(Utility));
		val.activationStateMachineName = "Blink";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 9f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = false;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = true;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility");
		val.skillDescriptionToken = "NINESKATARINA_UTIL_DESCRIPTION";
		val.skillName = "NINESKATARINA_UTIL";
		val.skillNameToken = "NINESKATARINA_UTIL";
		ContentAddition.AddSkillDef(val);
		component.extraThird = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.extraThird, "_skillFamily", val2);
		SkillFamily skillFamily = component.extraThird.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void SpecialSetup()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: 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_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Expected O, but got Unknown
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0155: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("NINESKATARINA_SPEC", "Death Lotus");
		LanguageAPI.Add("NINESKATARINA_SPEC_DESCRIPTION", "<style=cIsUtility>Channel for 3 seconds,</style> rapidly throwing daggers at the nearest <style=cIsDamage>5 enemies</style> for <style=cIsDamage>195% damage</style> per dagger.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(Special));
		val.activationStateMachineName = "Body";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 45f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = true;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)2;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("special");
		val.skillDescriptionToken = "NINESKATARINA_SPEC_DESCRIPTION";
		val.skillName = "NINESKATARINA_SPEC";
		val.skillNameToken = "NINESKATARINA_SPEC";
		ContentAddition.AddSkillDef(val);
		component.special = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.special, "_skillFamily", val2);
		SkillFamily skillFamily = component.special.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
	}
}
internal class Prefabs
{
	internal static GameObject dagger1ProjectileThrow;

	internal static GameObject dagger2ProjectileThrow;

	internal static GameObject dagger3ProjectileThrow;

	internal static GameObject dagger4ProjectileThrow;

	internal static GameObject dagger5ProjectileThrow;

	internal static GameObject dagger6ProjectileThrow;

	internal static GameObject dagger1ProjectilePickup;

	internal static GameObject dagger2ProjectilePickup;

	internal static GameObject dagger3ProjectilePickup;

	internal static GameObject dagger4ProjectilePickup;

	internal static GameObject dagger5ProjectilePickup;

	internal static GameObject dagger6ProjectilePickup;

	internal static GameObject dagger1ProjectileThrowBleed;

	internal static GameObject dagger2ProjectileThrowBleed;

	internal static GameObject dagger3ProjectileThrowBleed;

	internal static GameObject dagger4ProjectileThrowBleed;

	internal static GameObject dagger5ProjectileThrowBleed;

	internal static GameObject dagger6ProjectileThrowBleed;

	internal static GameObject pickupfx;

	internal static GameObject lotusfx;

	internal static GameObject altlotusfx;

	internal static GameObject shunpofx;

	internal static GameObject silentshunpofx;

	internal static GameObject silentslashfx;

	internal static GameObject silentcollapseEffect;

	internal static GameObject aimIndicator;

	internal static ModdedDamageType blade1;

	internal static ModdedDamageType blade2;

	internal static ModdedDamageType blade3;

	internal static ModdedDamageType blade4;

	internal static ModdedDamageType blade5;

	internal static ModdedDamageType blade6;

	internal static ModdedDamageType bladeBleed;

	internal static ModdedDamageType blink;

	internal static ModdedDamageType daggerPickup;

	private static float daggerMaxPickupTime = 5.5f;

	internal static void CreatePrefabs()
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: 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_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//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_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: 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_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0133: Unknown result type (might be due to invalid IL or missing references)
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_014a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0199: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0222: 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_02ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0445: Unknown result type (might be due to invalid IL or missing references)
		//IL_0510: Unknown result type (might be due to invalid IL or missing references)
		//IL_05db: Unknown result type (might be due to invalid IL or missing references)
		//IL_06a6: 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_07ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_07bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_07fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0801: Unknown result type (might be due to invalid IL or missing references)
		//IL_083e: 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_0880: Unknown result type (might be due to invalid IL or missing references)
		//IL_0885: Unknown result type (might be due to invalid IL or missing references)
		//IL_08a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_08a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_0927: Unknown result type (might be due to invalid IL or missing references)
		//IL_092c: 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_0a74: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b20: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b61: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0be3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c24: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d3e: Unknown result type (might be due to invalid IL or missing references)
		blade1 = DamageAPI.ReserveDamageType();
		blade2 = DamageAPI.ReserveDamageType();
		blade3 = DamageAPI.ReserveDamageType();
		blade4 = DamageAPI.ReserveDamageType();
		blade5 = DamageAPI.ReserveDamageType();
		blade6 = DamageAPI.ReserveDamageType();
		bladeBleed = DamageAPI.ReserveDamageType();
		blink = DamageAPI.ReserveDamageType();
		daggerPickup = DamageAPI.ReserveDamageType();
		OrbAPI.AddOrb(typeof(LotusBladeOrb));
		GameObject obj = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion();
		GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2ShivProjectile.prefab").WaitForCompletion(), "BaseProjectile", false);
		val.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)0);
		val.GetComponent<ProjectileSingleTargetImpact>().hitSoundString = null;
		val.GetComponent<ProjectileSingleTargetImpact>().enemyHitSoundString = null;
		aimIndicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressTrackingIndicator.prefab").WaitForCompletion(), "KatAimIndicator", false);
		SpriteRenderer[] componentsInChildren = aimIndicator.GetComponentsInChildren<SpriteRenderer>();
		float num = default(float);
		float num2 = default(float);
		float num3 = default(float);
		float num4 = default(float);
		float num5 = default(float);
		float num6 = default(float);
		foreach (SpriteRenderer val2 in componentsInChildren)
		{
			Color.RGBToHSV(Color.magenta, ref num, ref num2, ref num3);
			Color.RGBToHSV(val2.color, ref num4, ref num5, ref num6);
			Color color = Color.HSVToRGB(num, num5, num6);
			color.a = val2.color.a;
			val2.color = color;
		}
		GameObject val3 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger1fab"), "KatarinaBlade1ProjectileGhost", false);
		val3.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val3.transform, new Color(1f, 0f, 0.7921569f));
		GameObject val4 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger2fab"), "KatarinaBlade2ProjectileGhost", false);
		val4.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val4.transform, new Color(0.5921569f, 0f, 82f / 85f));
		GameObject val5 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger3fab"), "KatarinaBlade3ProjectileGhost", false);
		val5.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val5.transform, new Color(0f, 82f / 85f, 7f / 85f));
		GameObject val6 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger4fab"), "KatarinaBlade4ProjectileGhost", false);
		val6.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val6.transform, new Color(1f, 0f, 0f));
		GameObject val7 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger5fab"), "KatarinaBlade5ProjectileGhost", false);
		val7.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val7.transform, new Color(2f / 85f, 52f / 85f, 1f));
		GameObject val8 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger6fab"), "KatarinaBlade6ProjectileGhost", false);
		val8.AddComponent<ProjectileGhostController>();
		Utils.CreateNewColoredIndicator(obj, val8.transform, new Color(0.20784314f, 0.031372547f, 0.5372549f));
		dagger1ProjectilePickup = PrefabAPI.InstantiateClone(val, "KatarinaBlade1ProjectilePickup", true);
		dagger1ProjectilePickup.GetComponent<ProjectileController>().ghostPrefab = val3;
		dagger1ProjectilePickup.GetComponent<ProjectileStickOnImpact>().ignoreCharacters = true;
		dagger1ProjectilePickup.GetComponent<ProjectileStickOnImpact>().stickSoundString = "Play_DaggerLand";
		dagger1ProjectilePickup.GetComponent<ProjectileSimple>().desiredForwardSpeed = 20f;
		dagger1ProjectilePickup.GetComponent<Rigidbody>().mass = 1f;
		ProjectileImpactExplosion val9 = dagger1ProjectilePickup.AddComponent<ProjectileImpactExplosion>();
		val9.lifetime = 10f;
		val9.destroyOnEnemy = false;
		val9.destroyOnWorld = false;
		val9.timerAfterImpact = true;
		val9.lifetimeAfterImpact = d