Decompiled source of BobombBattlefield v1.3.1

plugins/viliger-SM64BBF/SM64BBF.dll

Decompiled 2 weeks 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;
using RoR2.Achievements.Artifacts;
using RoR2.AddressableAssets;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPathsBetter;
using SM64BBF.Content;
using SM64BBF.Items;
using SM64BBF.PickUpDefs;
using SM64BBF.States;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.ResourceManagement.AsyncOperations;

[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SM64BBF")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[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 ConfigEntry<bool> StarmanKillsAllies;

		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.");
			StarmanKillsAllies = config.Bind<bool>("Starman", "Starman Kills Allies", true, "Mario Royale Flashbacks.");
			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.");
		}
	}
	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);
		}
	}
	[CreateAssetMenu(menuName = "SM64BBF/ModdedSkinDefParams")]
	public class ModdedSkinDefParams : ScriptableObject
	{
		[Serializable]
		public struct RenderInfo
		{
			public string rendererName;

			public Material material;

			public ShadowCastingMode defaultShadowCastingMode;

			public bool ignoreOverlays;

			public bool hideOnDeath;

			public bool ignoresMaterialOverrides;
		}

		[Serializable]
		public struct MeshReplacement
		{
			public string rendererName;

			public Mesh mesh;
		}

		[Serializable]
		public struct GameObjectActivation
		{
			public bool spawnPrefabOnModel;

			[Tooltip("This is path to the game object that will be a parent to instantiated prefab. It should be a path from the modelTransform.")]
			public string parentGameObject;

			public bool shouldActivate;

			public AssetReferenceGameObject prefabAddress;

			public GameObject prefab;

			public Vector3 localPosition;

			public Vector3 localRotation;

			public Vector3 localScale;
		}

		[Tooltip("true - uses catalog and catalog names to find bodies instead of loading assets via Addressables")]
		public bool useCatalog;

		public AssetReferenceT<SkinDef> baseSkin;

		public AssetReferenceT<GameObject> bodyPrefab;

		public string bodyPrefabNameCatalog;

		public string baseSkinCatalog;

		public string nameToken;

		public Sprite icon;

		public UnlockableDef unlockable;

		public RenderInfo[] renderInfos = Array.Empty<RenderInfo>();

		public MeshReplacement[] meshReplacements = Array.Empty<MeshReplacement>();

		public GameObjectActivation[] gameObjectActivations = Array.Empty<GameObjectActivation>();

		public SkinDef CreateSkinDef()
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			if (useCatalog)
			{
				Log.Warning($"Can't build a skin via CreateSkinDef when useCatalog is true. Skipping {this}...");
				return null;
			}
			if (!((AssetReference)bodyPrefab).RuntimeKeyIsValid())
			{
				Log.Warning($"BodyPrefab for {this} is not valid!");
				return null;
			}
			if (!((AssetReference)baseSkin).RuntimeKeyIsValid())
			{
				Log.Warning($"BaseSkin for {this} is not valid!");
				return null;
			}
			GameObject val = AssetAsyncReferenceManager<GameObject>.LoadAsset(bodyPrefab, (AsyncReferenceHandleUnloadType)2).WaitForCompletion();
			SkinDef baseSkinDef = AssetAsyncReferenceManager<SkinDef>.LoadAsset(baseSkin, (AsyncReferenceHandleUnloadType)2).WaitForCompletion();
			ModelLocator component = val.GetComponent<ModelLocator>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				Log.Warning($"Game object {val} doesn't have ModelLocator!");
				return null;
			}
			GameObject gameObject = ((Component)component.modelTransform).gameObject;
			if (!Object.op_Implicit((Object)(object)gameObject))
			{
				Log.Warning($"Game object {val}'s ModelLocator doesn't have modelTransform!");
				return null;
			}
			if (!Object.op_Implicit((Object)(object)gameObject.GetComponent<ModelSkinController>()))
			{
				Log.Warning($"Game object {val} doesn't have ModelSkinController!");
				return null;
			}
			return CreateSkinDef(gameObject, baseSkinDef);
		}

		public SkinDef CreateSkinDef(GameObject bodyObject)
		{
			if (!useCatalog)
			{
				Log.Warning($"Why are you using method for catalog bodies for def without catalog flag. Skipping {this}...");
				return null;
			}
			ModelLocator component = bodyObject.GetComponent<ModelLocator>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				Log.Warning($"Game object {bodyObject} doesn't have ModelLocator!");
				return null;
			}
			GameObject gameObject = ((Component)component.modelTransform).gameObject;
			if (!Object.op_Implicit((Object)(object)gameObject))
			{
				Log.Warning($"Game object {bodyObject}'s ModelLocator doesn't have modelTransform!");
				return null;
			}
			ModelSkinController component2 = gameObject.GetComponent<ModelSkinController>();
			if (!Object.op_Implicit((Object)(object)component2))
			{
				Log.Warning($"Game object {bodyObject} doesn't have ModelSkinController!");
				return null;
			}
			SkinDef val = ((IEnumerable<SkinDef>)component2.skins).FirstOrDefault((Func<SkinDef, bool>)((SkinDef skin) => ((Object)skin).name == baseSkinCatalog));
			if ((Object)(object)val == (Object)null)
			{
				Log.Warning($"Game object {bodyObject} doesn't have skin with name {baseSkinCatalog}!");
				return null;
			}
			return CreateSkinDef(gameObject, val);
		}

		public SkinDef CreateSkinDef(GameObject modelGameObject, SkinDef baseSkinDef)
		{
			Renderer[] modelRenderers = modelGameObject.GetComponentsInChildren<Renderer>();
			SkinDef val = ScriptableObject.CreateInstance<SkinDef>();
			((Object)val).name = ((Object)this).name;
			val.icon = icon;
			val.nameToken = nameToken;
			val.rootObject = modelGameObject;
			val.skinDefParamsAddress = new AssetReferenceT<SkinDefParams>("");
			val.baseSkins = (SkinDef[])(object)new SkinDef[1] { baseSkinDef };
			val.unlockableDef = unlockable;
			SkinDefParams val2 = ScriptableObject.CreateInstance<SkinDefParams>();
			((Object)val2).name = ((Object)this).name + "Params";
			val2.rendererInfos = Array.ConvertAll(renderInfos, (Converter<RenderInfo, RendererInfo>)((RenderInfo item) => new RendererInfo
			{
				renderer = ((IEnumerable<Renderer>)modelRenderers).FirstOrDefault((Func<Renderer, bool>)((Renderer renderer) => ((Object)renderer).name == item.rendererName)),
				defaultMaterialAddress = new AssetReferenceT<Material>(""),
				defaultMaterial = item.material,
				defaultShadowCastingMode = item.defaultShadowCastingMode,
				ignoreOverlays = item.ignoreOverlays,
				hideOnDeath = item.hideOnDeath,
				ignoresMaterialOverrides = item.ignoresMaterialOverrides
			}));
			val2.meshReplacements = Array.ConvertAll(meshReplacements, (Converter<MeshReplacement, MeshReplacement>)((MeshReplacement item) => new MeshReplacement
			{
				renderer = ((IEnumerable<Renderer>)modelRenderers).FirstOrDefault((Func<Renderer, bool>)((Renderer renderer) => ((Object)renderer).name == item.rendererName)),
				mesh = item.mesh,
				meshAddress = new AssetReferenceT<Mesh>("")
			}));
			val2.gameObjectActivations = Array.ConvertAll(gameObjectActivations, (Converter<GameObjectActivation, GameObjectActivation>)((GameObjectActivation item) => new GameObjectActivation
			{
				spawnPrefabOnModelObject = item.spawnPrefabOnModel,
				shouldActivate = item.shouldActivate,
				prefabAddress = item.prefabAddress,
				prefab = item.prefab,
				localPosition = item.localPosition,
				localRotation = item.localRotation,
				localScale = item.localScale,
				gameObject = ((Component)modelGameObject.transform.Find(item.parentGameObject)).gameObject
			}));
			val.skinDefParams = val2;
			return val;
		}
	}
	public static class RegigigasCompat
	{
		private static bool? _enabled;

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

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void SetupKingBobombBody(GameObject characterBody)
		{
			//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 RegisterMissingEntityStates(ContentPack contentPack)
		{
			contentPack.entityStateTypes.Add(new Type[1] { typeof(BounceStart) });
			contentPack.entityStateTypes.Add(new Type[1] { typeof(Bounce) });
		}

		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 unsafe 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*)(&activationState))/*cast due to .constrained prefix*/).ToString() + "doesn't exist.");
			}
		}

		public static void CreateRegigigasSkin()
		{
			if (!Object.op_Implicit((Object)(object)SM64BBFContent.skinRegigigasKingBobomb))
			{
				return;
			}
			SurvivorDef val = ((IEnumerable<SurvivorDef>)ContentManager._survivorDefs).FirstOrDefault((Func<SurvivorDef, bool>)((SurvivorDef survivorDef) => Object.op_Implicit((Object)(object)survivorDef.bodyPrefab) && ((Object)survivorDef.bodyPrefab).name == SM64BBFContent.skinRegigigasKingBobomb.bodyPrefabNameCatalog));
			if (Object.op_Implicit((Object)(object)val))
			{
				ModelSkinController componentInChildren = val.bodyPrefab.GetComponentInChildren<ModelSkinController>();
				if (!Object.op_Implicit((Object)(object)componentInChildren))
				{
					Log.Warning($"Survivor {val} somehow doesn't have ModelSkinController on its bodyPrefab. Doing nothing...");
					return;
				}
				SkinDef val2 = SM64BBFContent.skinRegigigasKingBobomb.CreateSkinDef(val.bodyPrefab);
				ArrayUtils.ArrayAppend<SkinDef>(ref componentInChildren.skins, ref val2);
			}
		}
	}
	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;

		internal static ModdedSkinDefParams skinRegigigasKingBobomb;

		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 val3 in array)
					{
						if (((Object)val3.shader).name.StartsWith("Stubbed"))
						{
							Shader val4 = Addressables.LoadAssetAsync<Shader>((object)ShaderLookup[((Object)val3.shader).name.ToLower()]).WaitForCompletion();
							((Object)val3.shader).name.ToLower();
							if (Object.op_Implicit((Object)(object)val4))
							{
								val3.shader = val4;
								SwappedMaterials.Add(val3);
							}
							else
							{
								Log.Warning("Couldn't find replacement shader for " + ((Object)val3.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_026c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0272: 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.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"));
					RegigigasCompat.RegisterMissingEntityStates(contentPack);
				}
			});
			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);
			});
			yield return LoadAllAssetsAsync<ModdedSkinDefParams>(_assetsAssetBundle, progress, (Action<ModdedSkinDefParams[]>)delegate(ModdedSkinDefParams[] assets)
			{
				if (RegigigasCompat.enabled)
				{
					skinRegigigasKingBobomb = assets.First((ModdedSkinDefParams asset) => ((Object)asset).name == "sdRegigigasKingBobomb");
				}
			});
			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.previewTextureReference = new AssetReferenceTexture("");
			SM64BBFScene.portalMaterial = val;
			SM64BBFScene.portalMaterialReference = new AssetReferenceT<Material>("");
			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();
		}

		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 = new CustomState
			{
				GroupId = 3906687288u,
				StateId = 693170834u
			};
			val.CustomStates.Add(item);
			CustomState item2 = new CustomState
			{
				GroupId = 792781730u,
				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 = new CustomState
			{
				GroupId = 3906687288u,
				StateId = 1312500510u
			};
			val2.CustomStates.Add(item3);
			CustomState item4 = new CustomState
			{
				GroupId = 792781730u,
				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)
		{
			NetworkSoundEventDef obj = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
			obj.eventName = eventName;
			return obj;
		}

		internal static void LoadSoundBanks(string soundbanksFolderPath)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Invalid comparison between Unknown and I4
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Invalid comparison between Unknown and I4
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Invalid comparison between Unknown and I4
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			AKRESULT val = AkSoundEngine.AddBasePath(soundbanksFolderPath);
			if ((int)val == 1)
			{
				Log.Info("Added bank base path : " + soundbanksFolderPath);
			}
			else
			{
				Log.Error("Error adding base path : " + soundbanksFolderPath + " " + $"Error code : {val}");
			}
			uint num = default(uint);
			val = AkSoundEngine.LoadBank("SM64BBFInit.bnk", ref num);
			if ((int)val == 1)
			{
				Log.Info("Added bank : SM64BBFInit.bnk");
			}
			else
			{
				Log.Error("Error loading bank : SM64BBFInit.bnk " + $"Error code : {val}");
			}
			val = AkSoundEngine.LoadBan