Decompiled source of M4A1 v1.0.14

plugins/M4A1Mod.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using AncientScepter;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EmotesAPI;
using EntityStates;
using EntityStates.AI.Walker;
using EntityStates.Captain.Weapon;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.MeridianEvent;
using EntityStates.Missions.BrotherEncounter;
using EntityStates.SurvivorPod;
using EntityStates.Toolbot;
using HG;
using HG.BlendableTypes;
using M4A1Mod.Modules;
using M4A1Mod.Modules.Achievements;
using M4A1Mod.Modules.Characters;
using M4A1Mod.Survivors.M4A1;
using M4A1Mod.Survivors.M4A1.Components;
using M4A1Mod.Survivors.M4A1.Config;
using M4A1Mod.Survivors.M4A1.Config.DummyLink;
using M4A1Mod.Survivors.M4A1.Config.Grenades;
using M4A1Mod.Survivors.M4A1.Constants;
using M4A1Mod.Survivors.M4A1.Constants.DummyLink;
using M4A1Mod.Survivors.M4A1.Constants.Grenades;
using M4A1Mod.Survivors.M4A1.Controllers;
using M4A1Mod.Survivors.M4A1.Hooks;
using M4A1Mod.Survivors.M4A1.Networking;
using M4A1Mod.Survivors.M4A1.SkillStates;
using M4A1Mod.Survivors.M4A1.SkillStates.Grenades;
using M4A1Mod.Survivors.M4A1.SkillStates.Helicopter;
using M4A1Mod.Survivors.M4A1.SkillStates.SpawnDummyLink;
using M4A1Mod.Survivors.M4A1.Utils;
using On.EntityStates.MeridianEvent;
using On.EntityStates.Missions.BrotherEncounter;
using On.RoR2;
using On.RoR2.Skills;
using On.RoR2.UI;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("M4A1Mod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+a269804c82d877a00679fd0c2d8a607bf81175f3")]
[assembly: AssemblyProduct("M4A1Mod")]
[assembly: AssemblyTitle("M4A1Mod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace M4A1Mod
{
	internal static class Log
	{
		internal static ManualLogSource _logSource;

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

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

		internal static void DebugConditional(object data, int debugLevel = 1)
		{
			if (Mod.debugLevel.Value >= debugLevel)
			{
				_logSource.LogDebug(data);
			}
		}

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

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

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

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

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

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Snoresville.M4A1", "M4A1", "1.0.14")]
	public class M4A1Plugin : BaseUnityPlugin
	{
		public const string MODUID = "com.Snoresville.M4A1";

		public const string MODNAME = "M4A1";

		public const string MODVERSION = "1.0.14";

		public const string DEVELOPER_PREFIX = "SNORESVILLE";

		public static M4A1Plugin instance;

		private void Awake()
		{
			instance = this;
			Log.Init(((BaseUnityPlugin)this).Logger);
			Language.Init();
			new M4A1Survivor().Initialize();
			new ContentPacks().Initialize();
			SetupNetworkMessages();
		}

		private void SetupNetworkMessages()
		{
			NetworkingAPI.RegisterMessageType<PlaySoundNetworkRequest>();
		}
	}
}
namespace M4A1Mod.Survivors.M4A1
{
	public static class AI
	{
		private class SkillDriverProps
		{
			public string name;

			public SkillDef requiredSkill = null;

			public bool requireSkillReady = false;

			public bool noRepeat = false;

			public float minDistance = 0f;

			public float maxDistance = 200f;

			public AISkillDriver nextHighPriorityOverride = null;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static GetDeployableSameSlotLimit <>9__4_0;

			internal int <Init>b__4_0(CharacterMaster self, int deployable)
			{
				return M4A1Mod.Survivors.M4A1.Constants.DummyLink.Skill.maximumDeployed;
			}
		}

		public static GameObject dummyLinkMaster;

		public static DeployableSlot dummylinkSlot;

		public static CharacterBody characterBody;

		public static void Init(GameObject bodyPrefab, string masterName)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			dummyLinkMaster = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName);
			object obj = <>c.<>9__4_0;
			if (obj == null)
			{
				GetDeployableSameSlotLimit val = (CharacterMaster self, int deployable) => M4A1Mod.Survivors.M4A1.Constants.DummyLink.Skill.maximumDeployed;
				<>c.<>9__4_0 = val;
				obj = (object)val;
			}
			dummylinkSlot = DeployableAPI.RegisterDeployableSlot((GetDeployableSameSlotLimit)obj);
			dummyLinkMaster.gameObject.AddComponent<SetDontDestroyOnLoad>();
			characterBody = bodyPrefab.GetComponent<CharacterBody>();
			BaseAI component = dummyLinkMaster.GetComponent<BaseAI>();
			component.aimVectorDampTime = 0.001f;
			component.aimVectorMaxSpeed = 9999f;
			component.fullVision = true;
			component.enemyAttentionDuration = 5f;
			float minDistance = 0f;
			float maxRange = M4A1Mod.Survivors.M4A1.Constants.AssaultRifle.maxRange;
			float num = 0f;
			float range = M4A1Mod.Survivors.M4A1.Constants.ParticleCannon.range;
			float maxDistance = 99999f;
			Secondary(new SkillDriverProps
			{
				name = "Generic Secondary",
				requireSkillReady = true,
				noRepeat = true
			});
			Utility(new SkillDriverProps
			{
				name = "Generic Utility",
				requireSkillReady = true,
				noRepeat = true
			});
			Special(new SkillDriverProps
			{
				name = "Generic Special",
				requireSkillReady = true,
				noRepeat = true
			});
			Primary(new SkillDriverProps
			{
				name = "Fire Particle Cannon",
				requiredSkill = SkillDefs.particleCannon,
				minDistance = num,
				maxDistance = num
			});
			Primary(new SkillDriverProps
			{
				name = "Assault Rifle",
				requiredSkill = SkillDefs.assaultRifle,
				minDistance = minDistance,
				maxDistance = maxRange
			});
			Primary(new SkillDriverProps
			{
				name = "Generic Primary"
			});
			AISkillDriver val2 = dummyLinkMaster.AddComponent<AISkillDriver>();
			val2.customName = "Chase";
			val2.skillSlot = (SkillSlot)(-1);
			val2.requireSkillReady = false;
			val2.minDistance = 0f;
			val2.maxDistance = maxDistance;
			val2.moveTargetType = (TargetType)0;
			val2.activationRequiresTargetLoS = false;
			val2.activationRequiresAimTargetLoS = false;
			val2.activationRequiresAimConfirmation = false;
			val2.movementType = (MovementType)1;
			val2.moveInputScale = 1f;
			val2.aimType = (AimType)1;
			val2.buttonPressType = (ButtonPressType)0;
			val2.shouldSprint = true;
			val2.nextHighPriorityOverride = null;
			val2.driverUpdateTimerOverride = 0.1f;
			val2.resetCurrentEnemyOnNextDriverSelection = true;
			val2.noRepeat = false;
			val2.nextHighPriorityOverride = null;
			AISkillDriver val3 = dummyLinkMaster.AddComponent<AISkillDriver>();
			val3.customName = "Protect Leader";
			val3.skillSlot = (SkillSlot)(-1);
			val3.requireSkillReady = false;
			val3.minDistance = 0f;
			val3.maxDistance = float.PositiveInfinity;
			val3.moveTargetType = (TargetType)2;
			val3.activationRequiresTargetLoS = false;
			val3.activationRequiresAimTargetLoS = false;
			val3.activationRequiresAimConfirmation = false;
			val3.movementType = (MovementType)1;
			val3.moveInputScale = 1f;
			val3.aimType = (AimType)1;
			val3.buttonPressType = (ButtonPressType)0;
			val3.shouldSprint = true;
			val3.driverUpdateTimerOverride = 0.1f;
			val3.nextHighPriorityOverride = val2;
		}

		private static AISkillDriver CreateSkillDriver(SkillSlot slot, SkillDriverProps props)
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			AISkillDriver val = dummyLinkMaster.AddComponent<AISkillDriver>();
			val.customName = props.name;
			val.skillSlot = slot;
			val.requiredSkill = props.requiredSkill;
			val.requireSkillReady = props.requireSkillReady;
			val.requireEquipmentReady = false;
			val.minUserHealthFraction = float.NegativeInfinity;
			val.maxUserHealthFraction = float.PositiveInfinity;
			val.minTargetHealthFraction = float.Epsilon;
			val.maxTargetHealthFraction = float.PositiveInfinity;
			val.minDistance = props.minDistance;
			val.maxDistance = props.maxDistance;
			val.selectionRequiresTargetLoS = true;
			val.selectionRequiresOnGround = false;
			val.selectionRequiresAimTarget = true;
			val.maxTimesSelected = -1;
			val.moveTargetType = (TargetType)0;
			val.activationRequiresTargetLoS = false;
			val.activationRequiresAimTargetLoS = false;
			val.activationRequiresAimConfirmation = false;
			val.movementType = (MovementType)2;
			val.moveInputScale = 1f;
			val.aimType = (AimType)2;
			val.ignoreNodeGraph = false;
			val.shouldSprint = true;
			val.shouldFireEquipment = true;
			val.buttonPressType = (ButtonPressType)0;
			val.driverUpdateTimerOverride = -1f;
			val.resetCurrentEnemyOnNextDriverSelection = false;
			val.noRepeat = props.noRepeat;
			val.nextHighPriorityOverride = props.nextHighPriorityOverride;
			return val;
		}

		private static AISkillDriver Primary(SkillDriverProps props)
		{
			return CreateSkillDriver((SkillSlot)0, props);
		}

		private static AISkillDriver Secondary(SkillDriverProps props)
		{
			return CreateSkillDriver((SkillSlot)1, props);
		}

		private static AISkillDriver Utility(SkillDriverProps props)
		{
			return CreateSkillDriver((SkillSlot)2, props);
		}

		private static AISkillDriver Special(SkillDriverProps props)
		{
			return CreateSkillDriver((SkillSlot)3, props);
		}
	}
	public static class Assets
	{
		public static GameObject stunGrenadeExplosionEffect;

		public static GameObject explosiveGrenadeExplosionEffect;

		public static GameObject incendiaryGrenadeExplosionEffect;

		public static GameObject smokeGrenadeExplosionEffect;

		public static GameObject smokeBuffEffect;

		public static GameObject particleCannonImpactEffect;

		public static GameObject particleCannonTracerEffect;

		public static GameObject particleCannonMuzzleFlashEffect;

		public static GameObject assaultRifleMuzzleFlashEffect;

		public static GameObject dummyLinkSpawnLocationEffect;

		public static GameObject respawnSicknessDebuffEffect;

		public static GameObject assaultRifleBulletTracerEffect;

		public static GameObject stunGrenadeProjectilePrefab;

		public static GameObject explosiveGrenadeProjectilePrefab;

		public static GameObject incendiaryGrenadeProjectilePrefab;

		public static GameObject smokeGrenadeProjectilePrefab;

		public static GameObject incendiaryGrenadeDamageZonePrefab;

		public static GameObject smokeGrenadeAOEPrefab;

		public static GameObject helicopterDropPod;

		public static AssetBundle assetBundle;

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

		private static string HashString(string str)
		{
			MD5 mD = MD5.Create();
			byte[] array = mD.ComputeHash(Encoding.UTF8.GetBytes(str));
			mD.Dispose();
			return array.ToString();
		}

		private static void CreateHelicopterDropPod()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			helicopterDropPod = PrefabAPI.InstantiateClone(assetBundle.LoadAsset<GameObject>("HelicopterModel"), "M4A1HelicopterPod", true);
			ChildLocator component = helicopterDropPod.GetComponent<ChildLocator>();
			NetworkIdentity val = helicopterDropPod.AddComponent<NetworkIdentity>();
			val.SetDynamicAssetId(NetworkHash128.Parse(HashString("M4A1 Survivor Pod GameObject")));
			SurvivorPodController val2 = helicopterDropPod.AddComponent<SurvivorPodController>();
			val2.cameraBone = component.FindChild("CameraForward");
			Log.DebugConditional(5);
			ModelLocator val3 = helicopterDropPod.AddComponent<ModelLocator>();
			Log.DebugConditional(6);
			val3.modelTransform = helicopterDropPod.transform.Find("Base/Model");
			val3.modelBaseTransform = helicopterDropPod.transform.Find("Base/Model");
			val3.modelScaleCompensation = 1f;
			val3.autoUpdateModelTransform = false;
			val3.dontDetatchFromParent = false;
			val3.noCorpse = false;
			val3.dontReleaseModelOnDeath = false;
			val3.preserveModel = false;
			val3.forceCulled = false;
			val3.normalizeToFloor = false;
			Log.DebugConditional(7);
			EntityStateMachine component2 = helicopterDropPod.GetComponent<EntityStateMachine>();
			component2.customName = "Main";
			component2.initialStateType = new SerializableEntityStateType(typeof(HelicopterIdle));
			component2.mainStateType = new SerializableEntityStateType(typeof(HelicopterIdle));
			NetworkStateMachine val4 = helicopterDropPod.AddComponent<NetworkStateMachine>();
			val4.stateMachines = (EntityStateMachine[])(object)new EntityStateMachine[1] { component2 };
			helicopterDropPod.AddComponent<EntityLocator>().entity = helicopterDropPod.gameObject;
			Log.DebugConditional(9);
			VehicleSeat component3 = helicopterDropPod.GetComponent<VehicleSeat>();
			component3.seatPosition = component.FindChild("Seat");
			component3.exitPosition = component.FindChild("ExitPos");
			component3.hidePassenger = true;
			component3.passengerState = new SerializableEntityStateType(typeof(Idle));
			component3.exitVehicleContextString = "SNORESVILLE_M4A1_SURVIVOR_POD_EXIT";
			component3.disablePassengerMotor = true;
			component3.isEquipmentActivationAllowed = false;
			component3.shouldProximityHighlight = false;
			Log.DebugConditional(11);
			helicopterDropPod.AddComponent<HelicopterMovementComponent>();
		}

		private static void CreateEffects()
		{
			CreateGrenadeEffects();
			CreateAssaultRifleEffects();
			CreateParticleCannonEffects();
			CreateDummyLinkSpawnLocationEffect();
			CreateRespawnSicknessEffect();
		}

		private static GameObject CreateTracer(string path, string newTracerName)
		{
			//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_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)path).WaitForCompletion(), newTracerName);
			if (!Object.op_Implicit((Object)(object)val.GetComponent<EffectComponent>()))
			{
				val.AddComponent<EffectComponent>();
			}
			if (!Object.op_Implicit((Object)(object)val.GetComponent<VFXAttributes>()))
			{
				VFXAttributes val2 = val.AddComponent<VFXAttributes>();
				val2.DoNotPool = true;
				val2.DoNotCullPool = true;
				val2.vfxIntensity = (VFXIntensity)0;
				val2.vfxPriority = (VFXPriority)2;
			}
			if (!Object.op_Implicit((Object)(object)val.GetComponent<NetworkIdentity>()))
			{
				val.AddComponent<NetworkIdentity>();
			}
			val.GetComponent<Tracer>().speed = 250f;
			val.GetComponent<Tracer>().length = 50f;
			return val;
		}

		private static void CreateAssaultRifleEffects()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Expected O, but got Unknown
			assaultRifleMuzzleFlashEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Muzzleflash1.prefab").WaitForCompletion(), "M4A1AssaultRifleMuzzleFlashEffect", true);
			assaultRifleMuzzleFlashEffect.AddComponent<NetworkIdentity>();
			EffectComponent component = assaultRifleMuzzleFlashEffect.GetComponent<EffectComponent>();
			component.soundName = "m4a1_shoot";
			Content.AddEffectDef(new EffectDef(assaultRifleMuzzleFlashEffect));
			assaultRifleBulletTracerEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/TracerCommandoDefault.prefab").WaitForCompletion(), "M4A1AssaultRifleBulletTracerEffect", true);
			assaultRifleBulletTracerEffect.AddComponent<NetworkIdentity>();
			Tracer component2 = assaultRifleBulletTracerEffect.GetComponent<Tracer>();
			component2.speed = 500f;
			Content.AddEffectDef(new EffectDef(assaultRifleBulletTracerEffect));
		}

		private static void CreateGrenadeEffects()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Expected O, but got Unknown
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Expected O, but got Unknown
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			stunGrenadeExplosionEffect = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/lightningstakenova"), "M4A1StunGrenadeExplosionEffect", true);
			stunGrenadeExplosionEffect.AddComponent<NetworkIdentity>();
			EffectComponent component = stunGrenadeExplosionEffect.GetComponent<EffectComponent>();
			component.applyScale = true;
			component.soundName = "m4a1_grenade_stun_detonate";
			Content.AddEffectDef(new EffectDef(stunGrenadeExplosionEffect));
			explosiveGrenadeExplosionEffect = assetBundle.LoadEffect("ExplosiveGrenadeEffect", parentToTransform: true);
			component = explosiveGrenadeExplosionEffect.GetComponent<EffectComponent>();
			component.applyScale = false;
			component.soundName = "m4a1_grenade_explosion_detonate";
			Content.AddEffectDef(new EffectDef(explosiveGrenadeExplosionEffect));
			incendiaryGrenadeExplosionEffect = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/lightningstakenova"), "M4A1IncendiaryGrenadeExplosionEffect", true);
			incendiaryGrenadeExplosionEffect.AddComponent<NetworkIdentity>();
			component = incendiaryGrenadeExplosionEffect.GetComponent<EffectComponent>();
			component.applyScale = false;
			component.soundName = "m4a1_grenade_incendiary_detonate";
			Content.AddEffectDef(new EffectDef(incendiaryGrenadeExplosionEffect));
			smokeGrenadeExplosionEffect = assetBundle.LoadEffect("SmokeGrenadeEffect", "m4a1_grenade_smoke_detonate", parentToTransform: true);
			component = smokeGrenadeExplosionEffect.GetComponent<EffectComponent>();
			ParticleSystem component2 = ((Component)((Component)component).transform.Find("Gas")).GetComponent<ParticleSystem>();
			MainModule main = component2.main;
			ShapeModule shape = ((Component)((Component)component).transform.Find("Gas")).GetComponent<ParticleSystem>().shape;
			((MainModule)(ref main)).duration = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.duration;
			((ShapeModule)(ref shape)).radius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.radius;
			component2 = ((Component)((Component)component).transform.Find("Gas Emitting")).GetComponent<ParticleSystem>();
			main = component2.main;
			shape = ((Component)((Component)component).transform.Find("Gas Emitting")).GetComponent<ParticleSystem>().shape;
			((MainModule)(ref main)).duration = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.duration;
			((ShapeModule)(ref shape)).radius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.radius;
			smokeBuffEffect = assetBundle.LoadEffect("SmokeBuffEffect", parentToTransform: true);
			Object.DestroyImmediate((Object)(object)smokeBuffEffect.GetComponent<EffectComponent>());
			Object.DestroyImmediate((Object)(object)smokeBuffEffect.GetComponent<DestroyOnTimer>());
		}

		private static void CreateParticleCannonEffects()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: 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_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Expected O, but got Unknown
			//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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Expected O, but got Unknown
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0314: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_032b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0330: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_0360: Expected O, but got Unknown
			bool flag = true;
			particleCannonImpactEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BFG/BeamSphereExplosion.prefab").WaitForCompletion(), "M4A1ParticleCannonImpactEffect", true);
			particleCannonImpactEffect.AddComponent<NetworkIdentity>();
			particleCannonImpactEffect.transform.localScale = new Vector3(0.75f, 0.75f, 0.75f);
			Content.AddEffectDef(new EffectDef(particleCannonImpactEffect));
			Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/ShockNearby/matLightningTeslaSlow.mat").WaitForCompletion());
			val.SetTexture("_RemapTex", Addressables.LoadAssetAsync<Texture>((object)"RoR2/Base/Common/ColorRamps/texRampLightning2.png").WaitForCompletion());
			val.SetColor("_TintColor", new Color(0f, 1f, 0f));
			particleCannonTracerEffect = CreateTracer("RoR2/Base/Huntress/TracerHuntressSnipe.prefab", "M4A1ParticleCannonTracer");
			particleCannonTracerEffect.transform.position = new Vector3(0f, 0f, 0f);
			Tracer component = particleCannonTracerEffect.GetComponent<Tracer>();
			component.speed = 100000000f;
			component.length = 100000000f;
			if (flag)
			{
				M4A1TracerComponentFix m4A1TracerComponentFix = particleCannonTracerEffect.AddComponent<M4A1TracerComponentFix>();
				m4A1TracerComponentFix.minDuration = 0.15f;
			}
			GameObject beamObject = component.beamObject;
			Transform transform = beamObject.transform;
			transform.localScale *= 1.5f;
			beamObject.GetComponent<ParticleSystemRenderer>().trailMaterial = val;
			Transform val2 = particleCannonTracerEffect.transform.Find("TracerHead");
			val2.localScale *= 0f;
			MainModule main = beamObject.GetComponent<ParticleSystem>().main;
			((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(new Color(0f, 1f, 0f));
			EffectComponent component2 = particleCannonTracerEffect.GetComponent<EffectComponent>();
			component2.soundName = "m4a1_particle_cannon_impact";
			Content.AddEffectDef(new EffectDef(particleCannonTracerEffect));
			particleCannonMuzzleFlashEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lightning/LightningStrikeImpact.prefab").WaitForCompletion(), "M4A1ParticleCannonMuzzleFlashEffect");
			((Component)particleCannonMuzzleFlashEffect.transform.Find("LightningRibbon")).gameObject.SetActive(false);
			((Component)particleCannonMuzzleFlashEffect.transform.Find("Flash Lines")).gameObject.SetActive(false);
			((Component)particleCannonMuzzleFlashEffect.transform.Find("Flash")).gameObject.SetActive(false);
			((Component)particleCannonMuzzleFlashEffect.transform.Find("Distortion")).gameObject.SetActive(false);
			((Component)particleCannonMuzzleFlashEffect.transform.Find("Sphere")).gameObject.SetActive(false);
			particleCannonMuzzleFlashEffect.GetComponent<ShakeEmitter>().wave.amplitude *= 0.25f;
			particleCannonMuzzleFlashEffect.AddComponent<NetworkIdentity>();
			Transform val3 = particleCannonMuzzleFlashEffect.transform.Find("Ring");
			val3.localScale *= 0.5f;
			main = ((Component)val3).gameObject.GetComponent<ParticleSystem>().main;
			((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(new Color(0f, 1f, 0f));
			component2 = particleCannonMuzzleFlashEffect.GetComponent<EffectComponent>();
			component2.soundName = "m4a1_particle_cannon_shoot";
			Content.AddEffectDef(new EffectDef(particleCannonMuzzleFlashEffect));
		}

		private static void CreateRespawnSicknessEffect()
		{
			//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)
			respawnSicknessDebuffEffect = assetBundle.LoadEffect("RespawnSicknessDebuffEffect", parentToTransform: true);
			Object.DestroyImmediate((Object)(object)respawnSicknessDebuffEffect.GetComponent<EffectComponent>());
			Object.DestroyImmediate((Object)(object)respawnSicknessDebuffEffect.GetComponent<DestroyOnTimer>());
			MainModule main = respawnSicknessDebuffEffect.GetComponentInChildren<ParticleSystem>().main;
			((MainModule)(ref main)).duration = M4A1Mod.Survivors.M4A1.Constants.DummyLink.Passive.respawnSicknessTime;
		}

		private static void CreateDummyLinkSpawnLocationEffect()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainHealingWard.prefab").WaitForCompletion();
			dummyLinkSpawnLocationEffect = PrefabAPI.InstantiateClone(val, "M4A1DummyLinkSpawnLocationEffect", true);
			dummyLinkSpawnLocationEffect.AddComponent<EffectComponent>();
			dummyLinkSpawnLocationEffect.AddComponent<NetworkIdentity>();
			((Component)dummyLinkSpawnLocationEffect.transform.Find("Indicator").Find("HealingSymbols")).gameObject.SetActive(false);
			((Component)dummyLinkSpawnLocationEffect.transform.Find("Indicator").Find("Flashes")).gameObject.SetActive(false);
			Transform val2 = dummyLinkSpawnLocationEffect.transform.Find("Indicator").Find("IndicatorRing");
			((Component)val2).gameObject.AddComponent<DummyLinkSpawnEffect>();
			Content.AddEffectDef(new EffectDef(dummyLinkSpawnLocationEffect));
		}

		private static void CreateProjectiles()
		{
			CreateStunGrenadeProjectile();
			CreateExplosiveGrenadeProjectile();
			CreateIncendiaryGrenadeProjectile();
			CreateSmokeGrenadeProjectile();
		}

		public static void CreateStunGrenadeProjectile()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			stunGrenadeProjectilePrefab = MyAssets.CloneProjectilePrefab("CommandoGrenadeProjectile", "M4A1StunGrenadeProjectile");
			Object.Destroy((Object)(object)stunGrenadeProjectilePrefab.GetComponent<ProjectileImpactExplosion>());
			ProjectileImpactExplosion val = stunGrenadeProjectilePrefab.AddComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)val).blastRadius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Stun.radius;
			((ProjectileExplosion)val).blastDamageCoefficient = 1f;
			((ProjectileExplosion)val).falloffModel = (FalloffModel)0;
			val.destroyOnEnemy = true;
			val.destroyOnWorld = true;
			val.lifetime = 12f;
			val.impactEffect = stunGrenadeExplosionEffect;
			val.timerAfterImpact = true;
			((ProjectileExplosion)val).childrenInheritDamageType = true;
			val.lifetimeAfterImpact = 0.1f;
			ProjectileDamage component = stunGrenadeProjectilePrefab.GetComponent<ProjectileDamage>();
			component.crit = false;
			component.damage = 0f;
			component.damageColorIndex = (DamageColorIndex)0;
			component.damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131104), (DamageTypeExtended)0, (DamageSource)2);
			ProjectileController component2 = stunGrenadeProjectilePrefab.GetComponent<ProjectileController>();
			if ((Object)(object)assetBundle.LoadAsset<GameObject>("GrenadeStun") != (Object)null)
			{
				component2.ghostPrefab = assetBundle.CreateProjectileGhostPrefab("GrenadeStun");
			}
			component2.startSound = "";
			Content.AddProjectilePrefab(stunGrenadeProjectilePrefab);
		}

		public static void CreateExplosiveGrenadeProjectile()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			explosiveGrenadeProjectilePrefab = MyAssets.CloneProjectilePrefab("CommandoGrenadeProjectile", "M4A1ExplosiveGrenadeProjectile");
			Object.Destroy((Object)(object)explosiveGrenadeProjectilePrefab.GetComponent<ProjectileImpactExplosion>());
			ProjectileImpactExplosion val = explosiveGrenadeProjectilePrefab.AddComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)val).blastRadius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Explosive.radius;
			((ProjectileExplosion)val).blastDamageCoefficient = 1f;
			((ProjectileExplosion)val).falloffModel = (FalloffModel)0;
			val.destroyOnEnemy = true;
			val.destroyOnWorld = true;
			val.lifetime = 12f;
			val.impactEffect = explosiveGrenadeExplosionEffect;
			val.timerAfterImpact = true;
			((ProjectileExplosion)val).childrenInheritDamageType = true;
			val.lifetimeAfterImpact = 0.1f;
			ProjectileDamage component = explosiveGrenadeProjectilePrefab.GetComponent<ProjectileDamage>();
			component.crit = false;
			component.damage = 0f;
			component.damageColorIndex = (DamageColorIndex)0;
			component.damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131072), (DamageTypeExtended)0, (DamageSource)2);
			ProjectileController component2 = explosiveGrenadeProjectilePrefab.GetComponent<ProjectileController>();
			if ((Object)(object)assetBundle.LoadAsset<GameObject>("GrenadeHighExplosive") != (Object)null)
			{
				component2.ghostPrefab = assetBundle.CreateProjectileGhostPrefab("GrenadeExplosive");
			}
			component2.startSound = "";
			Content.AddProjectilePrefab(explosiveGrenadeProjectilePrefab);
		}

		public static void CreateIncendiaryGrenadeProjectile()
		{
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			incendiaryGrenadeProjectilePrefab = MyAssets.CloneProjectilePrefab("CommandoGrenadeProjectile", "M4A1IncendiaryGrenadeProjectile");
			incendiaryGrenadeDamageZonePrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "M4A1IncendiaryGrenadeAOE", true);
			Object.Destroy((Object)(object)incendiaryGrenadeProjectilePrefab.GetComponent<ProjectileImpactExplosion>());
			ProjectileImpactExplosion val = incendiaryGrenadeProjectilePrefab.AddComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)val).blastRadius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.radius;
			((ProjectileExplosion)val).blastDamageCoefficient = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.contactDamageCoefficient;
			((ProjectileExplosion)val).falloffModel = (FalloffModel)0;
			val.destroyOnEnemy = true;
			val.destroyOnWorld = true;
			val.lifetime = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.duration;
			val.impactEffect = incendiaryGrenadeExplosionEffect;
			val.timerAfterImpact = true;
			val.lifetimeAfterImpact = 0.1f;
			((ProjectileExplosion)val).fireChildren = true;
			((ProjectileExplosion)val).childrenCount = 1;
			((ProjectileExplosion)val).childrenProjectilePrefab = incendiaryGrenadeDamageZonePrefab;
			((ProjectileExplosion)val).childrenInheritDamageType = true;
			((ProjectileExplosion)val).childrenDamageCoefficient = 1f;
			incendiaryGrenadeDamageZonePrefab.transform.localScale = Vector3.one * M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.radius;
			ProjectileDamage component = incendiaryGrenadeProjectilePrefab.GetComponent<ProjectileDamage>();
			component.crit = false;
			component.damage = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.contactDamageCoefficient;
			component.damageColorIndex = (DamageColorIndex)0;
			component.damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131200), (DamageTypeExtended)0, (DamageSource)2);
			ProjectileController component2 = incendiaryGrenadeProjectilePrefab.GetComponent<ProjectileController>();
			if ((Object)(object)assetBundle.LoadAsset<GameObject>("GrenadeIncendiary") != (Object)null)
			{
				component2.ghostPrefab = assetBundle.CreateProjectileGhostPrefab("GrenadeIncendiary");
			}
			component2.startSound = "";
			ProjectileDotZone component3 = incendiaryGrenadeDamageZonePrefab.GetComponent<ProjectileDotZone>();
			component3.lifetime = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.duration;
			component3.damageCoefficient = M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.damageCoefficientPerTick;
			component3.fireFrequency = 1f;
			component3.resetFrequency = 1f;
			((Component)component3).transform.localScale = Vector3.one * (M4A1Mod.Survivors.M4A1.Constants.Grenades.Incendiary.radius / 6f);
			((ProjectileExplosion)val).childrenProjectilePrefab = incendiaryGrenadeDamageZonePrefab;
			((ProjectileExplosion)val).childrenCount = 1;
			Content.AddProjectilePrefab(incendiaryGrenadeProjectilePrefab);
			PrefabAPI.RegisterNetworkPrefab(incendiaryGrenadeDamageZonePrefab);
		}

		public static void CreateSmokeGrenadeProjectile()
		{
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			smokeGrenadeProjectilePrefab = MyAssets.CloneProjectilePrefab("CommandoGrenadeProjectile", "M4A1SmokeGrenadeProjectile");
			smokeGrenadeAOEPrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "M4A1SmokeGrenadeAOE", true);
			Object.Destroy((Object)(object)smokeGrenadeProjectilePrefab.GetComponent<ProjectileImpactExplosion>());
			Object.Destroy((Object)(object)smokeGrenadeAOEPrefab.GetComponent<ProjectileDotZone>());
			Object.DestroyImmediate((Object)(object)((Component)smokeGrenadeAOEPrefab.transform.GetChild(0)).gameObject);
			ProjectileImpactExplosion val = smokeGrenadeProjectilePrefab.AddComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)val).blastRadius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.radius;
			((ProjectileExplosion)val).blastDamageCoefficient = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.damageCoefficient;
			((ProjectileExplosion)val).falloffModel = (FalloffModel)0;
			val.destroyOnEnemy = true;
			val.destroyOnWorld = true;
			val.lifetime = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.duration;
			val.impactEffect = smokeGrenadeExplosionEffect;
			val.timerAfterImpact = true;
			val.lifetimeAfterImpact = 0.1f;
			((ProjectileExplosion)val).fireChildren = true;
			((ProjectileExplosion)val).childrenInheritDamageType = true;
			((ProjectileExplosion)val).childrenCount = 1;
			((ProjectileExplosion)val).childrenProjectilePrefab = smokeGrenadeAOEPrefab;
			((ProjectileExplosion)val).childrenDamageCoefficient = 1f;
			smokeGrenadeAOEPrefab.transform.localScale = Vector3.one * M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.radius;
			ProjectileDamage component = smokeGrenadeProjectilePrefab.GetComponent<ProjectileDamage>();
			component.crit = false;
			component.damage = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.damageCoefficient;
			component.damageColorIndex = (DamageColorIndex)0;
			component.damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)131080), (DamageTypeExtended)0, (DamageSource)2);
			ProjectileController component2 = smokeGrenadeProjectilePrefab.GetComponent<ProjectileController>();
			if ((Object)(object)assetBundle.LoadAsset<GameObject>("GrenadeSmoke") != (Object)null)
			{
				component2.ghostPrefab = assetBundle.CreateProjectileGhostPrefab("GrenadeSmoke");
			}
			component2.startSound = "";
			BuffWard val2 = smokeGrenadeAOEPrefab.AddComponent<BuffWard>();
			val2.radius = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.radius;
			val2.interval = 0.01f;
			val2.rangeIndicator = null;
			val2.buffDef = Buffs.smokeGrenadeBuff;
			val2.buffDuration = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.buffDuration;
			val2.invertTeamFilter = false;
			val2.floorWard = false;
			val2.expires = true;
			val2.expireDuration = M4A1Mod.Survivors.M4A1.Constants.Grenades.Smoke.duration;
			val2.animateRadius = false;
			Content.AddProjectilePrefab(smokeGrenadeProjectilePrefab);
		}
	}
	public static class Buffs
	{
		public static BuffDef particleCannonBuff;

		public static BuffDef dummyLinkSpawnCooldown;

		public static BuffDef smokeGrenadeBuff;

		public static BuffDef respawnSicknessDebuff;

		static Buffs()
		{
			//IL_0015: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			particleCannonBuff = Content.CreateAndAddBuff("M4A1EquipParticleCannonBuff", Assets.assetBundle.LoadAsset<Sprite>("equipParticleCannon"), Color.white, canStack: false, isDebuff: false);
			smokeGrenadeBuff = Content.CreateAndAddBuff("M4A1SmokeGrenadeBuff", Assets.assetBundle.LoadAsset<Sprite>("grenadeSmoke"), Color.white, canStack: false, isDebuff: false);
			respawnSicknessDebuff = Content.CreateAndAddBuff("M4A1RespawnSicknessDebuff", Assets.assetBundle.LoadAsset<Sprite>("respawnSickness"), Color.white, canStack: false, isDebuff: true);
			dummyLinkSpawnCooldown = Content.CreateAndAddBuff("M4A1dummyLinkSpawnCooldown", Assets.assetBundle.LoadAsset<Sprite>("dummyLink"), new Color(110f, 0f, 0f), canStack: false, isDebuff: true);
		}
	}
	internal class Emotes
	{
		private static AssetBundle assetBundle;

		private static CharacterBody m4a1Body;

		private static string bodyName;

		private const string emotePrefabName = "mdlM4A1Emotes";

		private const string nameToken = "SNORESVILLE_M4A1_NAME";

		private static List<Sprite> sprites = new List<Sprite>();

		public static void Init(AssetBundle _assetBundle, CharacterBody _characterBody, string _bodyName)
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			assetBundle = _assetBundle;
			bodyName = _bodyName;
			m4a1Body = _characterBody;
			InitWheelIcons();
			SurvivorCatalog.Init += new hook_Init(SurvivorCatalog_Init);
			CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged);
			CustomEmotesAPI.emoteWheelPulledUp += new EmoteWheelPulledUp(CustomEmotesAPI_emoteWheelPulledUp);
		}

		public static void InitWheelIcons()
		{
			for (int i = 0; i < 10; i++)
			{
				sprites.Add(assetBundle.LoadAsset<Sprite>("emoteWheelIcon" + i));
			}
		}

		private static void CustomEmotesAPI_emoteWheelPulledUp(Sprite wheelSprite, BoneMapper localMapper)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			object obj;
			if (localMapper == null)
			{
				obj = null;
			}
			else
			{
				GameObject model = localMapper.model;
				obj = ((model == null) ? null : model.GetComponent<CharacterModel>()?.body);
			}
			CharacterBody val = (CharacterBody)obj;
			EmoteWheel val2 = Object.FindObjectOfType<EmoteWheel>();
			if (Object.op_Implicit((Object)(object)val) && val.bodyIndex == m4a1Body.bodyIndex && Object.op_Implicit((Object)(object)val2))
			{
				Transform val3 = ((Component)val2).transform.Find("Center");
				if (Object.op_Implicit((Object)(object)val3))
				{
					int index = Random.RandomRangeInt(0, sprites.Count);
					((Component)val3).GetComponent<Image>().overrideSprite = sprites[index];
					Log.DebugConditional("pulled up " + index);
				}
			}
		}

		private static void CustomEmotesAPI_animChanged(string newAnimation, BoneMapper mapper)
		{
			//IL_0013: 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)
			CharacterBody body = mapper.model.GetComponent<CharacterModel>().body;
			if (body.bodyIndex != m4a1Body.bodyIndex)
			{
				return;
			}
			((Component)body).gameObject.GetComponent<M4A1WeaponVisibility>()?.UpdateBody(body);
			List<CharacterMaster> childDummyLinks = M4A1Mod.Survivors.M4A1.Utils.M4A1.GetChildDummyLinks(body);
			foreach (CharacterMaster item in childDummyLinks)
			{
				CharacterBody body2 = item.GetBody();
				BoneMapper val = ((body2 != null) ? ((Component)body2.modelLocator.modelTransform).GetComponentInChildren<BoneMapper>() : null);
				CustomEmotesAPI.PlayAnimation(newAnimation, val, -2);
			}
		}

		private static void SurvivorCatalog_Init(orig_Init orig)
		{
			orig.Invoke();
			foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs)
			{
				if (((Object)allSurvivorDef.bodyPrefab).name == bodyName)
				{
					CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, assetBundle.LoadAsset<GameObject>("mdlM4A1Emotes"), 0, true);
					allSurvivorDef.bodyPrefab.GetComponentInChildren<BoneMapper>().scale = 1f;
					CustomEmotesAPI.CreateNameTokenSpritePair("SNORESVILLE_M4A1_NAME", assetBundle.LoadAsset<Sprite>("emoteWheelIcon0"));
				}
			}
		}
	}
	public class ItemDisplays : ItemDisplaysBase
	{
		protected override void SetItemDisplayRules(List<KeyAssetRuleGroup> itemDisplayRules)
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_046f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_0497: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0514: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Unknown result type (might be due to invalid IL or missing references)
			//IL_055f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: Unknown result type (might be due to invalid IL or missing references)
			//IL_0596: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0604: Unknown result type (might be due to invalid IL or missing references)
			//IL_0609: Unknown result type (might be due to invalid IL or missing references)
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_064f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0663: Unknown result type (might be due to invalid IL or missing references)
			//IL_0677: Unknown result type (might be due to invalid IL or missing references)
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0681: Unknown result type (might be due to invalid IL or missing references)
			//IL_0686: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_073f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_076c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0771: Unknown result type (might be due to invalid IL or missing references)
			//IL_0776: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_082f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_085c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_0886: Unknown result type (might be due to invalid IL or missing references)
			//IL_089a: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0912: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_0976: Unknown result type (might be due to invalid IL or missing references)
			//IL_098a: Unknown result type (might be due to invalid IL or missing references)
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a04: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a45: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a59: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a77: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ace: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b28: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c04: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c18: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c3b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ce7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d00: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d3e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d5c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d81: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e0d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e2b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e85: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e99: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ee9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0efd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f16: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f20: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f61: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f75: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f8e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fed: Unknown result type (might be due to invalid IL or missing references)
			//IL_1001: Unknown result type (might be due to invalid IL or missing references)
			//IL_1006: Unknown result type (might be due to invalid IL or missing references)
			//IL_100b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1010: Unknown result type (might be due to invalid IL or missing references)
			//IL_1051: Unknown result type (might be due to invalid IL or missing references)
			//IL_1065: Unknown result type (might be due to invalid IL or missing references)
			//IL_1079: Unknown result type (might be due to invalid IL or missing references)
			//IL_107e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1083: Unknown result type (might be due to invalid IL or missing references)
			//IL_10a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_10bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_10d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_10da: Unknown result type (might be due to invalid IL or missing references)
			//IL_10df: Unknown result type (might be due to invalid IL or missing references)
			//IL_1120: Unknown result type (might be due to invalid IL or missing references)
			//IL_1134: Unknown result type (might be due to invalid IL or missing references)
			//IL_1148: Unknown result type (might be due to invalid IL or missing references)
			//IL_114d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1152: Unknown result type (might be due to invalid IL or missing references)
			//IL_1177: Unknown result type (might be due to invalid IL or missing references)
			//IL_118b: Unknown result type (might be due to invalid IL or missing references)
			//IL_119f: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_11a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1203: Unknown result type (might be due to invalid IL or missing references)
			//IL_1217: Unknown result type (might be due to invalid IL or missing references)
			//IL_121c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1221: Unknown result type (might be due to invalid IL or missing references)
			//IL_1226: Unknown result type (might be due to invalid IL or missing references)
			//IL_1267: Unknown result type (might be due to invalid IL or missing references)
			//IL_127b: Unknown result type (might be due to invalid IL or missing references)
			//IL_128f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1294: Unknown result type (might be due to invalid IL or missing references)
			//IL_1299: Unknown result type (might be due to invalid IL or missing references)
			//IL_12be: Unknown result type (might be due to invalid IL or missing references)
			//IL_12d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_12eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_12f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1315: Unknown result type (might be due to invalid IL or missing references)
			//IL_1329: Unknown result type (might be due to invalid IL or missing references)
			//IL_133d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1342: Unknown result type (might be due to invalid IL or missing references)
			//IL_1347: Unknown result type (might be due to invalid IL or missing references)
			//IL_136c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1380: Unknown result type (might be due to invalid IL or missing references)
			//IL_1394: Unknown result type (might be due to invalid IL or missing references)
			//IL_1399: Unknown result type (might be due to invalid IL or missing references)
			//IL_139e: Unknown result type (might be due to invalid IL or missing references)
			//IL_13a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_13e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_13f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_140c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1411: Unknown result type (might be due to invalid IL or missing references)
			//IL_1416: Unknown result type (might be due to invalid IL or missing references)
			//IL_143b: Unknown result type (might be due to invalid IL or missing references)
			//IL_144f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1463: Unknown result type (might be due to invalid IL or missing references)
			//IL_1468: Unknown result type (might be due to invalid IL or missing references)
			//IL_146d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1492: Unknown result type (might be due to invalid IL or missing references)
			//IL_14a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_14ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_14bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_14c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_14e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_14fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_1511: Unknown result type (might be due to invalid IL or missing references)
			//IL_1516: Unknown result type (might be due to invalid IL or missing references)
			//IL_151b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1520: Unknown result type (might be due to invalid IL or missing references)
			//IL_1561: Unknown result type (might be due to invalid IL or missing references)
			//IL_1575: Unknown result type (might be due to invalid IL or missing references)
			//IL_1589: Unknown result type (might be due to invalid IL or missing references)
			//IL_158e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1593: Unknown result type (might be due to invalid IL or missing references)
			//IL_1598: Unknown result type (might be due to invalid IL or missing references)
			//IL_15d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_15ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_1601: Unknown result type (might be due to invalid IL or missing references)
			//IL_1606: Unknown result type (might be due to invalid IL or missing references)
			//IL_160b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1630: Unknown result type (might be due to invalid IL or missing references)
			//IL_1644: Unknown result type (might be due to invalid IL or missing references)
			//IL_1658: Unknown result type (might be due to invalid IL or missing references)
			//IL_165d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1662: Unknown result type (might be due to invalid IL or missing references)
			//IL_1667: Unknown result type (might be due to invalid IL or missing references)
			//IL_16a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_16bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_16d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_16d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_16da: Unknown result type (might be due to invalid IL or missing references)
			//IL_16ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_1713: Unknown result type (might be due to invalid IL or missing references)
			//IL_1727: Unknown result type (might be due to invalid IL or missing references)
			//IL_172c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1731: Unknown result type (might be due to invalid IL or missing references)
			//IL_1736: Unknown result type (might be due to invalid IL or missing references)
			//IL_1777: Unknown result type (might be due to invalid IL or missing references)
			//IL_178b: Unknown result type (might be due to invalid IL or missing references)
			//IL_179f: Unknown result type (might be due to invalid IL or missing references)
			//IL_17a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_17a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_17ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_17ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1803: Unknown result type (might be due to invalid IL or missing references)
			//IL_1817: Unknown result type (might be due to invalid IL or missing references)
			//IL_181c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1821: Unknown result type (might be due to invalid IL or missing references)
			//IL_1826: Unknown result type (might be due to invalid IL or missing references)
			//IL_1867: Unknown result type (might be due to invalid IL or missing references)
			//IL_187b: Unknown result type (might be due to invalid IL or missing references)
			//IL_188f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1894: Unknown result type (might be due to invalid IL or missing references)
			//IL_1899: Unknown result type (might be due to invalid IL or missing references)
			//IL_18be: Unknown result type (might be due to invalid IL or missing references)
			//IL_18d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_18e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_18eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_18f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_18f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1936: Unknown result type (might be due to invalid IL or missing references)
			//IL_194a: Unknown result type (might be due to invalid IL or missing references)
			//IL_195e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1963: Unknown result type (might be due to invalid IL or missing references)
			//IL_1968: Unknown result type (might be due to invalid IL or missing references)
			//IL_196d: Unknown result type (might be due to invalid IL or missing references)
			//IL_19ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_19c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_19d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_19db: Unknown result type (might be due to invalid IL or missing references)
			//IL_19e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a05: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a19: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a32: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a37: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a91: Unknown result type (might be due to invalid IL or missing references)
			//IL_1aa5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1aaa: Unknown result type (might be due to invalid IL or missing references)
			//IL_1aaf: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ad4: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ae8: Unknown result type (might be due to invalid IL or missing references)
			//IL_1afc: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b01: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b06: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b60: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b74: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b79: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ba3: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bb7: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bcb: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bd0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bd5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1bda: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c1b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c43: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c48: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c4d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c52: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c93: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ca7: Unknown result type (might be due to invalid IL or missing references)
			//IL_1cbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_1cc0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1cc5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1cca: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d33: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d38: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d42: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d83: Unknown result type (might be due to invalid IL or missing references)
			//IL_1d97: Unknown result type (might be due to invalid IL or missing references)
			//IL_1dab: Unknown result type (might be due to invalid IL or missing references)
			//IL_1db0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1db5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1dba: Unknown result type (might be due to invalid IL or missing references)
			//IL_1dfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e23: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e28: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e32: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e73: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e87: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ea0: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ea5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1eaa: Unknown result type (might be due to invalid IL or missing references)
			//IL_1eeb: Unknown result type (might be due to invalid IL or missing references)
			//IL_1eff: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f13: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f18: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f1d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f42: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f56: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f6a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f74: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f79: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fba: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fce: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fe2: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fe7: Unknown result type (might be due to invalid IL or missing references)
			//IL_1fec: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ff1: Unknown result type (might be due to invalid IL or missing references)
			//IL_2032: Unknown result type (might be due to invalid IL or missing references)
			//IL_2046: Unknown result type (might be due to invalid IL or missing references)
			//IL_205a: Unknown result type (might be due to invalid IL or missing references)
			//IL_205f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2064: Unknown result type (might be due to invalid IL or missing references)
			//IL_2069: Unknown result type (might be due to invalid IL or missing references)
			//IL_20aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_20be: Unknown result type (might be due to invalid IL or missing references)
			//IL_20d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_20d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_20dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_20e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_2122: Unknown result type (might be due to invalid IL or missing references)
			//IL_2136: Unknown result type (might be due to invalid IL or missing references)
			//IL_214a: Unknown result type (might be due to invalid IL or missing references)
			//IL_214f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2154: Unknown result type (might be due to invalid IL or missing references)
			//IL_2159: Unknown result type (might be due to invalid IL or missing references)
			//IL_219a: Unknown result type (might be due to invalid IL or missing references)
			//IL_21ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_21c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_21c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_21cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_21f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_2205: Unknown result type (might be due to invalid IL or missing references)
			//IL_2219: Unknown result type (might be due to invalid IL or missing references)
			//IL_221e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2223: Unknown result type (might be due to invalid IL or missing references)
			//IL_2228: Unknown result type (might be due to invalid IL or missing references)
			//IL_2269: Unknown result type (might be due to invalid IL or missing references)
			//IL_227d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2291: Unknown result type (might be due to invalid IL or missing references)
			//IL_2296: Unknown result type (might be due to invalid IL or missing references)
			//IL_229b: Unknown result type (might be due to invalid IL or missing references)
			//IL_22a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_22e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_22f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_2309: Unknown result type (might be due to invalid IL or missing references)
			//IL_230e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2313: Unknown result type (might be due to invalid IL or missing references)
			//IL_2338: Unknown result type (might be due to invalid IL or missing references)
			//IL_234c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2360: Unknown result type (might be due to invalid IL or missing references)
			//IL_2365: Unknown result type (might be due to invalid IL or missing references)
			//IL_236a: Unknown result type (might be due to invalid IL or missing references)
			//IL_236f: Unknown result type (might be due to invalid IL or missing references)
			//IL_23b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_23c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_23d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_23dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_23e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_23e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_2428: Unknown result type (might be due to invalid IL or missing references)
			//IL_243c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2450: Unknown result type (might be due to invalid IL or missing references)
			//IL_2455: Unknown result type (might be due to invalid IL or missing references)
			//IL_245a: Unknown result type (might be due to invalid IL or missing references)
			//IL_247f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2493: Unknown result type (might be due to invalid IL or missing references)
			//IL_24a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_24ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_24b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_24b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_24f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_250b: Unknown result type (might be due to invalid IL or missing references)
			//IL_251f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2524: Unknown result type (might be due to invalid IL or missing references)
			//IL_2529: Unknown result type (might be due to invalid IL or missing references)
			//IL_252e: Unknown result type (might be due to invalid IL or missing references)
			//IL_256f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2583: Unknown result type (might be due to invalid IL or missing references)
			//IL_2597: Unknown result type (might be due to invalid IL or missing references)
			//IL_259c: Unknown result type (might be due to invalid IL or missing references)
			//IL_25a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_25c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_25da: Unknown result type (might be due to invalid IL or missing references)
			//IL_25ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_25f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_25f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_25fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_263e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2652: Unknown result type (might be due to invalid IL or missing references)
			//IL_2666: Unknown result type (might be due to invalid IL or missing references)
			//IL_266b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2670: Unknown result type (might be due to invalid IL or missing references)
			//IL_2675: Unknown result type (might be due to invalid IL or missing references)
			//IL_26b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_26ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_26de: Unknown result type (might be due to invalid IL or missing references)
			//IL_26e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_26e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_26ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_272e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2742: Unknown result type (might be due to invalid IL or missing references)
			//IL_2756: Unknown result type (might be due to invalid IL or missing references)
			//IL_275b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2760: Unknown result type (might be due to invalid IL or missing references)
			//IL_2765: Unknown result type (might be due to invalid IL or missing references)
			//IL_27a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_27ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_27ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_27d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_27d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_27dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_281e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2832: Unknown result type (might be due to invalid IL or missing references)
			//IL_2846: Unknown result type (might be due to invalid IL or missing references)
			//IL_284b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2850: Unknown result type (might be due to invalid IL or missing references)
			//IL_2855: Unknown result type (might be due to invalid IL or missing references)
			//IL_2896: Unknown result type (might be due to invalid IL or missing references)
			//IL_28aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_28be: Unknown result type (might be due to invalid IL or missing references)
			//IL_28c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_28c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_28cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_290e: Unknown result type (might be due to invalid IL or missing references)
			//IL_2922: Unknown result type (might be due to invalid IL or missing references)
			//IL_2936: Unknown result type (might be due to invalid IL or missing references)
			//IL_293b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2940: Unknown result type (might be due to invalid IL or missing references)
			//IL_2965: Unknown result type (might be due to invalid IL or missing references)
			//IL_2979: Unknown result type (might be due to invalid IL or missing references)
			//IL_298d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2992: Unknown result type (might be due to invalid IL or missing references)
			//IL_2997: Unknown result type (might be due to invalid IL or missing references)
			//IL_299c: Unknown result type (might be due to invalid IL or missing references)
			//IL_29dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_29f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a05: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a14: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a55: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a69: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a82: Unknown result type (might be due to invalid IL or missing references)
			//IL_2a87: Unknown result type (might be due to invalid IL or missing references)
			//IL_2aac: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ac0: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ad4: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ad9: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ade: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ae3: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b24: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b38: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b51: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b56: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2b9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2bb0: Unknown result type (might be due to invalid IL or missing references)
			//IL_2bc4: Unknown result type (might be due to invalid IL or missing references)
			//IL_2bc9: Unknown result type (might be due to invalid IL or missing references)
			//IL_2bce: Unknown result type (might be due to invalid IL or missing references)
			//IL_2bd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c14: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c28: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c41: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c46: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2c8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ca0: Unknown result type (might be due to invalid IL or missing references)
			//IL_2cb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_2cb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_2cbe: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ce3: Unknown result type (might be due to invalid IL or missing references)
			//IL_2cf7: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d10: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d15: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d83: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d88: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d8d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2d92: Unknown result type (might be due to invalid IL or missing references)
			//IL_2dd3: Unknown result type (might be due to invalid IL or missing references)
			//IL_2de7: Unknown result type (might be due to invalid IL or missing references)
			//IL_2dfb: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e00: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e05: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e4b: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e73: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e78: Unknown result type (might be due to invalid IL or missing references)
			//IL_2e7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ea2: Unknown result type (might be due to invalid IL or missing references)
			//IL_2eb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_2eca: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ecf: Unknown result type (might be due to invalid IL or missing references)
			//IL_2ed4: Unknown result type (might be due to invalid IL or miss