Decompiled source of SkillsFromtheDeepEndRevived v2.0.1

Skillsfromthedeepend.dll

Decompiled a day ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.QuestVolatileBattery;
using HG.Reflection;
using Microsoft.CodeAnalysis;
using On.RoR2;
using R2API;
using RoR2;
using RoR2.ContentManagement;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.Networking;

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

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace Skillsfromthedeepend
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("Phreel.SkillsFromTheDeepEndRevived", "SkillsFromTheDeepEndRevived", "2.0.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Deepend : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_RestockSteplike <>9__8_0;

			internal void <OOOOOYEAHBROTHERRRRR>b__8_0(orig_RestockSteplike orig, GenericSkill self)
			{
				//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Expected O, but got Unknown
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_011f: Unknown result type (might be due to invalid IL or missing references)
				//IL_012b: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_016a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_0177: Unknown result type (might be due to invalid IL or missing references)
				//IL_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_018e: Expected O, but got Unknown
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_019c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
				int stock = self.stock;
				orig.Invoke(self);
				if (self.stock <= stock || !((Object)(object)self.skillDef == (Object)(object)DetsDef) || !Object.op_Implicit((Object)(object)self.characterBody) || !self.characterBody.hasEffectiveAuthority)
				{
					return;
				}
				EmbeddedDetsTracker component = ((Component)self).GetComponent<EmbeddedDetsTracker>();
				if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)self.characterBody) || !Object.op_Implicit((Object)(object)self.characterBody.master))
				{
					return;
				}
				for (int i = 0; i < component.victims.Count; i++)
				{
					HealthComponent val = component.victims[i];
					if (Object.op_Implicit((Object)(object)val))
					{
						GameObject gameObject = ((Component)val).gameObject;
						EffectManager.SpawnEffect(Dets, new EffectData
						{
							origin = gameObject.transform.position,
							scale = 4f
						}, true);
						BlastAttack val2 = new BlastAttack
						{
							radius = 5f,
							procCoefficient = 0.2f,
							position = ((Component)component.victims[i]).transform.position,
							attacker = ((Component)self).gameObject,
							crit = Util.CheckRoll(self.characterBody.crit, self.characterBody.master),
							baseDamage = self.characterBody.damage * 2f,
							falloffModel = (FalloffModel)2,
							damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131072), (DamageTypeExtended)0, (DamageSource)1),
							baseForce = 0f
						};
						val2.teamIndex = TeamComponent.GetObjectTeam(val2.attacker);
						val2.attackerFiltering = (AttackerFiltering)2;
						val2.Fire();
					}
				}
				component.victims = new List<HealthComponent>();
			}
		}

		public const string PluginGUID = "Phreel.SkillsFromTheDeepEndRevived";

		public const string PluginAuthor = "Phreel";

		public const string PluginName = "SkillsFromTheDeepEndRevived";

		public const string PluginVersion = "2.0.1";

		public static ModdedDamageType acridBuffHandler = DamageAPI.ReserveDamageType();

		public static BuffDef Agony;

		public static BuffDef Tactics;

		public static NetworkSoundEventDef AgonySound;

		public static GameObject effect;

		public static GameObject pew;

		public static GameObject Dets;

		public CrocoDamageTypeController AcridComponent;

		public DamageType MiseryC;

		public static SteppedSkillDef DetsDef;

		public static SkillDef FusilladeDef;

		public static SkillDef SalvoDef;

		public static SkillDef EngieExplode;

		public static SkillDef EngieJump;

		public static SkillDef OUAGGG;

		public static SkillDef Powermdoe;

		public static SkillDef Dill;

		public static SkillDef Insane;

		public AssetBundle assetBundle;

		public GameObject Effect = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/CrocoLeapExplosion");

		public static Sprite CreateSpriteBadWay(byte[] resourceBytes)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			if (resourceBytes == null)
			{
				throw new ArgumentNullException("resourceBytes");
			}
			Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false);
			ImageConversion.LoadImage(val, resourceBytes, false);
			return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f));
		}

		private static void CharacterAltSkill(GenericSkill genericSkill, SkillDef skillDef, string name, string description)
		{
			//IL_0106: 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_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Expected O, but got Unknown
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			SkillFamily skillFamily = genericSkill.skillFamily;
			int num = skillFamily.variants.Length;
			string text = ((Object)((Component)genericSkill).gameObject).name.ToUpper();
			string text2 = genericSkill.skillName.ToUpper();
			skillDef.skillName = text + "_" + text2 + "_DEEPENDALT" + num + "_NAME";
			skillDef.skillNameToken = text + "_" + text2 + "_DEEPENDALT" + num + "_NAME";
			skillDef.skillDescriptionToken = text + "_" + text2 + "_DEEPENDALT" + num + "_DESCRIPTION";
			LanguageAPI.Add(skillDef.skillNameToken, name);
			LanguageAPI.Add(skillDef.skillDescriptionToken, description);
			bool flag = default(bool);
			ContentAddition.AddEntityState(((SerializableEntityStateType)(ref skillDef.activationState)).stateType, ref flag);
			ContentAddition.AddSkillDef(skillDef);
			Array.Resize(ref skillFamily.variants, num + 1);
			Variant[] variants = skillFamily.variants;
			int num2 = skillFamily.variants.Length - 1;
			Variant val = new Variant
			{
				skillDef = skillDef
			};
			((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null);
			variants[num2] = val;
		}

		public void Fusillade()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/HuntressBody");
			FusilladeDef = ScriptableObject.CreateInstance<SkillDef>();
			FusilladeDef.activationState = new SerializableEntityStateType(typeof(NoAim));
			FusilladeDef.interruptPriority = (InterruptPriority)0;
			FusilladeDef.activationStateMachineName = "Weapon";
			FusilladeDef.baseRechargeInterval = 0f;
			FusilladeDef.cancelSprintingOnActivation = false;
			FusilladeDef.canceledFromSprinting = false;
			FusilladeDef.isCombatSkill = true;
			FusilladeDef.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			FusilladeDef.icon = assetBundle.LoadAsset<Sprite>("fusilladeIcon.png");
			CharacterAltSkill(val.GetComponent<SkillLocator>().primary, FusilladeDef, "Fusillade", "Shoot a modified arrow from your bow that does <style=cIsDamage>375% damage</style> and has <style=cDeath>NO AUTOAIM</style>. <style=cKeywordName>Pierces.</style>");
		}

		public void Untitled()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/EngiBody");
			EngieExplode = ScriptableObject.CreateInstance<SkillDef>();
			EngieExplode.activationState = new SerializableEntityStateType(typeof(EngiDisrupt));
			EngieExplode.interruptPriority = (InterruptPriority)0;
			EngieExplode.activationStateMachineName = "Weapon";
			EngieExplode.baseRechargeInterval = 30f;
			EngieExplode.cancelSprintingOnActivation = true;
			EngieExplode.canceledFromSprinting = false;
			EngieExplode.isCombatSkill = true;
			EngieExplode.icon = assetBundle.LoadAsset<Sprite>("juryIcon.png");
			CharacterAltSkill(val.GetComponent<SkillLocator>().utility, EngieExplode, "Jury-rigged Turrets", "Weaponize your crappy turrets with this one simple trick! On activation, explodes all currently alive turrets for <style=cIsDamage>250% of their</style> <style=cDeath>Max HP</style> in a large radius. Refunds turrets on use, but has a long cooldown");
		}

		public void OOOOOYEAHBROTHERRRRR()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Expected O, but got Unknown
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/CommandoBody");
			DetsDef = ScriptableObject.CreateInstance<SteppedSkillDef>();
			((SkillDef)DetsDef).activationState = new SerializableEntityStateType(typeof(Embeddeddets));
			((SkillDef)DetsDef).interruptPriority = (InterruptPriority)1;
			((SkillDef)DetsDef).activationStateMachineName = "Weapon";
			((SkillDef)DetsDef).canceledFromSprinting = true;
			((SkillDef)DetsDef).cancelSprintingOnActivation = true;
			((SkillDef)DetsDef).isCombatSkill = true;
			((SkillDef)DetsDef).baseRechargeInterval = 2f;
			((SkillDef)DetsDef).baseMaxStock = 10;
			((SkillDef)DetsDef).stockToConsume = 1;
			((SkillDef)DetsDef).dontAllowPastMaxStocks = true;
			((SkillDef)DetsDef).requiredStock = 1;
			((SkillDef)DetsDef).rechargeStock = 10;
			((SkillDef)DetsDef).resetCooldownTimerOnUse = true;
			DetsDef.stepCount = 2;
			((SkillDef)DetsDef).icon = assetBundle.LoadAsset<Sprite>("detsIcon.png");
			CharacterAltSkill(val.GetComponent<SkillLocator>().primary, (SkillDef)(object)DetsDef, "Embedded Detonators", "Fire <style=cDeath>10 bullets</style>, which Embed into enemies and do <style=cIsDamage>75% damage</style> on impact, before having to reload, causing all bullets in enemies to explode for <style=cIsDamage>200% damage</style>.");
			Dets = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/OmniExplosionVFX"), "CommandoExplode", false);
			EffectComponent component = Dets.GetComponent<EffectComponent>();
			component.soundName = "Play_captain_shift_impact";
			component.applyScale = true;
			ContentAddition.AddEffect(Dets);
			val.AddComponent<EmbeddedDetsTracker>();
			object obj = <>c.<>9__8_0;
			if (obj == null)
			{
				hook_RestockSteplike val2 = delegate(orig_RestockSteplike orig, GenericSkill self)
				{
					//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e6: Expected O, but got Unknown
					//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
					//IL_0102: Unknown result type (might be due to invalid IL or missing references)
					//IL_0115: Unknown result type (might be due to invalid IL or missing references)
					//IL_011a: Unknown result type (might be due to invalid IL or missing references)
					//IL_011f: Unknown result type (might be due to invalid IL or missing references)
					//IL_012b: Unknown result type (might be due to invalid IL or missing references)
					//IL_014c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0163: Unknown result type (might be due to invalid IL or missing references)
					//IL_0165: Unknown result type (might be due to invalid IL or missing references)
					//IL_016a: Unknown result type (might be due to invalid IL or missing references)
					//IL_0170: Unknown result type (might be due to invalid IL or missing references)
					//IL_0177: Unknown result type (might be due to invalid IL or missing references)
					//IL_017c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0181: Unknown result type (might be due to invalid IL or missing references)
					//IL_018e: Expected O, but got Unknown
					//IL_0197: Unknown result type (might be due to invalid IL or missing references)
					//IL_019c: Unknown result type (might be due to invalid IL or missing references)
					//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
					int stock = self.stock;
					orig.Invoke(self);
					if (self.stock > stock && (Object)(object)self.skillDef == (Object)(object)DetsDef && Object.op_Implicit((Object)(object)self.characterBody) && self.characterBody.hasEffectiveAuthority)
					{
						EmbeddedDetsTracker component2 = ((Component)self).GetComponent<EmbeddedDetsTracker>();
						if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)self.characterBody) && Object.op_Implicit((Object)(object)self.characterBody.master))
						{
							for (int i = 0; i < component2.victims.Count; i++)
							{
								HealthComponent val3 = component2.victims[i];
								if (Object.op_Implicit((Object)(object)val3))
								{
									GameObject gameObject = ((Component)val3).gameObject;
									EffectManager.SpawnEffect(Dets, new EffectData
									{
										origin = gameObject.transform.position,
										scale = 4f
									}, true);
									BlastAttack val4 = new BlastAttack
									{
										radius = 5f,
										procCoefficient = 0.2f,
										position = ((Component)component2.victims[i]).transform.position,
										attacker = ((Component)self).gameObject,
										crit = Util.CheckRoll(self.characterBody.crit, self.characterBody.master),
										baseDamage = self.characterBody.damage * 2f,
										falloffModel = (FalloffModel)2,
										damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131072), (DamageTypeExtended)0, (DamageSource)1),
										baseForce = 0f
									};
									val4.teamIndex = TeamComponent.GetObjectTeam(val4.attacker);
									val4.attackerFiltering = (AttackerFiltering)2;
									val4.Fire();
								}
							}
							component2.victims = new List<HealthComponent>();
						}
					}
				};
				<>c.<>9__8_0 = val2;
				obj = (object)val2;
			}
			GenericSkill.RestockSteplike += (hook_RestockSteplike)obj;
		}

		public void Thej()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/EngiBody");
			EngieJump = ScriptableObject.CreateInstance<SkillDef>();
			EngieJump.activationState = new SerializableEntityStateType(typeof(Engiburst));
			EngieJump.interruptPriority = (InterruptPriority)0;
			EngieJump.activationStateMachineName = "Weapon";
			EngieJump.baseRechargeInterval = 10f;
			EngieJump.cancelSprintingOnActivation = true;
			EngieJump.canceledFromSprinting = false;
			EngieJump.isCombatSkill = true;
			EngieJump.icon = assetBundle.LoadAsset<Sprite>("unstableIcon.png");
			CharacterAltSkill(val.GetComponent<SkillLocator>().utility, EngieJump, "Unstable Turrets", "Trade the exploding blast of Jury rigged turrets for an extremely powerful blast that will send you flying. <style=cDeath>Has no damage</style>");
		}

		public void Splitshot()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/HuntressBody");
			SalvoDef = ScriptableObject.CreateInstance<SkillDef>();
			SalvoDef.activationState = new SerializableEntityStateType(typeof(Splitter));
			SalvoDef.interruptPriority = (InterruptPriority)0;
			SalvoDef.activationStateMachineName = "Weapon";
			SalvoDef.baseRechargeInterval = 0f;
			SalvoDef.cancelSprintingOnActivation = false;
			SalvoDef.canceledFromSprinting = false;
			SalvoDef.isCombatSkill = true;
			SalvoDef.keywordTokens = new string[1] { "KEYWORD_AGILE" };
			SalvoDef.icon = assetBundle.LoadAsset<Sprite>("salvoIcon.png");
			CharacterAltSkill(val.GetComponent<SkillLocator>().primary, SalvoDef, "Salvo", "Shoot a volley of 3 close range arrows with high, uncontrollable spread for <style=cIsDamage>200%x3 damage</style>. Critical strikes cause the arrows to split in two");
		}

		public void Death()
		{
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Expected O, but got Unknown
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Expected O, but got Unknown
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			Agony = ScriptableObject.CreateInstance<BuffDef>();
			Agony.isDebuff = true;
			Agony.canStack = false;
			Agony.iconSprite = assetBundle.LoadAsset<Sprite>("agonyBuff");
			Agony.buffColor = Color32.op_Implicit(new Color32((byte)147, (byte)112, (byte)219, (byte)225));
			ContentAddition.AddBuffDef(Agony);
			AgonySound = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
			AgonySound.eventName = "Play_acrid_shift_land";
			ContentAddition.AddNetworkSoundEventDef(AgonySound);
			AcridComponent = ((Component)this).GetComponent<CrocoDamageTypeController>();
			GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(GlobalEventManager_OnHitEnemy);
			GlobalEventManager.OnCharacterDeath += new hook_OnCharacterDeath(GlobalEventManager_OnCharacterDeath);
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/crocobody");
			OUAGGG = ScriptableObject.CreateInstance<SkillDef>();
			OUAGGG.activationState = new SerializableEntityStateType(typeof(Misery));
			OUAGGG.interruptPriority = (InterruptPriority)1;
			OUAGGG.activationStateMachineName = "Weapon";
			OUAGGG.baseRechargeInterval = 10f;
			OUAGGG.cancelSprintingOnActivation = false;
			OUAGGG.canceledFromSprinting = true;
			OUAGGG.isCombatSkill = true;
			OUAGGG.icon = assetBundle.LoadAsset<Sprite>("agonyIcon.png");
			OUAGGG.keywordTokens = new string[3] { "KEYWORD_POISON", "KEYWORD_TORMENTED", "KEYWORD_RAPID_REGEN" };
			CharacterAltSkill(val.GetComponent<SkillLocator>().special, OUAGGG, "Scourge", "<style=cIsHealing>Poisonous.</style> <style=cDeath>Tormenting.</style> Release a large explosion of bile from yourself, doing <style=cIsDamage>200% damage</style>.");
		}

		private void GlobalEventManager_OnCharacterDeath(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport)
		{
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: 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_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Expected O, but got Unknown
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: 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_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Expected O, but got Unknown
			//IL_0123: 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)
			orig.Invoke(self, damageReport);
			CharacterBody victimBody = damageReport.victimBody;
			CharacterBody attackerBody = damageReport.attackerBody;
			float num = 15f;
			if (NetworkServer.active && Object.op_Implicit((Object)(object)victimBody) && Object.op_Implicit((Object)(object)attackerBody) && victimBody.HasBuff(Agony))
			{
				Vector3 corePosition = victimBody.corePosition;
				EffectManager.SimpleSoundEffect(AgonySound.index, corePosition, true);
				EffectManager.SpawnEffect(Misery.Effect, new EffectData
				{
					scale = num,
					origin = corePosition
				}, true);
				BlastAttack val = new BlastAttack
				{
					radius = num,
					position = victimBody.transform.position,
					baseDamage = attackerBody.damage * 1.5f,
					procCoefficient = 0.5f,
					attacker = ((Component)attackerBody).gameObject,
					crit = Util.CheckRoll(attackerBody.crit, attackerBody.master),
					falloffModel = (FalloffModel)0,
					baseForce = 500f,
					attackerFiltering = (AttackerFiltering)2,
					damageColorIndex = (DamageColorIndex)5,
					damageType = DamageTypeCombo.GenericSpecial
				};
				DamageAPI.AddModdedDamageType(val, acridBuffHandler);
				val.Fire();
				attackerBody.AddTimedBuff(Buffs.CrocoRegen, 0.5f);
			}
		}

		private void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self, damageInfo, victim);
			if (damageInfo.procCoefficient != 0f && !damageInfo.rejected && NetworkServer.active && DamageAPI.HasModdedDamageType(damageInfo, acridBuffHandler))
			{
				CharacterBody val = (Object.op_Implicit((Object)(object)victim) ? victim.GetComponent<CharacterBody>() : null);
				if (Object.op_Implicit((Object)(object)val))
				{
					val.AddTimedBuff(Agony, 20f);
				}
			}
		}

		public void LanguageHandler()
		{
			LanguageAPI.Add("KEYWORD_TORMENTED", "<style=cKeywordName>Tormented</style> <style=cSub>Mark an enemy, causing them to explode for <style=cIsDamage>150% damage</style> in a 15 meter radius on death. Also applies <style=cIsHealing>Regenerative</style></style>");
		}

		public void Huntresscriteffect()
		{
			pew = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerhuntresssnipe"), "huntercrit", false);
			GameObject gameObject = ((Component)pew.transform.Find("BeamObject")).gameObject;
			GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/orbeffects/FlurryArrowCritOrbEffect");
			Material material = ((Renderer)((Component)val.transform.Find("TrailParent/Trail")).GetComponent<TrailRenderer>()).material;
			Material[] array = (Material[])(object)new Material[2]
			{
				default(Material),
				material
			};
			RendererSetMaterialsExtension.SetSharedMaterials((Renderer)(object)gameObject.GetComponent<ParticleSystemRenderer>(), array, 2);
			ContentAddition.AddEffect(pew);
		}

		public void Engieeffect()
		{
			effect = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/OmniExplosionVFXEngiTurretDeath"), "engiedetonate", false);
			EffectComponent component = effect.GetComponent<EffectComponent>();
			component.applyScale = true;
			ContentAddition.AddEffect(effect);
		}

		public void LoadAssets()
		{
			assetBundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("Skillsfromthedeepend.dll", "sftde"));
		}

		public void Awake()
		{
			LoadAssets();
			Untitled();
			Fusillade();
			OOOOOYEAHBROTHERRRRR();
			Thej();
			Engieeffect();
			Splitshot();
			Huntresscriteffect();
			Death();
			LanguageHandler();
		}
	}
	public class Embeddeddets : BaseSkillState, IStepSetter
	{
		public static GameObject muzzleEffectPrefab;

		public static GameObject hitEffectPrefab;

		public static GameObject tracerEffectPrefab;

		public static float damageCoefficient = 0.75f;

		public static float force;

		public static float baseDuration = 0.2f;

		public static string firePistolSoundString;

		public static float recoilAmplitude = 1f;

		public static float spreadBloomValue = 0.3f;

		public static float commandoBoostBuffCoefficient = 0.4f;

		private int pistol;

		private Ray aimRay;

		private float duration;

		void IStepSetter.SetStep(int i)
		{
			pistol = i;
		}

		private void FireBullet(string targetMuzzle)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Expected O, but got Unknown
			Util.PlaySound(firePistolSoundString, ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)muzzleEffectPrefab))
			{
				EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false);
			}
			((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude);
			if (((EntityState)this).isAuthority)
			{
				BulletAttack val = new BulletAttack
				{
					owner = ((EntityState)this).gameObject,
					weapon = ((EntityState)this).gameObject,
					origin = ((Ray)(ref aimRay)).origin,
					aimVector = ((Ray)(ref aimRay)).direction,
					minSpread = 0f,
					maxSpread = ((EntityState)this).characterBody.spreadBloomAngle,
					damage = damageCoefficient * ((BaseState)this).damageStat,
					force = force,
					tracerEffectPrefab = FirePistol2.tracerEffectPrefab,
					muzzleName = targetMuzzle,
					hitEffectPrefab = FirePistol2.hitEffectPrefab,
					isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master),
					radius = 0.1f,
					smartCollision = true,
					damageType = DamageTypeCombo.GenericPrimary
				};
				val.hitCallback = (HitCallback)delegate(BulletAttack bulletAttack, ref BulletHit info)
				{
					//IL_0049: Unknown result type (might be due to invalid IL or missing references)
					bool result = BulletAttack.defaultHitCallback.Invoke(bulletAttack, ref info);
					if (((EntityState)this).isAuthority)
					{
						HealthComponent val2 = (Object.op_Implicit((Object)(object)info.hitHurtBox) ? info.hitHurtBox.healthComponent : null);
						if (Object.op_Implicit((Object)(object)val2) && val2.alive && FriendlyFireManager.ShouldDirectHitProceed(val2, ((BaseState)this).GetTeam()))
						{
							EmbeddedDetsTracker component = ((EntityState)this).GetComponent<EmbeddedDetsTracker>();
							if (Object.op_Implicit((Object)(object)component))
							{
								component.victims.Add(val2);
							}
						}
					}
					return result;
				};
				val.Fire();
			}
			((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue);
		}

		public override void OnEnter()
		{
			//IL_001c: 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_0028: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			aimRay = ((BaseState)this).GetAimRay();
			((BaseState)this).StartAimMode(aimRay, 3f, false);
			if (pistol % 2 == 0)
			{
				((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left");
				FireBullet("MuzzleLeft");
			}
			else
			{
				((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right");
				FireBullet("MuzzleRight");
			}
		}

		public override void FixedUpdate()
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			((EntityState)this).FixedUpdate();
			if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
			{
				if (((BaseSkillState)this).activatorSkillSlot.stock < ((BaseSkillState)this).activatorSkillSlot.maxStock)
				{
					((EntityState)this).outer.SetNextState((EntityState)new ReloadPistols());
				}
				else
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)2;
		}
	}
	public class EmbeddedDetsTracker : MonoBehaviour
	{
		public List<HealthComponent> victims = new List<HealthComponent>();
	}
	public class EngiDisrupt : BaseState
	{
		public static GameObject explode = Deepend.effect;

		public GameObject effectPrefab;

		public static float baseDuration = 2f;

		private float duration;

		public static float damageCoefficient = 2.5f;

		public override void OnEnter()
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Invalid comparison between Unknown and I4
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Expected O, but got Unknown
			//IL_0112: 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_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = baseDuration / base.attackSpeedStat;
			CharacterBody characterBody = ((EntityState)this).characterBody;
			if (Object.op_Implicit((Object)(object)characterBody) && ((EntityState)this).isAuthority)
			{
				RefundTurrets(characterBody.master, ((EntityState)this).skillLocator);
			}
			if (!Object.op_Implicit((Object)(object)characterBody) || !NetworkServer.active)
			{
				return;
			}
			CharacterMaster master = characterBody.master;
			if (!Object.op_Implicit((Object)(object)master))
			{
				return;
			}
			for (int i = 0; i < master.deployablesList.Count; i++)
			{
				DeployableInfo val = master.deployablesList[i];
				if ((int)val.slot != 1)
				{
					continue;
				}
				CharacterMaster component = ((Component)val.deployable).gameObject.GetComponent<CharacterMaster>();
				if (Object.op_Implicit((Object)(object)component))
				{
					if (Object.op_Implicit((Object)(object)component.GetBody()))
					{
						Vector3 corePosition = component.GetBody().corePosition;
						EffectManager.SpawnEffect(explode, new EffectData
						{
							origin = corePosition,
							scale = CountDown.explosionRadius
						}, true);
						new BlastAttack
						{
							position = corePosition + Random.onUnitSphere,
							radius = CountDown.explosionRadius,
							falloffModel = (FalloffModel)0,
							attacker = ((EntityState)this).gameObject,
							baseDamage = component.GetBody().healthComponent.fullCombinedHealth * damageCoefficient,
							baseForce = 5000f,
							bonusForce = Vector3.zero,
							attackerFiltering = (AttackerFiltering)2,
							crit = ((BaseState)this).RollCrit(),
							procChainMask = default(ProcChainMask),
							procCoefficient = 1f,
							teamIndex = ((EntityState)this).teamComponent.teamIndex,
							damageType = DamageTypeCombo.GenericUtility
						}.Fire();
					}
					component.TrueKill();
				}
			}
		}

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

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

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}

		public static void RefundTurrets(CharacterMaster owner, SkillLocator skillLocator)
		{
			if (!Object.op_Implicit((Object)(object)owner) || !Object.op_Implicit((Object)(object)skillLocator) || !Object.op_Implicit((Object)(object)skillLocator.special))
			{
				return;
			}
			foreach (CharacterMaster readOnlyInstances in CharacterMaster.readOnlyInstancesList)
			{
				if (Object.op_Implicit((Object)(object)readOnlyInstances.minionOwnership) && (Object)(object)readOnlyInstances.minionOwnership.ownerMaster == (Object)(object)owner && Object.op_Implicit((Object)(object)((Component)readOnlyInstances).GetComponent<Deployable>()))
				{
					skillLocator.special.ApplyAmmoPack();
				}
			}
		}
	}
	public class NoAim : BaseSkillState
	{
		public static GameObject hunter = Deepend.pew;

		public static GameObject muzzleEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/MuzzleflashHuntress");

		public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/OmniImpactVFXBrotherLunarShardExplosion");

		public static float damageCoefficient = 3.75f;

		public static float force = 650f;

		public static float baseDuration = 0.55f;

		public static string firePistolSoundString = "Play_huntress_m1_shoot";

		public static float recoilAmplitude = 50f;

		public static float spreadBloomValue = 0.5f;

		private Ray aimRay;

		private float duration;

		private void FireBullet(string targetMuzzle)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: 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_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			Util.PlaySound(firePistolSoundString, ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)muzzleEffectPrefab))
			{
				EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false);
			}
			((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude);
			if (((EntityState)this).isAuthority)
			{
				new BulletAttack
				{
					owner = ((EntityState)this).gameObject,
					weapon = ((EntityState)this).gameObject,
					origin = ((Ray)(ref aimRay)).origin,
					aimVector = ((Ray)(ref aimRay)).direction,
					minSpread = 0f,
					maxSpread = ((EntityState)this).characterBody.spreadBloomAngle,
					damage = damageCoefficient * ((BaseState)this).damageStat,
					force = force,
					tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerhuntresssnipe"),
					muzzleName = targetMuzzle,
					hitEffectPrefab = hitEffectPrefab,
					isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master),
					radius = 0.2f,
					smartCollision = true,
					damageType = DamageTypeCombo.GenericPrimary,
					falloffModel = (FalloffModel)0,
					stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask
				}.Fire();
			}
			((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue);
		}

		public override void OnEnter()
		{
			//IL_001c: 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_0028: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			aimRay = ((BaseState)this).GetAimRay();
			((BaseState)this).StartAimMode(aimRay, 3f, false);
			((EntityState)this).PlayCrossfade("Gesture, Override", "FireSeekingShot", "FireSeekingShot.playbackRate", duration, duration * 0.2f / ((BaseState)this).attackSpeedStat);
			((EntityState)this).PlayCrossfade("Gesture, Additive", "FireSeekingShot", "FireSeekingShot.playbackRate", duration, duration * 0.2f / ((BaseState)this).attackSpeedStat);
			FireBullet("Muzzle");
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	internal static class Log
	{
		internal static ManualLogSource _logSource;

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

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

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

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

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

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

		internal static void LogWarning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
	internal class Misery : BaseSkillState
	{
		public static float Duration = 0.3f;

		public CrocoDamageTypeController AcridComponent;

		public Vector3 CorePosition;

		public static GameObject Effect = Resources.Load<GameObject>("prefabs/effects/impacteffects/CrocoLeapExplosion");

		public static float Radius = 20f;

		public static float DamageCoefficent = 2f;

		public static float NormalForce = 1000f;

		public override void OnEnter()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			CharacterBody characterBody = ((EntityState)this).characterBody;
			AcridComponent = ((EntityState)this).GetComponent<CrocoDamageTypeController>();
			CorePosition = characterBody.corePosition;
			AcridCryAboutit();
		}

		public void AcridCryAboutit()
		{
			//IL_0046: 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_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			//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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: 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_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_00d6: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: 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_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Expected O, but got Unknown
			//IL_012d: 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)
			Util.PlaySound("Play_acrid_shift_land", ((EntityState)this).gameObject);
			if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
			{
				DamageType val = (DamageType)(Object.op_Implicit((Object)(object)AcridComponent) ? ((int)DamageTypeCombo.op_Implicit(AcridComponent.GetDamageType())) : 0);
				EffectManager.SpawnEffect(Effect, new EffectData
				{
					scale = Radius,
					origin = CorePosition
				}, true);
				BlastAttack val2 = new BlastAttack
				{
					position = CorePosition,
					radius = Radius,
					falloffModel = (FalloffModel)0,
					attacker = ((EntityState)this).gameObject,
					baseDamage = DamageCoefficent * ((EntityState)this).characterBody.damage,
					baseForce = NormalForce,
					bonusForce = Vector3.zero,
					attackerFiltering = (AttackerFiltering)2,
					crit = ((BaseState)this).RollCrit(),
					procChainMask = default(ProcChainMask),
					procCoefficient = 1f,
					teamIndex = ((EntityState)this).teamComponent.teamIndex,
					damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit(val), (DamageTypeExtended)0, (DamageSource)8),
					damageColorIndex = (DamageColorIndex)4
				};
				DamageAPI.AddModdedDamageType(val2, Deepend.acridBuffHandler);
				val2.Fire();
			}
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= Duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}
	}
	public class Splitter : BaseSkillState
	{
		public static GameObject tracerEffectPrefab;

		public static GameObject muzzleEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/MuzzleflashHuntress");

		public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/OmniImpactVFXBrotherLunarShardExplosion");

		public static float damageCoefficient = 2f;

		public static float force = 650f;

		public static float baseDuration = 0.9f;

		public static string firePistolSoundString = "Play_huntress_m1_shoot";

		public static float recoilAmplitude = 6f;

		public static float spreadBloomValue = 0.5f;

		private Ray aimRay;

		private float duration;

		public uint Bulletcount;

		public bool IsCrit;

		private void FireBullet(string targetMuzzle)
		{
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			Util.PlaySound(firePistolSoundString, ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)muzzleEffectPrefab))
			{
				EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false);
			}
			((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude);
			if (((EntityState)this).isAuthority)
			{
				IsCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master);
				if (IsCrit)
				{
					Bulletcount = 6u;
					tracerEffectPrefab = Deepend.pew;
				}
				else
				{
					Bulletcount = 3u;
					tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerhuntresssnipe");
				}
				new BulletAttack
				{
					owner = ((EntityState)this).gameObject,
					weapon = ((EntityState)this).gameObject,
					origin = ((Ray)(ref aimRay)).origin,
					aimVector = ((Ray)(ref aimRay)).direction,
					minSpread = 3f,
					maxSpread = 3f,
					damage = damageCoefficient * ((BaseState)this).damageStat,
					force = force,
					muzzleName = targetMuzzle,
					hitEffectPrefab = hitEffectPrefab,
					radius = 0.2f,
					smartCollision = true,
					damageType = DamageTypeCombo.GenericPrimary,
					falloffModel = (FalloffModel)1,
					bulletCount = Bulletcount,
					isCrit = IsCrit,
					spreadPitchScale = 0f,
					spreadYawScale = 2f,
					tracerEffectPrefab = tracerEffectPrefab
				}.Fire();
			}
		}

		public override void OnEnter()
		{
			//IL_001c: 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_0028: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			aimRay = ((BaseState)this).GetAimRay();
			((BaseState)this).StartAimMode(aimRay, 3f, false);
			((EntityState)this).PlayCrossfade("Gesture, Override", "FireSeekingShot", "FireSeekingShot.playbackRate", duration, duration * 0.2f / ((BaseState)this).attackSpeedStat);
			((EntityState)this).PlayCrossfade("Gesture, Additive", "FireSeekingShot", "FireSeekingShot.playbackRate", duration, duration * 0.2f / ((BaseState)this).attackSpeedStat);
			FireBullet("Muzzle");
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			((EntityState)this).characterBody.SetSpreadBloom(0f, true);
			if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	public class Engiburst : BaseState
	{
		public static GameObject explode = Deepend.effect;

		public GameObject effectPrefab;

		public static float baseDuration = 2f;

		private float duration;

		public static float damageCoefficient = 2.5f;

		public override void OnEnter()
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Invalid comparison between Unknown and I4
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: 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_0145: 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_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: 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_019c: 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_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: 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_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = EngiDisrupt.baseDuration / base.attackSpeedStat;
			CharacterBody characterBody = ((EntityState)this).characterBody;
			if (Object.op_Implicit((Object)(object)characterBody) && ((EntityState)this).isAuthority)
			{
				EngiDisrupt.RefundTurrets(characterBody.master, ((EntityState)this).skillLocator);
			}
			if (!Object.op_Implicit((Object)(object)characterBody) || !NetworkServer.active)
			{
				return;
			}
			CharacterMaster master = characterBody.master;
			if (!Object.op_Implicit((Object)(object)master))
			{
				return;
			}
			for (int i = 0; i < master.deployablesList.Count; i++)
			{
				DeployableInfo val = master.deployablesList[i];
				if ((int)val.slot != 1)
				{
					continue;
				}
				CharacterMaster component = ((Component)val.deployable).gameObject.GetComponent<CharacterMaster>();
				if (Object.op_Implicit((Object)(object)component))
				{
					if (Object.op_Implicit((Object)(object)component.GetBody()))
					{
						Vector3 corePosition = component.GetBody().corePosition;
						EffectManager.SpawnEffect(explode, new EffectData
						{
							origin = corePosition,
							scale = CountDown.explosionRadius
						}, true);
						characterBody.AddTimedBuff(Buffs.ArmorBoost, 5f);
						new BlastAttack
						{
							position = corePosition + Random.onUnitSphere,
							radius = CountDown.explosionRadius,
							falloffModel = (FalloffModel)0,
							attacker = ((EntityState)this).gameObject,
							baseDamage = 0f,
							baseForce = 8000f,
							bonusForce = Vector3.up * 5f,
							crit = ((BaseState)this).RollCrit(),
							attackerFiltering = (AttackerFiltering)1,
							procChainMask = default(ProcChainMask),
							procCoefficient = 0f,
							teamIndex = ((EntityState)this).teamComponent.teamIndex,
							damageType = DamageTypeCombo.GenericUtility
						}.Fire();
					}
					component.TrueKill();
				}
			}
		}

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

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

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	internal class SFTDEContentProvider : IContentPackProvider
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static CollectContentPackProvidersDelegate <0>__AddCustomContent;
		}

		public static ContentPack contentPack = new ContentPack();

		public string identifier => "SFTDE";

		public static void AddCustomContent(AddContentPackProviderDelegate addContentPackProvider)
		{
			addContentPackProvider.Invoke((IContentPackProvider)(object)new SFTDEContentProvider());
		}

		public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
		{
			ContentPack.Copy(contentPack, args.output);
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}

		public static void SFTDEContent()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			object obj = <>O.<0>__AddCustomContent;
			if (obj == null)
			{
				CollectContentPackProvidersDelegate val = AddCustomContent;
				<>O.<0>__AddCustomContent = val;
				obj = (object)val;
			}
			ContentManager.collectContentPackProviders += (CollectContentPackProvidersDelegate)obj;
			contentPack.skillDefs.Add((SkillDef[])(object)new SkillDef[6]
			{
				Deepend.FusilladeDef,
				Deepend.SalvoDef,
				Deepend.EngieExplode,
				Deepend.EngieJump,
				(SkillDef)Deepend.DetsDef,
				Deepend.OUAGGG
			});
		}
	}
	internal class TWITTER
	{
	}
}
namespace Skillsfromthedeepend.Properties
{
	[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
	[DebuggerNonUserCode]
	[CompilerGenerated]
	internal class Resources
	{
		private static ResourceManager resourceMan;

		private static CultureInfo resourceCulture;

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static ResourceManager ResourceManager
		{
			get
			{
				if (resourceMan == null)
				{
					ResourceManager resourceManager = new ResourceManager("Skillsfromthedeepend.Properties.Resources", typeof(Resources).Assembly);
					resourceMan = resourceManager;
				}
				return resourceMan;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static CultureInfo Culture
		{
			get
			{
				return resourceCulture;
			}
			set
			{
				resourceCulture = value;
			}
		}

		internal static byte[] EmDet
		{
			get
			{
				object obj = ResourceManager.GetObject("EmDet", resourceCulture);
				return (byte[])obj;
			}
		}

		internal static byte[] Fusillade128_2
		{
			get
			{
				object obj = ResourceManager.GetObject("Fusillade128_2", resourceCulture);
				return (byte[])obj;
			}
		}

		internal static byte[] Greener
		{
			get
			{
				object obj = ResourceManager.GetObject("Greener", resourceCulture);
				return (byte[])obj;
			}
		}

		internal static byte[] image
		{
			get
			{
				object obj = ResourceManager.GetObject("image", resourceCulture);
				return (byte[])obj;
			}
		}

		internal static byte[] Volley
		{
			get
			{
				object obj = ResourceManager.GetObject("Volley", resourceCulture);
				return (byte[])obj;
			}
		}

		internal Resources()
		{
		}
	}
}