Decompiled source of BobombBattlefield v1.0.3

plugins/viliger-SM64BBF/SM64BBF.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using EntityStates;
using HG;
using HG.Reflection;
using JetBrains.Annotations;
using On.RoR2;
using R2API;
using RegigigasMod.Modules.Components;
using RegigigasMod.SkillStates.Regigigas;
using RoR2;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Skills;
using SM64BBF.Content;
using SM64BBF.Items;
using SM64BBF.PickUpDefs;
using SM64BBF.States;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.ResourceManagement.AsyncOperations;

[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("SM64BBF")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyProduct("SM64BBF")]
[assembly: AssemblyTitle("SM64BBF")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace SM64BBF
{
	internal static class Log
	{
		private static ManualLogSource _logSource;

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

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

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

		internal static void 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);
		}
	}
	public static class RegigigasCompat
	{
		private static bool? _enabled;

		public static bool enabled
		{
			get
			{
				if (!_enabled.HasValue)
				{
					_enabled = Chainloader.PluginInfos.ContainsKey("com.rob.RegigigasMod");
				}
				return _enabled.Value;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void SetupKingBobombBody(GameObject characterBody, ContentPack contentPack)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			characterBody.GetComponent<CharacterBody>().preferredInitialStateType = new SerializableEntityStateType(typeof(SpawnState));
			EntityStateMachine[] components = characterBody.GetComponents<EntityStateMachine>();
			foreach (EntityStateMachine val in components)
			{
				if (val.customName == "Body")
				{
					val.mainStateType = new SerializableEntityStateType(typeof(MainState));
					val.initialStateType = new SerializableEntityStateType(typeof(SpawnState));
				}
			}
			characterBody.GetComponent<CharacterDeathBehavior>().deathState = new SerializableEntityStateType(typeof(DeathState));
			characterBody.AddComponent<RegigigasController>();
			characterBody.AddComponent<RegigigasFlashController>();
			characterBody.AddComponent<SlowStartController>();
			FootstepHandler componentInChildren = characterBody.GetComponentInChildren<FootstepHandler>();
			componentInChildren.footstepDustPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/GenericHugeFootstepDust.prefab").WaitForCompletion();
			componentInChildren.enableFootstepDust = true;
		}

		public static void SetupPrimarySkill(SkillDef primary)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			SetupSkillActivationState(primary, new SerializableEntityStateType(typeof(GrabAttempt)));
		}

		public static void SetupSecondarySkill(SkillDef secondary)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			SetupSkillActivationState(secondary, new SerializableEntityStateType(typeof(Stomp)));
		}

		public static void SetupUtilitySkill(SkillDef utility)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			SetupSkillActivationState(utility, new SerializableEntityStateType(typeof(BounceStart)));
		}

		public static void SetupSpecialSkill(SkillDef special)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			SetupSkillActivationState(special, new SerializableEntityStateType(typeof(Revenge)));
		}

		private static void SetupSkillActivationState(SkillDef skill, SerializableEntityStateType activationState)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)skill))
			{
				skill.activationState = activationState;
			}
			else
			{
				Log.Warning("KingBobomb: Skill for activation state " + ((object)(SerializableEntityStateType)(ref activationState)).ToString() + "doesn't exist.");
			}
		}
	}
	public static class SM64BBFContent
	{
		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct MiscPickups
		{
			public static StarmanPickupDef Starman;

			public static CoinPickupDef Coin;
		}

		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct Items
		{
			public static ItemDef MarioOneUp;
		}

		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct Buffs
		{
			public static BuffDef BobombArmor;
		}

		internal const string ScenesAssetBundleFileName = "sm64bbfstage";

		internal const string AssetsAssetBundleFileName = "sm64bbfassets";

		internal const string SoundsSoundBankFileName = "SM64BBFSounds.bnk";

		internal const string MusicSoundBankFileName = "SM64BBFMusic.bnk";

		internal const string InitSoundBankFileName = "SM64BBFInit.bnk";

		private static AssetBundle _scenesAssetBundle;

		private static AssetBundle _assetsAssetBundle;

		internal static SceneDef SM64BBFScene;

		internal static Sprite SM64BBFPreviewSprite;

		internal static Material SM64BBFBazaarSeer;

		public static List<Material> SwappedMaterials = new List<Material>();

		public static Dictionary<string, string> ShaderLookup = new Dictionary<string, string>
		{
			{ "stubbedror2/base/shaders/hgstandard", "RoR2/Base/Shaders/HGStandard.shader" },
			{ "stubbedror2/base/shaders/hgsnowtopped", "RoR2/Base/Shaders/HGSnowTopped.shader" },
			{ "stubbedror2/base/shaders/hgtriplanarterrainblend", "RoR2/Base/Shaders/HGTriplanarTerrainBlend.shader" },
			{ "stubbedror2/base/shaders/hgintersectioncloudremap", "RoR2/Base/Shaders/HGIntersectionCloudRemap.shader" },
			{ "stubbedror2/base/shaders/hgcloudremap", "RoR2/Base/Shaders/HGCloudRemap.shader" },
			{ "stubbedror2/base/shaders/hgdistortion", "RoR2/Base/Shaders/HGDistortion.shader" },
			{ "stubbedcalm water/calmwater - dx11 - doublesided", "Calm Water/CalmWater - DX11 - DoubleSided.shader" },
			{ "stubbedcalm water/calmwater - dx11", "Calm Water/CalmWater - DX11.shader" },
			{ "stubbednature/speedtree", "RoR2/Base/Shaders/SpeedTreeCustom.shader" },
			{ "stubbeddecalicious/decaliciousdeferreddecal", "Decalicious/DecaliciousDeferredDecal.shader" }
		};

		internal static IEnumerator LoadAssetBundlesAsync(AssetBundle scenesAssetBundle, AssetBundle assetsAssetBundle, IProgress<float> progress, ContentPack contentPack)
		{
			_scenesAssetBundle = scenesAssetBundle;
			_assetsAssetBundle = assetsAssetBundle;
			yield return LoadAllAssetsAsync<Material>(_assetsAssetBundle, progress, (Action<Material[]>)delegate(Material[] assets)
			{
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_004b: Unknown result type (might be due to invalid IL or missing references)
				if (assets != null)
				{
					Material[] array = assets;
					foreach (Material val7 in array)
					{
						if (((Object)val7.shader).name.StartsWith("Stubbed"))
						{
							Shader val8 = Addressables.LoadAssetAsync<Shader>((object)ShaderLookup[((Object)val7.shader).name.ToLower()]).WaitForCompletion();
							((Object)val7.shader).name.ToLower();
							if (Object.op_Implicit((Object)(object)val8))
							{
								val7.shader = val8;
								SwappedMaterials.Add(val7);
							}
							else
							{
								Log.Warning("Couldn't find replacement shader for " + ((Object)val7.shader).name.ToLower());
							}
						}
					}
				}
			});
			yield return LoadAllAssetsAsync<UnlockableDef>(_assetsAssetBundle, progress, (Action<UnlockableDef[]>)delegate(UnlockableDef[] assets)
			{
				contentPack.unlockableDefs.Add(assets);
			});
			yield return LoadAllAssetsAsync<Sprite>(_assetsAssetBundle, progress, (Action<Sprite[]>)delegate(Sprite[] assets)
			{
				SM64BBFPreviewSprite = assets.First((Sprite a) => ((Object)a).name == "texSM64BBFPreview");
			});
			yield return LoadAllAssetsAsync<SceneDef>(_assetsAssetBundle, progress, (Action<SceneDef[]>)delegate(SceneDef[] assets)
			{
				SM64BBFScene = assets.First((SceneDef sd) => sd.cachedName == "sm64_bbf_SM64_BBF");
				contentPack.sceneDefs.Add(assets);
			});
			yield return LoadAllAssetsAsync<MusicTrackDef>(_assetsAssetBundle, progress, (Action<MusicTrackDef[]>)delegate(MusicTrackDef[] assets)
			{
				contentPack.musicTrackDefs.Add(assets);
			});
			yield return LoadAllAssetsAsync<CoinPickupDef>(_assetsAssetBundle, progress, (Action<CoinPickupDef[]>)delegate(CoinPickupDef[] assets)
			{
				MiscPickups.Coin = assets.First((CoinPickupDef spd) => ((Object)spd).name == "CoinPickUpDef");
				contentPack.miscPickupDefs.Add((MiscPickupDef[])(object)assets);
			});
			yield return LoadAllAssetsAsync<StarmanPickupDef>(_assetsAssetBundle, progress, (Action<StarmanPickupDef[]>)delegate(StarmanPickupDef[] assets)
			{
				MiscPickups.Starman = assets.First((StarmanPickupDef spd) => ((Object)spd).name == "CustomStarmanPickupDef");
				contentPack.miscPickupDefs.Add((MiscPickupDef[])(object)assets);
			});
			yield return LoadAllAssetsAsync<GameObject>(_assetsAssetBundle, progress, (Action<GameObject[]>)delegate(GameObject[] assets)
			{
				GameObject val5 = assets.First((GameObject interactable) => ((Object)interactable).name == "TreeInteractable");
				GameObject val6 = assets.First((GameObject gameObject) => ((Object)gameObject).name == "RollingRock");
				contentPack.networkedObjectPrefabs.Add((GameObject[])(object)new GameObject[2] { val5, val6 });
			});
			yield return LoadAllAssetsAsync<ItemDef>(_assetsAssetBundle, progress, (Action<ItemDef[]>)delegate(ItemDef[] assets)
			{
				Items.MarioOneUp = assets.First((ItemDef id) => ((Object)id).name == "OneUp");
				contentPack.itemDefs.Add(assets);
			});
			yield return LoadAllAssetsAsync<GameObject>(_assetsAssetBundle, progress, (Action<GameObject[]>)delegate(GameObject[] assets)
			{
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				GameObject val3 = assets.First((GameObject bp) => ((Object)bp).name == "BobombBody");
				val3.GetComponent<CharacterBody>()._defaultCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/StandardCrosshair.prefab").WaitForCompletion();
				val3.GetComponent<CameraTargetParams>().cameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Common/ccpStandard.asset").WaitForCompletion();
				FootstepHandler componentInChildren = val3.GetComponentInChildren<FootstepHandler>();
				componentInChildren.footstepDustPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/GenericFootstepDust.prefab").WaitForCompletion();
				componentInChildren.enableFootstepDust = true;
				contentPack.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { val3 });
				if (RegigigasCompat.enabled)
				{
					GameObject val4 = assets.First((GameObject bp) => ((Object)bp).name == "KingBobomb2Body");
					val4.GetComponent<CharacterBody>()._defaultCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/StandardCrosshair.prefab").WaitForCompletion();
					RegigigasCompat.SetupKingBobombBody(val4, contentPack);
					contentPack.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { val4 });
				}
			});
			yield return LoadAllAssetsAsync<GameObject>(_assetsAssetBundle, progress, (Action<GameObject[]>)delegate(GameObject[] assets)
			{
				GameObject val = assets.First((GameObject bp) => ((Object)bp).name == "BobombMaster");
				contentPack.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { val });
				if (RegigigasCompat.enabled)
				{
					GameObject val2 = assets.First((GameObject bp) => ((Object)bp).name == "KingBobomb2Master");
					contentPack.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { val2 });
				}
			});
			yield return LoadAllAssetsAsync<SkillDef>(_assetsAssetBundle, progress, (Action<SkillDef[]>)delegate(SkillDef[] assets)
			{
				contentPack.skillDefs.Add(assets);
				if (RegigigasCompat.enabled)
				{
					RegigigasCompat.SetupPrimarySkill(assets.First((SkillDef sd) => ((Object)sd).name == "KingBobombGrab"));
					RegigigasCompat.SetupSecondarySkill(assets.First((SkillDef sd) => ((Object)sd).name == "KingBobombEarthquake"));
					RegigigasCompat.SetupUtilitySkill(assets.First((SkillDef sd) => ((Object)sd).name == "KingBobombSlam"));
					RegigigasCompat.SetupSpecialSkill(assets.First((SkillDef sd) => ((Object)sd).name == "KingBobombRevenge"));
				}
			});
			yield return LoadAllAssetsAsync<SkillFamily>(_assetsAssetBundle, progress, (Action<SkillFamily[]>)delegate(SkillFamily[] assets)
			{
				contentPack.skillFamilies.Add(assets);
			});
			yield return LoadAllAssetsAsync<ItemDisplayRuleSet>(_assetsAssetBundle, progress, (Action<ItemDisplayRuleSet[]>)delegate(ItemDisplayRuleSet[] assets)
			{
				ItemDisplayRuleSet itemDisplayRuleSet = assets.First((ItemDisplayRuleSet idrs) => ((Object)idrs).name == "idrsBobomb");
				SetupBobombItemDisplays(ref itemDisplayRuleSet);
				if (RegigigasCompat.enabled)
				{
					ItemDisplayRuleSet itemDisplayRuleSet2 = assets.First((ItemDisplayRuleSet idrs) => ((Object)idrs).name == "idrsKingBobomb2");
					SetupKingBobombItemDisplays(ref itemDisplayRuleSet2);
				}
			});
			yield return LoadAllAssetsAsync<BuffDef>(_assetsAssetBundle, progress, (Action<BuffDef[]>)delegate(BuffDef[] assets)
			{
				//IL_0034: Unknown result type (might be due to invalid IL or missing references)
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				Buffs.BobombArmor = assets.First((BuffDef bd) => ((Object)bd).name == "bdBobombArmorBuff");
				Buffs.BobombArmor.iconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texBuffGenericShield.tif").WaitForCompletion();
				contentPack.buffDefs.Add((BuffDef[])(object)new BuffDef[1] { Buffs.BobombArmor });
			});
			RegisterSounds(contentPack);
			contentPack.entityStateTypes.Add(new Type[6]
			{
				typeof(StarManState),
				typeof(BobombAcquireTargetState),
				typeof(BobombDeathState),
				typeof(BobombExplodeState),
				typeof(BobombSpawnState),
				typeof(BobombSuicideDeathState)
			});
			AsyncOperationHandle<GameObject> bossDroplet = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/BossOrb.prefab");
			while (!bossDroplet.IsDone)
			{
				yield return null;
			}
			((MiscPickupDef)MiscPickups.Starman).dropletDisplayPrefab = bossDroplet.Result;
			((MiscPickupDef)MiscPickups.Coin).dropletDisplayPrefab = bossDroplet.Result;
			SM64BBFBazaarSeer = StageRegistration.MakeBazaarSeerMaterial(SM64BBFPreviewSprite.texture);
			SM64BBFScene.previewTexture = (Texture)(object)SM64BBFPreviewSprite.texture;
			SM64BBFScene.portalMaterial = SM64BBFBazaarSeer;
			AsyncOperationHandle<GameObject> dioramaPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/golemplains/GolemplainsDioramaDisplay.prefab");
			while (!dioramaPrefab.IsDone)
			{
				yield return null;
			}
			SM64BBFScene.dioramaPrefab = dioramaPrefab.Result;
			StageRegistration.RegisterSceneDefToLoop(SM64BBFScene);
		}

		private static void SetupBobombItemDisplays(ref ItemDisplayRuleSet itemDisplayRuleSet)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: 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_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: 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_0153: 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_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: 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_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: 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_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0381: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0467: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: 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_048d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0508: Unknown result type (might be due to invalid IL or missing references)
			//IL_050d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0515: Unknown result type (might be due to invalid IL or missing references)
			//IL_051a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_053a: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_056a: Unknown result type (might be due to invalid IL or missing references)
			//IL_056f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Unknown result type (might be due to invalid IL or missing references)
			//IL_058a: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0607: Unknown result type (might be due to invalid IL or missing references)
			//IL_0613: Unknown result type (might be due to invalid IL or missing references)
			//IL_0618: Unknown result type (might be due to invalid IL or missing references)
			//IL_0643: Unknown result type (might be due to invalid IL or missing references)
			//IL_0648: Unknown result type (might be due to invalid IL or missing references)
			//IL_065e: 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_0679: Unknown result type (might be due to invalid IL or missing references)
			//IL_067e: 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_068b: Unknown result type (might be due to invalid IL or missing references)
			//IL_069b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_071c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0721: Unknown result type (might be due to invalid IL or missing references)
			//IL_0737: Unknown result type (might be due to invalid IL or missing references)
			//IL_073c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0752: Unknown result type (might be due to invalid IL or missing references)
			//IL_0757: Unknown result type (might be due to invalid IL or missing references)
			//IL_075f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0764: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_077c: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_078a: Unknown result type (might be due to invalid IL or missing references)
			//IL_078f: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0810: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Unknown result type (might be due to invalid IL or missing references)
			//IL_082b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0830: Unknown result type (might be due to invalid IL or missing references)
			//IL_0838: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0848: Unknown result type (might be due to invalid IL or missing references)
			//IL_0851: Unknown result type (might be due to invalid IL or missing references)
			//IL_085d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0862: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0892: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0900: Unknown result type (might be due to invalid IL or missing references)
			GameObject followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteFire/DisplayEliteHorn.prefab").WaitForCompletion();
			DisplayRuleGroup displayRuleGroup = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = followerPrefab,
				childName = "Head",
				localPos = new Vector3(-0.15365f, 0.21462f, -0.27426f),
				localAngles = new Vector3(354.7525f, 302.5303f, 7.12234f),
				localScale = new Vector3(0.44488f, 0.44488f, 0.44488f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = followerPrefab,
				childName = "Head",
				localPos = new Vector3(-0.12521f, 0.3066f, 0.3031f),
				localAngles = new Vector3(354.7525f, 231.6184f, 351.6044f),
				localScale = new Vector3(-0.44f, 0.44f, 0.44f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups = ref itemDisplayRuleSet.keyAssetRuleGroups;
			KeyAssetRuleGroup val = new KeyAssetRuleGroup
			{
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteFire/EliteFireEquipment.asset").WaitForCompletion(),
				displayRuleGroup = displayRuleGroup
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups, ref val);
			DisplayRuleGroup displayRuleGroup2 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup2)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteHaunted/DisplayEliteStealthCrown.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(-0.02002f, 0.36085f, 0.01142f),
				localAngles = new Vector3(84.62356f, 329.7962f, 243.3615f),
				localScale = new Vector3(0.20258f, 0.20258f, 0.20258f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups2 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup2,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteHaunted/EliteHauntedEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups2, ref val);
			DisplayRuleGroup displayRuleGroup3 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup3)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteIce/DisplayEliteIceCrown.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(0.05636f, 0.20679f, 0.06288f),
				localAngles = new Vector3(283.3743f, 102.7717f, 166.9378f),
				localScale = new Vector3(0.13275f, 0.13275f, 0.13275f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups3 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup3,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteIce/EliteIceEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups3, ref val);
			DisplayRuleGroup displayRuleGroup4 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(-0.47095f, 0.3003f, -0.02387f),
				localAngles = new Vector3(355.5493f, 269.5843f, 12.25919f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(-0.41474f, 0.41538f, -0.02514f),
				localAngles = new Vector3(323.8193f, 261.7038f, 7.48606f),
				localScale = new Vector3(0.44488f, 0.44488f, 0.44488f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups4 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup4,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteLightning/EliteLightningEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups4, ref val);
			DisplayRuleGroup displayRuleGroup5 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLunar/DisplayEliteLunar, Fire.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(0.64709f, -0.88823f, 0.02083f),
				localAngles = new Vector3(11.76858f, 84.12247f, 3.64591f),
				localScale = new Vector3(0.44488f, 0.44488f, 0.44488f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLunar/DisplayEliteLunar,Eye.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(-0.05048f, -0.05632f, -0.00397f),
				localAngles = new Vector3(81.85596f, 299.8571f, 309.0397f),
				localScale = new Vector3(1.02235f, 1.02235f, 1.02235f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups5 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup5,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteLunar/EliteLunarEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups5, ref val);
			DisplayRuleGroup displayRuleGroup6 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup6)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElitePoison/DisplayEliteUrchinCrown.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(0.05243f, 0.2016f, -0.02218f),
				localAngles = new Vector3(280.5813f, 114.8507f, 252.4087f),
				localScale = new Vector3(0.25238f, 0.25238f, 0.25238f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups6 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup6,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/ElitePoison/ElitePoisonEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups6, ref val);
			DisplayRuleGroup displayRuleGroup7 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup7)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteEarth/DisplayEliteMendingAntlers.prefab").WaitForCompletion(),
				childName = "Head",
				localPos = new Vector3(-0.12323f, 0.22929f, 0.00569f),
				localAngles = new Vector3(13.38845f, 89.25855f, 356.7623f),
				localScale = new Vector3(2.60453f, 2.60453f, 2.60453f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups7 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup7,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/DLC1/EliteEarth/EliteEarthEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups7, ref val);
			DisplayRuleGroup displayRuleGroup8 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup8)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteVoid/DisplayAffixVoid.prefab").WaitForCompletion(),
				childName = "Eyes",
				localPos = new Vector3(-0.01601f, 0.35024f, -0.22315f),
				localAngles = new Vector3(20.17711f, 258.0909f, 2.55114f),
				localScale = new Vector3(0.36462f, 0.36462f, 0.36462f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup8)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteVoid/DisplayAffixVoid.prefab").WaitForCompletion(),
				childName = "Eyes",
				localPos = new Vector3(-0.1112f, 0.35393f, 0.20253f),
				localAngles = new Vector3(20.17711f, 258.0909f, 2.55114f),
				localScale = new Vector3(0.36462f, 0.36462f, 0.36462f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups8 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup8,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/DLC1/EliteVoid/EliteVoidEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups8, ref val);
		}

		private static void SetupKingBobombItemDisplays(ref ItemDisplayRuleSet itemDisplayRuleSet)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: 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_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: 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_0153: 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_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: 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_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: 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_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0381: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0544: Unknown result type (might be due to invalid IL or missing references)
			//IL_0549: 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_0564: Unknown result type (might be due to invalid IL or missing references)
			//IL_056c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0571: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: 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_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fc: 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_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_061d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Unknown result type (might be due to invalid IL or missing references)
			//IL_062e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0659: Unknown result type (might be due to invalid IL or missing references)
			//IL_065e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0674: Unknown result type (might be due to invalid IL or missing references)
			//IL_0679: Unknown result type (might be due to invalid IL or missing references)
			//IL_068f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0694: Unknown result type (might be due to invalid IL or missing references)
			//IL_069c: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bb: 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_06cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0702: Unknown result type (might be due to invalid IL or missing references)
			//IL_0707: Unknown result type (might be due to invalid IL or missing references)
			//IL_0732: Unknown result type (might be due to invalid IL or missing references)
			//IL_0737: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0752: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_076d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0775: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0785: Unknown result type (might be due to invalid IL or missing references)
			//IL_078e: Unknown result type (might be due to invalid IL or missing references)
			//IL_079a: Unknown result type (might be due to invalid IL or missing references)
			//IL_079f: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0800: Unknown result type (might be due to invalid IL or missing references)
			//IL_0805: Unknown result type (might be due to invalid IL or missing references)
			//IL_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0812: Unknown result type (might be due to invalid IL or missing references)
			//IL_0822: Unknown result type (might be due to invalid IL or missing references)
			//IL_082a: Unknown result type (might be due to invalid IL or missing references)
			//IL_082c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0838: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0854: Unknown result type (might be due to invalid IL or missing references)
			//IL_085e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0867: Unknown result type (might be due to invalid IL or missing references)
			//IL_0873: Unknown result type (might be due to invalid IL or missing references)
			//IL_0878: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08be: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08de: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0903: Unknown result type (might be due to invalid IL or missing references)
			//IL_0905: Unknown result type (might be due to invalid IL or missing references)
			//IL_0911: Unknown result type (might be due to invalid IL or missing references)
			//IL_0916: Unknown result type (might be due to invalid IL or missing references)
			//IL_092d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0937: Unknown result type (might be due to invalid IL or missing references)
			//IL_0940: Unknown result type (might be due to invalid IL or missing references)
			//IL_094c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0951: Unknown result type (might be due to invalid IL or missing references)
			//IL_097c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0981: Unknown result type (might be due to invalid IL or missing references)
			//IL_0997: Unknown result type (might be due to invalid IL or missing references)
			//IL_099c: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_09de: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a06: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a10: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a19: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a25: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a70: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a75: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac8: Unknown result type (might be due to invalid IL or missing references)
			GameObject followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteFire/DisplayEliteHorn.prefab").WaitForCompletion();
			DisplayRuleGroup displayRuleGroup = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = followerPrefab,
				childName = "Chest",
				localPos = new Vector3(0.59218f, 1.54394f, -0.05067f),
				localAngles = new Vector3(0f, 339.9597f, 0f),
				localScale = new Vector3(0.44488f, 0.44488f, 0.44488f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = followerPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.71898f, 1.56142f, -0.13889f),
				localAngles = new Vector3(0f, 21.92726f, 0f),
				localScale = new Vector3(-0.44f, 0.44f, 0.44f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups = ref itemDisplayRuleSet.keyAssetRuleGroups;
			KeyAssetRuleGroup val = new KeyAssetRuleGroup
			{
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteFire/EliteFireEquipment.asset").WaitForCompletion(),
				displayRuleGroup = displayRuleGroup
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups, ref val);
			DisplayRuleGroup displayRuleGroup2 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup2)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteHaunted/DisplayEliteStealthCrown.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-1E-05f, 1.59462f, -0.12945f),
				localAngles = new Vector3(280.6838f, 180f, 180f),
				localScale = new Vector3(0.3943f, 0.3943f, 0.3943f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups2 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup2,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteHaunted/EliteHauntedEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups2, ref val);
			DisplayRuleGroup displayRuleGroup3 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup3)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteIce/DisplayEliteIceCrown.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0f, 1.62464f, -0.2518f),
				localAngles = new Vector3(278.8098f, 180f, 180f),
				localScale = new Vector3(0.20986f, 0.20986f, 0.20986f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups3 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup3,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteIce/EliteIceEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups3, ref val);
			DisplayRuleGroup displayRuleGroup4 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-1E-05f, 1.92614f, 0.98929f),
				localAngles = new Vector3(0f, 0f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0.8654f, 1.92616f, 0.56131f),
				localAngles = new Vector3(0f, 55.35863f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0.93271f, 1.92613f, -0.572f),
				localAngles = new Vector3(0f, 120.2551f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-0.02104f, 1.9261f, -1.07331f),
				localAngles = new Vector3(0f, 173.6604f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-0.91867f, 1.92607f, -0.55149f),
				localAngles = new Vector3(0f, 239.4073f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/DisplayEliteRhinoHorn.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-0.94588f, 1.92609f, 0.53167f),
				localAngles = new Vector3(0f, 295.5718f, 0f),
				localScale = new Vector3(0.65886f, 0.65886f, 0.65886f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups4 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup4,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteLightning/EliteLightningEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups4, ref val);
			DisplayRuleGroup displayRuleGroup5 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLunar/DisplayEliteLunar, Fire.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0f, -1E-05f, -1.46488f),
				localAngles = new Vector3(-1E-05f, 180f, 180f),
				localScale = new Vector3(0.44488f, 0.44488f, 0.7475f),
				limbMask = (LimbFlags)0
			});
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLunar/DisplayEliteLunar,Eye.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-0.06016f, 1.72845f, 1E-05f),
				localAngles = new Vector3(270f, 0f, 0f),
				localScale = new Vector3(1.77583f, 1.77583f, 1.77583f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups5 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup5,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/EliteLunar/EliteLunarEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups5, ref val);
			DisplayRuleGroup displayRuleGroup6 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup6)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElitePoison/DisplayEliteUrchinCrown.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0f, 1.82306f, 0f),
				localAngles = new Vector3(270f, 0f, 0f),
				localScale = new Vector3(0.34402f, 0.34402f, 0.34402f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups6 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup6,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/ElitePoison/ElitePoisonEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups6, ref val);
			DisplayRuleGroup displayRuleGroup7 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup7)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteEarth/DisplayEliteMendingAntlers.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(-0.00012f, 1.66408f, -0.25776f),
				localAngles = new Vector3(0f, 0f, 0f),
				localScale = new Vector3(4.68954f, 4.68954f, 4.68954f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups7 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup7,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/DLC1/EliteEarth/EliteEarthEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups7, ref val);
			DisplayRuleGroup displayRuleGroup8 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup8)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteVoid/DisplayAffixVoid.prefab").WaitForCompletion(),
				childName = "Chest",
				localPos = new Vector3(0f, -0.83569f, 1.7186f),
				localAngles = new Vector3(90f, 0f, 0f),
				localScale = new Vector3(0.36462f, 0.36462f, 0.36462f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups8 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup8,
				keyAsset = (Object)(object)Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/DLC1/EliteVoid/EliteVoidEquipment.asset").WaitForCompletion()
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups8, ref val);
		}

		private static IEnumerator LoadAllAssetsAsync<T>(AssetBundle assetBundle, IProgress<float> progress, Action<T[]> onAssetsLoaded) where T : Object
		{
			AssetBundleRequest sceneDefsRequest = assetBundle.LoadAllAssetsAsync<T>();
			while (!((AsyncOperation)sceneDefsRequest).isDone)
			{
				progress.Report(((AsyncOperation)sceneDefsRequest).progress);
				yield return null;
			}
			onAssetsLoaded(sceneDefsRequest.allAssets.Cast<T>().ToArray());
		}

		private static void SetupMusic()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: 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_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			CustomMusicTrackDef val = ScriptableObject.CreateInstance<CustomMusicTrackDef>();
			((MusicTrackDef)val).cachedName = "SM64BBFCustomMainMusic";
			val.CustomStates = new List<CustomState>();
			CustomState item = default(CustomState);
			item.GroupId = 1405583565u;
			item.StateId = 693170834u;
			val.CustomStates.Add(item);
			CustomState item2 = default(CustomState);
			item2.GroupId = 792781730u;
			item2.StateId = 89505537u;
			val.CustomStates.Add(item2);
			SM64BBFScene.mainTrack = (MusicTrackDef)(object)val;
			CustomMusicTrackDef val2 = ScriptableObject.CreateInstance<CustomMusicTrackDef>();
			((MusicTrackDef)val2).cachedName = "SM64BBFCustomBossMusic";
			val2.CustomStates = new List<CustomState>();
			CustomState item3 = default(CustomState);
			item3.GroupId = 1405583565u;
			item3.StateId = 1312500510u;
			val2.CustomStates.Add(item3);
			CustomState item4 = default(CustomState);
			item4.GroupId = 792781730u;
			item4.StateId = 580146960u;
			val2.CustomStates.Add(item4);
			SM64BBFScene.bossTrack = (MusicTrackDef)(object)val2;
		}

		private static void RegisterSounds(ContentPack contentPack)
		{
			contentPack.networkSoundEventDefs.Add((NetworkSoundEventDef[])(object)new NetworkSoundEventDef[14]
			{
				RegisterNetworkSound("SM64_BBF_Play_Coin"),
				RegisterNetworkSound("SM64_BBF_Stop_StarmanComes"),
				RegisterNetworkSound("SM64_BBF_StarmanKills"),
				RegisterNetworkSound("SM64_BBF_Play_Star"),
				RegisterNetworkSound("SM64_BBF_Stop_RollingStone"),
				RegisterNetworkSound("SM64_BBF_Play_StarmanComes"),
				RegisterNetworkSound("SM64_BBF_Play_RollingStone"),
				RegisterNetworkSound("SM64_BBF_solonggaybowser"),
				RegisterNetworkSound("SM64_BBF_Play_OneUp"),
				RegisterNetworkSound("SM64_BBF_Play_Bobomb_Aggro"),
				RegisterNetworkSound("SM64_BBF_Play_Bobomb_Fuse"),
				RegisterNetworkSound("SM64_BBF_Stop_Bobomb_Fuse"),
				RegisterNetworkSound("SM64_BBF_Play_Bobomb_Death"),
				RegisterNetworkSound("SM64_BBF_Play_Shake_Tree")
			});
		}

		public static NetworkSoundEventDef RegisterNetworkSound(string eventName)
		{
			NetworkSoundEventDef obj = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
			obj.eventName = eventName;
			return obj;
		}

		internal static void LoadSoundBanks(string soundbanksFolderPath)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Invalid comparison between Unknown and I4
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Invalid comparison between Unknown and I4
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Invalid comparison between Unknown and I4
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			AKRESULT val = AkSoundEngine.AddBasePath(soundbanksFolderPath);
			if ((int)val == 1)
			{
				Log.Info("Added bank base path : " + soundbanksFolderPath);
			}
			else
			{
				Log.Error("Error adding base path : " + soundbanksFolderPath + " " + $"Error code : {val}");
			}
			uint num = default(uint);
			val = AkSoundEngine.LoadBank("SM64BBFInit.bnk", ref num);
			if ((int)val == 1)
			{
				Log.Info("Added bank : SM64BBFInit.bnk");
			}
			else
			{
				Log.Error("Error loading bank : SM64BBFInit.bnk " + $"Error code : {val}");
			}
			val = AkSoundEngine.LoadBank("SM64BBFMusic.bnk", ref num);
			if ((int)val == 1)
			{
				Log.Info("Added bank : SM64BBFMusic.bnk");
			}
			else
			{
				Log.Error("Error loading bank : SM64BBFMusic.bnk " + $"Error code : {val}");
			}
			val = AkSoundEngine.LoadBank("SM64BBFSounds.bnk", ref num);
			if ((int)val == 1)
			{
				Log.Info("Added bank : SM64BBFSounds.bnk");
			}
			else
			{
				Log.Error("Error loading bank : SM64BBFSounds.bnk " + $"Error code : {val}");
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Viliger.SM64BBF", "SM64BBF", "1.0.3")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class SM64BBFPlugin : BaseUnityPlugin
	{
		public const string Version = "1.0.3";

		public const string GUID = "com.Viliger.SM64BBF";

		public static SM64BBFPlugin instance;

		private void Awake()
		{
			instance = this;
			Log.Init(((BaseUnityPlugin)this).Logger);
			RegisterHooks();
			if (!RegigigasCompat.enabled)
			{
				Helpers.RemoveExistingMonster("cscKingBobomb2");
			}
		}

		private void RegisterHooks()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			MusicController.Start += new hook_Start(MusicController_Start);
			ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(GiveToRoR2OurContentPackProviders);
			Language.collectLanguageRootFolders += CollectLanguageRootFolders;
			CharacterBody.onBodyInventoryChangedGlobal += MarioOneUpItemBehavior.CharacterBody_onBodyInventoryChangedGlobal;
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		}

		private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			if (sender.HasBuff(SM64BBFContent.Buffs.BobombArmor))
			{
				args.armorAdd += 100f;
			}
		}

		private void MusicController_Start(orig_Start orig, MusicController self)
		{
			orig.Invoke(self);
			AkSoundEngine.PostEvent("SM64_BBF_Play_Music_System", ((Component)self).gameObject);
		}

		private void Destroy()
		{
			Language.collectLanguageRootFolders -= CollectLanguageRootFolders;
		}

		private void GiveToRoR2OurContentPackProviders(AddContentPackProviderDelegate addContentPackProvider)
		{
			addContentPackProvider.Invoke((IContentPackProvider)(object)new ContentProvider());
		}

		public void CollectLanguageRootFolders(List<string> folders)
		{
			folders.Add(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "Language"));
		}

		public static bool RegisterNetworkSound(string eventName)
		{
			NetworkSoundEventDef obj = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
			obj.eventName = eventName;
			return ContentAddition.AddNetworkSoundEventDef(obj);
		}
	}
}
namespace SM64BBF.Stuff
{
	public class ClonedBillboard : MonoBehaviour
	{
		private static List<Transform> instanceTransformsList;

		static ClonedBillboard()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			instanceTransformsList = new List<Transform>();
			SceneCamera.onSceneCameraPreCull += new SceneCameraDelegate(OnSceneCameraPreCull);
		}

		private static void OnSceneCameraPreCull(SceneCamera sceneCamera)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: 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_0078: Unknown result type (might be due to invalid IL or missing references)
			Quaternion rotation = ((Component)sceneCamera).transform.rotation;
			for (int i = 0; i < instanceTransformsList.Count; i++)
			{
				float num = ((rotation.w < 0f) ? (0f - rotation.y) : rotation.y);
				instanceTransformsList[i].rotation = new Quaternion(instanceTransformsList[i].rotation.x, num, instanceTransformsList[i].rotation.z, instanceTransformsList[i].rotation.w);
			}
		}

		private void OnEnable()
		{
			instanceTransformsList.Add(((Component)this).transform);
		}

		private void OnDisable()
		{
			instanceTransformsList.Remove(((Component)this).transform);
		}
	}
	public class DrawLinesBetweenChildren : MonoBehaviour
	{
		private void OnDrawGizmos()
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			Transform val = null;
			foreach (Transform item in ((Component)this).transform)
			{
				Transform val2 = item;
				if (!((Object)(object)((Component)this).transform == (Object)(object)val2))
				{
					if ((Object)(object)val != (Object)null)
					{
						Gizmos.color = Color.blue;
						Gizmos.DrawLine(val.position, val2.position);
					}
					val = val2;
				}
			}
		}
	}
	public class ShadowCaster : MonoBehaviour
	{
		public GameObject shadow;

		public LayerMask mask;

		public float floorMargin;

		public bool alignWithNormal;

		private Renderer shadowRenderer;

		private void Start()
		{
			shadowRenderer = shadow.GetComponent<Renderer>();
			RenderShadow();
		}

		private void RenderShadow()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(((Component)this).transform.position, -Vector3.up, ref val, 100f, ((LayerMask)(ref mask)).value))
			{
				shadow.transform.position = ((RaycastHit)(ref val)).point + Vector3.up * floorMargin;
				shadow.transform.position = new Vector3(shadow.transform.position.x, shadow.transform.position.y + 0.2f, shadow.transform.position.z);
				if (alignWithNormal)
				{
					((Component)this).transform.rotation = Quaternion.FromToRotation(Vector3.up, ((RaycastHit)(ref val)).normal);
				}
				else
				{
					((Component)this).transform.rotation = Quaternion.identity;
				}
			}
		}
	}
}
namespace SM64BBF.States
{
	public class BobombAcquireTargetState : BaseState
	{
		public static float baseDuration = 1f;

		private static float duration;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			duration = baseDuration / base.attackSpeedStat;
			((EntityState)this).PlayAnimation("Body", "EmoteSurprise", "Surprise.playbackRate", duration);
			Util.PlayAttackSpeedSound("SM64_BBF_Play_Bobomb_Aggro", ((EntityState)this).gameObject, base.attackSpeedStat);
			SetStateOnHurt component = ((EntityState)this).gameObject.GetComponent<SetStateOnHurt>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.canBeStunned = false;
				component.canBeHitStunned = false;
				component.canBeFrozen = false;
			}
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).fixedAge > duration)
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new BobombExplodeState());
				if (NetworkServer.active)
				{
					((EntityState)this).characterBody.AddBuff(SM64BBFContent.Buffs.BobombArmor);
				}
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			return (InterruptPriority)6;
		}
	}
	public class BobombDeathState : GenericCharacterDeath
	{
		public override void OnEnter()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterDeath)this).OnEnter();
			EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_Stop_Bobomb_Fuse", ((EntityState)this).gameObject);
		}
	}
	public class BobombExplodeState : GenericCharacterMain
	{
		public int duration = 5;

		public static AnimationCurve animCurve = null;

		public static AnimationCurve sizeCurve = null;

		private static GameObject smokeEmitter = ((Component)Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/snowyforest/SFFirepit.prefab").WaitForCompletion().transform.Find("SFFire/HeatGas")).gameObject;

		private static GameObject explosionEffect = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OmniEffect/OmniExplosionVFXCommandoGrenade");

		private static Material overlayMaterial = LegacyResourcesAPI.Load<Material>("Materials/matFlashWhite");

		public GameObject smoke;

		public TemporaryOverlay temporaryOverlay;

		public ObjectScaleCurve scale;

		public override void OnEnter()
		{
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterMain)this).OnEnter();
			if (animCurve == null)
			{
				animCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f);
				animCurve.postWrapMode = (WrapMode)4;
				animCurve.preWrapMode = (WrapMode)4;
			}
			if (sizeCurve == null)
			{
				sizeCurve = AnimationCurve.Linear(0f, 1f, 1f, 1.25f);
				sizeCurve.postWrapMode = (WrapMode)8;
				sizeCurve.preWrapMode = (WrapMode)8;
			}
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			CharacterModel val = ((modelTransform != null) ? ((Component)modelTransform).GetComponent<CharacterModel>() : null);
			if (Object.op_Implicit((Object)(object)val))
			{
				temporaryOverlay = ((EntityState)this).gameObject.AddComponent<TemporaryOverlay>();
				temporaryOverlay.duration = 0.2f;
				temporaryOverlay.alphaCurve = animCurve;
				temporaryOverlay.animateShaderAlpha = true;
				temporaryOverlay.originalMaterial = overlayMaterial;
				temporaryOverlay.AddToCharacerModel(val);
			}
			ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator();
			Transform val2 = ((modelChildLocator != null) ? modelChildLocator.FindChild("Head") : null);
			smoke = Object.Instantiate<GameObject>(smokeEmitter, val2 ?? ((EntityState)this).characterBody.coreTransform);
			MainModule main = smoke.GetComponent<ParticleSystem>().main;
			((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1;
			smoke.transform.localPosition = Vector3.zero;
			EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_Play_Bobomb_Fuse", ((EntityState)this).gameObject);
		}

		public override void FixedUpdate()
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: 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_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Expected O, but got Unknown
			((GenericCharacterMain)this).FixedUpdate();
			((EntityState)this).characterBody.isSprinting = true;
			((EntityState)this).characterBody.inputBank.moveVector = ((EntityState)this).characterDirection.forward;
			if ((float)duration - ((EntityState)this).fixedAge <= 1f && !Object.op_Implicit((Object)(object)scale))
			{
				Transform modelTransform = ((EntityState)this).GetModelTransform();
				scale = ((modelTransform != null) ? ((Component)modelTransform).gameObject.AddComponent<ObjectScaleCurve>() : null);
				if (Object.op_Implicit((Object)(object)scale))
				{
					scale.overallCurve = sizeCurve;
					scale.useOverallCurveOnly = true;
					scale.timeMax = 1f;
				}
			}
			if (((EntityState)this).fixedAge >= (float)duration && ((EntityState)this).isAuthority)
			{
				new BlastAttack
				{
					radius = 15f,
					attacker = ((EntityState)this).gameObject,
					teamIndex = ((EntityState)this).teamComponent.teamIndex,
					crit = ((BaseState)this).RollCrit(),
					baseDamage = ((BaseState)this).damageStat * 5f,
					falloffModel = (FalloffModel)0,
					procCoefficient = 1f,
					position = ((EntityState)this).characterBody.corePosition
				}.Fire();
				EffectManager.SpawnEffect(explosionEffect, new EffectData
				{
					origin = ((EntityState)this).characterBody.corePosition,
					scale = 5f
				}, true);
				((EntityState)this).outer.SetNextState((EntityState)(object)new BobombSuicideDeathState());
			}
		}

		public override void OnExit()
		{
			((GenericCharacterMain)this).OnExit();
			if (Object.op_Implicit((Object)(object)temporaryOverlay))
			{
				temporaryOverlay.RemoveFromCharacterModel();
				Object.Destroy((Object)(object)temporaryOverlay);
			}
			if (Object.op_Implicit((Object)(object)scale))
			{
				scale.Reset();
				Object.Destroy((Object)(object)scale);
			}
			Object.Destroy((Object)(object)smoke);
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			return (InterruptPriority)1;
		}
	}
	public class BobombSpawnState : GenericCharacterSpawnState
	{
		public static GameObject spawnEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2SmokeBomb.prefab").WaitForCompletion();

		public override void OnEnter()
		{
			((GenericCharacterSpawnState)this).OnEnter();
			if (Object.op_Implicit((Object)(object)spawnEffect))
			{
				EffectManager.SimpleMuzzleFlash(spawnEffect, ((EntityState)this).gameObject, "Chest", true);
			}
		}
	}
	public class BobombSuicideDeathState : GenericCharacterDeath
	{
		public override void OnEnter()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterDeath)this).OnEnter();
			EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_Stop_Bobomb_Fuse", ((EntityState)this).gameObject);
			if (NetworkServer.active)
			{
				((EntityState)this).healthComponent.Suicide((GameObject)null, (GameObject)null, (DamageType)0);
			}
			((GenericCharacterDeath)this).DestroyModel();
			if (NetworkServer.active)
			{
				((GenericCharacterDeath)this).DestroyBodyAsapServer();
			}
		}
	}
	public class StarManState : GenericCharacterMain
	{
		public int duration = 20;

		public static AnimationCurve animCurve;

		public TemporaryOverlay temporaryOverlay;

		private readonly List<HealthComponent> ignoredHealthComponentList = new List<HealthComponent>();

		public override void OnEnter()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterMain)this).OnEnter();
			if (NetworkServer.active)
			{
				((EntityState)this).characterBody.AddTimedBuff(Buffs.Immune, (float)duration);
				EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_Play_StarmanComes", ((EntityState)this).gameObject);
			}
			if (animCurve == null)
			{
				animCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f);
				animCurve.postWrapMode = (WrapMode)4;
				animCurve.preWrapMode = (WrapMode)4;
			}
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			CharacterModel val = ((modelTransform != null) ? ((Component)modelTransform).GetComponent<CharacterModel>() : null);
			if (Object.op_Implicit((Object)(object)val))
			{
				temporaryOverlay = ((EntityState)this).gameObject.AddComponent<TemporaryOverlay>();
				temporaryOverlay.duration = 0.2f;
				temporaryOverlay.alphaCurve = animCurve;
				temporaryOverlay.animateShaderAlpha = true;
				temporaryOverlay.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matFlashWhite");
				temporaryOverlay.AddToCharacerModel(val);
			}
		}

		public override void FixedUpdate()
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterMain)this).FixedUpdate();
			if (!((EntityState)this).isAuthority)
			{
				Collider[] array = Physics.OverlapBox(((EntityState)this).transform.position, ((EntityState)this).transform.lossyScale * 0.5f, ((EntityState)this).transform.rotation, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
				for (int i = 0; i < array.Length; i++)
				{
					HurtBox component = ((Component)array[i]).GetComponent<HurtBox>();
					if (!Object.op_Implicit((Object)(object)component) || !HurtBoxPassesFilter(component))
					{
						continue;
					}
					ignoredHealthComponentList.Add(component.healthComponent);
					EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_StarmanKills", ((EntityState)this).gameObject);
					if (NetworkServer.active)
					{
						component.healthComponent.Suicide((GameObject)null, (GameObject)null, (DamageType)0);
						continue;
					}
					HealthComponent healthComponent = component.healthComponent;
					NetworkInstanceId? obj;
					if (healthComponent == null)
					{
						obj = null;
					}
					else
					{
						CharacterBody body = healthComponent.body;
						if (body == null)
						{
							obj = null;
						}
						else
						{
							NetworkIdentity networkIdentity = body.networkIdentity;
							obj = ((networkIdentity != null) ? new NetworkInstanceId?(networkIdentity.netId) : null);
						}
					}
					NetworkInstanceId? val = obj;
					CmdKill(val.GetValueOrDefault());
				}
			}
			if (((EntityState)this).fixedAge > (float)duration * 0.75f)
			{
				temporaryOverlay.duration = 0.4f;
				EntitySoundManager.EmitSoundServer((AkEventIdArg)"SM64_BBF_Stop_StarmanComes", ((EntityState)this).gameObject);
			}
			if (((EntityState)this).fixedAge > (float)duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		[Command]
		public void CmdKill(NetworkInstanceId netId)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			if (!(netId == default(NetworkInstanceId)))
			{
				GameObject val = Util.FindNetworkObject(netId);
				CharacterBody val2 = default(CharacterBody);
				if (Object.op_Implicit((Object)(object)val) && val.TryGetComponent<CharacterBody>(ref val2))
				{
					val2.healthComponent.Suicide((GameObject)null, (GameObject)null, (DamageType)0);
				}
			}
		}

		private bool HurtBoxPassesFilter(HurtBox hurtBox)
		{
			if (!Ob