Decompiled source of BobombBattlefield v1.2.0

plugins/viliger-SM64BBF/SM64BBF.dll

Decompiled a day 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.Configuration;
using BepInEx.Logging;
using EntityStates;
using HG;
using HG.Reflection;
using IL.RoR2;
using JetBrains.Annotations;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using R2API;
using R2API.ScriptableObjects;
using RegigigasMod.Modules.Components;
using RegigigasMod.SkillStates.Regigigas;
using RoR2;
using RoR2.Achievements.Artifacts;
using RoR2.AddressableAssets;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPaths.Version_1_35_0;
using RoR2BepInExPack.GameAssetPaths.Version_1_39_0;
using RoR2BepInExPack.GameAssetPathsBetter;
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.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyCompany("SM64BBF")]
[assembly: AssemblyProduct("SM64BBF")]
[assembly: AssemblyTitle("SM64BBF")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyConfiguration("Release")]
[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
{
	public static class Config
	{
		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct BobombSpawning
		{
			public static ConfigEntry<int> SelectionWeight;

			public static ConfigEntry<int> MinimumStageCount;

			public static ConfigEntry<string> BobombSpawnStages;
		}

		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct TreeInteractable
		{
			public static ConfigEntry<float> CoinWeight;

			public static ConfigEntry<float> OneUpWeight;

			public static ConfigEntry<float> StarmanWeight;

			public static ConfigEntry<float> NothingWeight;
		}

		public static void PopulateConfig(ConfigFile config)
		{
			BobombSpawning.SelectionWeight = config.Bind<int>("Bobomb Spawn", "Bobomb Card Selection Weight", 6, "Selection weight for Bobomb Director Card. Does not affect spawning on Bobomb Battlefield, only for other stages.");
			BobombSpawning.MinimumStageCount = config.Bind<int>("Bobomb Spawn", "Bobomb Card Minimal Stage Count", 0, "How many stages players must clear before Bobombs start spawning. Does not affect spawning on Bobomb Battlefield, only for other stages.");
			BobombSpawning.BobombSpawnStages = config.Bind<string>("Bobomb Spawn", "Stages to Spawn In", "", "Additional stages (beyond bobomb battlefield) that Bobombs can spawn in. Stages should be separated by coma, internal names can be found in game via \"list_scenes\" command.");
			TreeInteractable.CoinWeight = config.Bind<float>("Tree Interactable", "Coin Weight", 40f, "Weight to spawn Coin when shaking the tree. Higher the value - higher the chance.");
			TreeInteractable.OneUpWeight = config.Bind<float>("Tree Interactable", "One Up Weight", 5f, "Weight to spawn 1UP when shaking the tree. Higher the value - higher the chance.");
			TreeInteractable.StarmanWeight = config.Bind<float>("Tree Interactable", "Starman Weight", 5f, "Weight to spawn Starman when shaking the tree. Higher the value - higher the chance.");
			TreeInteractable.NothingWeight = config.Bind<float>("Tree Interactable", "Nothing Weight", 50f, "Weight to get nothing when shaking the tree. Higher the value - higher the chance.");
		}
	}
	public class InstantiateArtifactFormulaDisplay : MonoBehaviour
	{
		public enum Codes
		{
			Circle,
			Diamond,
			Square,
			Triangle
		}

		public Transform position;

		public Codes[] code;

		private void Awake()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			if (code.Length != 9)
			{
				Log.Warning("Slab's code length is not equal to 9, doing nothing...");
				return;
			}
			ArtifactFormulaDisplay component = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_artifactworld.ArtifactFormulaDisplay_prefab).WaitForCompletion(), position.position, position.rotation).GetComponent<ArtifactFormulaDisplay>();
			for (int i = 0; i < code.Length; i++)
			{
				component.artifactCompoundDisplayInfos[i].artifactCompoundDef = GetACD(code[i]);
			}
			ArtifactCompoundDisplayInfo[] artifactCompoundDisplayInfos = component.artifactCompoundDisplayInfos;
			foreach (ArtifactCompoundDisplayInfo val in artifactCompoundDisplayInfos)
			{
				val.decal.Material = val.artifactCompoundDef.decalMaterial;
			}
			static ArtifactCompoundDef GetACD(Codes code)
			{
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_0043: Unknown result type (might be due to invalid IL or missing references)
				//IL_0048: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				return (ArtifactCompoundDef)(code switch
				{
					Codes.Circle => Addressables.LoadAssetAsync<ArtifactCompoundDef>((object)RoR2_Base_ArtifactCompounds.acdCircle_asset).WaitForCompletion(), 
					Codes.Diamond => Addressables.LoadAssetAsync<ArtifactCompoundDef>((object)RoR2_Base_ArtifactCompounds.acdDiamond_asset).WaitForCompletion(), 
					Codes.Square => Addressables.LoadAssetAsync<ArtifactCompoundDef>((object)RoR2_Base_ArtifactCompounds.acdSquare_asset).WaitForCompletion(), 
					Codes.Triangle => Addressables.LoadAssetAsync<ArtifactCompoundDef>((object)RoR2_Base_ArtifactCompounds.acdTriangle_asset).WaitForCompletion(), 
					_ => Addressables.LoadAssetAsync<ArtifactCompoundDef>((object)RoR2_Base_ArtifactCompounds.acdEmpty_asset).WaitForCompletion(), 
				});
			}
		}

		public void OnDrawGizmos()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: 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_0050: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)position))
			{
				Gizmos.color = Color.yellow;
				Gizmos.DrawWireMesh(Resources.GetBuiltinResource<Mesh>("Cube.fbx"), position.position, position.rotation, new Vector3(4.0284877f, 6.4461765f, 1.6496983f));
				GUI.color = Color.yellow;
			}
		}

		private void OnValidate()
		{
		}
	}
	public class InstantiateArtifactPortal : NetworkBehaviour
	{
		public Transform[] artifactButtons;

		public Transform portalLocation;

		public Transform laptopLocation;

		private GameObject laptopInstance;

		private static GameObject laptopPrefab;

		private static Dictionary<int, int> buttonsPositions = new Dictionary<int, int>
		{
			{ 0, 6 },
			{ 1, 3 },
			{ 2, 0 },
			{ 3, 7 },
			{ 4, 5 },
			{ 5, 1 },
			{ 6, 8 },
			{ 7, 4 },
			{ 8, 2 }
		};

		private const uint NET_ID_DIRTY_BIT = 1u;

		private void Awake()
		{
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: 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)
			if (!NetworkServer.active)
			{
				return;
			}
			if (artifactButtons.Length != 9)
			{
				Log.Warning("There are more or less than 9 artifact buttons. Doing nothing...");
			}
			else if (Object.op_Implicit((Object)(object)laptopPrefab) && Object.op_Implicit((Object)(object)portalLocation) && Object.op_Implicit((Object)(object)laptopLocation))
			{
				laptopInstance = Object.Instantiate<GameObject>(laptopPrefab, laptopLocation.position, laptopLocation.rotation);
				PortalDialerController component = laptopInstance.GetComponent<PortalDialerController>();
				component.buttons = (PortalDialerButtonController[])(object)new PortalDialerButtonController[9];
				component.dialingOrder = (PortalDialerButtonController[])(object)new PortalDialerButtonController[9];
				component.portalSpawnLocation = portalLocation;
				NetworkServer.Spawn(laptopInstance);
				GameObject val = Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_skymeadow.PortalDialerButton_prefab).WaitForCompletion();
				for (int i = 0; i < artifactButtons.Length; i++)
				{
					GameObject obj = Object.Instantiate<GameObject>(val, artifactButtons[i].position, artifactButtons[i].rotation);
					PortalDialerButtonController component2 = obj.GetComponent<PortalDialerButtonController>();
					component.buttons[buttonsPositions[i]] = component2;
					component.dialingOrder[i] = component2;
					NetworkServer.Spawn(obj);
				}
				((NetworkBehaviour)this).SetDirtyBit(1u);
			}
		}

		public override bool OnSerialize(NetworkWriter writer, bool initialState)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			uint num = ((NetworkBehaviour)this).syncVarDirtyBits;
			if (initialState)
			{
				num = 1u;
			}
			if (Object.op_Implicit((Object)(object)laptopInstance))
			{
				writer.WritePackedUInt32(num);
				if ((num & (true ? 1u : 0u)) != 0)
				{
					writer.Write(laptopInstance.GetComponent<NetworkIdentity>().netId);
				}
			}
			return num != 0;
		}

		public override void OnDeserialize(NetworkReader reader, bool initialState)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			if ((reader.ReadPackedUInt32() & 1) == 0)
			{
				return;
			}
			GameObject val = Util.FindNetworkObject(reader.ReadNetworkId());
			if (Object.op_Implicit((Object)(object)val))
			{
				PortalDialerController component = val.GetComponent<PortalDialerController>();
				if (Object.op_Implicit((Object)(object)component))
				{
					component.portalSpawnLocation = portalLocation;
				}
			}
		}

		public void OnDrawGizmos()
		{
			//IL_0018: 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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: 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_00e0: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)laptopLocation))
			{
				Vector3 val = default(Vector3);
				((Vector3)(ref val))..ctor(laptopLocation.position.x, laptopLocation.position.y + 0.4f, laptopLocation.position.z);
				Gizmos.color = Color.gray;
				Gizmos.DrawWireMesh(Resources.GetBuiltinResource<Mesh>("Cube.fbx"), val, laptopLocation.rotation, new Vector3(5.1596975f, 1.8985313f, 1.9524249f));
				GUI.color = Color.gray;
			}
			Transform[] array = artifactButtons;
			foreach (Transform val2 in array)
			{
				if (Object.op_Implicit((Object)(object)val2))
				{
					Gizmos.color = Color.red;
					Gizmos.DrawWireMesh(Resources.GetBuiltinResource<Mesh>("Cylinder.fbx"), val2.position, val2.rotation, new Vector3(1.5128947f, 0.5232223f, 1.5475767f));
					GUI.color = Color.red;
				}
			}
		}

		private void OnValidate()
		{
		}

		public static void CreateAndRegisterLaptop(ContentPack contentPack)
		{
			//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)
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_skymeadow.PortalDialerEvent_prefab).WaitForCompletion();
			Transform val2 = val.transform.Find("Final Zone/ButtonContainer/PortalDialer");
			if (!Object.op_Implicit((Object)(object)val2))
			{
				Log.Warning($"Couldn't find PortalDialer in {val}. Not registering laptop to NetworkedObjects catalog...");
				return;
			}
			laptopPrefab = PrefabAPI.InstantiateClone(((Component)val2).gameObject, "BBF_ArtifactLaptop", true);
			Object.DestroyImmediate((Object)(object)((Component)laptopPrefab.transform.Find("spmSMGrassSmallCluster (3)")).gameObject);
			Object.DestroyImmediate((Object)(object)((Component)laptopPrefab.transform.Find("spmSMGrassSmallCluster (4)")).gameObject);
			Object.DestroyImmediate((Object)(object)((Component)laptopPrefab.transform.Find("SM_PowerLine")).gameObject);
			contentPack.networkedObjectPrefabs.Add((GameObject[])(object)new GameObject[1] { laptopPrefab });
		}

		private void UNetVersion()
		{
		}
	}
	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;
			}
		}

		public static void AddKingBobombSkin()
		{
		}

		private static SkinDef CreateSkinDef(GameObject modelTransform, SkinDef baseSkin)
		{
			return ScriptableObject.CreateInstance<SkinDef>();
		}

		[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;

			public static ItemDef RoyalCrown;
		}

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

		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct CharacterSpawnCards
		{
			public static CharacterSpawnCard cscBobomb;

			public static CharacterSpawnCard cscKingBobomb;
		}

		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;

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

		public static GameObject BobombMaster;

		public static ArtifactDef BobombOnDeath;

		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 val8 in array)
					{
						if (((Object)val8.shader).name.StartsWith("Stubbed"))
						{
							Shader val9 = Addressables.LoadAssetAsync<Shader>((object)ShaderLookup[((Object)val8.shader).name.ToLower()]).WaitForCompletion();
							((Object)val8.shader).name.ToLower();
							if (Object.op_Implicit((Object)(object)val9))
							{
								val8.shader = val9;
								SwappedMaterials.Add(val8);
							}
							else
							{
								Log.Warning("Couldn't find replacement shader for " + ((Object)val8.shader).name.ToLower());
							}
						}
					}
				}
			});
			yield return LoadAllAssetsAsync<UnlockableDef>(_assetsAssetBundle, progress, (Action<UnlockableDef[]>)delegate(UnlockableDef[] assets)
			{
				contentPack.unlockableDefs.Add(assets);
			});
			yield return LoadAllAssetsAsync<CharacterSpawnCard>(_assetsAssetBundle, progress, (Action<CharacterSpawnCard[]>)delegate(CharacterSpawnCard[] assets)
			{
				CharacterSpawnCards.cscBobomb = assets.First((CharacterSpawnCard csc) => ((Object)csc).name == "cscBobomb");
				RegisterBobombToStages();
				if (RegigigasCompat.enabled)
				{
					CharacterSpawnCards.cscKingBobomb = assets.First((CharacterSpawnCard csc) => ((Object)csc).name == "cscKingBobomb2");
				}
			});
			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
			{
			});
			yield return LoadAllAssetsAsync<ItemDef>(_assetsAssetBundle, progress, (Action<ItemDef[]>)delegate(ItemDef[] assets)
			{
				Items.MarioOneUp = assets.First((ItemDef id) => ((Object)id).name == "OneUp");
				Items.RoyalCrown = assets.First((ItemDef item) => ((Object)item).name == "RoyalCrown");
				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_006d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0272: Unknown result type (might be due to invalid IL or missing references)
				//IL_0278: Expected O, but got Unknown
				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();
					val4.GetComponent<CameraTargetParams>().cameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Common/ccpStandardHuge.asset").WaitForCompletion();
					RegigigasCompat.SetupKingBobombBody(val4, contentPack);
					contentPack.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { val4 });
				}
				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 });
				BobombMaster = assets.First((GameObject bp) => ((Object)bp).name == "BobombMaster");
				contentPack.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { BobombMaster });
				if (RegigigasCompat.enabled)
				{
					GameObject val7 = assets.First((GameObject bp) => ((Object)bp).name == "KingBobomb2Master");
					contentPack.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { val7 });
				}
				StarManState.starmanKillsEffect = assets.First((GameObject asset) => ((Object)asset).name == "KIlledByStarmanEffect");
				contentPack.effectDefs.Add((EffectDef[])(object)new EffectDef[1]
				{
					new EffectDef(StarManState.starmanKillsEffect)
				});
			});
			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 });
			});
			ArtifactCode bobombArtifactCode = null;
			yield return LoadAllAssetsAsync<ArtifactCode>(_assetsAssetBundle, progress, (Action<ArtifactCode[]>)delegate(ArtifactCode[] assets)
			{
				bobombArtifactCode = assets.First((ArtifactCode code) => ((Object)code).name == "BobombOnDeathCode");
			});
			yield return LoadAllAssetsAsync<ArtifactDef>(_assetsAssetBundle, progress, (Action<ArtifactDef[]>)delegate(ArtifactDef[] assets)
			{
				BobombOnDeath = assets.First((ArtifactDef ad) => ad.cachedName == "BBF_BobombsOnDeath");
				ArtifactCodeAPI.AddCode(BobombOnDeath, bobombArtifactCode);
				contentPack.artifactDefs.Add(assets);
			});
			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;
			Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/bazaar/matBazaarSeerWispgraveyard.mat").WaitForCompletion());
			val.mainTexture = (Texture)(object)SM64BBFPreviewSprite.texture;
			SM64BBFScene.previewTexture = (Texture)(object)SM64BBFPreviewSprite.texture;
			SM64BBFScene.portalMaterial = val;
			SetupMusic();
			ref SceneEntry[] sceneEntries = ref Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage5.asset").WaitForCompletion()._sceneEntries;
			SceneEntry val2 = new SceneEntry
			{
				sceneDef = SM64BBFScene
			};
			((SceneEntry)(ref val2)).weight = 1f;
			ArrayUtils.ArrayAppend<SceneEntry>(ref sceneEntries, ref val2);
			SM64BBFScene.destinationsGroup = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage1.asset").WaitForCompletion();
			ref SceneEntry[] sceneEntries2 = ref Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/loopSgStage5.asset").WaitForCompletion()._sceneEntries;
			val2 = new SceneEntry
			{
				sceneDef = SM64BBFScene
			};
			((SceneEntry)(ref val2)).weight = 1f;
			ArrayUtils.ArrayAppend<SceneEntry>(ref sceneEntries2, ref val2);
			SM64BBFScene.loopedDestinationsGroup = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/loopSgStage1.asset").WaitForCompletion();
			InstantiateArtifactPortal.CreateAndRegisterLaptop(contentPack);
		}

		private static void SetupBobombItemDisplays(ref ItemDisplayRuleSet itemDisplayRuleSet)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Expected O, but got Unknown
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Expected O, but got Unknown
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Expected O, but got Unknown
			//IL_021d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Expected O, but got Unknown
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c3: 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_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Expected O, but got Unknown
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: 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_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Expected O, but got Unknown
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_032e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: 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_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Unknown result type (might be due to invalid IL or missing references)
			//IL_039b: Expected O, but got Unknown
			//IL_03b8: 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_03d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0418: 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_0425: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Expected O, but got Unknown
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0457: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Expected O, but got Unknown
			//IL_047e: 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_0499: Unknown result type (might be due to invalid IL or missing references)
			//IL_049e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f0: Expected O, but got Unknown
			//IL_050d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0512: Unknown result type (might be due to invalid IL or missing references)
			//IL_0528: Unknown result type (might be due to invalid IL or missing references)
			//IL_052d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0543: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Unknown result type (might be due to invalid IL or missing references)
			//IL_0550: Unknown result type (might be due to invalid IL or missing references)
			//IL_0555: Unknown result type (might be due to invalid IL or missing references)
			//IL_0565: Unknown result type (might be due to invalid IL or missing references)
			//IL_056d: 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_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Expected O, but got Unknown
			//IL_058e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: 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_05b7: Expected O, but got Unknown
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: 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_060a: Unknown result type (might be due to invalid IL or missing references)
			//IL_060f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0617: Unknown result type (might be due to invalid IL or missing references)
			//IL_061c: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0634: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Expected O, but got Unknown
			//IL_0655: Unknown result type (might be due to invalid IL or missing references)
			//IL_065f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0668: 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_067e: Expected O, but got Unknown
			//IL_069b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a0: 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_06bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06de: 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_06f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0709: Unknown result type (might be due to invalid IL or missing references)
			//IL_0713: Expected O, but got Unknown
			//IL_071c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0726: Unknown result type (might be due to invalid IL or missing references)
			//IL_072f: Unknown result type (might be due to invalid IL or missing references)
			//IL_073b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0745: Expected O, but got Unknown
			//IL_0762: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0782: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07be: 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_07d4: Expected O, but got Unknown
			//IL_07f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_080c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0811: Unknown result type (might be due to invalid IL or missing references)
			//IL_0827: 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_0834: Unknown result type (might be due to invalid IL or missing references)
			//IL_0839: Unknown result type (might be due to invalid IL or missing references)
			//IL_0849: 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_0853: Unknown result type (might be due to invalid IL or missing references)
			//IL_085f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0869: Expected O, but got Unknown
			//IL_0872: Unknown result type (might be due to invalid IL or missing references)
			//IL_087c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0885: Unknown result type (might be due to invalid IL or missing references)
			//IL_0891: Unknown result type (might be due to invalid IL or missing references)
			//IL_089b: Expected O, but got Unknown
			//IL_08b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f3: 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)
			//IL_0910: Unknown result type (might be due to invalid IL or missing references)
			//IL_0918: Unknown result type (might be due to invalid IL or missing references)
			//IL_091a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Expected O, but got Unknown
			//IL_0939: Unknown result type (might be due to invalid IL or missing references)
			//IL_0943: 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_0958: Unknown result type (might be due to invalid IL or missing references)
			//IL_0962: Expected O, but got Unknown
			//IL_097f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0984: Unknown result type (might be due to invalid IL or missing references)
			//IL_099a: Unknown result type (might be due to invalid IL or missing references)
			//IL_099f: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09df: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f7: Expected O, but got Unknown
			DisplayRuleGroup displayRuleGroup = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteFire.DisplayEliteHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteFire.DisplayEliteHorn_prefab),
				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
			{
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteFire.EliteFireEquipment_asset),
				displayRuleGroup = displayRuleGroup
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups, ref val);
			DisplayRuleGroup displayRuleGroup2 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup2)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteHaunted.DisplayEliteStealthCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteHaunted.EliteHauntedEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups2, ref val);
			DisplayRuleGroup displayRuleGroup3 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup3)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteIce.DisplayEliteIceCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteIce.EliteIceEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups3, ref val);
			DisplayRuleGroup displayRuleGroup4 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteLightning.EliteLightningEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups4, ref val);
			DisplayRuleGroup displayRuleGroup5 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLunar.DisplayEliteLunar__Fire_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLunar.DisplayEliteLunar_Eye_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteLunar.EliteLunarEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups5, ref val);
			DisplayRuleGroup displayRuleGroup6 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup6)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_ElitePoison.DisplayEliteUrchinCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_ElitePoison.ElitePoisonEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups6, ref val);
			DisplayRuleGroup displayRuleGroup7 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup7)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC1_EliteEarth.DisplayEliteMendingAntlers_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC1_EliteEarth.EliteEarthEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups7, ref val);
			DisplayRuleGroup displayRuleGroup8 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup8)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC1_EliteVoid.DisplayAffixVoid_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC1_EliteVoid.DisplayAffixVoid_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC1_EliteVoid.EliteVoidEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups8, ref val);
			DisplayRuleGroup displayRuleGroup9 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup9)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC2_Elites_EliteBead.DisplayEliteBeadSpike_prefab),
				childName = "Head",
				localPos = new Vector3(0f, 0f, 0f),
				localAngles = new Vector3(351.8527f, 1.20328f, 359.7321f),
				localScale = new Vector3(0.10228f, 0.10228f, 0.10228f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups9 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup9,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC2_Elites_EliteBead.DisplayEliteBeadEquipment_prefab)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups9, ref val);
			DisplayRuleGroup displayRuleGroup10 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup10)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC2_Elites_EliteAurelionite.DisplayEliteAurelioniteEquipment_prefab),
				childName = "Head",
				localPos = new Vector3(-0.70343f, 0.297f, -0.0293f),
				localAngles = new Vector3(0f, 265.192f, 4f),
				localScale = new Vector3(1f, 1f, 1f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups10 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup10,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC2_Elites_EliteAurelionite.EliteAurelioniteEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups10, ref val);
		}

		private static void SetupKingBobombItemDisplays(ref ItemDisplayRuleSet itemDisplayRuleSet)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Expected O, but got Unknown
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Expected O, but got Unknown
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Expected O, but got Unknown
			//IL_021d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Expected O, but got Unknown
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c3: 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_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Expected O, but got Unknown
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: 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_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Expected O, but got Unknown
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_032e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: 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_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Unknown result type (might be due to invalid IL or missing references)
			//IL_039b: Expected O, but got Unknown
			//IL_03b8: 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_03d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_042a: Expected O, but got Unknown
			//IL_0447: 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_0462: 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_047d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_049a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04af: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b9: Expected O, but got Unknown
			//IL_04d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04db: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_050c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0511: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_0532: Unknown result type (might be due to invalid IL or missing references)
			//IL_053e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Expected O, but got Unknown
			//IL_0565: 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_0580: 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_059b: 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_05a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: 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_05cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d7: Expected O, but got Unknown
			//IL_05f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_060f: 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_062a: Unknown result type (might be due to invalid IL or missing references)
			//IL_062f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0637: Unknown result type (might be due to invalid IL or missing references)
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0654: Unknown result type (might be due to invalid IL or missing references)
			//IL_0655: Unknown result type (might be due to invalid IL or missing references)
			//IL_0661: Unknown result type (might be due to invalid IL or missing references)
			//IL_066b: Expected O, but got Unknown
			//IL_0674: 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_0687: Unknown result type (might be due to invalid IL or missing references)
			//IL_0693: Unknown result type (might be due to invalid IL or missing references)
			//IL_069d: Expected O, but got Unknown
			//IL_06ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fd: 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_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0716: Unknown result type (might be due to invalid IL or missing references)
			//IL_0722: Unknown result type (might be due to invalid IL or missing references)
			//IL_072c: Expected O, but got Unknown
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: 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_0769: Unknown result type (might be due to invalid IL or missing references)
			//IL_077f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0784: Unknown result type (might be due to invalid IL or missing references)
			//IL_078c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0791: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c1: Expected O, but got Unknown
			//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f3: Expected O, but got Unknown
			//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_0846: Unknown result type (might be due to invalid IL or missing references)
			//IL_084b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0853: Unknown result type (might be due to invalid IL or missing references)
			//IL_0858: Unknown result type (might be due to invalid IL or missing references)
			//IL_0868: Unknown result type (might be due to invalid IL or missing references)
			//IL_0870: Unknown result type (might be due to invalid IL or missing references)
			//IL_0872: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0888: Expected O, but got Unknown
			//IL_0891: Unknown result type (might be due to invalid IL or missing references)
			//IL_089b: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ba: Expected O, but got Unknown
			//IL_08d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_090d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0912: Unknown result type (might be due to invalid IL or missing references)
			//IL_091a: Unknown result type (might be due to invalid IL or missing references)
			//IL_091f: Unknown result type (might be due to invalid IL or missing references)
			//IL_092f: 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_0939: Unknown result type (might be due to invalid IL or missing references)
			//IL_0945: Unknown result type (might be due to invalid IL or missing references)
			//IL_094f: Expected O, but got Unknown
			//IL_0958: Unknown result type (might be due to invalid IL or missing references)
			//IL_0962: Unknown result type (might be due to invalid IL or missing references)
			//IL_096b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0977: Unknown result type (might be due to invalid IL or missing references)
			//IL_0981: Expected O, but got Unknown
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09be: 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_09d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a00: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a16: Expected O, but got Unknown
			//IL_0a1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a29: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a48: Expected O, but got Unknown
			//IL_0a65: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a80: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a85: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa8: 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_0abd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0add: Expected O, but got Unknown
			//IL_0ae6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b0f: Expected O, but got Unknown
			//IL_0b2c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b62: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b74: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba4: Expected O, but got Unknown
			DisplayRuleGroup displayRuleGroup = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteFire.DisplayEliteHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteFire.DisplayEliteHorn_prefab),
				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
			{
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteFire.EliteFireEquipment_asset),
				displayRuleGroup = displayRuleGroup
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups, ref val);
			DisplayRuleGroup displayRuleGroup2 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup2)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteHaunted.DisplayEliteStealthCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteHaunted.EliteHauntedEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups2, ref val);
			DisplayRuleGroup displayRuleGroup3 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup3)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteIce.DisplayEliteIceCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteIce.EliteIceEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups3, ref val);
			DisplayRuleGroup displayRuleGroup4 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup4)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLightning.DisplayEliteRhinoHorn_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteLightning.EliteLightningEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups4, ref val);
			DisplayRuleGroup displayRuleGroup5 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup5)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLunar.DisplayEliteLunar__Fire_prefab),
				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,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_EliteLunar.DisplayEliteLunar_Eye_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_EliteLunar.EliteLunarEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups5, ref val);
			DisplayRuleGroup displayRuleGroup6 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup6)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_Base_ElitePoison.DisplayEliteUrchinCrown_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_Base_ElitePoison.ElitePoisonEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups6, ref val);
			DisplayRuleGroup displayRuleGroup7 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup7)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC1_EliteEarth.DisplayEliteMendingAntlers_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC1_EliteEarth.EliteEarthEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups7, ref val);
			DisplayRuleGroup displayRuleGroup8 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup8)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC1_EliteVoid.DisplayAffixVoid_prefab),
				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,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC1_EliteVoid.EliteVoidEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups8, ref val);
			DisplayRuleGroup displayRuleGroup9 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup9)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC2_Elites_EliteBead.DisplayEliteBeadSpike_prefab),
				childName = "Chest",
				localPos = new Vector3(-0.00333f, 1.08781f, -0.20362f),
				localAngles = new Vector3(0f, 0f, 0f),
				localScale = new Vector3(0.20273f, 0.13253f, 0.20273f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups9 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup9,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC2_Elites_EliteBead.DisplayEliteBeadEquipment_prefab)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups9, ref val);
			DisplayRuleGroup displayRuleGroup10 = default(DisplayRuleGroup);
			((DisplayRuleGroup)(ref displayRuleGroup10)).AddDisplayRule(new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefabAddress = new AssetReferenceGameObject(RoR2_DLC2_Elites_EliteAurelionite.DisplayEliteAurelioniteEquipment_prefab),
				childName = "Chest",
				localPos = new Vector3(0.04781f, 1.64264f, 1.12044f),
				localAngles = new Vector3(0f, 0f, 0f),
				localScale = new Vector3(1.65698f, 1.65698f, 1.65698f),
				limbMask = (LimbFlags)0
			});
			ref KeyAssetRuleGroup[] keyAssetRuleGroups10 = ref itemDisplayRuleSet.keyAssetRuleGroups;
			val = new KeyAssetRuleGroup
			{
				displayRuleGroup = displayRuleGroup10,
				keyAssetAddress = new IDRSKeyAssetReference(RoR2_DLC2_Elites_EliteAurelionite.EliteAurelioniteEquipment_asset)
			};
			ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups10, 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 = 3906687288u;
			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 = 3906687288u;
			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[6]
			{
				RegisterNetworkSound("SM64_BBF_Play_Coin"),
				RegisterNetworkSound("SM64_BBF_Play_Star"),
				RegisterNetworkSound("SM64_BBF_solonggaybowser"),
				RegisterNetworkSound("SM64_BBF_Play_OneUp"),
				RegisterNetworkSound("SM64_BBF_Play_Shake_Tree"),
				RegisterNetworkSound("SM64_BBF_ThankYou")
			});
		}

		private static void RegisterBobombToStages()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//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_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Expected O, but got Unknown
			//IL_0049: 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_0051: Expected O, but got Unknown
			DirectorCardHolder directorCard = new DirectorCardHolder
			{
				Card = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)CharacterSpawnCards.cscBobomb,
					selectionWeight = Config.BobombSpawning.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Config.BobombSpawning.MinimumStageCount.Value
				},
				MonsterCategory = (MonsterCategory)2
			};
			AddMonsterToStages(Config.BobombSpawning.BobombSpawnStages.Value, directorCard);
		}

		public static void AddMonsterToStages(string stageList, DirectorCardHolder directorCard)
		{
			//IL_0027: 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_002f: Unknown result type (might be due to invalid IL or missing references)
			string[] array = stageList.Split(",");
			foreach (string text in array)
			{
				Stage val = DirectorAPI.ParseInternalStageName(string.Join("", text.Split((string[]?)null, StringSplitOptions.RemoveEmptyEntries)));
				Helpers.AddNewMonsterToStage(directorCard, false, val, text);
			}
		}

		public static NetworkSoundEventDef RegisterNetworkSound(string eventName)