Decompiled source of BetterChef v1.0.4

BetterChef.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
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 BepInEx.Logging;
using EntityStates;
using EntityStates.Chef;
using IL.EntityStates.Chef;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On;
using On.EntityStates.Chef;
using On.RoR2;
using On.RoR2.Projectile;
using R2API;
using RoR2;
using RoR2.Audio;
using RoR2.EntitlementManagement;
using RoR2.ExpansionManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using StormTweaks.Utils;
using StormTweaks.Utils.Assets;
using TMPro;
using ThreeEyedGames;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.AddressableAssets;
using UnityEngine.Audio;
using UnityEngine.Networking;
using UnityEngine.Rendering.PostProcessing;

[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("BetterChef")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+ddeb319461b0abd50b4ee9d52dac7da9706b2d44")]
[assembly: AssemblyProduct("BetterChef")]
[assembly: AssemblyTitle("BetterChef")]
[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]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace StormTweaks
{
	public class CHEF
	{
		public static class Settings
		{
			public static float DiceDuration => Main.Bind("CHEF: Dice", "Dice Attack Duration", "The time it takes before another knife becomes throwable.", 0.3f);

			public static bool DiceEnabled => Main.Bind("CHEF: Dice", "Dice Enabled", "Enable changes to this skill?", val: true);

			public static bool DiceRaiseProcCoefficient => Main.Bind("CHEF: Dice", "Dice Raise Proc Coefficient", "Raise the proc coefficient on each cleaver", val: true);

			public static float DiceProcCoefficient => Main.Bind("CHEF: Dice", "Dice Proc Coefficient", "Proc coefficient of each cleaver (default is 0.5)", 1f);

			public static float DiceDamageCoefficient => Main.Bind("CHEF: Dice", "Dice Damage Coefficient", "The damage coefficient to apply to Dice cleavers (note: this setting is enabled upon a configured value greater than zero--default is 2.5)", 0f);

			public static float DiceBoostedDamageCoefficient => Main.Bind("CHEF: Dice", "Dice Boosted Damage Coefficient", "The damage coefficient to apply to boosted Dice cleavers (note: this setting is enabled upon a configured value greater than zero--default is 2.5)", 0f);

			public static float SpecialCooldown => Main.Bind("CHEF: Yes Chef", "Special Cooldown", "Lower the cooldown of the alternate special.", 8f);

			public static bool InterruptableSkills => Main.Bind("CHEF: General", "Skill Interrupts", "Make CHEF skills be able to interrupt each other.", val: true);

			public static bool RollEnabled => Main.Bind("CHEF: Roll", "Roll Enabled", "Enable changes to this skill?", val: true);

			public static bool RollSpeed => Main.Bind("CHEF: Roll", "Roll Scale Speed With Charge Tokens", "Increase the speed of Roll for each stage of Roll charge", val: true);

			public static float RollSpeedMultiplier => Main.Bind("CHEF: Roll", "Roll Speed Multiplier", "The multiplier applied to each Roll charge", 0.35f);

			public static bool RollDamage => Main.Bind("CHEF: Roll", "Roll Scale Damage With Charge Tokens", "Increase the damage of Roll for each stage of Roll charge", val: true);

			public static float RollDamageBase => Main.Bind("CHEF: Roll", "Roll Added Base Damage", "Added base damage of Roll for each stage of Roll charge", 6f);

			public static float RollDamageMultiplier => Main.Bind("CHEF: Roll", "Roll Added Damage Multiplier", "Added multiplier used in the damage calculation for Roll when factoring in added damage on each stage of Roll charge", 2f);

			public static bool RollKnockback => Main.Bind("CHEF: Roll", "Roll Increase Knockback", "Increase the knockback of Roll", val: false);

			public static float RollKnockbackValue => Main.Bind("CHEF: Roll", "Roll Increase Knockback Value", "The knockback force of Roll", 0f);

			public static bool RollExtendDuration => Main.Bind("CHEF: Roll", "Roll Extend Duration With Charge Tokens", "Extend the Roll duration for each stage of Roll charge (along with a base extension)", val: true);

			public static float RollExtendDurationMultiplier => Main.Bind("CHEF: Roll", "Roll Extend Duration Multiplier", "The duration extension multiplier applied to Roll for each stage of Roll charge", 0.3f);

			public static bool RollOil => Main.Bind("CHEF: Roll", "Oil Trail", "Roll should leave a trail of oil when boosted by Yes Chef?", val: true);

			public static bool RollCanCancel => Main.Bind("CHEF: Roll", "Roll Can Cancel", "Allow the user to cancel RolyPoly mid-roll by hitting the activation button again", val: true);

			public static bool SearEnabled => Main.Bind("CHEF: Sear", "Sear Enabled", "Enable changes to this skill?", val: true);

			public static float SearDistance => Main.Bind("CHEF: Sear", "Sear Max Distance", "The distance Sear should damage targets.", 22f);

			public static bool SearNoDirLock => Main.Bind("CHEF: Sear", "Sear No Direction Lock", "Make Sear remain omnidirectional even during sprint.", val: true);

			public static bool SearDamageFactorDistance => Main.Bind("CHEF: Sear", "Sear Factor in Distance when Applying Sear Damage", "Factor in distance when applying damage using Sear so that targets closer receive more damage than targets further away", val: true);

			public static float SearDistanceDamageMultiplier => Main.Bind("CHEF: Sear", "Sear Distance Damage Multiplier", "Multiplier of how much damage should scale based on distance (the value here is the maximum damage multiplier one could achieve by being right next to an enemy)", 3f);

			public static bool SearBuffDamageOverTime => Main.Bind("CHEF: Sear", "Sear Apply Burning Damage Over Time", "Make the damage over time modifier for Sear apply additional fire damage for a longer period", val: true);

			public static float SearDamageOverTimeValue => Main.Bind("CHEF: Sear", "Sear Damage Over Time Value", "The raw damage value applied on each tick to the Sear burning effect", 10f);

			public static float SearDamageOverTimeDuration => Main.Bind("CHEF: Sear", "Sear Damage Over Time Duration", "The duration applied to the Sear burning effect (note: this is a raw DoT duration value, which is *NOT* the amount of seconds the effect will persist for)", 0f);

			public static bool SearCanCancel => Main.Bind("CHEF: Sear", "Sear Can Cancel", "Allow the user to cancel Sear mid-Sear by either releasing the skill activation input (in hold mode), or by activating the skill again (in toggle mode)", val: true);

			public static bool SearHoldMode => Main.Bind("CHEF: Sear", "Sear Hold Mode", "Enabling Sear requires the user hold down the Sear skill input activation (disabling this setting will put Sear into toggle activation mode)", val: false);

			public static float SearBaseExitDuration => Main.Bind("CHEF: Sear", "Sear Base Exit Duration", "Sear base exit duration", 0.4f);

			public static float SearBaseFlamethrowerDuration => Main.Bind("CHEF: Sear", "Sear Base Flamethrower Duration", "Sear base flamethrower duration", 3f);

			public static float SearTickDamageCoefficient => Main.Bind("CHEF: Sear", "Sear Tick Damage Coefficient", "Sear tick damage coefficient (note: this setting is enabled upon a configured value greater than zero--default is 6)", 0f);

			public static float SearTickFrequency => Main.Bind("CHEF: Sear", "Sear Tick Frequency", "Sear tick frequency (note: this setting is enabled upon a configured value greater than zero--default is 8)", 0f);

			public static bool GlazeEnabled => Main.Bind("CHEF: Glaze", "Glaze Enabled", "Enable changes to this skill?", val: true);

			public static bool GlazeKnockbackSelf => Main.Bind("CHEF: Glaze", "Glaze Knockback Self", "Apply knockback to Chef while firing Glaze", val: true);

			public static bool GlazeKnockbackAmplified => Main.Bind("CHEF: Glaze", "Glaze Amplified Knockback", "Apply additional knockback to Chef when firing Glaze while looking at the ground rather than directly ahead", val: true);

			public static int GlazeStandardKnockbackAmount => Main.Bind("CHEF: Glaze", "Glaze Standard Knockback Amount", "Standard knockback applied to chef while firing Glaze", -500);

			public static int GlazeAmplifiedKnockbackAmount => Main.Bind("CHEF: Glaze", "Glaze Amplified Knockback Amount", "Amplified knockback applied to chef while firing Glaze while looking down", -800);

			public static bool GlazeKnockbackSuicidePrevention => Main.Bind("CHEF: Glaze", "Glaze Knockback Suicide Prevention", "Remove knockback from Glaze when looking upwards, reducing the chance of applying too much knockback while already falling", val: true);

			public static bool GlazeKnockbackAlways => Main.Bind("CHEF: Glaze", "Glaze Knockback Always", "Always apply knockback when using Glaze regardless of if the user is in the air or not", val: false);

			public static float GlazeDamageCoefficient => Main.Bind("CHEF: Glaze", "Glaze Damage Coefficient", "Damage coefficient for each ball of Glaze oil (default is 3 which means 300% damage)", 3f);
		}

		public class ChefTrailBehaviour : MonoBehaviour
		{
			public ChefController chef;

			public Timer timer = new Timer(0.1f, inverse: false, expires: true, trueOnExpire: false, resetOnExpire: true);

			public void Start()
			{
				chef = ((Component)this).GetComponent<ChefController>();
			}

			public void FixedUpdate()
			{
				//IL_0043: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_00a9: Unknown result type (might be due to invalid IL or missing references)
				if (chef.rolyPolyActive && chef.yesChefHeatActive && ((NetworkBehaviour)chef).hasAuthority && timer.Tick())
				{
					FireProjectileInfo val = default(FireProjectileInfo);
					val.damage = chef.characterBody.damage;
					val.crit = false;
					val.rotation = Quaternion.identity;
					val.position = chef.characterBody.footPosition;
					val.projectilePrefab = OilTrailSegment;
					val.owner = ((Component)this).gameObject;
					ProjectileManager.instance.FireProjectile(val);
				}
			}
		}

		public class ChefCleaverStorage : MonoBehaviour
		{
			public static Dictionary<CharacterBody, List<CleaverProjectile>> cleaverMap = new Dictionary<CharacterBody, List<CleaverProjectile>>();

			public static Dictionary<CharacterBody, ChefCleaverStorage> storageMap = new Dictionary<CharacterBody, ChefCleaverStorage>();

			private CharacterBody body;

			public float timer = 0f;

			public void OnEnable()
			{
				body = ((Component)this).GetComponent<CharacterBody>();
				cleaverMap.Add(body, new List<CleaverProjectile>());
				storageMap.Add(body, this);
			}

			public void FixedUpdate()
			{
				if (timer >= 0f)
				{
					timer -= Time.fixedDeltaTime;
				}
			}

			public static bool GetCanBodyRecall(CharacterBody body)
			{
				if (storageMap.ContainsKey(body))
				{
					return storageMap[body].timer <= 0f;
				}
				return true;
			}

			public static void Reset(CharacterBody body, float time = 0.4f)
			{
				if (storageMap.ContainsKey(body))
				{
					storageMap[body].timer = time;
				}
			}

			public void OnDestroy()
			{
				if (Object.op_Implicit((Object)(object)body) && cleaverMap.ContainsKey(body))
				{
					cleaverMap.Remove(body);
				}
				storageMap.Remove(body);
			}

			public int GetCleaversActive()
			{
				if (Object.op_Implicit((Object)(object)body))
				{
					return cleaverMap[body].Count;
				}
				return 0;
			}
		}

		public class CleaverSkillDef : SkillDef
		{
			public class CleaverInstanceData : BaseSkillInstanceData
			{
				public ChefCleaverStorage controller;
			}

			public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot)
			{
				return (BaseSkillInstanceData)(object)new CleaverInstanceData
				{
					controller = ((Component)skillSlot).GetComponent<ChefCleaverStorage>()
				};
			}

			public override void OnFixedUpdate([NotNull] GenericSkill skillSlot, float deltaTime)
			{
				((SkillDef)this).OnFixedUpdate(skillSlot, deltaTime);
				int cleaversActive = (skillSlot.skillInstanceData as CleaverInstanceData).controller.GetCleaversActive();
				int num = skillSlot.maxStock - cleaversActive;
				skillSlot.stock = Mathf.Clamp(num, 0, skillSlot.maxStock);
			}

			public void Clone(SkillDef from)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
				base.activationState = from.activationState;
				base.activationStateMachineName = from.activationStateMachineName;
				base.attackSpeedBuffsRestockSpeed = from.attackSpeedBuffsRestockSpeed;
				base.attackSpeedBuffsRestockSpeed_Multiplier = from.attackSpeedBuffsRestockSpeed_Multiplier;
				base.autoHandleLuminousShot = from.autoHandleLuminousShot;
				base.baseMaxStock = from.baseMaxStock;
				base.baseRechargeInterval = from.baseRechargeInterval;
				base.beginSkillCooldownOnSkillEnd = from.beginSkillCooldownOnSkillEnd;
				base.canceledFromSprinting = from.canceledFromSprinting;
				base.cancelSprintingOnActivation = from.cancelSprintingOnActivation;
				base.dontAllowPastMaxStocks = from.dontAllowPastMaxStocks;
				base.forceSprintDuringState = from.forceSprintDuringState;
				base.fullRestockOnAssign = from.fullRestockOnAssign;
				base.hideStockCount = from.hideStockCount;
				base.icon = from.icon;
				base.interruptPriority = from.interruptPriority;
				base.isCombatSkill = from.isCombatSkill;
				base.keywordTokens = from.keywordTokens;
				base.mustKeyPress = from.mustKeyPress;
				base.rechargeStock = from.rechargeStock;
				base.requiredStock = from.requiredStock;
				base.resetCooldownTimerOnUse = from.resetCooldownTimerOnUse;
				base.skillDescriptionToken = from.skillDescriptionToken;
				base.skillName = from.skillName;
				base.skillNameToken = from.skillNameToken;
				base.stockToConsume = from.stockToConsume;
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static hook_FixedUpdate <0>__Dice_FixedUpdate;

			public static hook_Update <1>__ChefController_Update;

			public static hook_OnExit <2>__Dice_OnExit;

			public static hook_OnEnter <3>__Dice_OnEnter;

			public static hook_Start <4>__CleaverProjectile_Start;

			public static hook_OnDestroy <5>__CleaverProjectile_OnDestroy;

			public static hook_GetMinimumInterruptPriority <6>__Sear_GetMinimumInterruptPriority;

			public static hook_GetMinimumInterruptPriority <7>__RolyPoly_GetMinimumInterruptPriority;

			public static hook_GetMinimumInterruptPriority <8>__Glaze_GetMinimumInterruptPriority;

			public static hook_GetMinimumInterruptPriority <9>__ChargeGlaze_GetMinimumInterruptPriority;

			public static hook_Update <10>__Sear_Update;

			public static hook_TakeDamage <11>__HealthComponent_TakeDamage;

			public static hook_InflictDot_refInflictDotInfo <12>__DotController_InflictDot_refInflictDotInfo;

			public static hook_OnEnter <13>__Sear_OnEnter;

			public static Manipulator <14>__Sear_FirePrimaryAttack;

			public static hook_FireGrenade <15>__Glaze_FireGrenade;

			public static Action<DamageReport> <16>__OnDamageDealt;

			public static hook_OnEnter <17>__RolyPoly_OnEnter;

			public static hook_FixedUpdate <18>__RolyPoly_FixedUpdate;
		}

		private static CleaverSkillDef DiceStandard;

		private static GameObject OilTrailSegment;

		private static GameObject OilTrailSegmentGhost;

		public static ModdedDamageType GlazeOnHit = DamageAPI.ReserveDamageType();

		public static void Init()
		{
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Expected O, but got Unknown
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_035b: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0292: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Expected O, but got Unknown
			//IL_021a: 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: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Expected O, but got Unknown
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Expected O, but got Unknown
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Expected O, but got Unknown
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_0394: Unknown result type (might be due to invalid IL or missing references)
			//IL_0399: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Expected O, but got Unknown
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Expected O, but got Unknown
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Expected O, but got Unknown
			//IL_00f0: 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_00fb: Expected O, but got Unknown
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_049f: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0534: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Expected O, but got Unknown
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Expected O, but got Unknown
			//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b3: Expected O, but got Unknown
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Unknown result type (might be due to invalid IL or missing references)
			//IL_033d: Expected O, but got Unknown
			try
			{
				SurvivorDef chef = SurvivorDef.Chef;
				SkillDef.YesChef.baseRechargeInterval = Settings.SpecialCooldown;
				PropertyInfo[] properties = typeof(Settings).GetProperties();
				foreach (PropertyInfo propertyInfo in properties)
				{
					try
					{
						propertyInfo.GetValue(null);
					}
					catch
					{
					}
				}
				if (Settings.DiceEnabled)
				{
					object obj2 = <>O.<0>__Dice_FixedUpdate;
					if (obj2 == null)
					{
						hook_FixedUpdate val = Dice_FixedUpdate;
						<>O.<0>__Dice_FixedUpdate = val;
						obj2 = (object)val;
					}
					Dice.FixedUpdate += (hook_FixedUpdate)obj2;
					object obj3 = <>O.<1>__ChefController_Update;
					if (obj3 == null)
					{
						hook_Update val2 = ChefController_Update;
						<>O.<1>__ChefController_Update = val2;
						obj3 = (object)val2;
					}
					ChefController.Update += (hook_Update)obj3;
					object obj4 = <>O.<2>__Dice_OnExit;
					if (obj4 == null)
					{
						hook_OnExit val3 = Dice_OnExit;
						<>O.<2>__Dice_OnExit = val3;
						obj4 = (object)val3;
					}
					Dice.OnExit += (hook_OnExit)obj4;
					object obj5 = <>O.<3>__Dice_OnEnter;
					if (obj5 == null)
					{
						hook_OnEnter val4 = Dice_OnEnter;
						<>O.<3>__Dice_OnEnter = val4;
						obj5 = (object)val4;
					}
					Dice.OnEnter += (hook_OnEnter)obj5;
					object obj6 = <>O.<4>__CleaverProjectile_Start;
					if (obj6 == null)
					{
						hook_Start val5 = CleaverProjectile_Start;
						<>O.<4>__CleaverProjectile_Start = val5;
						obj6 = (object)val5;
					}
					CleaverProjectile.Start += (hook_Start)obj6;
					object obj7 = <>O.<5>__CleaverProjectile_OnDestroy;
					if (obj7 == null)
					{
						hook_OnDestroy val6 = CleaverProjectile_OnDestroy;
						<>O.<5>__CleaverProjectile_OnDestroy = val6;
						obj7 = (object)val6;
					}
					CleaverProjectile.OnDestroy += (hook_OnDestroy)obj7;
					DiceStandard = ScriptableObject.CreateInstance<CleaverSkillDef>();
					DiceStandard.Clone(SkillDef.ChefDice);
					((SkillDef)DiceStandard).mustKeyPress = false;
					((SkillDef)DiceStandard).rechargeStock = 0;
					((SkillDef)DiceStandard).stockToConsume = 0;
					ContentAddition.AddSkillDef((SkillDef)(object)DiceStandard);
					SkillFamily.ChefPrimaryFamily.variants[0].skillDef = (SkillDef)(object)DiceStandard;
					GameObject.ChefBody.AddComponent<ChefCleaverStorage>();
					LanguageAPI.Add(SkillDef.ChefDice.skillDescriptionToken, "Throw up to <style=cIsUtility>3</style> cleavers for <style=cIsDamage>250% damage</style>. Release to recall the cleavers, dealing <style=cIsDamage>375% damage</style> on the return trip.");
				}
				if (Settings.InterruptableSkills)
				{
					SkillDef.ChefSear.interruptPriority = (InterruptPriority)2;
					SkillDef.ChefSearBoosted.interruptPriority = (InterruptPriority)5;
					SkillDef.ChefRolyPoly.interruptPriority = (InterruptPriority)2;
					SkillDef.ChefRolyPolyBoosted.interruptPriority = (InterruptPriority)5;
					SkillDef.ChefGlaze.interruptPriority = (InterruptPriority)2;
					object obj8 = <>O.<6>__Sear_GetMinimumInterruptPriority;
					if (obj8 == null)
					{
						hook_GetMinimumInterruptPriority val7 = Sear_GetMinimumInterruptPriority;
						<>O.<6>__Sear_GetMinimumInterruptPriority = val7;
						obj8 = (object)val7;
					}
					Sear.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)obj8;
					object obj9 = <>O.<7>__RolyPoly_GetMinimumInterruptPriority;
					if (obj9 == null)
					{
						hook_GetMinimumInterruptPriority val8 = RolyPoly_GetMinimumInterruptPriority;
						<>O.<7>__RolyPoly_GetMinimumInterruptPriority = val8;
						obj9 = (object)val8;
					}
					RolyPoly.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)obj9;
					object obj10 = <>O.<8>__Glaze_GetMinimumInterruptPriority;
					if (obj10 == null)
					{
						hook_GetMinimumInterruptPriority val9 = Glaze_GetMinimumInterruptPriority;
						<>O.<8>__Glaze_GetMinimumInterruptPriority = val9;
						obj10 = (object)val9;
					}
					Glaze.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)obj10;
					object obj11 = <>O.<9>__ChargeGlaze_GetMinimumInterruptPriority;
					if (obj11 == null)
					{
						hook_GetMinimumInterruptPriority val10 = ChargeGlaze_GetMinimumInterruptPriority;
						<>O.<9>__ChargeGlaze_GetMinimumInterruptPriority = val10;
						obj11 = (object)val10;
					}
					ChargeRolyPoly.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)obj11;
				}
				if (Settings.SearEnabled)
				{
					object obj12 = <>O.<10>__Sear_Update;
					if (obj12 == null)
					{
						hook_Update val11 = Sear_Update;
						<>O.<10>__Sear_Update = val11;
						obj12 = (object)val11;
					}
					Sear.Update += (hook_Update)obj12;
					object obj13 = <>O.<11>__HealthComponent_TakeDamage;
					if (obj13 == null)
					{
						hook_TakeDamage val12 = HealthComponent_TakeDamage;
						<>O.<11>__HealthComponent_TakeDamage = val12;
						obj13 = (object)val12;
					}
					HealthComponent.TakeDamage += (hook_TakeDamage)obj13;
					object obj14 = <>O.<12>__DotController_InflictDot_refInflictDotInfo;
					if (obj14 == null)
					{
						hook_InflictDot_refInflictDotInfo val13 = DotController_InflictDot_refInflictDotInfo;
						<>O.<12>__DotController_InflictDot_refInflictDotInfo = val13;
						obj14 = (object)val13;
					}
					DotController.InflictDot_refInflictDotInfo += (hook_InflictDot_refInflictDotInfo)obj14;
					object obj15 = <>O.<13>__Sear_OnEnter;
					if (obj15 == null)
					{
						hook_OnEnter val14 = Sear_OnEnter;
						<>O.<13>__Sear_OnEnter = val14;
						obj15 = (object)val14;
					}
					Sear.OnEnter += (hook_OnEnter)obj15;
					LanguageAPI.Add(SkillDef.ChefSear.skillDescriptionToken, "<style=cIsDamage>Ignite</style>. Scorch enemies for <style=cIsDamage>2000%-6000% damage</style>, based on distance from the target. Glazed enemies take extra damage.");
					if (Settings.SearNoDirLock)
					{
						object obj16 = <>O.<14>__Sear_FirePrimaryAttack;
						if (obj16 == null)
						{
							Manipulator val15 = Sear_FirePrimaryAttack;
							<>O.<14>__Sear_FirePrimaryAttack = val15;
							obj16 = (object)val15;
						}
						Sear.FirePrimaryAttack += (Manipulator)obj16;
					}
				}
				if (Settings.DiceRaiseProcCoefficient)
				{
					GameObject val16 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Chef/ChefCleaver.prefab").WaitForCompletion();
					val16.GetComponent<ProjectileController>().procCoefficient = Settings.DiceProcCoefficient;
				}
				if (Settings.GlazeEnabled)
				{
					object obj17 = <>O.<15>__Glaze_FireGrenade;
					if (obj17 == null)
					{
						hook_FireGrenade val17 = Glaze_FireGrenade;
						<>O.<15>__Glaze_FireGrenade = val17;
						obj17 = (object)val17;
					}
					Glaze.FireGrenade += (hook_FireGrenade)obj17;
					LanguageAPI.Add(SkillDef.ChefGlaze.skillDescriptionToken, "Fire globs of oil in quick succession, dealing <style=cIsDamage>7x300% damage</style> and <style=cIsDamage>Weakening</style> enemies. Employs a hefty knockback when mid-air.");
				}
				if (Settings.RollEnabled)
				{
					if (Settings.RollOil)
					{
						OilTrailSegment = PrefabAPI.InstantiateClone(GameObject.CrocoLeapAcid, "OilTrailSegment");
						OilTrailSegmentGhost = PrefabAPI.InstantiateClone(GameObject.CrocoLeapAcidGhost, "OilTrailSegmentGhost");
						OilTrailSegmentGhost.FindComponent<Decal>("Decal").Material = Material.matClayBossGooDecal;
						((Component)OilTrailSegmentGhost.FindParticle("Spittle")).gameObject.SetActive(false);
						((Component)OilTrailSegmentGhost.FindParticle("Gas")).gameObject.SetActive(false);
						((Component)OilTrailSegmentGhost.FindComponent<Light>("Point Light")).gameObject.SetActive(false);
						OilTrailSegmentGhost.GetComponent<ProjectileGhostController>().inheritScaleFromProjectile = true;
						OilTrailSegment.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)2560);
						Transform transform = OilTrailSegment.transform;
						transform.localScale *= 0.5f;
						OilTrailSegment.GetComponent<ProjectileController>().ghostPrefab = OilTrailSegmentGhost;
						OilTrailSegment.GetComponent<ProjectileDotZone>().damageCoefficient = 0f;
						OilTrailSegment.GetComponent<ProjectileDotZone>().impactEffect = null;
						OilTrailSegment.GetComponent<ProjectileDotZone>().fireFrequency = 20f;
						OilTrailSegment.GetComponent<ProjectileDotZone>().overlapProcCoefficient = 0f;
						OilTrailSegment.RemoveComponents<AkEvent>();
						OilTrailSegment.RemoveComponent<AkGameObj>();
						OilTrailSegment.AddComponent<ModdedDamageTypeHolderComponent>().Add(GlazeOnHit);
						GlobalEventManager.onServerDamageDealt += OnDamageDealt;
						ContentAddition.AddProjectile(OilTrailSegment);
						GameObject.ChefBody.AddComponent<ChefTrailBehaviour>();
					}
					object obj18 = <>O.<17>__RolyPoly_OnEnter;
					if (obj18 == null)
					{
						hook_OnEnter val18 = RolyPoly_OnEnter;
						<>O.<17>__RolyPoly_OnEnter = val18;
						obj18 = (object)val18;
					}
					RolyPoly.OnEnter += (hook_OnEnter)obj18;
					object obj19 = <>O.<18>__RolyPoly_FixedUpdate;
					if (obj19 == null)
					{
						hook_FixedUpdate val19 = RolyPoly_FixedUpdate;
						<>O.<18>__RolyPoly_FixedUpdate = val19;
						obj19 = (object)val19;
					}
					RolyPoly.FixedUpdate += (hook_FixedUpdate)obj19;
					LanguageAPI.Add(SkillDef.ChefRolyPoly.skillDescriptionToken, "Charge the rolling pin up to three times to <style=cIsUtility>speed</style> forward, dealing <style=cIsDamage>600%-1200%</style> damage and <style=cIsDamage>Stunning</style> any enemies on hit.");
				}
			}
			catch (Exception arg)
			{
				Main.ModLogger.LogError((object)$"StormTweaks::CHEF.Init() failure - {arg}");
			}
		}

		private static void Glaze_FireGrenade(orig_FireGrenade orig, Glaze self, string targetMuzzle)
		{
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: 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)
			Glaze.damageCoefficient = Settings.GlazeDamageCoefficient;
			if (Settings.GlazeKnockbackSelf && (!((EntityState)self).characterBody.characterMotor.isGrounded || Settings.GlazeKnockbackAlways))
			{
				Ray aimRay = ((BaseState)self).GetAimRay();
				Vector3 direction = ((Ray)(ref aimRay)).direction;
				if (Settings.GlazeKnockbackAmplified)
				{
					if (direction.y <= -0.7f)
					{
						((EntityState)self).characterBody.characterMotor.ApplyForce((float)Settings.GlazeAmplifiedKnockbackAmount * direction, false, false);
					}
					else if (Settings.GlazeKnockbackSuicidePrevention && direction.y < 0.8f)
					{
						((EntityState)self).characterBody.characterMotor.ApplyForce((float)Settings.GlazeStandardKnockbackAmount * direction, false, false);
					}
				}
				else
				{
					((EntityState)self).characterBody.characterMotor.ApplyForce((float)Settings.GlazeStandardKnockbackAmount * direction, false, false);
				}
			}
			orig.Invoke(self, targetMuzzle);
		}

		private static void RolyPoly_FixedUpdate(orig_FixedUpdate orig, RolyPoly self)
		{
			if (Settings.RollCanCancel && ((ButtonState)(ref ((EntityState)self).inputBank.skill3)).justPressed)
			{
				self.duration = 0f;
			}
			orig.Invoke(self);
		}

		private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
		{
			//IL_005e: 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_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Invalid comparison between Unknown and I4
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Invalid comparison between Unknown and I4
			if (Settings.SearDamageFactorDistance && Object.op_Implicit((Object)(object)damageInfo.attacker) && ((Object)damageInfo.attacker).name.Contains("ChefBody") && (int)damageInfo.damageType.damageType == 128 && (int)damageInfo.damageType.damageTypeExtended == 67108864)
			{
				float val = Vector3.Distance(((Component)self).transform.position, damageInfo.attacker.transform.position);
				float num = Settings.SearDistance + 1f;
				float num2 = 0f;
				float num3 = Math.Max(Math.Min(val, num), num2);
				float searDistanceDamageMultiplier = Settings.SearDistanceDamageMultiplier;
				float num4 = 1f + (searDistanceDamageMultiplier - 1f) * (num - num3) / (num - num2);
				damageInfo.damage *= num4;
			}
			orig.Invoke(self, damageInfo);
		}

		private static void DotController_InflictDot_refInflictDotInfo(orig_InflictDot_refInflictDotInfo orig, ref InflictDotInfo inflictDotInfo)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Invalid comparison between Unknown and I4
			if (Settings.SearBuffDamageOverTime && ((Object)inflictDotInfo.attackerObject).name.Contains("ChefBody") && (int)inflictDotInfo.dotIndex == 1)
			{
				inflictDotInfo.totalDamage = Settings.SearDamageOverTimeValue;
				inflictDotInfo.duration = Settings.SearDamageOverTimeDuration;
			}
			orig.Invoke(ref inflictDotInfo);
		}

		private static void RolyPoly_OnEnter(orig_OnEnter orig, RolyPoly self)
		{
			float charge = self.charge;
			if (Settings.RollSpeed)
			{
				self.charge = 0f;
				self.speedMultiplier += (charge + 1f) * Settings.RollSpeedMultiplier;
			}
			if (Settings.RollDamage)
			{
				RolyPoly.chargeDamageCoefficient = Settings.RollDamageBase + charge * Settings.RollDamageMultiplier;
			}
			if (Settings.RollKnockback)
			{
				RolyPoly.knockbackForce = Settings.RollKnockbackValue;
			}
			if (Settings.RollExtendDuration)
			{
				self.baseDuration += (charge + 1f) * Settings.RollExtendDurationMultiplier;
			}
			orig.Invoke(self);
		}

		private static void Sear_OnEnter(orig_OnEnter orig, Sear self)
		{
			Sear.maxDistance = Settings.SearDistance;
			Sear.baseExitDuration = Settings.SearBaseExitDuration;
			Sear.baseFlamethrowerDuration = Settings.SearBaseFlamethrowerDuration;
			if (Settings.SearTickDamageCoefficient > 0f)
			{
				self.tickDamageCoefficient = Settings.SearTickDamageCoefficient;
			}
			if (Settings.SearTickFrequency > 0f)
			{
				Sear.tickFrequency = Settings.SearTickFrequency;
			}
			orig.Invoke(self);
		}

		private static void Sear_FirePrimaryAttack(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			MethodReference val2 = default(MethodReference);
			val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref val2),
				(Instruction x) => ILPatternMatchingExt.MatchDup(x),
				(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0f)
			});
			val.Emit(OpCodes.Ldarg_0);
			val.EmitDelegate<Func<Vector3, Sear, Vector3>>((Func<Vector3, Sear, Vector3>)delegate(Vector3 inVec, Sear instance)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000a: Unknown result type (might be due to invalid IL or missing references)
				//IL_000f: 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)
				Ray aimRay = ((BaseState)instance).GetAimRay();
				return ((Ray)(ref aimRay)).direction;
			});
		}

		private static void Sear_Update(orig_Update orig, Sear self)
		{
			//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_00b8: Unknown result type (might be due to invalid IL or missing references)
			if (Settings.SearCanCancel)
			{
				if (Settings.SearHoldMode)
				{
					if (!((EntityState)self).inputBank.skill2.down)
					{
						self.flamethrowerDuration = 0f;
					}
				}
				else if (((EntityState)self).age >= 0.3f && !((EntityState)self).inputBank.skill2.wasDown && ((ButtonState)(ref ((EntityState)self).inputBank.skill2)).justPressed)
				{
					self.flamethrowerDuration = 0f;
				}
			}
			orig.Invoke(self);
			if (Settings.SearNoDirLock && Object.op_Implicit((Object)(object)self.flamethrowerEffectInstance))
			{
				Transform flamethrowerEffectInstance = self.flamethrowerEffectInstance;
				Ray aimRay = ((BaseState)self).GetAimRay();
				flamethrowerEffectInstance.forward = ((Ray)(ref aimRay)).direction;
			}
		}

		private static void OnDamageDealt(DamageReport report)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			if (DamageAPI.HasModdedDamageType(report.damageInfo, GlazeOnHit) && Object.op_Implicit((Object)(object)report.victimBody))
			{
				report.victimBody.AddTimedBuff(Buffs.CookingOiled, 3f, 1);
			}
		}

		private static InterruptPriority RolyPoly_GetMinimumInterruptPriority(orig_GetMinimumInterruptPriority orig, RolyPoly self)
		{
			//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;
		}

		private static InterruptPriority Glaze_GetMinimumInterruptPriority(orig_GetMinimumInterruptPriority orig, Glaze self)
		{
			//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;
		}

		private static InterruptPriority ChargeGlaze_GetMinimumInterruptPriority(orig_GetMinimumInterruptPriority orig, ChargeRolyPoly self)
		{
			//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;
		}

		private static InterruptPriority Sear_GetMinimumInterruptPriority(orig_GetMinimumInterruptPriority orig, Sear self)
		{
			//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;
		}

		private static void Dice_OnEnter(orig_OnEnter orig, Dice self)
		{
			if (Settings.DiceDamageCoefficient > 0f)
			{
				self.damageCoefficient = Settings.DiceDamageCoefficient;
			}
			if (Settings.DiceBoostedDamageCoefficient > 0f)
			{
				self.boostedDamageCoefficient = Settings.DiceBoostedDamageCoefficient;
			}
			orig.Invoke(self);
			ChefCleaverStorage.Reset(((EntityState)self).characterBody, self.chefController.yesChefHeatActive ? 0.8f : 0.4f);
		}

		private static void CleaverProjectile_OnDestroy(orig_OnDestroy orig, CleaverProjectile self)
		{
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.chefController))
			{
				CharacterBody characterBody = self.chefController.characterBody;
				if (ChefCleaverStorage.cleaverMap.ContainsKey(characterBody) && ChefCleaverStorage.cleaverMap[characterBody].Contains(self))
				{
					ChefCleaverStorage.cleaverMap[characterBody].Remove(self);
				}
			}
		}

		private static void CleaverProjectile_Start(orig_Start orig, CleaverProjectile self)
		{
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.chefController))
			{
				CharacterBody characterBody = self.chefController.characterBody;
				if (ChefCleaverStorage.cleaverMap.ContainsKey(characterBody))
				{
					ChefCleaverStorage.cleaverMap[characterBody].Add(self);
				}
			}
		}

		private static void Dice_OnExit(orig_OnExit orig, Dice self)
		{
			self.chefController.SetYesChefHeatState(false);
			if (NetworkServer.active)
			{
				((EntityState)self).characterBody.RemoveBuff(Buffs.boostedFireEffect);
			}
			if (((EntityState)self).isAuthority)
			{
				self.chefController.ClearSkillOverrides();
			}
			((EntityState)self).PlayAnimation("Gesture, Override", "DiceReturnCatch", "DiceReturnCatch.playbackRate", self.duration, 0f);
			((EntityState)self).PlayAnimation("Gesture, Additive", "DiceReturnCatch", "DiceReturnCatch.playbackRate", self.duration, 0f);
		}

		private static void ChefController_Update(orig_Update orig, ChefController self)
		{
			orig.Invoke(self);
			self.recallCleaver = !self.characterBody.inputBank.skill1.down && ChefCleaverStorage.GetCanBodyRecall(self.characterBody);
		}

		private static void Dice_FixedUpdate(orig_FixedUpdate orig, Dice self)
		{
			self.recallInputPressed = false;
			self.recallBackupCountdown = 900f;
			orig.Invoke(self);
			if (((EntityState)self).fixedAge >= Settings.DiceDuration / ((BaseState)self).attackSpeedStat)
			{
				((EntityState)self).outer.SetNextStateToMain();
			}
		}
	}
	[BepInPlugin("ror2.BetterChef", "BetterChef", "1.0.0")]
	public class Main : BaseUnityPlugin
	{
		public static ConfigFile config;

		public static ManualLogSource ModLogger;

		public void Awake()
		{
			ModLogger = ((BaseUnityPlugin)this).Logger;
			config = ((BaseUnityPlugin)this).Config;
			CHEF.Init();
		}

		public static T Bind<T>(string sec, string name, string desc, T val)
		{
			return config.Bind<T>(sec, name, val, desc).Value;
		}
	}
}
namespace StormTweaks.Utils
{
	public static class CharacterExtensions
	{
		public static bool HasSkillEquipped(this CharacterBody body, SkillDef skill)
		{
			GenericSkill[] components = ((Component)body).GetComponents<GenericSkill>();
			foreach (GenericSkill val in components)
			{
				if ((Object)(object)val.skillDef == (Object)(object)skill)
				{
					return true;
				}
			}
			return false;
		}

		public static bool GetIsAttacking(this CharacterBody body)
		{
			List<string> list = new List<string>();
			GenericSkill[] components = ((Component)body).GetComponents<GenericSkill>();
			foreach (GenericSkill val in components)
			{
				if (Object.op_Implicit((Object)(object)val.skillDef) && !list.Contains(val.skillDef.activationStateMachineName))
				{
					list.Add(val.skillDef.activationStateMachineName);
				}
			}
			foreach (string item in list)
			{
				EntityStateMachine val2 = EntityStateMachine.FindByCustomName(((Component)body).gameObject, item);
				if (!val2.IsInMainState())
				{
					return true;
				}
			}
			return false;
		}

		public static void ClearInventory(this CharacterBody body)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)body.inventory))
			{
				return;
			}
			List<ItemDef> list = new List<ItemDef>();
			foreach (ItemIndex item in body.inventory.itemAcquisitionOrder)
			{
				ItemDef itemDef = ItemCatalog.GetItemDef(item);
				list.Add(itemDef);
			}
			foreach (ItemDef item2 in list)
			{
				body.inventory.RemoveItem(item2, body.inventory.GetItemCount(item2));
			}
		}

		public static void ClearInventory(this CharacterBody body, bool hidden)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)body.inventory))
			{
				return;
			}
			List<ItemDef> list = new List<ItemDef>();
			foreach (ItemIndex item in body.inventory.itemAcquisitionOrder)
			{
				ItemDef itemDef = ItemCatalog.GetItemDef(item);
				if (hidden)
				{
					list.Add(itemDef);
				}
				else if (!itemDef.hidden)
				{
					list.Add(itemDef);
				}
			}
			foreach (ItemDef item2 in list)
			{
				body.inventory.RemoveItem(item2, body.inventory.GetItemCount(item2));
			}
		}
	}
	public abstract class CoolerBasicMeleeAttack : BasicMeleeAttack
	{
		public abstract float BaseDuration { get; }

		public abstract float DamageCoefficient { get; }

		public abstract string HitboxName { get; }

		public abstract GameObject HitEffectPrefab { get; }

		public abstract float ProcCoefficient { get; }

		public abstract float HitPauseDuration { get; }

		public abstract GameObject SwingEffectPrefab { get; }

		public abstract string MuzzleString { get; }

		public virtual string MechanimHitboxParameter { get; }

		public virtual bool ScaleHitPauseDurationWithAttackSpeed { get; } = true;


		public override void OnEnter()
		{
			base.baseDuration = BaseDuration;
			base.damageCoefficient = DamageCoefficient;
			base.hitBoxGroupName = HitboxName;
			base.hitEffectPrefab = HitEffectPrefab;
			base.procCoefficient = ProcCoefficient;
			base.hitPauseDuration = HitPauseDuration;
			base.swingEffectPrefab = SwingEffectPrefab;
			base.swingEffectMuzzleString = MuzzleString;
			if (MechanimHitboxParameter != null)
			{
				base.mecanimHitboxActiveParameter = MechanimHitboxParameter;
			}
			base.scaleHitPauseDurationAndVelocityWithAttackSpeed = ScaleHitPauseDurationWithAttackSpeed;
			((BasicMeleeAttack)this).OnEnter();
		}
	}
	public static class EnumeratorExtensions
	{
		public static T GetRandom<T>(this IEnumerable<T> self)
		{
			return self.ElementAt(Random.Range(0, self.Count()));
		}

		public static T GetRandom<T>(this IEnumerable<T> self, Xoroshiro128Plus rng)
		{
			return self.ElementAt(rng.RangeInt(0, self.Count()));
		}

		public static T GetRandom<T>(this IEnumerable<T> self, Func<T, bool> predicate)
		{
			try
			{
				return self.Where(predicate).ElementAt(Random.Range(0, self.Count()));
			}
			catch
			{
				return default(T);
			}
		}

		public static T GetRandom<T>(this IEnumerable<T> self, Xoroshiro128Plus rng, Func<T, bool> predicate)
		{
			try
			{
				return self.Where(predicate).ElementAt(rng.RangeInt(0, self.Count()));
			}
			catch
			{
				return default(T);
			}
		}
	}
	public static class MiscUtils
	{
		public static Vector3? RaycastToDirection(Vector3 position, float maxDistance, Vector3 direction, int layer)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(new Ray(position, direction), ref val, maxDistance, layer, (QueryTriggerInteraction)1))
			{
				return ((RaycastHit)(ref val)).point;
			}
			return null;
		}

		public static Vector3? GroundPoint(this Vector3 point)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			return RaycastToDirection(point, float.PositiveInfinity, Vector3.down, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask));
		}

		public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> toShuffle, Xoroshiro128Plus random)
		{
			List<T> list = new List<T>();
			foreach (T item in toShuffle)
			{
				list.Insert(random.RangeInt(0, list.Count + 1), item);
			}
			return list;
		}

		public static Vector3 FindClosestNodeToPosition(Vector3 position, HullClassification hullClassification, bool checkAirNodes = false)
		{
			//IL_001c: 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_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: 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_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: 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_0044: 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)
			NodeGraph val = (checkAirNodes ? SceneInfo.instance.airNodes : SceneInfo.instance.groundNodes);
			NodeIndex val2 = val.FindClosestNode(position, hullClassification, float.PositiveInfinity);
			if (val2 != NodeIndex.invalid)
			{
				Vector3 result = default(Vector3);
				val.GetNodePosition(val2, ref result);
				return result;
			}
			return Vector3.zero;
		}

		public static bool TeleportBody(CharacterBody characterBody, GameObject target, GameObject teleportEffect, HullClassification hullClassification, Xoroshiro128Plus rng, float minDistance = 20f, float maxDistance = 45f, bool teleportAir = false)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)characterBody))
			{
				return false;
			}
			SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>();
			val.hullSize = hullClassification;
			val.nodeGraphType = (GraphType)(teleportAir ? 1 : 0);
			val.prefab = Resources.Load<GameObject>("SpawnCards/HelperPrefab");
			GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule
			{
				placementMode = (PlacementMode)1,
				position = target.transform.position,
				minDistance = minDistance,
				maxDistance = maxDistance
			}, rng));
			if (Object.op_Implicit((Object)(object)val2))
			{
				TeleportHelper.TeleportBody(characterBody, val2.transform.position);
				if (Object.op_Implicit((Object)(object)teleportEffect))
				{
					EffectManager.SimpleEffect(teleportEffect, val2.transform.position, Quaternion.identity, true);
				}
				Object.Destroy((Object)(object)val2);
				Object.Destroy((Object)(object)val);
				return true;
			}
			Object.Destroy((Object)(object)val);
			return false;
		}

		public static Vector3? AboveTargetVectorFromDamageInfo(DamageInfo damageInfo, float distanceAboveTarget)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: 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_013a: 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)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			if (damageInfo.rejected || !Object.op_Implicit((Object)(object)damageInfo.attacker))
			{
				return null;
			}
			CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component))
			{
				TeamMask enemyTeams = TeamMask.GetEnemyTeams(component.teamComponent.teamIndex);
				HurtBox val = new SphereSearch
				{
					radius = 1f,
					mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
					origin = damageInfo.position
				}.RefreshCandidates().FilterCandidatesByHurtBoxTeam(enemyTeams).OrderCandidatesByDistance()
					.FilterCandidatesByDistinctHurtBoxEntities()
					.GetHurtBoxes()
					.FirstOrDefault();
				if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.healthComponent) && Object.op_Implicit((Object)(object)val.healthComponent.body))
				{
					CharacterBody body = val.healthComponent.body;
					Vector3 val2 = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f));
					Vector3? val3 = RaycastToDirection(val2, distanceAboveTarget, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask));
					if (val3.HasValue)
					{
						return val3.Value;
					}
					return val2 + Vector3.up * distanceAboveTarget;
				}
			}
			return null;
		}

		public static Vector3? AboveTargetBody(CharacterBody body, float distanceAbove)
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: 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_0060: 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_0090: 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_009b: 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)
			if (!Object.op_Implicit((Object)(object)body))
			{
				return null;
			}
			Vector3 val = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f));
			Vector3? val2 = RaycastToDirection(val, distanceAbove, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask));
			if (val2.HasValue)
			{
				return val2.Value;
			}
			return val + Vector3.up * distanceAbove;
		}

		public static Dictionary<string, Vector3> GetAimSurfaceAlignmentInfo(Ray ray, int layerMask, float distance)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: 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_004e: 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_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: 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)
			Dictionary<string, Vector3> dictionary = new Dictionary<string, Vector3>();
			RaycastHit val = default(RaycastHit);
			if (!Physics.Raycast(ray, ref val, distance, layerMask, (QueryTriggerInteraction)1))
			{
				return null;
			}
			Vector3 point = ((RaycastHit)(ref val)).point;
			Vector3 val2 = Vector3.Cross(((Ray)(ref ray)).direction, Vector3.up);
			Vector3 val3 = Vector3.ProjectOnPlane(((RaycastHit)(ref val)).normal, val2);
			Vector3 value = Vector3.Cross(val2, val3);
			dictionary.Add("Position", point);
			dictionary.Add("Right", val2);
			dictionary.Add("Forward", value);
			dictionary.Add("Up", val3);
			return dictionary;
		}

		public static Vector3[] GetSafePositionsWithinDistance(Vector3 center, float distance)
		{
			//IL_0097: 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_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: 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)SceneInfo.instance) && Object.op_Implicit((Object)(object)SceneInfo.instance.groundNodes))
			{
				NodeGraph groundNodes = SceneInfo.instance.groundNodes;
				List<Vector3> list = new List<Vector3>();
				Node[] nodes = groundNodes.nodes;
				foreach (Node val in nodes)
				{
					if (Vector3.Distance(val.position, center) <= distance)
					{
						list.Add(val.position);
					}
				}
				return list.ToArray();
			}
			return (Vector3[])(object)new Vector3[1] { center };
		}

		public static Vector3 GetRandomGroundNode(NodeFlags reqFlags, NodeFlags forbiddenFlags, HullMask hull)
		{
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: 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_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: 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_0057: 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)
			//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_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: 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_00b0: 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_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Invalid comparison between Unknown and I4
			//IL_007e: 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)
			if (Object.op_Implicit((Object)(object)SceneInfo.instance) && Object.op_Implicit((Object)(object)SceneInfo.instance.groundNodes))
			{
				NodeGraph groundNodes = SceneInfo.instance.groundNodes;
				List<Vector3> list = new List<Vector3>();
				Node[] nodes = groundNodes.nodes;
				foreach (Node val in nodes)
				{
					if ((val.forbiddenHulls & hull) == 0 && (NodeFlags)(val.flags & reqFlags) == reqFlags && (val.flags & forbiddenFlags) == 0)
					{
						list.Add(val.position);
					}
				}
				if (list.Count > 0)
				{
					return list.GetRandom();
				}
				return Random.onUnitSphere * 500f;
			}
			return Random.onUnitSphere * 500f;
		}

		public static AnimatorOverrideController FixOverrideController(RuntimeAnimatorController target, AnimatorOverrideController original)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			AnimatorOverrideController result = new AnimatorOverrideController(target);
			AnimationClip[] animationClips = ((RuntimeAnimatorController)original).animationClips;
			foreach (AnimationClip val in animationClips)
			{
				Debug.Log((object)(((Object)val).name + " - clip"));
			}
			return result;
		}
	}
	public class Timer
	{
		public float duration;

		public float cur;

		private bool inv;

		public bool expired = false;

		private bool expires;

		private bool trueIfExp;

		private bool resetOnExp;

		public Timer(float dur, bool inverse = false, bool expires = false, bool trueOnExpire = false, bool resetOnExpire = false)
		{
			duration = dur;
			inv = inverse;
			trueIfExp = trueOnExpire;
			resetOnExp = resetOnExpire;
			this.expires = expires;
			Reset();
		}

		public void Reset()
		{
			cur = (inv ? duration : 0f);
		}

		public bool Tick()
		{
			cur += (inv ? (0f - Time.fixedDeltaTime) : Time.fixedDeltaTime);
			bool result = (inv ? (cur <= 0f) : (cur >= duration));
			if (expires)
			{
				if (expired && !resetOnExp)
				{
					return trueIfExp;
				}
				expired = result;
				if (resetOnExp && expired)
				{
					expired = false;
					Reset();
				}
			}
			return result;
		}
	}
	public class LazyIndex
	{
		private string target;

		private BodyIndex _value = (BodyIndex)(-1);

		public BodyIndex Value => UpdateValue();

		public LazyIndex(string target)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			this.target = target;
		}

		public BodyIndex UpdateValue()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Invalid comparison between Unknown and I4
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Invalid comparison between Unknown and I4
			//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_0022: 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_0036: Unknown result type (might be due to invalid IL or missing references)
			if ((int)_value == -1 || (int)_value == -1)
			{
				_value = BodyCatalog.FindBodyIndex(target);
			}
			return _value;
		}

		public static implicit operator BodyIndex(LazyIndex index)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return index.Value;
		}
	}
	public static class UnityExtensions
	{
		public static void RemoveComponent<T>(this GameObject self) where T : Component
		{
			Object.Destroy((Object)(object)self.GetComponent<T>());
		}

		public static void RemoveComponents<T>(this GameObject self) where T : Component
		{
			T[] components = self.GetComponents<T>();
			for (int i = 0; i < components.Length; i++)
			{
				Object.Destroy((Object)(object)components[i]);
			}
		}

		public static ParticleSystemRenderer FindParticle(this GameObject self, string name)
		{
			return self.FindComponent<ParticleSystemRenderer>(name);
		}

		public static T FindComponent<T>(this GameObject self, string name) where T : Component
		{
			return self.GetComponentsInChildren<T>().FirstOrDefault((T x) => ((Object)((Component)x).gameObject).name == name);
		}

		public static T Clone<T>(this T obj)
		{
			return (T)(obj.GetType().GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic)?.Invoke(obj, null));
		}

		public static void MakeAbideByScale(this ParticleSystem self)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			MainModule main = self.main;
			((MainModule)(ref main)).scalingMode = (ParticleSystemScalingMode)0;
		}

		public static void MakeAbideByScaleRecursively(this GameObject self)
		{
			ParticleSystem[] componentsInChildren = self.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem self2 in componentsInChildren)
			{
				self2.MakeAbideByScale();
			}
		}

		public static Vector3 Nullify(this Vector3 self, bool x, bool y, bool z)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: 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_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(x ? 0f : self.x, y ? 0f : self.y, z ? 0f : self.z);
		}

		public static void RemoveComponent<T>(this Component self) where T : Component
		{
			Object.Destroy((Object)(object)self.GetComponent<T>());
		}

		public static void RemoveComponents<T>(this Component self) where T : Component
		{
			T[] components = self.GetComponents<T>();
			for (int i = 0; i < components.Length; i++)
			{
				Object.Destroy((Object)(object)components[i]);
			}
		}

		public static T AddComponent<T>(this Component self) where T : Component
		{
			return self.gameObject.AddComponent<T>();
		}

		public static Sprite MakeSprite(this Texture2D self)
		{
			//IL_0015: 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)
			return Sprite.Create(new Rect(0f, 0f, 512f, 512f), new Vector2(256f, 256f), 1f, self);
		}
	}
	public static class Events
	{
		public static uint Play_wBisonDeath = 1113517888u;

		public static uint Play_wBisonHit = 1197473233u;

		public static uint Play_wBisonShoot1 = 3268390400u;

		public static uint Play_wBisonSpawn = 1249767875u;

		public static uint Play_wBlastdoor = 3043230225u;

		public static uint Play_wBoarDeath = 3944593657u;

		public static uint Play_wBoarExplosion = 3091761946u;

		public static uint Play_wBoarHit = 1332006904u;

		public static uint Play_wBoarMDeath = 2887033908u;

		public static uint Play_wBoarShoot1 = 2651342963u;

		public static uint Play_wBoss1Shoot1 = 3380168965u;

		public static uint Play_wBoss1Shoot2 = 3380168966u;

		public static uint Play_wBossSkill2 = 857592033u;

		public static uint Play_wBubbleShield = 3999340508u;

		public static uint Play_wBullet1 = 3448409474u;

		public static uint Play_wBullet2 = 3448409473u;

		public static uint Play_wBullet3 = 3448409472u;

		public static uint Play_wCasing = 1800381192u;

		public static uint Play_wChainLightning = 1913174254u;

		public static uint Play_wChat = 1231583519u;

		public static uint Play_wChefShoot2_1 = 4002996080u;

		public static uint Play_wChest0 = 273185112u;

		public static uint Play_wChest1 = 273185113u;

		public static uint Play_wChest2 = 273185114u;

		public static uint Play_wChest5 = 273185117u;

		public static uint Play_wChildDeath = 3731152613u;

		public static uint Play_wChildGShoot1 = 2978407106u;

		public static uint Play_wChildHit = 4072685316u;

		public static uint Play_wChildShoot1 = 4260787991u;

		public static uint Play_wClayDeath = 1853199952u;

		public static uint Play_wClayHit = 2864197409u;

		public static uint Play_wClayShoot1 = 1969574576u;

		public static uint Play_wClaySpawn = 1481867283u;

		public static uint Play_wClick = 1105771879u;

		public static uint Play_wCoin = 1232716514u;

		public static uint Play_wCoins = 2360199605u;

		public static uint Play_wCrabDeath = 2914438815u;

		public static uint Play_wCrabSpawn = 400103432u;

		public static uint Play_wCrit_01 = 3774687669u;

		public static uint Play_wCrowbar = 2755541643u;

		public static uint Play_wCutsceneAlarm = 2172459452u;

		public static uint Play_wCutsceneJet = 197474154u;

		public static uint Play_wCutscenePass = 1461112566u;

		public static uint Play_wDifficulty = 3657652262u;

		public static uint Play_wDoll = 1118795882u;

		public static uint Play_wDrill = 1252691444u;

		public static uint Play_wDrone1Spawn = 3109566651u;

		public static uint Play_wEfMushroom = 3355655210u;

		public static uint Play_wEmbryo = 3519041107u;

		public static uint Play_wError = 2120356473u;

		public static uint Play_wExplosiveShot = 1244890662u;

		public static uint Play_wFeralShoot1 = 732734997u;

		public static uint Play_wFeralShoot2 = 732734998u;

		public static uint Play_wFrozen = 1850209911u;

		public static uint Play_wGeyser = 2014257388u;

		public static uint Play_wGiantJellyExplosion = 923348941u;

		public static uint Play_wGiantJellyHit = 3830172407u;

		public static uint Play_wGolemAttack1 = 1019251312u;

		public static uint Play_wGolemDeath = 469957963u;

		public static uint Play_wGolemHit = 1924739498u;

		public static uint Play_wGolemSpawn = 2658053020u;

		public static uint Play_wGuardDeath = 2195517878u;

		public static uint Play_wGuardHit = 3726358359u;

		public static uint Play_wGuardSpawn = 1193575573u;

		public static uint Play_wHeavyShoot1 = 2266555164u;

		public static uint Play_wHitlist = 1828045284u;

		public static uint Play_wHuntressShoot1 = 2714607293u;

		public static uint Play_wHuntressShoot3 = 2714607295u;

		public static uint Play_wImpDeath = 1405469125u;

		public static uint Play_wImpGShoot1 = 702433570u;

		public static uint Play_wImpHit = 2697432036u;

		public static uint Play_wImpShoot1 = 2776445175u;

		public static uint Play_wImpShoot2 = 2776445172u;

		public static uint Play_wJanitorShoot1_1 = 2483794322u;

		public static uint Play_wJanitorShoot1_2 = 2483794321u;

		public static uint Play_wJanitorShoot2_1 = 1409879677u;

		public static uint Play_wJanitorShoot2_2 = 1409879678u;

		public static uint Play_wJanitorShoot4_1 = 1410865383u;

		public static uint Play_wJanitorShoot4_2 = 1410865380u;

		public static uint Play_wJarSouls = 4162844532u;

		public static uint Play_wJellyDeath = 2679553851u;

		public static uint Play_wJellyHit = 213554906u;

		public static uint Play_wLevelUp = 1919980434u;

		public static uint Play_wLevelUpWar = 4023542052u;

		public static uint Play_wLightning = 1330288141u;

		public static uint Play_wLizardDeath = 2074794113u;

		public static uint Play_wLizardGDeath = 4177291774u;

		public static uint Play_wLizardGHit = 1425978735u;

		public static uint Play_wLizardGShoot1 = 1170430294u;

		public static uint Play_wLizardGSpawn = 2684018717u;

		public static uint Play_wLizardHit = 4207177744u;

		public static uint Play_wLizardShoot1 = 287412267u;

		public static uint Play_wLizardSpawn = 1283696654u;

		public static uint Play_wMine = 1021358464u;

		public static uint Play_wMinerShoot1 = 1056078324u;

		public static uint Play_wMinerShoot2 = 1056078327u;

		public static uint Play_wMinerShoot3 = 1056078326u;

		public static uint Play_wMinerShoot4 = 1056078321u;

		public static uint Play_wMissileLaunch = 3415171634u;

		public static uint Play_wMS = 3023098025u;

		public static uint Play_wMush = 1473662818u;

		public static uint Play_wMushDeath = 3463803836u;

		public static uint Play_wMushHit = 2887429069u;

		public static uint Play_wMushShoot1 = 487910212u;

		public static uint Play_wMushSpawn = 4208364455u;

		public static uint Play_wNautShoot1 = 874719151u;

		public static uint Play_wPickup = 745840569u;

		public static uint Play_wPigShoot1 = 4172429713u;

		public static uint Play_wPodDeath = 368641344u;

		public static uint Play_wPodHit = 4069172177u;

		public static uint Play_wPyroShoot1 = 1977581991u;

		public static uint Play_wReflect = 3534459008u;

		public static uint Play_wReload = 1935874270u;

		public static uint Play_wRevive = 3924543518u;

		public static uint Play_wRiotGrenade = 1170699791u;

		public static uint Play_wRiotShoot1 = 392428577u;

		public static uint Play_wSamuraiShoot1 = 2292726403u;

		public static uint Play_wSamuraiShoot2 = 2292726400u;

		public static uint Play_wScavengerHit = 3803292342u;

		public static uint Play_wShield = 144484126u;

		public static uint Play_wShrine1 = 1516352125u;

		public static uint Play_wSmite = 1676655215u;

		public static uint Play_wSniper = 1326789400u;

		public static uint Play_wSniper2 = 2522836730u;

		public static uint Play_wSniperShoot3 = 3029163620u;

		public static uint Play_wSpiderHit = 1534240581u;

		public static uint Play_wSpiderShoot1 = 4018099836u;

		public static uint Play_wSpitterHit = 530229631u;

		public static uint Play_wSpitterShoot1 = 1863108870u;

		public static uint Play_wSpitterSpawn = 291139117u;

		public static uint Play_wSqueaky = 1860044956u;

		public static uint Play_wTeleporter = 1289080377u;

		public static uint Play_wUse = 1100859862u;

		public static uint Play_wWatch = 3354880454u;

		public static uint Play_wWispBDeath = 3021624856u;

		public static uint Play_wWispBShoot1 = 2025586984u;

		public static uint Play_wWispDeath = 3169292106u;

		public static uint Play_wWispGDeath = 1968672835u;

		public static uint Play_wWispGShoot1 = 969982957u;

		public static uint Play_wWispHit = 2561235483u;

		public static uint Play_wWispShoot1 = 914723770u;

		public static uint Play_wWispSpawn = 3436613665u;

		public static uint Play_wWormBurning = 2192059253u;

		public static uint Play_wWormDeath = 3793594386u;

		public static uint Play_wWormExplosion = 2529227609u;

		public static uint Play_wWormHit = 3504753139u;

		public static uint Play_wWormRoar = 1700089088u;

		public static uint Kill_loops = 3633988413u;

		public static uint Pause_All = 3864097025u;

		public static uint Play_Achievement = 3433956687u;

		public static uint Play_acid_larva_attack1_explo = 2451117845u;

		public static uint Play_acid_larva_attack1_loop = 3362763155u;

		public static uint Play_acid_larva_attack1_start = 1646746355u;

		public static uint Play_acid_larva_death = 3568098837u;

		public static uint Play_acid_larva_idle = 2621183947u;

		public static uint Play_acid_larva_impact = 2231265675u;

		public static uint Play_acid_larva_spawn = 3730906858u;

		public static uint Play_acid_larva_sprint_land = 2824450583u;

		public static uint Play_acid_larva_sprint_leap = 2639308470u;

		public static uint Play_acid_larva_step = 828559811u;

		public static uint Play_acrid_m1_bigSlash = 1656148530u;

		public static uint Play_acrid_m1_hit = 1822928838u;

		public static uint Play_acrid_m1_slash = 1719910342u;

		public static uint Play_acrid_m2_bite_hit = 2714436782u;

		public static uint Play_acrid_m2_bite_shoot = 456215952u;

		public static uint Play_acrid_m2_explode = 2736075181u;

		public static uint Play_acrid_m2_fly_loop = 644013190u;

		public static uint Play_acrid_m2_shoot = 999289595u;

		public static uint Play_acrid_R_fly_loop = 1915769387u;

		public static uint Play_acrid_R_infect = 1007919396u;

		public static uint Play_acrid_R_shoot = 1160201708u;

		public static uint Play_acrid_shift_fly_loop = 642600073u;

		public static uint Play_acrid_shift_jump = 1749522733u;

		public static uint Play_acrid_shift_land = 320622162u;

		public static uint Play_acrid_shift_puddle_loop = 1556265730u;

		public static uint Play_acrid_sprint_start = 801642819u;

		public static uint Play_acrid_sprint_stop = 3680364993u;

		public static uint Play_acrid_step = 372958860u;

		public static uint Play_acrid_step_sprint = 2575316715u;

		public static uint Play_acrid_step_sprint_hand = 3560327381u;

		public static uint Play_affix_mendingBomb_explode = 841626335u;

		public static uint Play_affix_mendingChain_loop = 3768810533u;

		public static uint Play_affix_void_bug_infect = 939369398u;

		public static uint Play_affix_void_bug_loop = 1959624827u;

		public static uint Play_affix_void_bug_spawn = 3394761874u;

		public static uint Play_affix_void_spawn = 1535219985u;

		public static uint Play_AMB_zone_arena = 1539048487u;

		public static uint Play_AMB_zone_artifactWorld = 4134483156u;

		public static uint Play_AMB_zone_char_select = 1641027481u;

		public static uint Play_AMB_zone_damp_cave_simple = 1142851345u;

		public static uint Play_AMB_zone_dark_rain = 938309267u;

		public static uint Play_AMB_zone_desert = 56392161u;

		public static uint Play_AMB_zone_limbo = 1359925925u;

		public static uint Play_AMB_zone_moon = 3075336325u;

		public static uint Play_AMB_zone_rootJungle = 2348244945u;

		public static uint Play_AMB_zone_ship_graveyard = 642154978u;

		public static uint Play_AMB_zone_skyMeadow = 3453798682u;

		public static uint Play_AMB_zone_skyMeadow_hiddenLab = 3040657526u;

		public static uint Play_AMB_zone_tundra = 38798342u;

		public static uint Play_AMB_zone_wisp_graveyard = 751162865u;

		public static uint Play_arenaCrab_idle_VO = 158852972u;

		public static uint Play_arenaCrab_swim_land = 2386788264u;

		public static uint Play_arenaCrab_swim_loop = 2401300333u;

		public static uint Play_arenaCrab_swim_plant = 1572198610u;

		public static uint Play_arenaCrab_swim_stroke = 2022745195u;

		public static uint Play_arenaCrab_swim_uproot = 3172304260u;

		public static uint Play_artifactBoss_attack1_explode = 71177277u;

		public static uint Play_artifactBoss_attack1_flightLoop = 2591078442u;

		public static uint Play_artifactBoss_attack1_shoot = 2196529419u;

		public static uint Play_artifactBoss_death = 4163357724u;

		public static uint Play_artifactBoss_idle_VO = 1345400638u;

		public static uint Play_artifactBoss_loop_level1 = 184703648u;

		public static uint Play_artifactBoss_loop_level2 = 184703651u;

		public static uint Play_artifactBoss_loop_level3 = 184703650u;

		public static uint Play_artifactBoss_spawn = 188493575u;

		public static uint Play_artifactBoss_takehit = 1098257974u;

		public static uint Play_bandit2_m1_reload_bullet = 452712768u;

		public static uint Play_bandit2_m1_reload_finish = 888917029u;

		public static uint Play_bandit2_m1_rifle = 2347126876u;

		public static uint Play_bandit2_m1_shotgun = 4206201632u;

		public static uint Play_bandit2_m2_alt_throw = 595565201u;

		public static uint Play_bandit2_m2_impact = 2278422317u;

		public static uint Play_bandit2_m2_slash = 4103120750u;

		public static uint Play_bandit2_R_alt_kill = 4143438424u;

		public static uint Play_bandit2_R_fire = 1435016856u;

		public static uint Play_bandit2_R_kill = 3719464252u;

		public static uint Play_bandit2_R_load = 3765877048u;

		public static uint Play_bandit2_shift_enter = 2967307668u;

		public static uint Play_bandit2_shift_exit = 850833398u;

		public static uint Play_bandit2_step = 3692683083u;

		public static uint Play_bandit2_step_sprint = 1764271662u;

		public static uint Play_bandit_M1_pump = 1853111450u;

		public static uint Play_bandit_M1_shot = 3033552564u;

		public static uint Play_bandit_M2_load = 2190546849u;

		public static uint Play_bandit_M2_shot = 1980580961u;

		public static uint Play_bandit_shift_end = 2770013503u;

		public static uint Play_bandit_shift_jump = 1325724668u;

		public static uint Play_bandit_shift_land = 1259710815u;

		public static uint Play_beetle_guard_attack1 = 763398245u;

		public static uint Play_beetle_guard_attack2_initial = 2581251415u;

		public static uint Play_beetle_guard_attack2_spikeLoop = 542781083u;

		public static uint Play_beetle_guard_death = 1527577102u;

		public static uint Play_beetle_guard_idle_VO = 3561602500u;

		public static uint Play_beetle_guard_impact = 2349109310u;

		public static uint Play_beetle_guard_spawn = 515189165u;

		public static uint Play_beetle_guard_step = 2628071246u;

		public static uint Play_beetle_queen_attack1 = 555937964u;

		public static uint Play_beetle_queen_attack2_impact = 3157521796u;

		public static uint Play_beetle_queen_attack2_projectile_loop = 1477410428u;

		public static uint Play_beetle_queen_attack2_shoot = 4217844119u;

		public static uint Play_beetle_queen_death = 451763711u;

		public static uint Play_beetle_queen_impact = 806513485u;

		public static uint Play_beetle_queen_spawn = 2698326632u;

		public static uint Play_beetle_queen_step = 2551161845u;

		public static uint Play_beetle_queen_VO_idle = 1845046503u;

		public static uint Play_beetle_worker_attack = 4241852727u;

		public static uint Play_beetle_worker_death = 383219511u;

		public static uint Play_beetle_worker_idle = 1901530073u;

		public static uint Play_beetle_worker_impact = 1338816453u;

		public static uint Play_beetle_worker_spawn = 1471942880u;

		public static uint Play_beetle_worker_step = 1809191501u;

		public static uint Play_bellBody_attackCreate = 780374380u;

		public static uint Play_bellBody_attackLand = 1732098311u;

		public static uint Play_bellBody_attackShoot = 4097802741u;

		public static uint Play_bellBody_death = 2182572274u;

		public static uint Play_bellBody_idle_loop = 345208571u;

		public static uint Play_bellBody_idle_VO = 4021378928u;

		public static uint Play_bellBody_impact = 2147523650u;

		public static uint Play_bellBody_spawn = 4144720393u;

		public static uint Play_bison_charge_attack_collide = 2909411958u;

		public static uint Play_bison_charge_attack_end_skid = 2235015895u;

		public static uint Play_bison_charge_attack_start = 2509443544u;

		public static uint Play_bison_charge_attack_tell = 4101791573u;

		public static uint Play_bison_death = 3590751484u;

		public static uint Play_bison_headbutt_attack_hit = 3802411724u;

		public static uint Play_bison_headbutt_attack_swing = 1417054473u;

		public static uint Play_bison_idle_graze = 2516815946u;

		public static uint Play_bison_idle_VO = 3855060446u;

		public static uint Play_bison_impact = 4030239748u;

		public static uint Play_bison_spawn = 3910957799u;

		public static uint Play_bison_step = 2839275484u;

		public static uint Play_bison_step_charge = 532574671u;

		public static uint Play_bleedOnCritAndExplode_explode = 2693964769u;

		public static uint Play_bleedOnCritAndExplode_impact = 3570667772u;

		public static uint Play_blindVermin_attack1_bite = 901504895u;

		public static uint Play_blindVermin_death = 3786262665u;

		public static uint Play_blindVermin_idle_VO = 2536191415u;

		public static uint Play_blindVermin_impact = 121244671u;

		public static uint Play_blindVermin_spawn = 2995165238u;

		public static uint Play_blindVermin_step = 294344023u;

		public static uint Play_boss_spawn_radius_appear = 4035156426u;

		public static uint Play_boss_spawn_rumble = 2327315087u;

		public static uint Play_captain_drone_idle_VO = 1028355892u;

		public static uint Play_captain_drone_quick_move = 8118127u;

		public static uint Play_captain_drone_zap = 3992615829u;

		public static uint Play_captain_m1_chargeStart = 2544146878u;

		public static uint Play_captain_m1_hit = 3819278833u;

		public static uint Play_captain_m1_reload = 2226849933u;

		public static uint Play_captain_m1_shootWide = 532604026u;

		public static uint Play_captain_m1_shotgun_charge_loop = 2453063032u;

		public static uint Play_captain_m1_shotgun_shootTight = 1348536996u;

		public static uint Play_captain_m2_tazed_loop = 3117407908u;

		public static uint Play_captain_m2_tazer_bounce = 1888136956u;

		public static uint Play_captain_m2_tazer_impact = 58834266u;

		public static uint Play_captain_m2_tazer_shoot = 832597929u;

		public static uint Play_captain_R_aim = 364785367u;

		public static uint Play_captain_R_aiming_loop = 1040620982u;

		public static uint Play_captain_R_confirmLocation = 1531948689u;

		public static uint Play_captain_R_impact = 3902637834u;

		public static uint Play_captain_R_turret_build = 1359756347u;

		public static uint Play_captain_R_turret_healing_loop = 788149618u;

		public static uint Play_captain_shift_active_loop = 3941125189u;

		public static uint Play_captain_shift_confirm = 2140775262u;

		public static uint Play_captain_shift_end = 803261989u;

		public static uint Play_captain_shift_impact = 3269630552u;

		public static uint Play_captain_shift_preImpact = 1069989355u;

		public static uint Play_captain_shift_start = 2113266862u;

		public static uint Play_captain_sprint_start = 3430012852u;

		public static uint Play_captain_sprint_stop = 1094493224u;

		public static uint Play_captain_step = 1226612947u;

		public static uint Play_captain_step_sprint = 2831720022u;

		public static uint Play_captain_utility_variant_impact = 1357225738u;

		public static uint Play_captain_utility_variant_laser_loop = 2451237826u;

		public static uint Play_captain_utility_variant_preImpact = 3461917085u;

		public static uint Play_char_glass_death = 359633836u;

		public static uint Play_char_jump_VO = 1654395377u;

		public static uint Play_char_land = 81910470u;

		public static uint Play_char_land_fall_damage = 2642009198u;

		public static uint Play_clayboss_death = 2559714313u;

		public static uint Play_clayboss_idle_loop = 3870838284u;

		public static uint Play_clayboss_idle_VO = 628079927u;

		public static uint Play_clayboss_impact = 1890981503u;

		public static uint Play_clayboss_M1_explo = 2368148000u;

		public static uint Play_clayboss_m1_lidClose = 1576056771u;

		public static uint Play_clayboss_m1_lidOpen = 1470926389u;

		public static uint Play_clayboss_m1_shoot = 2922284055u;

		public static uint Play_clayboss_m2_explo = 4043539191u;

		public static uint Play_clayboss_m2_projectile_loop = 3593581531u;

		public static uint Play_clayboss_m2_rise = 916955724u;

		public static uint Play_clayboss_m2_shoot = 600290068u;

		public static uint Play_clayboss_R_mulch_loop = 968500644u;

		public static uint Play_clayboss_R_start = 988517284u;

		public static uint Play_clayboss_R_tether_loop = 3132967749u;

		public static uint Play_clayboss_spawn = 1768616886u;

		public static uint Play_clayboss_step = 3088890839u;

		public static uint Play_clayboss_step_legMove = 869404285u;

		public static uint Play_clayboss_walk_loop = 212114079u;

		public static uint Play_clayBruiser_attack1_shoot_bullet = 491470286u;

		public static uint Play_clayBruiser_attack1_shoot_flyby = 3572694566u;

		public static uint Play_clayBruiser_attack1_shootLoop = 649113537u;

		public static uint Play_clayBruiser_attack1_windDown = 263088688u;

		public static uint Play_clayBruiser_attack1_windUp = 1916278867u;

		public static uint Play_clayBruiser_attack2_shoot = 1288244652u;

		public static uint Play_clayBruiser_death = 3332873880u;

		public static uint Play_clayBruiser_idle_VO = 2519366882u;

		public static uint Play_clayBruiser_impact = 1250949200u;

		public static uint Play_clayBruiser_spawn = 817063995u;

		public static uint Play_clayBruiser_step = 1697475496u;

		public static uint Play_clayGrenadier_attack1_chargeup = 318212996u;

		public static uint Play_clayGrenadier_attack1_explode = 2432531130u;

		public static uint Play_clayGrenadier_attack1_launch = 1826024586u;

		public static uint Play_clayGrenadier_attack2_chargeup = 1264580837u;

		public static uint Play_clayGrenadier_attack2_explode = 1475316029u;

		public static uint Play_clayGrenadier_attack2_throw = 3151664278u;

		public static uint Play_clayGrenadier_death = 4008628731u;

		public static uint Play_clayGrenadier_idle_VO = 2834945965u;

		public static uint Play_clayGrenadier_impact = 216053097u;

		public static uint Play_clayGrenadier_spawn = 1404722828u;

		public static uint Play_clayGrenadier_step = 2998452545u;

		public static uint Play_commando_M1 = 4060526873u;

		public static uint Play_commando_M2 = 4060526874u;

		public static uint Play_commando_M2_grenade_beep = 767972256u;

		public static uint Play_commando_M2_grenade_bounce = 2406813524u;

		public static uint Play_commando_M2_grenade_explo = 1805372450u;

		public static uint Play_commando_M2_grenade_throw = 2891623396u;

		public static uint Play_commando_M2_impact = 3856027043u;

		public static uint Play_commando_R = 1872804647u;

		public static uint Play_commando_R_stun = 856897882u;

		public static uint Play_commando_shift = 4030773325u;

		public static uint Play_deathProjectile_activate = 4274104951u;

		public static uint Play_deathProjectile_activeLoop = 4274851604u;

		public static uint Play_deathProjectile_exit = 2255177404u;

		public static uint Play_deathProjectile_pulse = 3311061351u;

		public static uint Play_deathProjectile_throw = 3241022660u;

		public static uint Play_drone_active_loop = 1397126242u;

		public static uint Play_drone_attack = 2284311463u;

		public static uint Play_drone_deathpt1 = 263213456u;

		public static uint Play_drone_deathpt2 = 263213459u;

		public static uint Play_drone_repair = 1856960692u;

		public static uint Play_elite_antiHeal_spawn = 691984684u;

		public static uint Play_elite_antiHeal_turret_die = 3657700870u;

		public static uint Play_elite_antiHeal_turret_shot = 669631748u;

		public static uint Play_elite_antiHeal_turret_spawn = 308571281u;

		public static uint Play_elite_antiHeal_urchin_activeLoop = 3295205085u;

		public static uint Play_elite_antiHeal_urchin_land = 962572750u;

		public static uint Play_elite_antiHeal_urchin_spawn = 569941158u;

		public static uint Play_elite_haunt_ghost_convert = 2762055418u;

		public static uint Play_elite_haunt_hauntorb_activeLoop = 543514253u;

		public static uint Play_elite_haunt_spawn = 265705826u;

		public static uint Play_emergency_drone_heal_loop = 2145196828u;

		public static uint Play_engi_M1_chargeLoop = 1143106461u;

		public static uint Play_engi_M1_chargeStock = 1582860475u;

		public static uint Play_engi_M1_explo = 2460302619u;

		public static uint Play_engi_M1_land = 1224228428u;

		public static uint Play_engi_M1_shot = 2716114991u;

		public static uint Play_engi_M2_arm = 801551500u;

		public static uint Play_engi_M2_explo = 1876447108u;

		public static uint Play_engi_M2_land = 1942736441u;

		public static uint Play_engi_M2_spider_dash = 2039062976u;

		public static uint Play_engi_M2_throw = 2382761590u;

		public static uint Play_engi_R_activate = 3298597612u;

		public static uint Play_engi_R_place = 643340344u;

		public static uint Play_engi_R_turret_death = 4245687690u;

		public static uint Play_engi_R_turret_rotate_start = 3711319792u;

		public static uint Play_engi_R_turret_rotate_stop = 3202539612u;

		public static uint Play_engi_R_turret_shot = 3407965588u;

		public static uint Play_engi_R_turret_spawn = 4130025569u;

		public static uint Play_engi_R_walkingTurret_laser_end = 3407461464u;

		public static uint Play_engi_R_walkingTurret_laser_start = 1126280707u;

		public static uint Play_engi_R_walkingTurret_step = 2412533739u;

		public static uint Play_engi_seekerMissile_explode = 2273471583u;

		public static uint Play_engi_seekerMissile_HUD_close = 872995266u;

		public static uint Play_engi_seekerMissile_HUD_loop = 3389061272u;

		public static uint Play_engi_seekerMissile_HUD_open = 1095370646u;

		public static uint Play_engi_seekerMissile_lockOn = 407672846u;

		public static uint Play_engi_seekerMissile_shoot = 2951980765u;

		public static uint Play_engi_shift_end = 1395092584u;

		public static uint Play_engi_shift_hit = 1846263908u;

		public static uint Play_engi_shift_start = 729856403u;

		public static uint Play_engi_sprint_end = 1589710056u;

		public static uint Play_engi_sprint_start = 1694535187u;

		public static uint Play_env_dampCave_crystalLight_loop = 3080548713u;

		public static uint Play_env_dampCave_steamVent_loop = 2932480344u;

		public static uint Play_env_desert_wind_gust = 363197352u;

		public static uint Play_env_fan_activate = 1753248287u;

		public static uint Play_env_geyser_launch = 3684346483u;

		public static uint Play_env_geyser_loop = 2001038684u;

		public static uint Play_env_gooWaterfall_loop = 3671383336u;

		public static uint Play_env_hiddenLab_laptop_activate = 1191732790u;

		public static uint Play_env_hiddenLab_laptop_active_loop = 3198839584u;

		public static uint Play_env_hiddenLab_laptop_button_cycle = 1729294674u;

		public static uint Play_env_hiddenLab_laptop_sequence_fail = 3795285125u;

		public static uint Play_env_hiddenLab_laptop_sequence_lock = 535095044u;

		public static uint Play_env_hiddenLab_laptop_sequence_success = 2883328426u;

		public static uint Play_env_hiddenLab_TP_active_loop = 1656660852u;

		public static uint Play_env_hiddenLab_TP_VO = 1027544848u;

		public static uint Play_env_light_flicker = 1529618755u;

		public static uint Play_env_moon_planet_destroying_loop = 56354104u;

		public static uint Play_env_moon_shuttle_engineIdle_loop = 979450395u;

		public static uint Play_env_roach_scatter = 1578037490u;

		public static uint Play_env_rootJungle_mushroom_bounce = 1759858961u;

		public static uint Play_env_ship_interior_loop = 2037610980u;

		public static uint Play_env_ship_pulsing_energy_loop = 2105493367u;

		public static uint Play_env_teleporter_active_button = 2694206298u;

		public static uint Play_env_vase_shatter = 3320446911u;

		public static uint Play_fireballsOnHit_aliveLoop = 3330327238u;

		public static uint Play_fireballsOnHit_impact = 1308908475u;

		public static uint Play_fireballsOnHit_pool_aliveLoop = 289286259u;

		public static uint Play_fireballsOnHit_shoot = 2071974498u;

		public static uint Play_flyingVermin_attack1_explo = 2325827633u;

		public static uint Play_flyingVermin_attack1_loop = 959625319u;

		public static uint Play_flyingVermin_attack1_start = 2469277671u;

		public static uint Play_flyingVermin_death = 2852936633u;

		public static uint Play_flyingVermin_idle_VO = 1488967u;

		public static uint Play_flyingVermin_impact = 1482226543u;

		public static uint Play_flyingVermin_spawn = 2569421798u;

		public static uint Play_flyingVermin_wingFlap = 2482198841u;

		public static uint Play_golem_clap = 3011704479u;

		public static uint Play_golem_death = 4251967229u;

		public static uint Play_golem_idle = 4196494707u;

		public static uint Play_golem_impact = 790462995u;

		public static uint Play_golem_laser_charge = 3644347705u;

		public static uint Play_golem_laser_fire = 3454198445u;

		public static uint Play_golem_spawn = 1773057618u;

		public static uint Play_golem_step = 4056609419u;

		public static uint Play_grandParent_attack1_boulderLarge_impact = 124225148u;

		public static uint Play_grandParent_attack1_boulderSmall_impact = 3157690056u;

		public static uint Play_grandParent_attack1_flightLoop = 1108205171u;

		public static uint Play_grandParent_attack1_throw = 659529741u;

		public static uint Play_grandParent_attack1_windUp = 1356813166u;

		public static uint Play_grandParent_attack2_loop = 1723739392u;

		public static uint Play_grandParent_attack2_spawn = 1710100275u;

		public static uint Play_grandParent_attack3_spawn = 1361990298u;

		public static uint Play_grandParent_attack3_sun_activeLoop = 3203163036u;

		public static uint Play_grandParent_attack3_sun_damageLoop = 406969537u;

		public static uint Play_grandParent_attack3_sun_destroy = 2118002602u;

		public static uint Play_grandParent_attack3_sun_spawn = 2441414753u;

		public static uint Play_grandParent_death = 1713910539u;

		public static uint Play_grandparent_handStep = 2848869794u;

		public static uint Play_grandParent_idle_VO = 779063965u;

		public static uint Play_grandParent_impact = 2762774137u;

		public static uint Play_grandparent_rotate = 19433626u;

		public static uint Play_grandParent_spawn = 3902005852u;

		public static uint Play_gravekeep