Decompiled source of EnemiesReturns v0.4.12

plugins/Risky_Sleeps-EnemiesReturns/EnemiesReturns.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AdvancedPrediction.Prediction;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EnemiesReturns.Behaviors;
using EnemiesReturns.Components;
using EnemiesReturns.Components.BodyComponents;
using EnemiesReturns.Components.BodyComponents.CharacterMotor;
using EnemiesReturns.Components.BodyComponents.NetworkedEntityStateMachine;
using EnemiesReturns.Components.BodyComponents.Skills;
using EnemiesReturns.Components.GeneralComponents;
using EnemiesReturns.Components.MasterComponents;
using EnemiesReturns.Components.ModelComponents;
using EnemiesReturns.Components.ModelComponents.Hitboxes;
using EnemiesReturns.Components.ModelComponents.Hurtboxes;
using EnemiesReturns.Components.ModelComponents.Skins;
using EnemiesReturns.Configuration;
using EnemiesReturns.Configuration.LynxTribe;
using EnemiesReturns.EditorHelpers;
using EnemiesReturns.Enemies.Colossus;
using EnemiesReturns.Enemies.Ifrit;
using EnemiesReturns.Enemies.Ifrit.Pillar;
using EnemiesReturns.Enemies.LynxTribe;
using EnemiesReturns.Enemies.LynxTribe.Archer;
using EnemiesReturns.Enemies.LynxTribe.Hunter;
using EnemiesReturns.Enemies.LynxTribe.Scout;
using EnemiesReturns.Enemies.LynxTribe.Shaman;
using EnemiesReturns.Enemies.LynxTribe.Storm;
using EnemiesReturns.Enemies.LynxTribe.Totem;
using EnemiesReturns.Enemies.MechanicalSpider;
using EnemiesReturns.Enemies.Spitter;
using EnemiesReturns.Items.ColossalKnurl;
using EnemiesReturns.Items.LynxFetish;
using EnemiesReturns.Items.SpawnPillarOnChampionKill;
using EnemiesReturns.Junk.ModdedEntityStates.Colossus.HeadLaser;
using EnemiesReturns.Junk.ModdedEntityStates.Ifrit;
using EnemiesReturns.Junk.ModdedEntityStates.LynxTribe.Hunter;
using EnemiesReturns.Junk.ModdedEntityStates.LynxTribe.Shaman;
using EnemiesReturns.Junk.ModdedEntityStates.LynxTribe.Shaman.Teleport;
using EnemiesReturns.Junk.ModdedEntityStates.LynxTribe.Totem;
using EnemiesReturns.Junk.ModdedEntityStates.Spitter;
using EnemiesReturns.ModCompats;
using EnemiesReturns.ModdedEntityStates;
using EnemiesReturns.ModdedEntityStates.Colossus;
using EnemiesReturns.ModdedEntityStates.Colossus.Death;
using EnemiesReturns.ModdedEntityStates.Colossus.HeadLaserBarrage;
using EnemiesReturns.ModdedEntityStates.Colossus.RockClap;
using EnemiesReturns.ModdedEntityStates.Colossus.Stomp;
using EnemiesReturns.ModdedEntityStates.Ifrit;
using EnemiesReturns.ModdedEntityStates.Ifrit.FlameCharge;
using EnemiesReturns.ModdedEntityStates.Ifrit.Hellzone;
using EnemiesReturns.ModdedEntityStates.Ifrit.Pillar;
using EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Enemy;
using EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Player;
using EnemiesReturns.ModdedEntityStates.LynxTribe;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Archer;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Hunter;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Hunter.Lunge;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Scout;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Shaman;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Storm;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Totem;
using EnemiesReturns.ModdedEntityStates.LynxTribe.Totem.Burrow;
using EnemiesReturns.ModdedEntityStates.MechanicalSpider;
using EnemiesReturns.ModdedEntityStates.MechanicalSpider.Dash;
using EnemiesReturns.ModdedEntityStates.MechanicalSpider.Death;
using EnemiesReturns.ModdedEntityStates.MechanicalSpider.DoubleShot;
using EnemiesReturns.ModdedEntityStates.Spitter;
using EnemiesReturns.PrefabSetupComponents.BodyComponents;
using EnemiesReturns.PrefabSetupComponents.MasterComponents;
using EnemiesReturns.PrefabSetupComponents.ModelComponents;
using EnemiesReturns.Projectiles;
using EntityStates;
using EntityStates.AI.Walker;
using EntityStates.MeridianEvent;
using EntityStates.Missions.BrotherEncounter;
using Grumpy;
using HG;
using HG.Reflection;
using IL.RoR2;
using JetBrains.Annotations;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.MeridianEvent;
using On.EntityStates.Missions.BrotherEncounter;
using On.RoR2;
using R2API;
using R2API.Networking;
using Rewired.Utils;
using Rewired.Utils.Classes.Utility;
using Risky_Artifacts.Artifacts;
using RoR2;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.EntityLogic;
using RoR2.ExpansionManagement;
using RoR2.Hologram;
using RoR2.Mecanim;
using RoR2.Navigation;
using RoR2.Networking;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using TMPro;
using ThreeEyedGames;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.UI;

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("EnemiesReturns")]
[assembly: AssemblyTitle("EnemiesReturns")]
[assembly: AssemblyCompany("EnemiesReturns")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[Microsoft.CodeAnalysis.Embedded]
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace EnemiesReturns
{
	public class ContentProvider : IContentPackProvider
	{
		[StructLayout(LayoutKind.Sequential, Size = 1)]
		public struct MonsterCategories
		{
			public const string Champions = "Champions";

			public const string Minibosses = "Minibosses";

			public const string BasicMonsters = "Basic Monsters";

			public const string Special = "Special";
		}

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

			public static Action<Material[]> <>9__26_1;

			public static Func<Texture2D, bool> <>9__26_6;

			public static Func<Texture2D, bool> <>9__26_7;

			public static Func<Texture2D, string> <>9__26_8;

			public static Func<Texture2D, Texture2D> <>9__26_9;

			public static Func<Sprite, string> <>9__26_10;

			public static Func<Sprite, Sprite> <>9__26_11;

			public static Func<AnimationCurveDef, string> <>9__26_12;

			public static Func<GameObject, bool> <>9__27_0;

			public static Func<GameObject, bool> <>9__27_1;

			public static Func<GameObject, bool> <>9__27_2;

			public static Func<GameObject, bool> <>9__27_3;

			public static Func<GameObject, bool> <>9__27_4;

			public static Func<GameObject, bool> <>9__27_5;

			public static Func<GameObject, bool> <>9__27_6;

			public static Func<GameObject, bool> <>9__28_0;

			public static Func<GameObject, bool> <>9__29_0;

			public static Func<GameObject, bool> <>9__29_1;

			public static Func<GameObject, bool> <>9__30_0;

			public static Func<GameObject, bool> <>9__30_1;

			public static Func<GameObject, bool> <>9__31_0;

			public static Func<GameObject, bool> <>9__31_1;

			public static Func<GameObject, bool> <>9__31_2;

			public static Func<GameObject, bool> <>9__32_0;

			public static Func<GameObject, bool> <>9__32_1;

			public static Func<GameObject, bool> <>9__34_0;

			public static Func<GameObject, bool> <>9__34_1;

			public static Func<GameObject, bool> <>9__34_2;

			public static Func<GameObject, bool> <>9__35_0;

			public static Func<GameObject, bool> <>9__35_1;

			public static Func<GameObject, bool> <>9__37_0;

			public static Func<GameObject, bool> <>9__38_0;

			public static Func<GameObject, bool> <>9__38_1;

			public static Func<GameObject, bool> <>9__38_2;

			public static Func<GameObject, bool> <>9__38_3;

			public static Func<GameObject, bool> <>9__40_0;

			public static Func<GameObject, bool> <>9__40_1;

			public static Func<GameObject, bool> <>9__40_2;

			public static Func<GameObject, bool> <>9__40_3;

			public static Func<GameObject, bool> <>9__40_4;

			public static Func<GameObject, bool> <>9__40_5;

			public static Func<GameObject, bool> <>9__40_6;

			public static Func<GameObject, bool> <>9__41_0;

			public static Func<GameObject, bool> <>9__41_1;

			public static Func<GameObject, bool> <>9__41_2;

			public static Func<GameObject, bool> <>9__41_3;

			public static Func<GameObject, bool> <>9__41_4;

			public static Func<GameObject, bool> <>9__41_5;

			public static Func<GameObject, bool> <>9__42_0;

			public static Func<GameObject, bool> <>9__42_1;

			public static Func<GameObject, bool> <>9__42_2;

			public static Func<GameObject, bool> <>9__42_3;

			public static Func<GameObject, bool> <>9__42_4;

			public static Func<GameObject, bool> <>9__42_5;

			public static Func<GameObject, bool> <>9__43_0;

			public static Func<GameObject, bool> <>9__43_1;

			public static Func<GameObject, bool> <>9__43_2;

			public static Func<GameObject, bool> <>9__43_3;

			public static Func<GameObject, bool> <>9__43_4;

			public static Func<GameObject, bool> <>9__43_5;

			public static Func<GameObject, bool> <>9__43_6;

			public static Func<GameObject, bool> <>9__43_7;

			public static Func<GameObject, bool> <>9__43_8;

			public static Func<GameObject, bool> <>9__43_9;

			public static Func<GameObject, bool> <>9__43_10;

			public static Func<GameObject, bool> <>9__43_11;

			public static Func<GameObject, bool> <>9__44_0;

			public static Func<GameObject, bool> <>9__45_0;

			public static Func<GameObject, bool> <>9__45_1;

			public static Func<GameObject, bool> <>9__45_2;

			public static Func<GameObject, bool> <>9__45_3;

			public static Func<GameObject, bool> <>9__45_4;

			public static Func<GameObject, bool> <>9__45_5;

			public static EffectCondition <>9__45_6;

			public static Func<GameObject, bool> <>9__45_7;

			public static Func<GameObject, bool> <>9__45_8;

			public static Func<GameObject, bool> <>9__45_9;

			public static Func<GameObject, bool> <>9__45_10;

			public static Func<GameObject, bool> <>9__45_11;

			public static Func<GameObject, bool> <>9__45_12;

			public static Func<GameObject, bool> <>9__46_0;

			public static Func<GameObject, bool> <>9__46_1;

			internal void <LoadStaticContentAsync>b__26_1(Material[] assets)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				Stopwatch val = new Stopwatch();
				((StopwatchBase)val).Start();
				if (assets != null)
				{
					Material[] array = assets;
					foreach (Material val2 in array)
					{
						Shader val3 = Addressables.LoadAssetAsync<Shader>((object)ShaderLookup[((Object)val2.shader).name.ToLower()]).WaitForCompletion();
						if (Object.op_Implicit((Object)(object)val3))
						{
							val2.shader = val3;
						}
						else
						{
							Log.Info("Couldn't find replacement shader for " + ((Object)val2.shader).name.ToLower());
						}
						MaterialCache.Add(((Object)val2).name, val2);
					}
				}
				((StopwatchBase)val).Stop();
				Log.Info("Materials swapped in " + ((StopwatchBase)val).elapsedSeconds);
			}

			internal bool <LoadStaticContentAsync>b__26_6(Texture2D texture)
			{
				return ((Object)texture).name == "texLavaCrackRound";
			}

			internal bool <LoadStaticContentAsync>b__26_7(Texture2D texture)
			{
				return ((Object)texture).name.StartsWith("texRamp");
			}

			internal string <LoadStaticContentAsync>b__26_8(Texture2D texture)
			{
				return ((Object)texture).name;
			}

			internal Texture2D <LoadStaticContentAsync>b__26_9(Texture2D texture)
			{
				return texture;
			}

			internal string <LoadStaticContentAsync>b__26_10(Sprite item)
			{
				return ((Object)item).name;
			}

			internal Sprite <LoadStaticContentAsync>b__26_11(Sprite item)
			{
				return item;
			}

			internal string <LoadStaticContentAsync>b__26_12(AnimationCurveDef item)
			{
				return ((Object)item).name;
			}

			internal bool <CreateIfrit>b__27_0(GameObject effect)
			{
				return ((Object)effect).name == "IfritSpawnPortal";
			}

			internal bool <CreateIfrit>b__27_1(GameObject projectile)
			{
				return ((Object)projectile).name == "IfritHellzonePillarProjectile";
			}

			internal bool <CreateIfrit>b__27_2(GameObject projectile)
			{
				return ((Object)projectile).name == "IfritHellzonePillarProjectileGhost";
			}

			internal bool <CreateIfrit>b__27_3(GameObject projectile)
			{
				return ((Object)projectile).name == "IfritHellzoneVolcanoEffect";
			}

			internal bool <CreateIfrit>b__27_4(GameObject body)
			{
				return ((Object)body).name == "IfritBody";
			}

			internal bool <CreateIfrit>b__27_5(GameObject mane)
			{
				return ((Object)mane).name == "IfritManeFireParticle";
			}

			internal bool <CreateIfrit>b__27_6(GameObject master)
			{
				return ((Object)master).name == "IfritMaster";
			}

			internal bool <CreateIfritItem>b__28_0(GameObject item)
			{
				return ((Object)item).name == "IfritItem";
			}

			internal bool <CreateIfritPillar>b__29_0(GameObject body)
			{
				return ((Object)body).name == "IfritPylonBody";
			}

			internal bool <CreateIfritPillar>b__29_1(GameObject master)
			{
				return ((Object)master).name == "IfritPylonMaster";
			}

			internal bool <CreateColossus>b__30_0(GameObject body)
			{
				return ((Object)body).name == "ColossusBody";
			}

			internal bool <CreateColossus>b__30_1(GameObject master)
			{
				return ((Object)master).name == "ColossusMaster";
			}

			internal bool <CreateColossusItem>b__31_0(GameObject item)
			{
				return ((Object)item).name == "PickupColossalCurl";
			}

			internal bool <CreateColossusItem>b__31_1(GameObject item)
			{
				return ((Object)item).name == "ColossalKnurlFistProjectileGhost";
			}

			internal bool <CreateColossusItem>b__31_2(GameObject item)
			{
				return ((Object)item).name == "ColossalKnurlFistProjectile";
			}

			internal bool <CreateSpitter>b__32_0(GameObject body)
			{
				return ((Object)body).name == "SpitterBody";
			}

			internal bool <CreateSpitter>b__32_1(GameObject master)
			{
				return ((Object)master).name == "SpitterMaster";
			}

			internal bool <CreateMechanichalSpiderDrone>b__34_0(GameObject body)
			{
				return ((Object)body).name == "MechanicalSpiderDroneBody";
			}

			internal bool <CreateMechanichalSpiderDrone>b__34_1(GameObject master)
			{
				return ((Object)master).name == "MechanicalSpiderDroneMaster";
			}

			internal bool <CreateMechanichalSpiderDrone>b__34_2(GameObject interactable)
			{
				return ((Object)interactable).name == "MechanicalSpiderBroken";
			}

			internal bool <CreateMechanicalSpiderEnemy>b__35_0(GameObject body)
			{
				return ((Object)body).name == "MechanicalSpiderBody";
			}

			internal bool <CreateMechanicalSpiderEnemy>b__35_1(GameObject master)
			{
				return ((Object)master).name == "MechanicalSpiderMaster";
			}

			internal bool <CreateLynxTrap>b__37_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTrapPrefab";
			}

			internal bool <CreateLynxShrine>b__38_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTribeRetreatEffect";
			}

			internal bool <CreateLynxShrine>b__38_1(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShrinePrefab";
			}

			internal bool <CreateLynxShrine>b__38_2(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShrinePrefab2";
			}

			internal bool <CreateLynxShrine>b__38_3(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShrinePrefab3";
			}

			internal bool <CreateLynxArcher>b__40_0(GameObject prefab)
			{
				return ((Object)prefab).name == "ArrowProjectile";
			}

			internal bool <CreateLynxArcher>b__40_1(GameObject prefab)
			{
				return ((Object)prefab).name == "ArrowProjectileGhost";
			}

			internal bool <CreateLynxArcher>b__40_2(GameObject prefab)
			{
				return ((Object)prefab).name == "ArrowProjectileGhost";
			}

			internal bool <CreateLynxArcher>b__40_3(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxArcherBody";
			}

			internal bool <CreateLynxArcher>b__40_4(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxArcherMaster";
			}

			internal bool <CreateLynxArcher>b__40_5(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxArcherAllyBody";
			}

			internal bool <CreateLynxArcher>b__40_6(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxArcherAllyMaster";
			}

			internal bool <CreateLynxHunter>b__41_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterAttackEffect";
			}

			internal bool <CreateLynxHunter>b__41_1(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterSpearTipEffect";
			}

			internal bool <CreateLynxHunter>b__41_2(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterBody";
			}

			internal bool <CreateLynxHunter>b__41_3(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterMaster";
			}

			internal bool <CreateLynxHunter>b__41_4(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterAllyBody";
			}

			internal bool <CreateLynxHunter>b__41_5(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxHunterAllyMaster";
			}

			internal bool <CreateLynxScout>b__42_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutClawEffectLeft";
			}

			internal bool <CreateLynxScout>b__42_1(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutClawEffectRight";
			}

			internal bool <CreateLynxScout>b__42_2(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutBody";
			}

			internal bool <CreateLynxScout>b__42_3(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutMaster";
			}

			internal bool <CreateLynxScout>b__42_4(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutAllyBody";
			}

			internal bool <CreateLynxScout>b__42_5(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxScoutAllyMaster";
			}

			internal bool <CreateLynxTotem>b__43_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxSpawnParticles";
			}

			internal bool <CreateLynxTotem>b__43_1(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxSpawnParticles";
			}

			internal bool <CreateLynxTotem>b__43_2(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTotemFireWallProjectile";
			}

			internal bool <CreateLynxTotem>b__43_3(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemShakeParticles";
			}

			internal bool <CreateLynxTotem>b__43_4(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemSingleStoneParticle";
			}

			internal bool <CreateLynxTotem>b__43_5(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemEyeGlowSummonTribe";
			}

			internal bool <CreateLynxTotem>b__43_6(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemEyeGlowSummonStorm";
			}

			internal bool <CreateLynxTotem>b__43_7(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemEyeGlowGroundpound";
			}

			internal bool <CreateLynxTotem>b__43_8(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTotemGroundpoundProjectile";
			}

			internal bool <CreateLynxTotem>b__43_9(GameObject prefab)
			{
				return ((Object)prefab).name == "TotemSummonStormOrb";
			}

			internal bool <CreateLynxTotem>b__43_10(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTotemBody";
			}

			internal bool <CreateLynxTotem>b__43_11(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxTotemMaster";
			}

			internal bool <CreateLynxTotemItem>b__44_0(GameObject item)
			{
				return ((Object)item).name == "PickupLynxFetish";
			}

			internal bool <CreateLynxShaman>b__45_0(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxSpawnParticles";
			}

			internal bool <CreateLynxShaman>b__45_1(GameObject prefab)
			{
				return ((Object)prefab).name == "ShamanSummonStormParticle";
			}

			internal bool <CreateLynxShaman>b__45_2(GameObject prefab)
			{
				return ((Object)prefab).name == "ShamanMask";
			}

			internal bool <CreateLynxShaman>b__45_3(GameObject prefab)
			{
				return ((Object)prefab).name == "ShamanTeleportEffectOut";
			}

			internal bool <CreateLynxShaman>b__45_4(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShamanPushBackSummon";
			}

			internal bool <CreateLynxShaman>b__45_5(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShamanPushBackExplosion";
			}

			internal bool <CreateLynxShaman>b__45_6(CharacterBody body)
			{
				return body.HasBuff(ShamanStuff.ReduceHealing);
			}

			internal bool <CreateLynxShaman>b__45_7(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShamanProjectileImpactEffect";
			}

			internal bool <CreateLynxShaman>b__45_8(GameObject prefab)
			{
				return ((Object)prefab).name == "ShamanTrackingProjectile";
			}

			internal bool <CreateLynxShaman>b__45_9(GameObject body)
			{
				return ((Object)body).name == "LynxShamanBody";
			}

			internal bool <CreateLynxShaman>b__45_10(GameObject master)
			{
				return ((Object)master).name == "LynxShamanMaster";
			}

			internal bool <CreateLynxShaman>b__45_11(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShamanAllyBody";
			}

			internal bool <CreateLynxShaman>b__45_12(GameObject prefab)
			{
				return ((Object)prefab).name == "LynxShamanAllyMaster";
			}

			internal bool <CreateLynxStorm>b__46_0(GameObject body)
			{
				return ((Object)body).name == "StormBody";
			}

			internal bool <CreateLynxStorm>b__46_1(GameObject master)
			{
				return ((Object)master).name == "StormMaster";
			}
		}

		private readonly ContentPack _contentPack = new ContentPack();

		public const string AssetBundleName = "EnemiesReturns";

		public const string AssetBundleFolder = "AssetBundles";

		public const string SoundbankFolder = "Soundbanks";

		public const string SoundsSoundBankFileName = "EnemiesReturnsSounds";

		private readonly List<GameObject> bodyList = new List<GameObject>();

		private readonly List<GameObject> masterList = new List<GameObject>();

		private readonly List<Type> stateList = new List<Type>();

		private readonly List<SkillFamily> sfList = new List<SkillFamily>();

		private readonly List<SkillDef> sdList = new List<SkillDef>();

		private readonly List<EffectDef> effectsList = new List<EffectDef>();

		private readonly List<GameObject> projectilesList = new List<GameObject>();

		private readonly List<UnlockableDef> unlockablesList = new List<UnlockableDef>();

		private readonly List<ItemDef> itemList = new List<ItemDef>();

		private readonly List<NetworkSoundEventDef> nseList = new List<NetworkSoundEventDef>();

		private readonly List<GameObject> nopList = new List<GameObject>();

		private readonly List<BuffDef> bdList = new List<BuffDef>();

		public static readonly 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/hgopaquecloudremap", "RoR2/Base/Shaders/HGOpaqueCloudRemap.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" }
		};

		public static Dictionary<string, Material> MaterialCache = new Dictionary<string, Material>();

		public static ItemRelationshipProvider ModdedContagiousItemProvider;

		public static ItemDef VoidMegaCrabItem = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/DLC1/VoidMegaCrabItem.asset").WaitForCompletion();

		public string identifier => "com.Viliger.EnemiesReturns.ContentProvider";

		public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
		{
			ContentPack.Copy(_contentPack, args.output);
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
		{
			Stopwatch totalStopwatch = new Stopwatch();
			((StopwatchBase)totalStopwatch).Start();
			_contentPack.identifier = identifier;
			ModdedContagiousItemProvider = ScriptableObject.CreateInstance<ItemRelationshipProvider>();
			((Object)ModdedContagiousItemProvider).name = "EnemiesReturnsContagiousItemProvider";
			ModdedContagiousItemProvider.relationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)"RoR2/DLC1/Common/ContagiousItem.asset").WaitForCompletion();
			ModdedContagiousItemProvider.relationships = Array.Empty<Pair>();
			Stopwatch val = new Stopwatch();
			((StopwatchBase)val).Start();
			string soundbanksFolderPath = Path.Combine(Path.GetDirectoryName(typeof(ContentProvider).Assembly.Location), "Soundbanks");
			LoadSoundBanks(soundbanksFolderPath);
			((StopwatchBase)val).Stop();
			Log.Info("Soundbanks loaded in " + ((StopwatchBase)val).elapsedSeconds);
			string path = Path.Combine(Path.GetDirectoryName(typeof(ContentProvider).Assembly.Location), "AssetBundles");
			AssetBundle assetbundle = null;
			yield return LoadAssetBundle(Path.Combine(path, "EnemiesReturns"), args.progressReceiver, delegate(AssetBundle resultAssetBundle)
			{
				assetbundle = resultAssetBundle;
			});
			yield return LoadAllAssetsAsync<Material>(assetbundle, args.progressReceiver, (Action<Material[]>)delegate(Material[] assets)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				Stopwatch val4 = new Stopwatch();
				((StopwatchBase)val4).Start();
				if (assets != null)
				{
					Material[] array = assets;
					foreach (Material val5 in array)
					{
						Shader val6 = Addressables.LoadAssetAsync<Shader>((object)ShaderLookup[((Object)val5.shader).name.ToLower()]).WaitForCompletion();
						if (Object.op_Implicit((Object)(object)val6))
						{
							val5.shader = val6;
						}
						else
						{
							Log.Info("Couldn't find replacement shader for " + ((Object)val5.shader).name.ToLower());
						}
						MaterialCache.Add(((Object)val5).name, val5);
					}
				}
				((StopwatchBase)val4).Stop();
				Log.Info("Materials swapped in " + ((StopwatchBase)val4).elapsedSeconds);
			});
			Dictionary<string, Sprite> iconLookup = new Dictionary<string, Sprite>();
			Dictionary<string, Texture2D> rampLookups = new Dictionary<string, Texture2D>();
			Texture2D texLavaCrackRound = null;
			yield return LoadAllAssetsAsync<Texture2D>(assetbundle, args.progressReceiver, (Action<Texture2D[]>)delegate(Texture2D[] textures)
			{
				texLavaCrackRound = textures.First((Texture2D texture) => ((Object)texture).name == "texLavaCrackRound");
				rampLookups = textures.Where((Texture2D texture) => ((Object)texture).name.StartsWith("texRamp")).ToDictionary((Texture2D texture) => ((Object)texture).name, (Texture2D texture) => texture);
			});
			yield return LoadAllAssetsAsync<Sprite>(assetbundle, args.progressReceiver, (Action<Sprite[]>)delegate(Sprite[] assets)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				Stopwatch val3 = new Stopwatch();
				((StopwatchBase)val3).Start();
				iconLookup = assets.ToDictionary((Sprite item) => ((Object)item).name, (Sprite item) => item);
				((StopwatchBase)val3).Stop();
				Log.Info("Icons loaded in " + ((StopwatchBase)val3).elapsedSeconds);
			});
			Dictionary<string, AnimationCurveDef> acdLookup = new Dictionary<string, AnimationCurveDef>();
			yield return LoadAllAssetsAsync<AnimationCurveDef>(assetbundle, args.progressReceiver, (Action<AnimationCurveDef[]>)delegate(AnimationCurveDef[] assets)
			{
				acdLookup = assets.ToDictionary((AnimationCurveDef item) => ((Object)item).name);
			});
			yield return LoadAllAssetsAsync<GameObject>(assetbundle, args.progressReceiver, (Action<GameObject[]>)delegate(GameObject[] assets)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				Stopwatch val2 = new Stopwatch();
				((StopwatchBase)val2).Start();
				stateList.Add(typeof(BasePlayerEmoteState));
				CreateSpitter(assets, iconLookup);
				CreateColossus(assets, iconLookup, acdLookup);
				CreateIfrit(assets, iconLookup, texLavaCrackRound, acdLookup);
				CreateMechanicalSpider(assets, iconLookup, acdLookup);
				CreateLynxTribe(assets, iconLookup, acdLookup, rampLookups);
				((StopwatchBase)val2).Stop();
				Log.Info("Characters created in " + ((StopwatchBase)val2).elapsedSeconds);
			});
			_contentPack.bodyPrefabs.Add(bodyList.ToArray());
			_contentPack.masterPrefabs.Add(masterList.ToArray());
			_contentPack.skillDefs.Add(sdList.ToArray());
			_contentPack.skillFamilies.Add(sfList.ToArray());
			_contentPack.entityStateTypes.Add(stateList.ToArray());
			_contentPack.effectDefs.Add(effectsList.ToArray());
			_contentPack.projectilePrefabs.Add(projectilesList.ToArray());
			_contentPack.unlockableDefs.Add(unlockablesList.ToArray());
			_contentPack.itemDefs.Add(itemList.ToArray());
			_contentPack.networkSoundEventDefs.Add(nseList.ToArray());
			_contentPack.networkedObjectPrefabs.Add(nopList.ToArray());
			_contentPack.itemRelationshipProviders.Add((ItemRelationshipProvider[])(object)new ItemRelationshipProvider[1] { ModdedContagiousItemProvider });
			_contentPack.buffDefs.Add(bdList.ToArray());
			((StopwatchBase)totalStopwatch).Stop();
			Log.Info("Total loading time: " + ((StopwatchBase)totalStopwatch).elapsedSeconds);
		}

		private void CreateIfrit(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Texture2D texLavaCrackRound, Dictionary<string, AnimationCurveDef> acdLookup)
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			//IL_0384: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c4: Expected O, but got Unknown
			//IL_03c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d1: 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_03da: Expected O, but got Unknown
			CreateIfritPillar(assets, iconLookup, acdLookup);
			ExplicitPickupDropTable droptable = CreateIfritItem(assets, iconLookup);
			if (Ifrit.Enabled.Value)
			{
				IfritStuff ifritStuff = new IfritStuff();
				EnemiesReturns.ModdedEntityStates.Ifrit.DeathState.deathEffect = ifritStuff.CreateDeathEffect();
				effectsList.Add(new EffectDef(EnemiesReturns.ModdedEntityStates.Ifrit.DeathState.deathEffect));
				SummonPylon.screamPrefab = ifritStuff.CreateBreathParticle();
				effectsList.Add(new EffectDef(SummonPylon.screamPrefab));
				NetworkSoundEventDef val = Utils.CreateNetworkSoundDef("ER_Ifrit_Hellzone_Rock_Play");
				nseList.Add(val);
				GameObject gameObject = assets.First((GameObject effect) => ((Object)effect).name == "IfritSpawnPortal");
				EnemiesReturns.ModdedEntityStates.Ifrit.SpawnState.spawnEffect = ifritStuff.CreateSpawnEffect(gameObject, acdLookup["acdPortalPP"]);
				effectsList.Add(new EffectDef(EnemiesReturns.ModdedEntityStates.Ifrit.SpawnState.spawnEffect));
				GameObject gameObject2 = assets.First((GameObject projectile) => ((Object)projectile).name == "IfritHellzonePillarProjectile");
				GameObject ghostPrefab = assets.First((GameObject projectile) => ((Object)projectile).name == "IfritHellzonePillarProjectileGhost");
				GameObject volcanoEffectPrefab = assets.First((GameObject projectile) => ((Object)projectile).name == "IfritHellzoneVolcanoEffect");
				GameObject val2 = ifritStuff.CreateHellzonePillarProjectile(gameObject2, ghostPrefab);
				GameObject val3 = ifritStuff.CreateHellfireDotZoneProjectile(val2, volcanoEffectPrefab, texLavaCrackRound, val);
				GameObject val4 = ifritStuff.CreateHellzoneProjectile();
				GameObject val5 = ifritStuff.CreateHellzonePredictionProjectile(val3, texLavaCrackRound);
				projectilesList.Add(val3);
				projectilesList.Add(val4);
				projectilesList.Add(val2);
				projectilesList.Add(val5);
				FlameCharge.flamethrowerEffectPrefab = ifritStuff.CreateFlameBreath();
				FireHellzoneFire.projectilePrefab = val4;
				FireHellzoneFire.dotZoneProjectile = val5;
				IfritBody ifritBody = new IfritBody();
				IfritBody.Skills.Hellzone = ifritBody.CreateHellzoneSkill();
				IfritBody.SkillFamilies.Secondary = Utils.CreateSkillFamily("IfritSecondaryFamily", IfritBody.Skills.Hellzone);
				IfritBody.Skills.SummonPylon = ifritBody.CreateSummonPylonSkill();
				IfritBody.SkillFamilies.Special = Utils.CreateSkillFamily("IfritSpecialFamily", IfritBody.Skills.SummonPylon);
				IfritBody.Skills.FlameCharge = ifritBody.CreateFlameChargeSkill();
				IfritBody.SkillFamilies.Utility = Utils.CreateSkillFamily("IfritUtilityFamily", IfritBody.Skills.FlameCharge);
				IfritBody.Skills.Smash = ifritBody.CreateSmashSkill();
				IfritBody.SkillFamilies.Primary = Utils.CreateSkillFamily("IfritPrimaryFamily", IfritBody.Skills.Smash);
				UnlockableDef val6 = Utils.CreateUnlockableDef("Logs.IfritBody.0", "ENEMIES_RETURNS_UNLOCKABLE_LOG_IFRIT");
				unlockablesList.Add(val6);
				IfritBody.BodyPrefab = ifritBody.AddBodyComponents(assets.First((GameObject body) => ((Object)body).name == "IfritBody"), iconLookup["texIconIfritBody"], val6, droptable);
				bodyList.Add(IfritBody.BodyPrefab);
				assets.First((GameObject mane) => ((Object)mane).name == "IfritManeFireParticle").GetComponent<Renderer>().material = GetOrCreateMaterial("matIfritManeFire", ifritBody.CreateManeFiresMaterial);
				IfritMaster.MasterPrefab = new IfritMaster().AddMasterComponents(assets.First((GameObject master) => ((Object)master).name == "IfritMaster"), IfritBody.BodyPrefab);
				masterList.Add(IfritMaster.MasterPrefab);
				IfritBody.SpawnCards.cscIfritDefault = ifritBody.CreateCard("cscIfritDefault", IfritMaster.MasterPrefab, IfritBody.SkinDefs.Default, IfritBody.BodyPrefab);
				DirectorCard card = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)IfritBody.SpawnCards.cscIfritDefault,
					selectionWeight = Ifrit.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Ifrit.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard = new DirectorCardHolder
				{
					Card = card,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToStage(Ifrit.DefaultStageList.Value, directorCard);
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.SpawnState));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.DeathState));
				stateList.Add(typeof(SummonPylon));
				stateList.Add(typeof(FireHellzoneStart));
				stateList.Add(typeof(FireHellzoneFire));
				stateList.Add(typeof(FireHellzoneEnd));
				stateList.Add(typeof(FlameChargeBegin));
				stateList.Add(typeof(FlameCharge));
				stateList.Add(typeof(FlameChargeEnd));
				stateList.Add(typeof(Smash));
				if (Ifrit.AddToArtifactOfOrigin.Value && RiskyArtifafactsCompat.enabled)
				{
					RiskyArtifafactsCompat.AddMonsterToArtifactOfOrigin((SpawnCard)(object)IfritBody.SpawnCards.cscIfritDefault, 2);
				}
			}
		}

		private ExplicitPickupDropTable CreateIfritItem(GameObject[] assets, Dictionary<string, Sprite> iconLookup)
		{
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			ExplicitPickupDropTable val = null;
			if (Ifrit.ItemEnabled.Value)
			{
				SpawnPillarOnChampionKillFactory.ItemDef = new SpawnPillarOnChampionKillFactory().CreateItem(assets.First((GameObject item) => ((Object)item).name == "IfritItem"), iconLookup["texIconIfritItem"]);
				itemList.Add(SpawnPillarOnChampionKillFactory.ItemDef);
				val = ScriptableObject.CreateInstance<ExplicitPickupDropTable>();
				((Object)val).name = "epdtIfrit";
				((PickupDropTable)val).canDropBeReplaced = true;
				val.pickupEntries = (PickupDefEntry[])(object)new PickupDefEntry[1]
				{
					new PickupDefEntry
					{
						pickupWeight = 1f,
						pickupDef = (Object)(object)SpawnPillarOnChampionKillFactory.ItemDef
					}
				};
				ref Pair[] relationships = ref ModdedContagiousItemProvider.relationships;
				Pair val2 = new Pair
				{
					itemDef1 = SpawnPillarOnChampionKillFactory.ItemDef,
					itemDef2 = VoidMegaCrabItem
				};
				ArrayUtils.ArrayAppend<Pair>(ref relationships, ref val2);
			}
			return val;
		}

		private void CreateIfritPillar(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Dictionary<string, AnimationCurveDef> acdLookup)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			if (Ifrit.ItemEnabled.Value || Ifrit.Enabled.Value)
			{
				PillarStuff pillarStuff = new PillarStuff();
				EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.SpawnState.burrowPrefab = pillarStuff.CreateSpawnEffect();
				effectsList.Add(new EffectDef(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.SpawnState.burrowPrefab));
				BaseDeathState.fallEffect = pillarStuff.CreateDeathFallEffect();
				effectsList.Add(new EffectDef(BaseDeathState.fallEffect));
				KilledDeathState.explosionPrefab = (BaseFireExplosion.explosionPrefab = pillarStuff.CreateExlosionEffectAlt());
				effectsList.Add(new EffectDef(BaseFireExplosion.explosionPrefab));
				GameObject val = assets.First((GameObject body) => ((Object)body).name == "IfritPylonBody");
				GameObject val2 = assets.First((GameObject master) => ((Object)master).name == "IfritPylonMaster");
				KilledDeathState.fireballYCurve = acdLookup["acdFireballFallCurve"].curve;
				PillarStuff.PillarExplosion = ProcTypeAPI.ReserveProcType();
				PillarMaster pillarMaster = new PillarMaster();
				if (Ifrit.Enabled.Value)
				{
					PillarEnemyBody pillarEnemyBody = new PillarEnemyBody();
					PillarEnemyBody.BodyPrefab = pillarEnemyBody.AddBodyComponents(PrefabAPI.InstantiateClone(val, "IfritPylonEnemyBody", false), iconLookup["texIconPillarEnemy"], acdLookup);
					bodyList.Add(PillarEnemyBody.BodyPrefab);
					PillarMaster.EnemyMasterPrefab = pillarMaster.AddMasterComponents(PrefabAPI.InstantiateClone(val2, "IfritPylonEnemyMaster", false), PillarEnemyBody.BodyPrefab);
					masterList.Add(PillarMaster.EnemyMasterPrefab);
					PillarEnemyBody.SpawnCard = pillarEnemyBody.CreateCard("cscIfritEnemyPillar", PillarMaster.EnemyMasterPrefab);
					stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Enemy.ChargingExplosion));
					stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Enemy.FireExplosion));
					stateList.Add(typeof(KilledDeathState));
				}
				if (Ifrit.ItemEnabled.Value)
				{
					PillarAllyBody pillarAllyBody = new PillarAllyBody();
					PillarAllyBody.BodyPrefab = pillarAllyBody.AddBodyComponents(PrefabAPI.InstantiateClone(val, "IfritPylonPlayerBody", false), iconLookup["texIconPillarAlly"], acdLookup);
					bodyList.Add(PillarAllyBody.BodyPrefab);
					PillarMaster.AllyMasterPrefab = pillarMaster.AddMasterComponents(PrefabAPI.InstantiateClone(val2, "IfritPylonPlayerMaster", false), PillarAllyBody.BodyPrefab);
					masterList.Add(PillarMaster.AllyMasterPrefab);
					PillarAllyBody.SpawnCard = pillarAllyBody.CreateCard("cscIfritPlayerPillar", PillarMaster.AllyMasterPrefab);
					stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Player.ChargingExplosion));
					stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.Player.FireExplosion));
				}
				stateList.Add(typeof(SuicideDeathState));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Ifrit.Pillar.SpawnState));
			}
		}

		private void CreateColossus(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Dictionary<string, AnimationCurveDef> acdLookup)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Expected O, but got Unknown
			//IL_04e1: 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_04f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_0503: Unknown result type (might be due to invalid IL or missing references)
			//IL_0508: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0521: Expected O, but got Unknown
			//IL_0521: Unknown result type (might be due to invalid IL or missing references)
			//IL_0526: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0530: Unknown result type (might be due to invalid IL or missing references)
			//IL_0537: Expected O, but got Unknown
			//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_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c7: Expected O, but got Unknown
			//IL_05c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05dd: Expected O, but got Unknown
			//IL_060e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0613: Unknown result type (might be due to invalid IL or missing references)
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_062e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0630: Unknown result type (might be due to invalid IL or missing references)
			//IL_0635: 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_064e: Expected O, but got Unknown
			//IL_064e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0653: Unknown result type (might be due to invalid IL or missing references)
			//IL_065b: Unknown result type (might be due to invalid IL or missing references)
			//IL_065d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0664: Expected O, but got Unknown
			//IL_0670: Unknown result type (might be due to invalid IL or missing references)
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d4: 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_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f4: Expected O, but got Unknown
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_0703: Unknown result type (might be due to invalid IL or missing references)
			//IL_070a: Expected O, but got Unknown
			//IL_073b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0740: Unknown result type (might be due to invalid IL or missing references)
			//IL_074b: Unknown result type (might be due to invalid IL or missing references)
			//IL_075b: Unknown result type (might be due to invalid IL or missing references)
			//IL_075d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0762: 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_077b: Expected O, but got Unknown
			//IL_077b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0780: Unknown result type (might be due to invalid IL or missing references)
			//IL_0788: Unknown result type (might be due to invalid IL or missing references)
			//IL_078a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0791: Expected O, but got Unknown
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0801: Unknown result type (might be due to invalid IL or missing references)
			//IL_0803: Unknown result type (might be due to invalid IL or missing references)
			//IL_0808: Unknown result type (might be due to invalid IL or missing references)
			//IL_080f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0821: Expected O, but got Unknown
			//IL_0821: Unknown result type (might be due to invalid IL or missing references)
			//IL_0826: Unknown result type (might be due to invalid IL or missing references)
			//IL_082e: 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_0837: Expected O, but got Unknown
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_0848: Unknown result type (might be due to invalid IL or missing references)
			ExplicitPickupDropTable droptable = CreateColossusItem(assets, iconLookup);
			if (Colossus.Enabled.Value)
			{
				ColossusStuff colossusStuff = new ColossusStuff();
				GameObject val = (StompBase.stompEffectPrefab = colossusStuff.CreateStompEffect());
				effectsList.Add(new EffectDef(val));
				GameObject item = (StompBase.projectilePrefab = colossusStuff.CreateStompProjectile());
				projectilesList.Add(item);
				GameObject val2 = colossusStuff.CreateDeathFallEffect();
				effectsList.Add(new EffectDef(val2));
				BaseDeath.fallEffect = val2;
				GameObject val3 = colossusStuff.CreateDeath2Effect();
				effectsList.Add(new EffectDef(val3));
				Death2.deathEffect = val3;
				RockClapEnd.clapEffect = colossusStuff.CreateClapEffect();
				GameObject item2 = (RockClapEnd.projectilePrefab = colossusStuff.CreateFlyingRockProjectile(FloatingRocksController.flyingRockPrefab = colossusStuff.CreateFlyingRocksGhost()));
				projectilesList.Add(item2);
				GameObject item3 = (HeadLaserBarrageAttack.projectilePrefab = colossusStuff.CreateLaserBarrageProjectile());
				projectilesList.Add(item3);
				GameObject val4 = (EnemiesReturns.ModdedEntityStates.Colossus.SpawnState.burrowPrefab = colossusStuff.CreateSpawnEffect());
				effectsList.Add(new EffectDef(val4));
				HeadLaserBarrageAttack.intencityGraph = acdLookup["LaserBarrageLightIntencity"].curve;
				UnlockableDef val5 = Utils.CreateUnlockableDef("Logs.ColossusBody.0", "ENEMIES_RETURNS_UNLOCKABLE_LOG_COLOSSUS");
				unlockablesList.Add(val5);
				HeadLaserAttack.beamPrefab = colossusStuff.CreateLaserEffect();
				ColossusBody colossusBody = new ColossusBody();
				ColossusBody.Skills.Stomp = colossusBody.CreateStompSkill();
				ColossusBody.Skills.StoneClap = colossusBody.CreateStoneClapSkill();
				ColossusBody.Skills.LaserBarrage = colossusBody.CreateLaserBarrageSkill();
				ColossusBody.Skills.HeadLaser = colossusBody.CreateHeadLaserSkill();
				sdList.Add(ColossusBody.Skills.Stomp);
				sdList.Add(ColossusBody.Skills.StoneClap);
				sdList.Add(ColossusBody.Skills.LaserBarrage);
				sdList.Add(ColossusBody.Skills.HeadLaser);
				ColossusBody.SkillFamilies.Primary = Utils.CreateSkillFamily("ColossusPrimaryFamily", ColossusBody.Skills.Stomp);
				ColossusBody.SkillFamilies.Secondary = Utils.CreateSkillFamily("ColossusSecondaryFamily", ColossusBody.Skills.StoneClap);
				ColossusBody.SkillFamilies.Utility = Utils.CreateSkillFamily("ColossusUtilityFamily", ColossusBody.Skills.LaserBarrage);
				ColossusBody.SkillFamilies.Special = Utils.CreateSkillFamily("ColossusSpecialFamily", ColossusBody.Skills.HeadLaser);
				sfList.Add(ColossusBody.SkillFamilies.Primary);
				sfList.Add(ColossusBody.SkillFamilies.Secondary);
				sfList.Add(ColossusBody.SkillFamilies.Utility);
				sfList.Add(ColossusBody.SkillFamilies.Special);
				ColossusBody.BodyPrefab = colossusBody.AddBodyComponents(assets.First((GameObject body) => ((Object)body).name == "ColossusBody"), iconLookup["texColossusIcon"], val5, droptable);
				bodyList.Add(ColossusBody.BodyPrefab);
				ColossusMaster.MasterPrefab = new ColossusMaster().AddMasterComponents(assets.First((GameObject master) => ((Object)master).name == "ColossusMaster"), ColossusBody.BodyPrefab);
				masterList.Add(ColossusMaster.MasterPrefab);
				stateList.Add(typeof(ColossusMain));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Colossus.SpawnState));
				stateList.Add(typeof(DancePlayer));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Colossus.Death.InitialDeathState));
				stateList.Add(typeof(BaseDeath));
				stateList.Add(typeof(DeathFallBase));
				stateList.Add(typeof(Death1));
				stateList.Add(typeof(Death2));
				stateList.Add(typeof(DeathBoner));
				stateList.Add(typeof(RockClapEnd));
				stateList.Add(typeof(RockClapStart));
				stateList.Add(typeof(StompEnter));
				stateList.Add(typeof(StompBase));
				stateList.Add(typeof(StompL));
				stateList.Add(typeof(StompR));
				stateList.Add(typeof(HeadLaserBarrageStart));
				stateList.Add(typeof(HeadLaserBarrageAttack));
				stateList.Add(typeof(HeadLaserBarrageEnd));
				stateList.Add(typeof(HeadLaserStart));
				stateList.Add(typeof(HeadLaserAttack));
				stateList.Add(typeof(HeadLaserEnd));
				ColossusBody.SpawnCards.cscColossusDefault = colossusBody.CreateCard("cscColossusDefault", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.Default, ColossusBody.BodyPrefab);
				DirectorCard card = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusDefault,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard = new DirectorCardHolder
				{
					Card = card,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToCardCategory(card, "Champions", (DirectorCardCategorySelection)(object)Addressables.LoadAssetAsync<FamilyDirectorCardCategorySelection>((object)"RoR2/Base/Common/dccsGolemFamily.asset").WaitForCompletion());
				Utils.AddMonsterToStage(Colossus.DefaultStageList.Value, directorCard);
				ColossusBody.SpawnCards.cscColossusSkyMeadow = colossusBody.CreateCard("cscColossusSkyMeadow", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.SkyMeadow, ColossusBody.BodyPrefab);
				DirectorCard card2 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusSkyMeadow,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard2 = new DirectorCardHolder
				{
					Card = card2,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToStage(Colossus.SkyMeadowStageList.Value, directorCard2);
				ColossusBody.SpawnCards.cscColossusGrassy = colossusBody.CreateCard("cscColossusGrassy", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.Grassy, ColossusBody.BodyPrefab);
				DirectorCard card3 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusGrassy,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard3 = new DirectorCardHolder
				{
					Card = card3,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToCardCategory(card3, "Champions", (DirectorCardCategorySelection)(object)Addressables.LoadAssetAsync<FamilyDirectorCardCategorySelection>((object)"RoR2/Base/Common/dccsGolemFamilyNature").WaitForCompletion());
				Utils.AddMonsterToStage(Colossus.GrassyStageList.Value, directorCard3);
				ColossusBody.SpawnCards.cscColossusCastle = colossusBody.CreateCard("cscColossusCastle", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.Castle, ColossusBody.BodyPrefab);
				DirectorCard card4 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusCastle,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard4 = new DirectorCardHolder
				{
					Card = card4,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToStage(Colossus.CastleStageList.Value, directorCard4);
				ColossusBody.SpawnCards.cscColossusSandy = colossusBody.CreateCard("cscColossusSandy", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.Sandy, ColossusBody.BodyPrefab);
				DirectorCard card5 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusSandy,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard5 = new DirectorCardHolder
				{
					Card = card5,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToCardCategory(card5, "Champions", (DirectorCardCategorySelection)(object)Addressables.LoadAssetAsync<FamilyDirectorCardCategorySelection>((object)"RoR2/Base/Common/dccsGolemFamilySandy.asset").WaitForCompletion());
				Utils.AddMonsterToStage(Colossus.SandyStageList.Value, directorCard5);
				ColossusBody.SpawnCards.cscColossusSnowy = colossusBody.CreateCard("cscColossusSnowy", ColossusMaster.MasterPrefab, ColossusBody.SkinDefs.Snowy, ColossusBody.BodyPrefab);
				DirectorCard card6 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)ColossusBody.SpawnCards.cscColossusSnowy,
					selectionWeight = Colossus.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Colossus.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard6 = new DirectorCardHolder
				{
					Card = card6,
					MonsterCategory = (MonsterCategory)4
				};
				Utils.AddMonsterToCardCategory(card6, "Champions", (DirectorCardCategorySelection)(object)Addressables.LoadAssetAsync<FamilyDirectorCardCategorySelection>((object)"RoR2/Base/Common/dccsGolemFamilySnowy.asset").WaitForCompletion());
				Utils.AddMonsterToStage(Colossus.SnowyStageList.Value, directorCard6);
				if (Colossus.AddToArtifactOfOrigin.Value && RiskyArtifafactsCompat.enabled)
				{
					RiskyArtifafactsCompat.AddMonsterToArtifactOfOrigin((SpawnCard)(object)ColossusBody.SpawnCards.cscColossusGrassy, 3);
				}
			}
		}

		private ExplicitPickupDropTable CreateColossusItem(GameObject[] assets, Dictionary<string, Sprite> iconLookup)
		{
			//IL_0011: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			ExplicitPickupDropTable val = null;
			if (Colossus.ItemEnabled.Value)
			{
				ColossalKnurlFactory.ColossalFist = ProcTypeAPI.ReserveProcType();
				ColossalKnurlFactory colossalKnurlFactory = new ColossalKnurlFactory();
				ColossalKnurlFactory.ItemDef = colossalKnurlFactory.CreateItem(assets.First((GameObject item) => ((Object)item).name == "PickupColossalCurl"), iconLookup["texColossalKnurlIcon"]);
				itemList.Add(ColossalKnurlFactory.ItemDef);
				val = ScriptableObject.CreateInstance<ExplicitPickupDropTable>();
				((Object)val).name = "epdtColossus";
				((PickupDropTable)val).canDropBeReplaced = true;
				val.pickupEntries = (PickupDefEntry[])(object)new PickupDefEntry[1]
				{
					new PickupDefEntry
					{
						pickupWeight = 1f,
						pickupDef = (Object)(object)ColossalKnurlFactory.ItemDef
					}
				};
				GameObject prefab = assets.First((GameObject item) => ((Object)item).name == "ColossalKnurlFistProjectileGhost");
				prefab = colossalKnurlFactory.CreateFistGhostPrefab(prefab);
				GameObject fistPrefab = assets.First((GameObject item) => ((Object)item).name == "ColossalKnurlFistProjectile");
				ColossalKnurlFactory.projectilePrefab = colossalKnurlFactory.CreateFistProjectile(fistPrefab, prefab);
				projectilesList.Add(ColossalKnurlFactory.projectilePrefab);
				ref Pair[] relationships = ref ModdedContagiousItemProvider.relationships;
				Pair val2 = new Pair
				{
					itemDef1 = ColossalKnurlFactory.ItemDef,
					itemDef2 = VoidMegaCrabItem
				};
				ArrayUtils.ArrayAppend<Pair>(ref relationships, ref val2);
			}
			return val;
		}

		private void CreateSpitter(GameObject[] assets, Dictionary<string, Sprite> iconLookup)
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0281: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Expected O, but got Unknown
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Expected O, but got Unknown
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0301: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Expected O, but got Unknown
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: 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_0330: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Expected O, but got Unknown
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Unknown result type (might be due to invalid IL or missing references)
			//IL_0388: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_038f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0396: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Expected O, but got Unknown
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03be: Expected O, but got Unknown
			//IL_03ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_040f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0411: Unknown result type (might be due to invalid IL or missing references)
			//IL_0416: Unknown result type (might be due to invalid IL or missing references)
			//IL_041d: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Expected O, but got Unknown
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_043e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0445: Expected O, but got Unknown
			if (Spitter.Enabled.Value)
			{
				SpitterStuff spitterStuff = new SpitterStuff();
				Bite.biteEffectPrefab = spitterStuff.CreateBiteEffect();
				effectsList.Add(new EffectDef(Bite.biteEffectPrefab));
				GameObject val = spitterStuff.CreatedChargedSpitSmallDoTZone();
				GameObject val2 = spitterStuff.CreateChargedSpitDoTZone();
				GameObject val3 = spitterStuff.CreateChargedSpitSplitProjectile(val);
				GameObject item = (FireChargedSpit.projectilePrefab = spitterStuff.CreateChargedSpitProjectile(val2, val3));
				projectilesList.Add(item);
				projectilesList.Add(val);
				projectilesList.Add(val2);
				projectilesList.Add(val3);
				NormalSpit.normalSpitProjectile = spitterStuff.CreateNormalSpitProjectile();
				projectilesList.Add(NormalSpit.normalSpitProjectile);
				UnlockableDef val4 = Utils.CreateUnlockableDef("Logs.SpitterBody.0", "ENEMIES_RETURNS_UNLOCKABLE_LOG_SPITTER");
				unlockablesList.Add(val4);
				SpitterBody spitterBody = new SpitterBody();
				SpitterBody.Skills.NormalSpit = spitterBody.CreateNormalSpitSkill();
				SpitterBody.Skills.ChargedSpit = spitterBody.CreateChargedSpitSkill();
				SpitterBody.Skills.Bite = spitterBody.CreateBiteSkill();
				sdList.Add(SpitterBody.Skills.NormalSpit);
				sdList.Add(SpitterBody.Skills.Bite);
				sdList.Add(SpitterBody.Skills.ChargedSpit);
				SpitterBody.SkillFamilies.Primary = Utils.CreateSkillFamily("SpitterPrimaryFamily", SpitterBody.Skills.NormalSpit);
				SpitterBody.SkillFamilies.Secondary = Utils.CreateSkillFamily("SpitterSecondaryFamily", SpitterBody.Skills.Bite);
				SpitterBody.SkillFamilies.Special = Utils.CreateSkillFamily("SpitterSpecialFamily", SpitterBody.Skills.ChargedSpit);
				sfList.Add(SpitterBody.SkillFamilies.Primary);
				sfList.Add(SpitterBody.SkillFamilies.Secondary);
				sfList.Add(SpitterBody.SkillFamilies.Special);
				SpitterBody.BodyPrefab = spitterBody.AddBodyComponents(assets.First((GameObject body) => ((Object)body).name == "SpitterBody"), iconLookup["texSpitterIcon"], val4);
				bodyList.Add(SpitterBody.BodyPrefab);
				SpitterMaster.MasterPrefab = new SpitterMaster().AddMasterComponents(assets.First((GameObject master) => ((Object)master).name == "SpitterMaster"), SpitterBody.BodyPrefab);
				masterList.Add(SpitterMaster.MasterPrefab);
				SpitterBody.SpawnCards.cscSpitterDefault = spitterBody.CreateCard("cscSpitterDefault", SpitterMaster.MasterPrefab, SpitterBody.SkinDefs.Default, SpitterBody.BodyPrefab);
				DirectorCard card = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)SpitterBody.SpawnCards.cscSpitterDefault,
					selectionWeight = Spitter.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Spitter.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard = new DirectorCardHolder
				{
					Card = card,
					MonsterCategory = (MonsterCategory)3
				};
				Utils.AddMonsterToStage(Spitter.DefaultStageList.Value, directorCard);
				SpitterBody.SpawnCards.cscSpitterLakes = spitterBody.CreateCard("cscSpitterLakes", SpitterMaster.MasterPrefab, SpitterBody.SkinDefs.Lakes, SpitterBody.BodyPrefab);
				DirectorCard card2 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)SpitterBody.SpawnCards.cscSpitterLakes,
					selectionWeight = Spitter.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Spitter.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard2 = new DirectorCardHolder
				{
					Card = card2,
					MonsterCategory = (MonsterCategory)3
				};
				Utils.AddMonsterToStage(Spitter.LakesStageList.Value, directorCard2);
				SpitterBody.SpawnCards.cscSpitterSulfur = spitterBody.CreateCard("cscSpitterSulfur", SpitterMaster.MasterPrefab, SpitterBody.SkinDefs.Sulfur, SpitterBody.BodyPrefab);
				DirectorCard card3 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)SpitterBody.SpawnCards.cscSpitterSulfur,
					selectionWeight = Spitter.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Spitter.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard3 = new DirectorCardHolder
				{
					Card = card3,
					MonsterCategory = (MonsterCategory)3
				};
				Utils.AddMonsterToStage(Spitter.SulfurStageList.Value, directorCard3);
				SpitterBody.SpawnCards.cscSpitterDepths = spitterBody.CreateCard("cscSpitterDepths", SpitterMaster.MasterPrefab, SpitterBody.SkinDefs.Depths, SpitterBody.BodyPrefab);
				DirectorCard card4 = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)SpitterBody.SpawnCards.cscSpitterDepths,
					selectionWeight = Spitter.SelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = true,
					minimumStageCompletions = Spitter.MinimumStageCompletion.Value
				};
				DirectorCardHolder directorCard4 = new DirectorCardHolder
				{
					Card = card4,
					MonsterCategory = (MonsterCategory)3
				};
				Utils.AddMonsterToStage(Spitter.DepthStageList.Value, directorCard4);
				if (Spitter.HelminthroostReplaceMushrum.Value)
				{
					Helpers.RemoveExistingMonsterFromStage(MonsterNames.MiniMushrum, (Stage)1099511627776L, "");
				}
				stateList.Add(typeof(Bite));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.Spitter.SpawnState));
				stateList.Add(typeof(NormalSpit));
				stateList.Add(typeof(ChargeChargedSpit));
				stateList.Add(typeof(FireChargedSpit));
				stateList.Add(typeof(DeathDance));
				stateList.Add(typeof(SpitterMain));
				stateList.Add(typeof(DeathDancePlayer));
			}
		}

		private void CreateMechanicalSpider(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Dictionary<string, AnimationCurveDef> acdLookup)
		{
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Expected O, but got Unknown
			if (MechanicalSpider.Enabled.Value)
			{
				UnlockableDef val = Utils.CreateUnlockableDef("Logs.MechanicalSpiderBody.0", "ENEMIES_RETURNS_UNLOCKABLE_LOG_MECHANICAL_SPIDER");
				unlockablesList.Add(val);
				MechanicalSpiderStuff mechanicalSpiderStuff = new MechanicalSpiderStuff();
				GameObject val2 = mechanicalSpiderStuff.CreateDoubleShotImpactEffect();
				effectsList.Add(new EffectDef(val2));
				Fire.projectilePrefab = mechanicalSpiderStuff.CreateDoubleShotProjectilePrefab(val2);
				projectilesList.Add(Fire.projectilePrefab);
				ChargeFire.effectPrefab = mechanicalSpiderStuff.CreateDoubleShotChargeEffect();
				MechanicalSpiderEnemyBody mechanicalSpiderEnemyBody = new MechanicalSpiderEnemyBody();
				MechanicalSpiderBodyBase.Skills.DoubleShot = mechanicalSpiderEnemyBody.CreateDoubleShotSkill();
				MechanicalSpiderBodyBase.Skills.Dash = mechanicalSpiderEnemyBody.CreateDashSkill();
				Dash.forwardSpeedCoefficientCurve = acdLookup["acdSpiderDash"].curve;
				sdList.Add(MechanicalSpiderBodyBase.Skills.DoubleShot);
				sdList.Add(MechanicalSpiderBodyBase.Skills.Dash);
				MechanicalSpiderBodyBase.SkillFamilies.Primary = Utils.CreateSkillFamily("MechanicalSpiderPrimaryFamily", MechanicalSpiderBodyBase.Skills.DoubleShot);
				MechanicalSpiderBodyBase.SkillFamilies.Utility = Utils.CreateSkillFamily("MechanicalSpiderUtilityFamily", MechanicalSpiderBodyBase.Skills.Dash);
				sfList.Add(MechanicalSpiderBodyBase.SkillFamilies.Primary);
				sfList.Add(MechanicalSpiderBodyBase.SkillFamilies.Utility);
				CreateMechanicalSpiderEnemy(assets, iconLookup, val, mechanicalSpiderEnemyBody);
				CreateMechanichalSpiderDrone(assets, iconLookup, mechanicalSpiderStuff);
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.MechanicalSpider.MainState));
				stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.MechanicalSpider.SpawnState));
				stateList.Add(typeof(SpawnStateDrone));
				stateList.Add(typeof(VictoryDance));
				stateList.Add(typeof(VictoryDancePlayer));
				stateList.Add(typeof(OpenHatch));
				stateList.Add(typeof(ChargeFire));
				stateList.Add(typeof(Fire));
				stateList.Add(typeof(CloseHatch));
				stateList.Add(typeof(DashStart));
				stateList.Add(typeof(Dash));
				stateList.Add(typeof(DashStop));
				stateList.Add(typeof(DeathInitial));
				stateList.Add(typeof(DeathDrone));
				stateList.Add(typeof(DeathNormal));
			}
		}

		private void CreateMechanichalSpiderDrone(GameObject[] assets, Dictionary<string, Sprite> iconLookup, MechanicalSpiderStuff spiderStuff)
		{
			MechanicalSpiderDroneBody.BodyPrefab = new MechanicalSpiderDroneBody().AddBodyComponents(assets.First((GameObject body) => ((Object)body).name == "MechanicalSpiderDroneBody"), iconLookup["texMechanicalSpiderAllyIcon"]);
			bodyList.Add(MechanicalSpiderDroneBody.BodyPrefab);
			MechanicalSpiderDroneMaster.MasterPrefab = new MechanicalSpiderDroneMaster().AddMasterComponents(assets.First((GameObject master) => ((Object)master).name == "MechanicalSpiderDroneMaster"), MechanicalSpiderDroneBody.BodyPrefab);
			masterList.Add(MechanicalSpiderDroneMaster.MasterPrefab);
			MechanicalSpiderStuff.InteractablePrefab = spiderStuff.CreateInteractable(assets.First((GameObject interactable) => ((Object)interactable).name == "MechanicalSpiderBroken"), MechanicalSpiderDroneMaster.MasterPrefab);
			nopList.Add(MechanicalSpiderStuff.InteractablePrefab);
			MechanicalSpiderStuff.SpawnCards.iscMechanicalSpiderBroken = spiderStuff.CreateInteractableSpawnCard("iscMechanicalSpiderBroken", MechanicalSpiderStuff.InteractablePrefab);
		}

		private void CreateMechanicalSpiderEnemy(GameObject[] assets, Dictionary<string, Sprite> iconLookup, UnlockableDef spiderLog, MechanicalSpiderEnemyBody spiderEnemyBody)
		{
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: 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_00ed: Expected O, but got Unknown
			//IL_00ed: 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_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Expected O, but got Unknown
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Expected O, but got Unknown
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Expected O, but got Unknown
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01db: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Expected O, but got Unknown
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0203: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Expected O, but got Unknown
			MechanicalSpiderEnemyBody.BodyPrefab = spiderEnemyBody.AddBodyComponents(assets.First((GameObject body) => ((Object)body).name == "MechanicalSpiderBody"), iconLookup["texMechanicalSpiderEnemyIcon"], spiderLog);
			bodyList.Add(MechanicalSpiderEnemyBody.BodyPrefab);
			MechanicalSpiderEnemyMaster.MasterPrefab = new MechanicalSpiderEnemyMaster().AddMasterComponents(assets.First((GameObject master) => ((Object)master).name == "MechanicalSpiderMaster"), MechanicalSpiderEnemyBody.BodyPrefab);
			masterList.Add(MechanicalSpiderEnemyMaster.MasterPrefab);
			MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderDefault = spiderEnemyBody.CreateCard("cscMechanicalSpeiderDefault", MechanicalSpiderEnemyMaster.MasterPrefab);
			DirectorCard card = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderDefault,
				selectionWeight = MechanicalSpider.SelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = true,
				minimumStageCompletions = MechanicalSpider.MinimumStageCompletion.Value
			};
			DirectorCardHolder directorCard = new DirectorCardHolder
			{
				Card = card,
				MonsterCategory = (MonsterCategory)2
			};
			Utils.AddMonsterToStage(MechanicalSpider.DefaultStageList.Value, directorCard);
			MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderGrassy = spiderEnemyBody.CreateCard("cscMechanicalSpiderGrassy", MechanicalSpiderEnemyMaster.MasterPrefab, MechanicalSpiderEnemyBody.SkinDefs.Grassy, MechanicalSpiderEnemyMaster.MasterPrefab);
			DirectorCard card2 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderGrassy,
				selectionWeight = MechanicalSpider.SelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = true,
				minimumStageCompletions = MechanicalSpider.MinimumStageCompletion.Value
			};
			DirectorCardHolder directorCard2 = new DirectorCardHolder
			{
				Card = card2,
				MonsterCategory = (MonsterCategory)2
			};
			Utils.AddMonsterToStage(MechanicalSpider.GrassyStageList.Value, directorCard2);
			MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderSnowy = spiderEnemyBody.CreateCard("cscMechanicalSpiderSnowy", MechanicalSpiderEnemyMaster.MasterPrefab, MechanicalSpiderEnemyBody.SkinDefs.Snowy, MechanicalSpiderEnemyMaster.MasterPrefab);
			DirectorCard card3 = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)MechanicalSpiderEnemyBody.SpawnCards.cscMechanicalSpiderSnowy,
				selectionWeight = MechanicalSpider.SelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = true,
				minimumStageCompletions = MechanicalSpider.MinimumStageCompletion.Value
			};
			DirectorCardHolder directorCard3 = new DirectorCardHolder
			{
				Card = card3,
				MonsterCategory = (MonsterCategory)2
			};
			Utils.AddMonsterToStage(MechanicalSpider.SnowyStageList.Value, directorCard3);
		}

		private void CreateLynxTribe(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Dictionary<string, AnimationCurveDef> acdLookup, Dictionary<string, Texture2D> rampLookups)
		{
			if (LynxTotem.Enabled.Value || LynxShaman.Enabled.Value)
			{
				CreateLynxStorm(assets, acdLookup);
			}
			if (LynxShaman.Enabled.Value)
			{
				CreateLynxShaman(assets, iconLookup, acdLookup, rampLookups);
			}
			if (LynxTotem.Enabled.Value)
			{
				ExplicitPickupDropTable dtLynxTotem = CreateLynxTotemItem(assets, iconLookup);
				CreateLynxScout(assets, iconLookup);
				CreateLynxHunter(assets, iconLookup);
				CreateLynxArcher(assets, iconLookup, rampLookups);
				CreateLynxTotem(assets, iconLookup, acdLookup, dtLynxTotem);
				Utils.AddMonsterFamilyToStage(LynxTotem.DefaultStageList.Value, new LynxTribeStuff().CreateLynxTribeFamily());
				if (LynxStuff.LynxShrineEnabled.Value)
				{
					CreateLynxShrine(assets);
				}
				if (LynxStuff.LynxTrapEnabled.Value)
				{
					CreateLynxTrap(assets);
				}
			}
		}

		public void CreateLynxTrap(GameObject[] assets)
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Unknown result type (might be due to invalid IL or missing references)
			//IL_034a: Expected O, but got Unknown
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			//IL_034f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0357: Unknown result type (might be due to invalid IL or missing references)
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0362: Unknown result type (might be due to invalid IL or missing references)
			//IL_0369: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Expected O, but got Unknown
			LynxTribeStuff lynxTribeStuff = new LynxTribeStuff();
			NetworkSoundEventDef item = Utils.CreateNetworkSoundDef("ER_LynxTrap_SnapTwig_Play");
			nseList.Add(item);
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/lemuriantemple/Assets/LTFallenLeaf.spm").WaitForCompletion();
			Material material = ((Renderer)((Component)val.transform.Find("LTFallenLeaf_LOD0")).GetComponent<MeshRenderer>()).material;
			GameObject val2 = assets.First((GameObject prefab) => ((Object)prefab).name == "LynxTrapPrefab");
			string[] array = LynxTotem.DefaultStageList.Value.Split(",");
			foreach (string text in array)
			{
				string text2 = string.Join("", text.Split((string[]?)null, StringSplitOptions.RemoveEmptyEntries));
				GameObject trapPrefab = PrefabAPI.InstantiateClone(val2, ((Object)val2).name + text2, false);
				switch (text2)
				{
				case "blackbeach":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("SkyMeadowLeaves_LOD0", lynxTribeStuff.CreateBlackBeachLeavesMaterialLOD0, material));
					break;
				case "skymeadow":
				case "itskymeadow":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("SkyMeadowLeaves_LOD0", lynxTribeStuff.CreateSkyMeadowLeavesMaterialLOD0, material));
					break;
				case "village":
				case "villagenight":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("ShatteredAbodesLeaves_LOD0", lynxTribeStuff.CreateShatteredAbodesLeavesMaterialLOD0, material));
					break;
				case "golemplains":
				case "itgolemplains":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("TitanicPlainsLeaves_LOD0", lynxTribeStuff.CreateTitanicPlanesLeavesMaterialLOD0, material));
					break;
				case "foggyswamp":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("WetlandsLeaves_LOD0", lynxTribeStuff.CreateWetlandsLeavesMaterialLOD0, material));
					break;
				case "habitatfall":
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, GetOrCreateMaterial("GoldenDiebackLeaves_LOD0", lynxTribeStuff.CreateGoldemDiebackLeavesMaterialLOD0, material));
					break;
				default:
					trapPrefab = lynxTribeStuff.CreateTrapPrefab(trapPrefab, val, material);
					break;
				}
				InteractableSpawnCard spawnCard = lynxTribeStuff.CreateLynxTrapSpawnCard(trapPrefab, text2);
				DirectorCard card = new DirectorCard
				{
					spawnCard = (SpawnCard)(object)spawnCard,
					selectionWeight = LynxStuff.LynxTrapSelectionWeight.Value,
					spawnDistance = (MonsterSpawnDistance)0,
					preventOverhead = false
				};
				Helpers.AddNewInteractableToStage(new DirectorCardHolder
				{
					Card = card,
					InteractableCategory = LynxStuff.LynxTrapSpawnCategory.Value
				}, DirectorAPI.ParseInternalStageName(text2), text2);
				nopList.Add(trapPrefab);
			}
		}

		public void CreateLynxShrine(GameObject[] assets)
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			LynxTribeStuff lynxTribeStuff = new LynxTribeStuff();
			Retreat.retreatEffectPrefab = lynxTribeStuff.CreateRetreatEffect(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxTribeRetreatEffect"));
			effectsList.Add(new EffectDef(Retreat.retreatEffectPrefab));
			LynxTribeStuff.CustomHologramContent = lynxTribeStuff.CustomCostHologramContentPrefab();
			GameObject val = lynxTribeStuff.CreateShrineUseEffect();
			effectsList.Add(new EffectDef(val));
			NetworkSoundEventDef val2 = Utils.CreateNetworkSoundDef("ER_Lynx_Shrine_Failure_Play");
			nseList.Add(val2);
			NetworkSoundEventDef val3 = Utils.CreateNetworkSoundDef("ER_Lynx_Shrine_Success_Play");
			nseList.Add(val3);
			GameObject val4 = lynxTribeStuff.CreateShrinePrefab(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxShrinePrefab"), val, val2, val3);
			GameObject val5 = lynxTribeStuff.CreateShrinePrefab(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxShrinePrefab2"), val, val2, val3);
			GameObject val6 = lynxTribeStuff.CreateShrinePrefab(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxShrinePrefab3"), val, val2, val3);
			DirectorCardHolder val7 = CreateCardHolderLynxShrine(val4, "1");
			DirectorCardHolder val8 = CreateCardHolderLynxShrine(val5, "2");
			DirectorCardHolder val9 = CreateCardHolderLynxShrine(val6, "3");
			string[] array = LynxTotem.DefaultStageList.Value.Split(",");
			foreach (string text in array)
			{
				string text2 = string.Join("", text.Split((string[]?)null, StringSplitOptions.RemoveEmptyEntries));
				DirectorCardHolder val10;
				switch (text2)
				{
				case "blackbeach":
				case "skymeadow":
				case "itskymeadow":
					val10 = val7;
					break;
				case "village":
				case "villagenight":
				case "golemplains":
				case "itgolemplains":
					val10 = val8;
					break;
				default:
					val10 = val9;
					break;
				}
				Helpers.AddNewInteractableToStage(val10, DirectorAPI.ParseInternalStageName(text2), text2);
			}
			stateList.Add(typeof(Retreat));
			nopList.Add(val4);
			nopList.Add(val5);
			nopList.Add(val6);
		}

		private DirectorCardHolder CreateCardHolderLynxShrine(GameObject lynxShrine1, string suffix)
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: 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_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_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_0092: Expected O, but got Unknown
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Expected O, but got Unknown
			InteractableSpawnCard val = ScriptableObject.CreateInstance<InteractableSpawnCard>();
			((Object)val).name = "iscLynxShrine" + suffix;
			((SpawnCard)val).prefab = lynxShrine1;
			((SpawnCard)val).sendOverNetwork = true;
			((SpawnCard)val).hullSize = (HullClassification)1;
			((SpawnCard)val).nodeGraphType = (GraphType)0;
			((SpawnCard)val).requiredFlags = (NodeFlags)0;
			((SpawnCard)val).forbiddenFlags = (NodeFlags)20;
			((SpawnCard)val).directorCreditCost = LynxStuff.LynxShrineDirectorCost.Value;
			((SpawnCard)val).occupyPosition = true;
			((SpawnCard)val).eliteRules = (EliteRules)0;
			val.orientToFloor = false;
			DirectorCard card = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)val,
				selectionWeight = LynxStuff.LynxShrineSelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = false
			};
			return new DirectorCardHolder
			{
				Card = card,
				InteractableCategory = LynxStuff.LynxShrineSpawnCategory.Value
			};
		}

		public void CreateLynxArcher(GameObject[] assets, Dictionary<string, Sprite> iconLookup, Dictionary<string, Texture2D> rampLookups)
		{
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected O, but got Unknown
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: 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_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Expected O, but got Unknown
			ArcherStuff archerStuff = new ArcherStuff();
			Material orCreateMaterial = GetOrCreateMaterial("matLynxArcherArrow", archerStuff.CreateArcherArrowMaterial);
			FireArrow.projectilePrefab = archerStuff.CreateArrowProjectile(assets.First((GameObject prefab) => ((Object)prefab).name == "ArrowProjectile"), archerStuff.CreateArrowProjectileGhost(assets.First((GameObject prefab) => ((Object)prefab).name == "ArrowProjectileGhost"), orCreateMaterial), archerStuff.CreateArrowImpalePrefab(assets.First((GameObject prefab) => ((Object)prefab).name == "ArrowProjectileGhost"), orCreateMaterial), archerStuff.CreateArrowLoopSoundDef());
			projectilesList.Add(FireArrow.projectilePrefab);
			ArcherBody archerBody = new ArcherBody();
			ArcherBody.Skills.Shot = archerBody.CreateShotSkill();
			sdList.Add(ArcherBody.Skills.Shot);
			ArcherBody.SkillFamilies.Primary = Utils.CreateSkillFamily("LynxArcherPrimarySkillFamily", ArcherBody.Skills.Shot);
			sfList.Add(ArcherBody.SkillFamilies.Primary);
			ArcherBody.BodyPrefab = archerBody.AddBodyComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxArcherBody"), iconLookup["texLynxArcherIcon"]);
			bodyList.Add(ArcherBody.BodyPrefab);
			ArcherMaster.MasterPrefab = new ArcherMaster().AddMasterComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxArcherMaster"), ArcherBody.BodyPrefab);
			masterList.Add(ArcherMaster.MasterPrefab);
			ArcherBody.SpawnCards.cscLynxArcherDefault = archerBody.CreateCard("cscLynxArcherDefault", ArcherMaster.MasterPrefab, ArcherBody.SkinDefs.Default, ArcherBody.BodyPrefab);
			DirectorCard card = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)ArcherBody.SpawnCards.cscLynxArcherDefault,
				selectionWeight = LynxArcher.SelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = true,
				minimumStageCompletions = 0
			};
			DirectorCardHolder directorCard = new DirectorCardHolder
			{
				Card = card,
				MonsterCategory = (MonsterCategory)2
			};
			Utils.AddMonsterToStage(DirectorAPI.ToInternalStageName((Stage)4096), directorCard);
			SpawnCard cscLynxArcherDefault = (SpawnCard)(object)ArcherBody.SpawnCards.cscLynxArcherDefault;
			ArrayUtils.ArrayAppend<SpawnCard>(ref SummonTribe.spawnCards, ref cscLynxArcherDefault);
			ArcherBodyAlly archerBodyAlly = new ArcherBodyAlly();
			ArcherBodyAlly.LynxArcherDamage = archerBodyAlly.CreateDamageBuffDef(iconLookup["texLynxArcherBuff"]);
			bdList.Add(ArcherBodyAlly.LynxArcherDamage);
			ArcherBodyAlly.BodyPrefab = archerBodyAlly.AddBodyComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxArcherAllyBody"), iconLookup["texArcherAllyIcon"]);
			bodyList.Add(ArcherBodyAlly.BodyPrefab);
			ArcherMasterAlly.MasterPrefab = new ArcherMasterAlly().AddMasterComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxArcherAllyMaster"), ArcherBodyAlly.BodyPrefab);
			masterList.Add(ArcherMasterAlly.MasterPrefab);
			ArcherBodyAlly.SpawnCards.cscLynxArcherAlly = archerBodyAlly.CreateCard("cscLynxArcherAlly", ArcherMasterAlly.MasterPrefab, ArcherBodyAlly.SkinDefs.Ally, ArcherBodyAlly.BodyPrefab);
			stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.LynxTribe.Archer.SpawnState));
			stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.LynxTribe.Archer.MainState));
			stateList.Add(typeof(FireArrow));
			stateList.Add(typeof(EnemiesReturns.ModdedEntityStates.LynxTribe.Archer.DeathState));
			stateList.Add(typeof(GuitarEmotePlayer));
		}

		public void CreateLynxHunter(GameObject[] assets, Dictionary<string, Sprite> iconLookup)
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Expected O, but got Unknown
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: 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_01ed: Expected O, but got Unknown
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0202: Expected O, but got Unknown
			HunterStuff hunterStuff = new HunterStuff();
			GameObject val = (FireLunge.wooshEffect = (Stab.wooshEffect = hunterStuff.CreateHunterAttackEffect(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxHunterAttackEffect"))));
			effectsList.Add(new EffectDef(val));
			FireLunge.slideEffectPrefab = hunterStuff.CreateLungeSlideEffect();
			effectsList.Add(new EffectDef(FireLunge.slideEffectPrefab));
			GameObject val2 = (FireLunge.coneEffect = (Stab.coneEffect = hunterStuff.CreateHunterAttackSpearTipEffect(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxHunterSpearTipEffect"))));
			effectsList.Add(new EffectDef(val2));
			HunterBody hunterBody = new HunterBody();
			HunterBody.Skills.Stab = hunterBody.CreateStabSkill();
			sdList.Add(HunterBody.Skills.Stab);
			HunterBody.SkillFamilies.Primary = Utils.CreateSkillFamily("LynxHunterPrimarySkillFamily", HunterBody.Skills.Stab);
			sfList.Add(HunterBody.SkillFamilies.Primary);
			HunterBody.BodyPrefab = hunterBody.AddBodyComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxHunterBody"), iconLookup["texLynxHunterIcon"]);
			bodyList.Add(HunterBody.BodyPrefab);
			HunterMaster.MasterPrefab = new HunterMaster().AddMasterComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "LynxHunterMaster"), HunterBody.BodyPrefab);
			masterList.Add(HunterMaster.MasterPrefab);
			HunterBody.SpawnCards.cscLynxHunterDefault = hunterBody.CreateCard("cscLynxHunterDefault", HunterMaster.MasterPrefab, HunterBody.SkinDefs.Default, HunterBody.BodyPrefab);
			DirectorCard card = new DirectorCard
			{
				spawnCard = (SpawnCard)(object)HunterBody.SpawnCards.cscLynxHunterDefault,
				selectionWeight = LynxHunter.SelectionWeight.Value,
				spawnDistance = (MonsterSpawnDistance)0,
				preventOverhead = true,
				minimumStageCompletions = 0
			};
			DirectorCardHolder directorCard = new DirectorCardHolder
			{
				Card = card,
				MonsterCategory = (MonsterCategory)2
			};
			Utils.AddMonsterToStage(DirectorAPI.ToInternalStageName((Stage)4096), directorCard);
			SpawnCard cscLynxHunterDefault = (SpawnCard)(object)HunterBody.SpawnCards.cscLynxHunterDefault;
			ArrayUtils.ArrayAppend<SpawnCard>(ref SummonTribe.spawnCards, ref cscLynxHunterDefault);
			HunterBodyAlly hunterBodyAlly = new HunterBodyAlly();
			HunterBodyAlly.LynxHunterArmor = hunterBodyAlly.CreateArmorBuffDef(iconLookup["texLynxHunterBuff"]);
			bdList.Add(HunterBodyAlly.LynxHunterArmor);
			HunterBodyAlly.BodyPrefab = hunterBodyAlly.AddBodyComponents(assets.First((GameObject prefab) => ((Object)prefab).name == "