Decompiled source of Monsters of Kali v1.0.1

KalisMonsters.dll

Decompiled 10 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using SpawnThat.Spawners;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("KalisMonsters")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KalisMonsters")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("41fc00f3-a7f4-4b05-9bd0-042a0869bd76")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
[RequireComponent(typeof(Character))]
public class BossStage_BossObject_KM : MonoBehaviour
{
	public StatusEffect m_bossStatusEffect;

	private Character m_character;

	private int m_statusEffectHash;

	private bool hasEffect;

	private float getHealthPercent;

	private float getMaxHealth;

	private string thisEffect;

	private void Start()
	{
	}

	public void Setup(Character character)
	{
		m_character = character;
	}

	private void Awake()
	{
		m_character = ((Component)this).GetComponent<Character>();
		if (!Object.op_Implicit((Object)(object)m_character))
		{
			return;
		}
		thisEffect = ((Object)m_bossStatusEffect).name.ToString() ?? "";
		hasEffect = m_character.GetSEMan().HaveStatusEffect(thisEffect);
		getHealthPercent = m_character.GetHealthPercentage();
		getMaxHealth = m_character.GetMaxHealth();
		if (!hasEffect)
		{
			m_statusEffectHash = ((object)m_bossStatusEffect).GetHashCode();
			m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, 0, 0f);
			if (getHealthPercent <= 1f)
			{
				m_character.Heal(getMaxHealth, true);
			}
		}
	}
}
public class ParticleCollision_SpawnAoE : MonoBehaviour
{
	public GameObject[] EffectsOnCollision;

	public float DestroyTimeDelay = 5f;

	public bool UseWorldSpacePosition;

	public float Offset = 0f;

	public Vector3 rotationOffset = new Vector3(0f, 0f, 0f);

	public bool useOnlyRotationOffset = true;

	public bool UseFirePointRotation;

	public bool DestoyMainEffect = false;

	private ParticleSystem part;

	private List<ParticleCollisionEvent> collisionEvents = new List<ParticleCollisionEvent>();

	private ParticleSystem ps;

	private void Start()
	{
		part = ((Component)this).GetComponent<ParticleSystem>();
	}

	private void OnParticleCollision(GameObject other)
	{
		//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)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: 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_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Unknown result type (might be due to invalid IL or missing references)
		//IL_016d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0172: Unknown result type (might be due to invalid IL or missing references)
		//IL_0176: Unknown result type (might be due to invalid IL or missing references)
		//IL_017b: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0194: Unknown result type (might be due to invalid IL or missing references)
		//IL_0199: Unknown result type (might be due to invalid IL or missing references)
		//IL_019e: 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_013b: Unknown result type (might be due to invalid IL or missing references)
		int num = ParticlePhysicsExtensions.GetCollisionEvents(part, other, collisionEvents);
		for (int i = 0; i < num; i++)
		{
			GameObject[] effectsOnCollision = EffectsOnCollision;
			foreach (GameObject val in effectsOnCollision)
			{
				ParticleCollisionEvent val2 = collisionEvents[i];
				Vector3 intersection = ((ParticleCollisionEvent)(ref val2)).intersection;
				val2 = collisionEvents[i];
				GameObject val3 = Object.Instantiate<GameObject>(val, intersection + ((ParticleCollisionEvent)(ref val2)).normal * Offset, default(Quaternion));
				Aoe component = val3.gameObject.GetComponent<Aoe>();
				if (Object.op_Implicit((Object)(object)component))
				{
					val3.gameObject.GetComponent<Aoe>().m_ignorePVP = false;
					val3.gameObject.GetComponent<Aoe>().m_hitFriendly = true;
				}
				if (!UseWorldSpacePosition)
				{
					val3.transform.parent = ((Component)this).transform;
				}
				if (UseFirePointRotation)
				{
					val3.transform.LookAt(((Component)this).transform.position);
					continue;
				}
				if (rotationOffset != Vector3.zero && useOnlyRotationOffset)
				{
					val3.transform.rotation = Quaternion.Euler(rotationOffset);
					continue;
				}
				Transform transform = val3.transform;
				val2 = collisionEvents[i];
				Vector3 intersection2 = ((ParticleCollisionEvent)(ref val2)).intersection;
				val2 = collisionEvents[i];
				transform.LookAt(intersection2 + ((ParticleCollisionEvent)(ref val2)).normal);
				Transform transform2 = val3.transform;
				transform2.rotation *= Quaternion.Euler(rotationOffset);
			}
		}
		if (DestoyMainEffect)
		{
			Object.Destroy((Object)(object)((Component)this).gameObject, DestroyTimeDelay + 0.5f);
		}
	}
}
namespace KalisMonsters
{
	[BepInPlugin("horemvore.KaliMonsters", "Kali Monsters", "1.0.1")]
	[BepInIncompatibility("Azumatt.AzuDevMod")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	internal class KalisMonstersBundle : BaseUnityPlugin
	{
		public const string PluginGUID = "horemvore.KaliMonsters";

		public const string PluginName = "Kali Monsters";

		public const string PluginVersion = "1.0.1";

		public static bool isModded = true;

		public AssetBundle FrogAssets;

		public ConfigEntry<bool> ModEnable;

		public ConfigEntry<bool> BossEnable;

		public ConfigEntry<bool> LoggingEnable;

		public string[] itemList = new string[67]
		{
			"Item_PotionRedMedium_FM", "Item_PotionTeal_FM", "Item_PotionTealTall_FM", "Item_PotionRedTall_FM", "Item_PotionBlue_FM", "Item_PotionRed_FM", "Item_Scales_FM", "Item_Sandglass_FM", "Item_Retort_FM", "Item_FlaskPropTall_FM",
			"Item_FlaskPropSmall_FM", "Item_FlaskPropSide_FM", "Item_FrogLegMeat_FM", "Item_DestanySummon_FM", "Item_TranslationStone_FM", "Item_UsciasSummon_FM", "Item_AztecMask_FM", "Item_KnightMask_FM", "Item_TotemMask_FM", "Item_ChineseMask_FM",
			"Item_VoodooMask_FM", "Item_DeathMask_FM", "Item_JesterMask_FM", "Item_ClownMask_FM", "Item_BronzeMask_FM", "Item_SciFiMask_FM", "Item_AlienMask_FM", "Item_UndeadMask_FM", "Attack_WyrmPlains_Bite_FM", "Attack_WyrmPlains_Claw_FM",
			"Attack_WyrmPlains_Spit_FM", "Attack_PlainsInsect_Claw_FM", "Attack_PlainsInsect_Double_FM", "Attack_PlainsInsect_Spit_FM", "Attack_MistlandsBossFrog_Tongue_FM", "Attack_MistlandsBossFrog_Spit_FM", "Attack_MistlandsBossFrog_Jump_FM", "Attack_MistlandsBossFrog_AoE_FM", "Attack_MistlandsBossFrog_BouncingBall_FM", "Attack_MistlandsBossFrog_Rumble_FM",
			"Attack_SwampFrog_Tongue_FM", "Attack_SwampFrog_Spit_FM", "Attack_SwampFrog_Jump_FM", "Attack_PlainsFrog_Tongue_FM", "Attack_PlainsFrog_Spit_FM", "Attack_PlainsFrog_Jump_FM", "Attack_AshLandsFrog_Jump_FM", "Attack_AshLandsFrog_Spit_FM", "Attack_AshLandsFrog_Tongue_FM", "Attack_DeepNorthFrog_Tongue_FM",
			"Attack_DeepNorthFrog_Spit_FM", "Attack_DeepNorthFrog_Jump_FM", "Attack_BeetleMeadows_Fly_FM", "Attack_BeetleMeadows_Ground_FM", "Attack_WyrmSwamp_Bite_FM", "Attack_WyrmSwamp_Claw_FM", "Attack_WyrmSwamp_Spit_FM", "Attack_ForestBossFrog_Tongue_FM", "Attack_ForestBossFrog_Spit_FM", "Attack_ForestBossFrog_Jump_FM",
			"Attack_PantherGuard_Bite_FM", "Attack_PantherGuard_Claw_FM", "Attack_ForestBossFrog_AoE_FM", "Attack_ForestBossFrog_Roots_FM", "Attack_ForestBossFrog_RootSummon_FM", "Attack_ForestBossFrog_PoisonRain_FM", "Attack_ForestBossFrog_PoisonFog_FM"
		};

		public string[] ragdollList = new string[10] { "Ragdoll_Wyrm_Plains_FM", "Ragdoll_InsectPlains_FM", "Ragdoll_ForestBossFrog_FM", "Ragdoll_PantherGuard_FM", "Ragdoll_SwampFrog_FM", "Ragdoll_PlainsFrog_FM", "Ragdoll_AshLandsFrog_FM", "Ragdoll_DeepNorthFrog_FM", "Ragdoll_BeetleMeadows_FM", "Ragdoll_Wyrm_Swamp_FM" };

		public string[] sfxList = new string[24]
		{
			"SFX_FrogAlert_FM", "SFX_FrogDeath_FM", "SFX_FrogIdle_FM", "SFX_FrogJump_FM", "SFX_FrogJumpAttack_FM", "SFX_FrogSpitHit_FM", "SFX_FrogSpitHitFire_FM", "SFX_FrogSpitHitFrost_FM", "SFX_FrogTongueHit_FM", "SFX_InsectAlert_FM",
			"SFX_InsectAttack_FM", "SFX_InsectDeath_FM", "SFX_InsectIdle_FM", "SFX_PantherAlert_FM", "SFX_PantherDeath_FM", "SFX_PantherHit_FM", "SFX_PantherIdle_FM", "SFX_PantherWakeup_FM", "SFX_WyrmAlert_FM", "SFX_WyrmAttack_FM",
			"SFX_WyrmDeath_FM", "SFX_WyrmHit_FM", "SFX_WyrmIdle_FM", "SFX_WyrmWakeup_FM"
		};

		public string[] musicList = new string[2] { "BlackForestBoss_LocationMusic_FM", "MistlandsBoss_LocationMusic_FM" };

		public string[] prefabList = new string[30]
		{
			"Pickable_TotemElder_FM", "Environment_Envoy_FM", "Envoy_Trader_FM", "Spawner_BeetleMeadows_FM", "Spawner_PantherGuard_FM", "Spawner_InsectPlains_FM", "Spawner_WyrmPlains_FM", "Projectile_FrogSpit_FM", "Projectile_FrogSpitFire_FM", "Projectile_FrogSpitFrost_FM",
			"Projectile_WyrmSwamp_Spit_FM", "Projectile_InsectSpitFire_FM", "VFX_FrogSpitHit_FM", "VFX_FrogJump_AttackFire_FM", "VFX_FrogSpitHitFire_FM", "VFX_FrogSpitHitFrost_FM", "VFX_FrogJump_AttackFrost_FM", "VFX_Frogboss_S3_Destroy_KM", "VFX_Frogboss_S3_Hit_KM", "Spawn_Roots_FM",
			"AoE_MistlandsFrogBoss_Rumble_FM", "AoE_BouncingBall_FM", "AoE_BouncingBall_Hit_FM", "AoE_FrogBossMistlands_FM", "AoE_PoisonRainBossHit_FM", "AoE_PoisonRainBoss_FM", "AoE_PosionFogBoss_FM", "AoE_FrogBoss_S1_KM", "AoE_FrogBoss_S3_KM", "AoE_FrogBoss_FM"
		};

		public string[] aoeAudioFix = new string[1] { "AoE_MistlandsFrogBoss_Rumble_FM" };

		public CustomLocalization LocalFM;

		public void CreateConfigurationValues()
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Expected O, but got Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			try
			{
				((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
				ModEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("0 Frog Monsters", "Enable", true, new ConfigDescription("Admin only, Enables this mod", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				BossEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1 Boss Locations, Runestones and Vegvisirs", "Enable", true, new ConfigDescription("Admin only, Enables Uscias and Destany locations, works on World Generation, with a mod like Upgrade World or the vanilla console command: genloc", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				LoggingEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("2 Logging", "Enable", true, new ConfigDescription("Admin only, Enables logging", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
				{
					IsAdminOnly = true
				} }));
				SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr)
				{
					if (attr.InitialSynchronization)
					{
						Logger.LogMessage((object)"Initial Config sync event received for Frog Monster's");
					}
					else
					{
						Logger.LogMessage((object)"Config sync event received for Frog Monster's");
					}
				};
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding configuration values: {arg}");
			}
		}

		private void Awake()
		{
			CreateConfigurationValues();
			if (ModEnable.Value)
			{
				AddLocalization();
				LoadBundle();
				AddStatusEffects();
				AddPrefabs();
				AddRagdolls();
				AddSFX();
				AddMusic();
				AddItems();
				AddFrogMonsters();
				AddBeetleMonsters();
				AddWyrmMonsters();
				AddInsectMonsters();
				AddPantherMonsters();
				AddSummonMonsters();
				ZoneManager.OnVanillaLocationsAvailable += AddLocations;
				if (BossEnable.Value)
				{
					AddFrogBosses();
					ZoneManager.OnVanillaLocationsAvailable += AddFrogLocations;
					PrefabManager.OnPrefabsRegistered += AddBossDrops;
				}
				PrefabManager.OnVanillaPrefabsAvailable += FixSFX;
				PrefabManager.OnVanillaPrefabsAvailable += FixMusic;
				PrefabManager.OnVanillaPrefabsAvailable += FixAoEAudio;
				SpawnerConfigurationManager.OnConfigure += ConfigureBiomeSpawners;
			}
		}

		public void AddLocalization()
		{
			try
			{
				LocalFM = LocalizationManager.Instance.GetLocalization();
				CustomLocalization localFM = LocalFM;
				string text = "English";
				localFM.AddTranslation(ref text, new Dictionary<string, string>
				{
					{ "piece_runstone_uscais_fm", "Uscais" },
					{ "piece_runstone_destany_fm", "Destany" },
					{ "vegvisir_destany_fm", "<size=20><color=#b25e4b>Group Encounter:</color></size>" },
					{ "enemy_tentaroot_fm", "Fentaroot" },
					{ "item_summonmistlandsboss_fm", "Voodoo Totem" },
					{ "item_summonmistlandsboss_desc_fm", "This is required to summon Destany" },
					{ "prop_destanysummoningbowl_name_fm", "<size=20><color=#b2924b>Forever Eye</color></size>" },
					{ "prop_destanysummoningbowl_use_fm", "<color=orange>Destany</color> requires Voodoo Totems\n<size=20><color=#b25e4b>Group Encounter</color></size>\nType: <color=#4b9fb2>3 to 5 Man</color>\nDifficulty Tier: <color=blue>Mistlands</color>" },
					{ "npc_envoy_alreadyhave1_fm", "You have already given me that." },
					{ "npc_envoy_alreadyhave2_fm", "Keep it. I have no use for that." },
					{ "npc_envoy_alreadyhave3_fm", "I do not need that, I already have one." },
					{ "npc_envoy_foundquestitem_fm", "You have a Translation Stone! My, My this will make things easier! I am a collector of unusal artifacts and I am interested in anything unusal you find in this god forsaken land." },
					{ "npc_envoy_found1_fm", "That one must have been a challenge, but you won't regret it! You should check out my Wares!" },
					{ "npc_envoy_random1_fm", "\tThanks for the help, I really appreciate it." },
					{ "npc_envoy_anyrandom1_fm", "There are rumours about you, you know? I wonder if they match reality." },
					{ "npc_envoy_talk1_fm", "Sebblshld jnjl iepbi hrni jnvrh" },
					{ "npc_envoy_talk2_fm", "Iepbi mgl hrl clo he naaeghmbnho" },
					{ "npc_envoy_talk3_fm", "Iepbi zeg fglmczmih, iepbi zeg dnjjlg" },
					{ "npc_envoy_talk4_fm", "Mbmoi aegl iepbi, mbmoi ve zlhsr" },
					{ "npc_envoy_talk5_fm", "Zlld rna hrni iepb, zlld rna hrmh iepb" },
					{ "npc_envoy_greet1_fm", "Veed dmo" },
					{ "npc_envoy_greet2_fm", "Rlbbe ihgmjvlg" },
					{ "npc_envoy_bye1_fm", "Flvejl" },
					{ "npc_envoy_bye2_fm", "Vlh beih" },
					{ "npc_envoy_trade1_fm", "Rmh de oep mjh?" },
					{ "npc_envoy_trade2_fm", "Oep mjh ieal nhlai?" },
					{ "npc_envoy_buy1_fm", "Vnwl al oepg fbeed!" },
					{ "npc_envoy_buy2_fm", "N nbb rmwl oepg iepb!" },
					{ "npc_envoy_sell1_fm", "Fbeed ni hrl wgnsl!" },
					{ "npc_envoy_sell2_fm", "Oep el al oepg iepb!" },
					{ "npc_envoy_fm", "Envoy" },
					{ "item_prop_desc_fm", "This is a household prop." },
					{ "item_flasksmall_fm", "Small Flask" },
					{ "item_flaskside_fm", "Flask" },
					{ "item_flasktall_fm", "Tall Flask" },
					{ "item_retort_fm", "Retort" },
					{ "item_sandglass_fm", "Sandglass" },
					{ "item_scales_fm", "Scales" },
					{ "item_potionblue_fm", "Blue Potion" },
					{ "item_potionred_fm", "Red Potion" },
					{ "item_potionredmedium_fm", "Red Flask" },
					{ "item_potionredtall_fm", "Tall Red Potion" },
					{ "item_potionteal_fm", "Teal Flask" },
					{ "item_potiontealtall_fm", "Teal Potion" },
					{ "item_translationstone_fm", "Demonic Translation Stone" },
					{ "item_translationstone_desc_fm", "Envoy will be interested in this" },
					{ "item_alienmask_fm", "Alien Mask" },
					{ "item_aztecmask_fm", "Aztec Mask" },
					{ "item_bronzemask_fm", "Statue Mask" },
					{ "item_chinesemask_fm", "Dragon Mask" },
					{ "item_clownmask_fm", "Clown Mask" },
					{ "item_deathmask_fm", "Death Mask" },
					{ "item_jestermask_fm", "Jester Mask" },
					{ "item_knightmask_fm", "Knight Mask" },
					{ "item_scifimask_fm", "Space Mask" },
					{ "item_totemmask_fm", "Totem Mask" },
					{ "item_undeadmask_fm", "Undead Mask" },
					{ "item_voodoomask_fm", "Voodoo Mask" },
					{ "item_mask_desc_fm", "A Mask of unknown origin" },
					{ "lore_destany_lable_fm", "Geremlins ate all the words" },
					{ "lore_destany_text_fm", "Geremlins ate all the words" },
					{ "lore_uscais_lable_fm", "Behind the mask, gaze eyes of old, \nHidden under canopies foretold. \nHis terror lurks with stoney face, \nSpare yourself from his deathly grace." },
					{ "effect_meadowsboss_stages_km", "Boss Fight" },
					{ "effect_meadowsboss_stages_tooltip_km", "Four Stage Boss Fight" },
					{ "prop_usciassummoningbowl_name_fm", "<size=20><color=#b2924b>Forever Eye</color></size>" },
					{ "prop_usciassummoningbowl_use_fm", "<color=orange>Uscias The Forgotten</color> requires Elder Totems\n<size=20><color=#b25e4b>Group Encounter</color></size>\nType: <color=#4b9fb2>3 to 5 Man</color>\nDifficulty Tier: <color=blue>Mountain</color>" },
					{ "item_summonforestboss_fm", "Elder Totem" },
					{ "item_summonforestboss_desc_fm", "This is required to summon Uscias" },
					{ "vegvisir_uscias_mp", "<size=20><color=#b25e4b>Group Encounter:</color></size>" },
					{ "location_uscias_mp", "Uscias The Forgotten" },
					{ "enemy_insectplains_fm", "Insect" },
					{ "enemy_wyrmplains_fm", "Fire Wyrm" },
					{ "enemy_wyrm_fm", "Wyrm" },
					{ "enemy_beetle_fm", "Beetle" },
					{ "enemy_pantherguard_fm", "Mitsuru" },
					{ "enemy_deepnorthfrog_fm", "Lip-rhilosh" },
					{ "enemy_ashlandsfrog_fm", "Rih-bebes" },
					{ "enemy_plainsfrog_fm", "Noorin'brah" },
					{ "enemy_frog_fm", "Ras-kebihn" },
					{ "enemy_uscias_fm", "Uscias The Forgotten" },
					{ "enemy_destany_fm", "Destany Melodic Dreamer" }
				});
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Localication: {arg}");
			}
		}

		public void LoadBundle()
		{
			try
			{
				FrogAssets = AssetUtils.LoadAssetBundleFromResources("frogmonsters", Assembly.GetExecutingAssembly());
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while loading bundles: {arg}");
			}
		}

		private void AddStatusEffects()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Expected O, but got Unknown
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Expected O, but got Unknown
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Expected O, but got Unknown
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Expected O, but got Unknown
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Expected O, but got Unknown
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Expected O, but got Unknown
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Expected O, but got Unknown
			//IL_027f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Expected O, but got Unknown
			try
			{
				SE_Smoke val = FrogAssets.LoadAsset<SE_Smoke>("SE_ForestBossFrog_Hurt_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CustomStatusEffect val2 = new CustomStatusEffect((StatusEffect)(object)val, true);
					ItemManager.Instance.AddStatusEffect(val2);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_ForestBossFrog_Hurt_FM not found");
				}
				SE_Stats val3 = FrogAssets.LoadAsset<SE_Stats>("SE_ForestBossFrog_Heal_FM");
				if (Object.op_Implicit((Object)(object)val3))
				{
					CustomStatusEffect val4 = new CustomStatusEffect((StatusEffect)(object)val3, true);
					ItemManager.Instance.AddStatusEffect(val4);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_ForestBossFrog_Heal_FM not found");
				}
				SE_Stats val5 = FrogAssets.LoadAsset<SE_Stats>("SE_MedowsBoss_S1_KM");
				if (Object.op_Implicit((Object)(object)val5))
				{
					CustomStatusEffect val6 = new CustomStatusEffect((StatusEffect)(object)val5, true);
					ItemManager.Instance.AddStatusEffect(val6);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_MedowsBoss_S1_KM not found");
				}
				SE_Stats val7 = FrogAssets.LoadAsset<SE_Stats>("SE_MedowsBoss_S2_KM");
				if (Object.op_Implicit((Object)(object)val7))
				{
					CustomStatusEffect val8 = new CustomStatusEffect((StatusEffect)(object)val7, true);
					ItemManager.Instance.AddStatusEffect(val8);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_MedowsBoss_S2_KM not found");
				}
				SE_Stats val9 = FrogAssets.LoadAsset<SE_Stats>("SE_MedowsBoss_S3_KM");
				if (Object.op_Implicit((Object)(object)val3))
				{
					CustomStatusEffect val10 = new CustomStatusEffect((StatusEffect)(object)val9, true);
					ItemManager.Instance.AddStatusEffect(val10);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_MedowsBoss_S3_KM not found");
				}
				SE_Stats val11 = FrogAssets.LoadAsset<SE_Stats>("SE_MedowsBoss_S4_KM");
				if (Object.op_Implicit((Object)(object)val3))
				{
					CustomStatusEffect val12 = new CustomStatusEffect((StatusEffect)(object)val11, true);
					ItemManager.Instance.AddStatusEffect(val12);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_MedowsBoss_S4_KM not found");
				}
				SE_DoT_KM sE_DoT_KM = FrogAssets.LoadAsset<SE_DoT_KM>("SE_ForestFrogBoss_S3_KM");
				if (Object.op_Implicit((Object)(object)sE_DoT_KM))
				{
					CustomStatusEffect val13 = new CustomStatusEffect((StatusEffect)(object)sE_DoT_KM, true);
					ItemManager.Instance.AddStatusEffect(val13);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_ForestFrogBoss_S3_KM not found");
				}
				SE_HoT_KM sE_HoT_KM = FrogAssets.LoadAsset<SE_HoT_KM>("SE_BossHeal_S3_KM");
				if (Object.op_Implicit((Object)(object)sE_HoT_KM))
				{
					CustomStatusEffect val14 = new CustomStatusEffect((StatusEffect)(object)sE_HoT_KM, true);
					ItemManager.Instance.AddStatusEffect(val14);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_BossHeal_S3_KM not found");
				}
				BossStage_Controller_KM bossStage_Controller_KM = FrogAssets.LoadAsset<BossStage_Controller_KM>("SE_BlackForestFrogBoss_StageController_KM");
				if (Object.op_Implicit((Object)(object)bossStage_Controller_KM))
				{
					CustomStatusEffect val15 = new CustomStatusEffect((StatusEffect)(object)bossStage_Controller_KM, true);
					ItemManager.Instance.AddStatusEffect(val15);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SE_BossHeal_S3_KM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Status Effects: {arg}");
			}
		}

		private void AddPrefabs()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			try
			{
				string[] array = prefabList;
				foreach (string text in array)
				{
					GameObject val = FrogAssets.LoadAsset<GameObject>(text);
					if ((Object)(object)val != (Object)null)
					{
						CustomPrefab val2 = new CustomPrefab(val, false);
						PrefabManager.Instance.AddPrefab(val2);
					}
					else if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Object database"));
					}
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Prefabs: {arg}");
			}
		}

		private void AddItems()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			try
			{
				string[] array = itemList;
				foreach (string text in array)
				{
					GameObject val = FrogAssets.LoadAsset<GameObject>(text);
					if ((Object)(object)val != (Object)null)
					{
						CustomItem val2 = new CustomItem(val, true);
						ItemManager.Instance.AddItem(val2);
					}
					else if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Object database"));
					}
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding item prefabs: {arg}");
			}
		}

		private void AddRagdolls()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			try
			{
				string[] array = ragdollList;
				foreach (string text in array)
				{
					GameObject val = FrogAssets.LoadAsset<GameObject>(text);
					if ((Object)(object)val != (Object)null)
					{
						CustomPrefab val2 = new CustomPrefab(val, true);
						PrefabManager.Instance.AddPrefab(val2);
					}
					else if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Object database"));
					}
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Ragdolls: {arg}");
			}
		}

		private void AddSFX()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			try
			{
				string[] array = sfxList;
				foreach (string text in array)
				{
					GameObject val = FrogAssets.LoadAsset<GameObject>(text);
					if ((Object)(object)val != (Object)null)
					{
						CustomPrefab val2 = new CustomPrefab(val, false);
						PrefabManager.Instance.AddPrefab(val2);
					}
					else if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Object database"));
					}
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding sfx prefabs: {arg}");
			}
		}

		private void AddMusic()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			try
			{
				string[] array = musicList;
				foreach (string text in array)
				{
					GameObject val = FrogAssets.LoadAsset<GameObject>(text);
					if ((Object)(object)val != (Object)null)
					{
						CustomPrefab val2 = new CustomPrefab(val, false);
						PrefabManager.Instance.AddPrefab(val2);
					}
					else if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Object database"));
					}
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding music prefabs: {arg}");
			}
		}

		private void AddFrogMonsters()
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Expected O, but got Unknown
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Expected O, but got Unknown
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Expected O, but got Unknown
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Expected O, but got Unknown
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Expected O, but got Unknown
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Expected O, but got Unknown
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Expected O, but got Unknown
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Expected O, but got Unknown
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0274: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Expected O, but got Unknown
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_028b: Expected O, but got Unknown
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Expected O, but got Unknown
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: 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_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Expected O, but got Unknown
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_0328: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0340: Unknown result type (might be due to invalid IL or missing references)
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Expected O, but got Unknown
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("SwampFrog_FM");
				if ((Object)(object)val != (Object)null)
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"SwampFrog_FM not found");
				}
				GameObject val4 = FrogAssets.LoadAsset<GameObject>("PlainsFrog_FM");
				if ((Object)(object)val4 != (Object)null)
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val5 = new CustomCreature(val4, true, val2);
					CreatureManager.Instance.AddCreature(val5);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"AshLandsFrog_FM not found");
				}
				GameObject val6 = FrogAssets.LoadAsset<GameObject>("AshLandsFrog_FM");
				if ((Object)(object)val6 != (Object)null)
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val7 = new CustomCreature(val6, true, val2);
					CreatureManager.Instance.AddCreature(val7);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"AshLandsFrog_FM not found");
				}
				GameObject val8 = FrogAssets.LoadAsset<GameObject>("DeepNorthFrog_FM");
				if ((Object)(object)val8 != (Object)null)
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val9 = new CustomCreature(val8, true, val2);
					CreatureManager.Instance.AddCreature(val9);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"DeepNorthFrog_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding frog monsters: {arg}");
			}
		}

		private void AddPantherMonsters()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("PantherGuard_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"PantherGuard_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Panther monsters: {arg}");
			}
		}

		private void AddBeetleMonsters()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("Beetle_Meadows_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Ooze",
							Chance = 0.25f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Beetle_Meadows_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Misc monsters: {arg}");
			}
		}

		private void AddWyrmMonsters()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Expected O, but got Unknown
			//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_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("Wyrm_Swamp_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Guck",
							Chance = 0.25f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Wyrm_Swamp_FM not found");
				}
				GameObject val4 = FrogAssets.LoadAsset<GameObject>("Wyrm_Plains_FM");
				if ((Object)(object)val4 != (Object)null)
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Guck",
							Chance = 0.25f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val5 = new CustomCreature(val4, true, val2);
					CreatureManager.Instance.AddCreature(val5);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Wyrm_Plains_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Wyrm monsters: {arg}");
			}
		}

		private void AddInsectMonsters()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("Insect_Plains_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Guck",
							Chance = 0.25f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Insect_Plains_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Insect monsters: {arg}");
			}
		}

		private void AddSummonMonsters()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("BFBossTentaroot_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[1]
					{
						new DropConfig
						{
							Item = "Wood",
							Chance = 5f,
							MinAmount = 1,
							MaxAmount = 2,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"BFBossTentaroot_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Misc monsters: {arg}");
			}
		}

		private void AddFrogBosses()
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Expected O, but got Unknown
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Expected O, but got Unknown
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Expected O, but got Unknown
			//IL_019e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Expected O, but got Unknown
			try
			{
				GameObject val = FrogAssets.LoadAsset<GameObject>("BlackForestBossFrog_FM");
				if (Object.op_Implicit((Object)(object)val))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Coins",
							Chance = 1f,
							MinAmount = 17,
							MaxAmount = 29,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 1f,
							MinAmount = 2,
							MaxAmount = 4,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val3 = new CustomCreature(val, true, val2);
					CreatureManager.Instance.AddCreature(val3);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"BlackForestBossFrog_FM not found");
				}
				GameObject val4 = FrogAssets.LoadAsset<GameObject>("MistlandBossFrog_FM");
				if (Object.op_Implicit((Object)(object)val4))
				{
					CreatureConfig val2 = new CreatureConfig();
					val2.DropConfigs = (DropConfig[])(object)new DropConfig[2]
					{
						new DropConfig
						{
							Item = "Coins",
							Chance = 1f,
							MinAmount = 34,
							MaxAmount = 58,
							OnePerPlayer = false,
							LevelMultiplier = false
						},
						new DropConfig
						{
							Item = "Item_FrogLegMeat_FM",
							Chance = 1f,
							MinAmount = 2,
							MaxAmount = 4,
							OnePerPlayer = false,
							LevelMultiplier = false
						}
					};
					CustomCreature val5 = new CustomCreature(val4, true, val2);
					CreatureManager.Instance.AddCreature(val5);
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"MistlandBossFrog_FM not found");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding frog bosses: {arg}");
			}
		}

		private void AddFrogLocations()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: 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_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Expected O, but got Unknown
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Expected O, but got Unknown
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Expected O, but got Unknown
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Expected O, but got Unknown
			//IL_02df: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Expected O, but got Unknown
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0395: Unknown result type (might be due to invalid IL or missing references)
			//IL_039d: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Expected O, but got Unknown
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03eb: Expected O, but got Unknown
			//IL_0480: Unknown result type (might be due to invalid IL or missing references)
			//IL_0485: Unknown result type (might be due to invalid IL or missing references)
			//IL_048e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0497: Unknown result type (might be due to invalid IL or missing references)
			//IL_049f: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e8: Expected O, but got Unknown
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ed: Expected O, but got Unknown
			//IL_0595: Unknown result type (might be due to invalid IL or missing references)
			//IL_059a: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a6: 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_05b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Expected O, but got Unknown
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0604: Expected O, but got Unknown
			try
			{
				GameObject prefab = PrefabManager.Instance.GetPrefab("Loc_BlackForestBoss_FM");
				AudioSource prefab2 = Cache.GetPrefab<AudioSource>("sfx_arrow_hit");
				AudioSource prefab3 = Cache.GetPrefab<AudioSource>("Music_FulingCamp");
				if (!Object.op_Implicit((Object)(object)prefab))
				{
					GameObject val = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_BlackForestBoss_FM"));
					val.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab3.outputAudioMixerGroup;
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val, true, new LocationConfig
					{
						Biome = (Biome)8,
						Quantity = 3,
						Priotized = true,
						ExteriorRadius = 32f,
						MinAltitude = 5f,
						MaxAltitude = 10f,
						ClearArea = true,
						MinDistance = 1000f,
						MaxDistance = 4000f,
						MinDistanceFromSimilar = 1000f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Black Forest boss location already added");
				}
				GameObject prefab4 = PrefabManager.Instance.GetPrefab("Loc_VegvisirBFBoss_FM");
				if (!Object.op_Implicit((Object)(object)prefab4))
				{
					GameObject val2 = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_VegvisirBFBoss_FM"));
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val2, true, new LocationConfig
					{
						Biome = (Biome)8,
						Quantity = 25,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 5f,
						MinDistance = 1000f,
						MaxDistance = 5000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val2).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Black Forest boss vegvisir location already added");
				}
				GameObject prefab5 = PrefabManager.Instance.GetPrefab("Loc_RunestoneBFBoss_FM");
				if (!Object.op_Implicit((Object)(object)prefab5))
				{
					GameObject val3 = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_RunestoneBFBoss_FM"));
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val3, true, new LocationConfig
					{
						Biome = (Biome)8,
						Quantity = 10,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 5f,
						MinDistance = 1000f,
						MaxDistance = 5000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val3).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Black Forest boss runstone location already added");
				}
				GameObject prefab6 = PrefabManager.Instance.GetPrefab("Loc_VegvisirDestany_FM");
				if (!Object.op_Implicit((Object)(object)prefab6))
				{
					GameObject val4 = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_VegvisirDestany_FM"));
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val4, true, new LocationConfig
					{
						Biome = (Biome)16,
						Quantity = 25,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 5f,
						MinDistance = 1000f,
						MaxDistance = 6000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val4).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Destany vegvisir location already added");
				}
				GameObject prefab7 = PrefabManager.Instance.GetPrefab("Loc_RunestoneDestany_FM");
				if (!Object.op_Implicit((Object)(object)prefab7))
				{
					GameObject val5 = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_RunestoneDestany_FM"));
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val5, true, new LocationConfig
					{
						Biome = (Biome)16,
						Quantity = 10,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 5f,
						MinDistance = 1000f,
						MaxDistance = 6000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val5).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Destany runestone location already added");
				}
				GameObject prefab8 = PrefabManager.Instance.GetPrefab("Loc_DestanyBoss_FM");
				if (!Object.op_Implicit((Object)(object)prefab8))
				{
					GameObject val6 = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_DestanyBoss_FM"));
					val6.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab3.outputAudioMixerGroup;
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val6, true, new LocationConfig
					{
						Biome = (Biome)512,
						Quantity = 3,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 5f,
						MinDistance = 1000f,
						MaxDistance = 8000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val6).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Destany runestone location already added");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Locations: {arg}");
			}
			finally
			{
				ZoneManager.OnVanillaLocationsAvailable -= AddFrogLocations;
			}
		}

		private void AddLocations()
		{
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: 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_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Expected O, but got Unknown
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Expected O, but got Unknown
			try
			{
				AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit");
				AudioSource prefab2 = Cache.GetPrefab<AudioSource>("Music_FulingCamp");
				GameObject prefab3 = PrefabManager.Instance.GetPrefab("Loc_EnvoyCamp_FM");
				if (!Object.op_Implicit((Object)(object)prefab3))
				{
					GameObject val = ZoneManager.Instance.CreateLocationContainer(FrogAssets.LoadAsset<GameObject>("Loc_EnvoyCamp_FM"));
					AudioSource[] componentsInChildren = val.GetComponentsInChildren<AudioSource>();
					AudioSource[] array = componentsInChildren;
					foreach (AudioSource val2 in array)
					{
						val2.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
					}
					ZoneManager.Instance.AddCustomLocation(new CustomLocation(val, true, new LocationConfig
					{
						Biome = (Biome)1,
						Quantity = 1,
						Priotized = true,
						ClearArea = true,
						ExteriorRadius = 8f,
						MinAltitude = 1f,
						MinDistance = 200f,
						MaxDistance = 1000f,
						MinDistanceFromSimilar = 500f
					}));
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + ((Object)val).name + " to the Location database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Envoy location already added");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Locations: {arg}");
			}
			finally
			{
				ZoneManager.OnVanillaLocationsAvailable -= AddLocations;
			}
		}

		private void AddBossDrops()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Expected O, but got Unknown
			try
			{
				GameObject prefab = PrefabManager.Instance.GetPrefab("Item_UsciasSummon_FM");
				Humanoid prefab2 = Cache.GetPrefab<Humanoid>("gd_king");
				if (Object.op_Implicit((Object)(object)prefab))
				{
					if (Object.op_Implicit((Object)(object)prefab2))
					{
						((Component)prefab2).GetComponent<CharacterDrop>().m_drops.Add(new Drop
						{
							m_prefab = prefab,
							m_chance = 0.5f,
							m_amountMin = 1,
							m_amountMax = 1
						});
					}
					else
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)"Elder not found to add summon drop");
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)"Summon items not found for drops");
				}
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding boss drops: {arg}");
			}
			finally
			{
				PrefabManager.OnPrefabsRegistered -= AddBossDrops;
			}
		}

		private void FixSFX()
		{
			try
			{
				AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit");
				string[] array = sfxList;
				foreach (string text in array)
				{
					GameObject prefab2 = Cache.GetPrefab<GameObject>(text);
					prefab2.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab.outputAudioMixerGroup;
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer set on: " + text));
				}
			}
			catch
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"SFX Fix Failed");
			}
		}

		private void FixMusic()
		{
			try
			{
				AudioSource prefab = Cache.GetPrefab<AudioSource>("Music_FulingCamp");
				string[] array = musicList;
				foreach (string text in array)
				{
					GameObject prefab2 = Cache.GetPrefab<GameObject>(text);
					prefab2.GetComponent<AudioSource>().outputAudioMixerGroup = prefab.outputAudioMixerGroup;
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer set on: " + text));
				}
			}
			catch
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Music Fix Failed");
			}
		}

		private void FixAoEAudio()
		{
			try
			{
				AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit");
				string[] array = aoeAudioFix;
				foreach (string text in array)
				{
					GameObject prefab2 = Cache.GetPrefab<GameObject>(text);
					AudioSource[] componentsInChildren = prefab2.GetComponentsInChildren<AudioSource>();
					AudioSource[] array2 = componentsInChildren;
					foreach (AudioSource val in array2)
					{
						val.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer set on: " + text));
					}
				}
			}
			catch
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"SFX Fix Failed for AoE");
			}
		}

		public static void ConfigureBiomeSpawners(ISpawnerConfigurationCollection config)
		{
			try
			{
				ConfigureWorldSpawners(config);
			}
			catch (Exception ex)
			{
				Console.WriteLine("Cepera made something go horribly wrong: " + ex.Message + "\nStackTrace:\n" + ex.StackTrace);
			}
		}

		private static void ConfigureWorldSpawners(ISpawnerConfigurationCollection config)
		{
			try
			{
				ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22666u).SetPrefabName("SwampFrog_FM").SetTemplateName("Frog")
					.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 })
					.SetSpawnChance(12f)
					.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
					.SetPackSizeMin(1u)
					.SetPackSizeMax(2u)
					.SetMaxSpawned(1u)
					.SetSpawnAtDistanceToPlayerMin(45f)
					.SetSpawnAtDistanceToPlayerMax(60f)
					.SetConditionRequiredGlobalKey("defeated_gdking")
					.SetMinDistanceToOther(75f)
					.SetConditionAltitudeMin(0.1f);
				ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22667u).SetPrefabName("PlainsFrog_FM").SetTemplateName("Frog")
					.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 })
					.SetSpawnChance(12f)
					.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
					.SetPackSizeMin(1u)
					.SetPackSizeMax(2u)
					.SetMaxSpawned(1u)
					.SetSpawnAtDistanceToPlayerMin(45f)
					.SetSpawnAtDistanceToPlayerMax(60f)
					.SetConditionRequiredGlobalKey("defeated_bonemass")
					.SetMinDistanceToOther(75f)
					.SetConditionAltitudeMin(0.1f);
				ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22668u).SetPrefabName("AshLandsFrog_FM").SetTemplateName("Frog")
					.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)32 })
					.SetSpawnChance(12f)
					.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
					.SetPackSizeMin(1u)
					.SetPackSizeMax(2u)
					.SetMaxSpawned(1u)
					.SetSpawnAtDistanceToPlayerMin(45f)
					.SetSpawnAtDistanceToPlayerMax(60f)
					.SetConditionRequiredGlobalKey("defeated_queen")
					.SetMinDistanceToOther(75f)
					.SetConditionAltitudeMin(0.1f);
				ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22669u).SetPrefabName("DeepNorthFrog_FM").SetTemplateName("Frog")
					.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)64 })
					.SetSpawnChance(12f)
					.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
					.SetPackSizeMin(1u)
					.SetPackSizeMax(2u)
					.SetMaxSpawned(1u)
					.SetSpawnAtDistanceToPlayerMin(45f)
					.SetSpawnAtDistanceToPlayerMax(60f)
					.SetConditionRequiredGlobalKey("defeated_queen")
					.SetMinDistanceToOther(75f)
					.SetConditionAltitudeMin(0.1f);
			}
			catch (Exception ex)
			{
				Console.WriteLine("Cepera made something go horribly wrong: " + ex.Message + "\nStackTrace:\n" + ex.StackTrace);
			}
		}
	}
	public class BossStage_Object_KM : MonoBehaviour
	{
		public int m_spawnedUniqueID;

		public bool m_healsBoss;

		public bool m_killSelf;

		private void Start()
		{
		}

		private void Update()
		{
		}
	}
	public class SE_AddRandomEffect_KM : StatusEffect
	{
		private int iRandomArrayLength = -1;

		[NonSerialized]
		private float m_msgTimerRepeate;

		[Header("__Add Random Effects__")]
		public string m_prefabNameOfThisStatusEffect = "Used to prevent re-applications of this effect";

		public bool m_removeThisEffectOnCriticalFail;

		public bool m_removeThisEffectOnCriticalSuccess;

		public float m_tickInterval = 12f;

		public int m_hitChance = 25;

		public StatusEffect[] m_statusEffectList = (StatusEffect[])(object)new StatusEffect[0];

		public StatusEffect m_criticalFailEffect;

		public StatusEffect m_criticalSuccessEffect;

		[Header("Critical Fail Overide")]
		public bool m_useAsAdditonalEffect;

		public int m_additonalEffectChance = 33;

		[Header("Additional Boss Effect")]
		public bool m_useAdditionalBossEffect;

		public StatusEffect m_bossEffect;

		public int m_bossEffectChance = 66;

		[Header("SE Man Overides")]
		public int m_itemLevelOfEffect;

		public float m_skillLevelOfEffect;

		private int m_hitRoll;

		private int m_statusEffectHash;

		private int m_changer;

		private float m_addTimer;

		public void Awake()
		{
			iRandomArrayLength = m_statusEffectList.Length;
		}

		public override bool CanAdd(Character character)
		{
			if (character.GetSEMan().HaveStatusEffect(m_prefabNameOfThisStatusEffect))
			{
				return false;
			}
			return ((StatusEffect)this).CanAdd(character);
		}

		public override void Setup(Character character)
		{
			((StatusEffect)this).Setup(character);
		}

		public override void UpdateStatusEffect(float dt)
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			((StatusEffect)this).UpdateStatusEffect(dt);
			if (base.m_repeatInterval > 0f && !string.IsNullOrEmpty(base.m_repeatMessage))
			{
				m_msgTimerRepeate += dt;
				if (m_msgTimerRepeate > base.m_repeatInterval)
				{
					m_msgTimerRepeate = 0f;
					base.m_character.Message(base.m_repeatMessageType, base.m_repeatMessage, 0, (Sprite)null);
				}
			}
			m_addTimer += dt;
			if (!(m_addTimer > m_tickInterval))
			{
				return;
			}
			m_addTimer = 0f;
			m_hitRoll = Random.Range(0, 100);
			if (m_useAsAdditonalEffect && m_hitRoll <= m_additonalEffectChance)
			{
				m_statusEffectHash = ((object)m_criticalFailEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, m_itemLevelOfEffect, m_skillLevelOfEffect);
			}
			if (m_useAdditionalBossEffect && m_hitRoll <= m_bossEffectChance)
			{
				m_statusEffectHash = ((object)m_bossEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, m_itemLevelOfEffect, m_skillLevelOfEffect);
			}
			if (m_hitRoll != 0)
			{
				if (m_hitRoll != 100)
				{
					if (m_hitRoll <= m_hitChance && iRandomArrayLength >= 1)
					{
						m_changer = Random.Range(1, iRandomArrayLength);
						m_statusEffectHash = ((object)m_statusEffectList[m_changer]).GetHashCode();
						base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, m_itemLevelOfEffect, m_skillLevelOfEffect);
					}
				}
				else if (Object.op_Implicit((Object)(object)m_criticalSuccessEffect))
				{
					m_statusEffectHash = ((object)m_criticalSuccessEffect).GetHashCode();
					base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, m_itemLevelOfEffect, m_skillLevelOfEffect);
				}
			}
			else if (Object.op_Implicit((Object)(object)m_criticalFailEffect) && !m_useAsAdditonalEffect)
			{
				m_statusEffectHash = ((object)m_criticalFailEffect).GetHashCode();
				base.m_character.GetSEMan().AddStatusEffect(m_statusEffectHash, true, m_itemLevelOfEffect, m_skillLevelOfEffect);
			}
			if (!m_removeThisEffectOnCriticalSuccess && !m_removeThisEffectOnCriticalFail)
			{
			}
		}
	}
	public class SE_DoT_KM : StatusEffect
	{
		[SerializeField]
		private float m_msgTimerRepeate;

		[Header("__Damage Over Time__")]
		public DamageTypes m_damagePerTick;

		public float m_tickInterval = 1f;

		public SkillType m_attackersSkill;

		public float m_attackersSkillLevel;

		[Header("DoT Level Values")]
		public DamageTypes m_tickDamagePerLevel;

		public float m_levelDamageModifier = 0.05f;

		public bool m_useAttackerLevel;

		public int m_itemLevel = 0;

		public bool m_useSEManLevelValues;

		[Header("Life Drain")]
		public bool m_enableLifeDrain;

		public float m_healthPerTick = 0.25f;

		public float m_lifeGainPerSkillLevelModifier = 0.25f;

		public bool m_usePercentOfDamage;

		public float m_healPercent;

		private Character m_attacker;

		private float m_timer;

		private float m_damageModifier;

		private float m_leechLevelAmount;

		private float m_leechAmount;

		private float m_totalDamage;

		public override bool CanAdd(Character character)
		{
			return ((StatusEffect)this).CanAdd(character);
		}

		public override void SetAttacker(Character attacker)
		{
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			ZLog.Log((object)("Setting up attacker " + attacker.m_name));
			m_attacker = attacker;
			if (m_enableLifeDrain && m_attackersSkillLevel <= 0f)
			{
				Character attacker2 = m_attacker;
				if (Object.op_Implicit((Object)(object)((attacker2 is Player) ? attacker2 : null)) && (int)m_attackersSkill > 0)
				{
					m_attackersSkillLevel = m_attacker.GetSkillLevel(m_attackersSkill);
				}
				else
				{
					m_attackersSkillLevel = m_attacker.GetLevel();
				}
			}
			if (m_useAttackerLevel)
			{
				m_itemLevel = m_attacker.GetLevel();
			}
			m_leechLevelAmount = m_lifeGainPerSkillLevelModifier * m_attackersSkillLevel;
			m_leechAmount = m_healthPerTick * m_leechLevelAmount;
			ZLog.Log((object)("Setting up attacker complete " + attacker.m_name));
		}

		public override void UpdateStatusEffect(float dt)
		{
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Expected O, but got Unknown
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			((StatusEffect)this).UpdateStatusEffect(dt);
			base.m_time += dt;
			if (base.m_repeatInterval > 0f && !string.IsNullOrEmpty(base.m_repeatMessage))
			{
				m_msgTimerRepeate += dt;
				if (m_msgTimerRepeate > base.m_repeatInterval)
				{
					m_msgTimerRepeate = 0f;
					base.m_character.Message(base.m_repeatMessageType, base.m_repeatMessage, 0, (Sprite)null);
				}
			}
			m_timer += dt;
			if (!(m_timer > m_tickInterval))
			{
				return;
			}
			m_timer = 0f;
			if (!m_useSEManLevelValues)
			{
				m_damageModifier = (float)m_itemLevel * m_levelDamageModifier;
			}
			HitData val = new HitData();
			val.m_point = base.m_character.GetCenterPoint();
			val.m_damage = m_damagePerTick;
			((DamageTypes)(ref val.m_damage)).Add(m_tickDamagePerLevel, m_itemLevel);
			((DamageTypes)(ref val.m_damage)).Modify(m_damageModifier);
			m_totalDamage = val.GetTotalDamage();
			if (m_enableLifeDrain && !Object.op_Implicit((Object)(object)m_attacker))
			{
				if (m_usePercentOfDamage)
				{
					m_leechAmount = m_totalDamage / 100f * m_healPercent;
				}
				m_attacker.Heal(m_leechAmount, true);
			}
			base.m_character.ApplyDamage(val, true, false, (DamageModifier)0);
		}

		public override void SetLevel(int itemLevel, float skillLevel)
		{
			if (m_useSEManLevelValues)
			{
				m_damageModifier = (float)itemLevel * skillLevel;
				Terminal.Log((object)$"DoT setting itemlevel: {itemLevel} = itemlevel: {m_itemLevel}, skilllevel: {skillLevel} = itemLevelDamageModifier: {m_levelDamageModifier}");
				((StatusEffect)this).SetLevel(itemLevel, skillLevel);
			}
		}
	}
	public class BossStage_Controller_KM : StatusEffect
	{
		[Header("__Boss Stage Controller__")]
		public int m_uniqueID;

		public float m_checkHealthInterval = 60f;

		public string m_youLostMessage;

		public bool m_killBossAtEndOfTimer;

		public bool m_removeAddsAtEndOfTimer;

		[Header("Stage One")]
		public string m_stageOneStartMessage;

		public Sprite m_stageOneIcon;

		public float m_firstHealthPercent = 0.8f;

		public StatusEffect m_firstStatusEffect;

		[Header("Stage One - Monster Wave")]
		public bool m_enableFirstWave;

		public GameObject m_firstWaveMonster;

		public int m_firstWaveMinToSpawn;

		public int m_firstWaveMaxToSpawn;

		public float m_firstWaveSpawnRadius;

		public bool m_firstWaveSnapToTerrain;

		public float m_firstWaveSpawnGroundOffset;

		[Header("Stage One - Boss Effect")]
		public bool m_enableFirstBossEffect;

		public GameObject m_firstBossEffect;

		public float m_firstBossEffectRadius;

		public int m_firstBossEffectMinAmount;

		public int m_firstBossEffectMaxAmount;

		public bool m_firstBossEffectMoveTowardBoss;

		public bool m_firstBossEffectHealsBoss;

		public bool m_destroyFirstBossEffectAfterHealingBoss;

		public bool m_firstBossEffectRandomStartMovement;

		[Header("Stage One - Boss Effect - Manual Settings")]
		public int m_firstBossEffectForcePowerMin = 1;

		public int m_firstBossEffectForcePowerMax = 5;

		public bool m_manuallySetFirstBossEffectVector3;

		public Vector3 m_firstBossEffectAddForceVector3;

		[Header("Stage Two")]
		public string m_stageTwoStartMessage;

		public Sprite m_stageTwoIcon;

		public float m_secondHealthPercent = 0.6f;

		public StatusEffect m_secondStatusEffect;

		[Header("Stage Two - Monster Wave")]
		public bool m_enableSecondWave;

		public GameObject m_secondWaveMonster;

		public int m_secondWaveMinToSpawn;

		public int m_secondWaveMaxToSpawn;

		public float m_secondWaveSpawnRadius;

		public bool m_secondWaveSnapToTerrain;

		public float m_secondWaveSpawnGroundOffset;

		[Header("Stage Two - Boss Effect")]
		public bool m_enableSecondBossEffect;

		public GameObject m_secondBossEffect;

		public float m_secondBossEffectRadius;

		public int m_secondBossEffectMinAmount;

		public int m_secondBossEffectMaxAmount;

		public bool m_secondBossEffectMoveTowardBoss;

		public bool m_secondBossEffectRandomStartMovement;

		public bool m_secondBossEffectHealsBoss;

		public bool m_destroySecondBossEffectAfterHealingBoss;

		[Header("Stage Two - Boss Effect - Manual Settings")]
		public int m_secondBossEffectForcePowerMin = 1;

		public int m_secondBossEffectForcePowerMax = 5;

		public bool m_manuallySetSecondBossEffectVector3;

		public Vector3 m_secondBossEffectAddForceVector3;

		[Header("Stage Three")]
		public string m_stageThreeStartMessage;

		public Sprite m_stageThreeIcon;

		public float m_thirdHealthPercent = 0.4f;

		public StatusEffect m_thirdStatusEffect;

		[Header("Stage Three - Monster Wave")]
		public bool m_enableThirdWave;

		public GameObject m_thirdWaveMonster;

		public int m_thirdWaveMinToSpawn;

		public int m_thirdWaveMaxToSpawn;

		public float m_thirdWaveSpawnRadius;

		public bool m_thirdWaveSnapToTerrain;

		public float m_thirdWaveSpawnGroundOffset;

		[Header("Stage Three - Boss Effect")]
		public bool m_enableThirdBossEffect;

		public GameObject m_thirdBossEffect;

		public float m_thirdBossEffectRadius;

		public int m_thirdBossEffectMinAmount;

		public int m_thirdBossEffectMaxAmount;

		public bool m_thirdBossEffectMoveTowardBoss;

		public bool m_thirdBossEffectRandomStartMovement;

		public bool m_thirdBossEffectHealsBoss;

		public bool m_destroyThirdBossEffectAfterHealingBoss;

		[Header("Stage Three - Boss Effect - Manual Settings")]
		public int m_thirdBossEffectForcePowerMin = 1;

		public int m_thirdBossEffectForcePowerMax = 5;

		public bool m_manuallySetThirdBossEffectVector3;

		public Vector3 m_thirdBossEffectAddForceVector3;

		[Header("Stage Four")]
		public string m_stageFourStartMessage;

		public Sprite m_stageFourIcon;

		public float m_fourthHealthPercent = 0.2f;

		public StatusEffect m_fourthStatusEffect;

		[Header("Stage Four - Monster Wave")]
		public bool m_enableFourthWave;

		public GameObject m_fourthWaveMonster;

		public int m_fourthWaveMinToSpawn;

		public int m_fourthWaveMaxToSpawn;

		public float m_fourthWaveSpawnRadius;

		public bool m_fourthWaveSnapToTerrain;

		public float m_fourthWaveSpawnGroundOffset;

		[Header("Stage Four - Boss Effect")]
		public bool m_enableFourthBossEffect;

		public GameObject m_fourthBossEffect;

		public float m_fourthBossEffectRadius;

		public int m_fourthBossEffectMinAmount;

		public int m_fourthBossEffectMaxAmount;

		public bool m_fourthBossEffectMoveTowardBoss;

		public bool m_fourthBossEffectRandomStartMovement;

		public bool m_fourthBossEffectHealsBoss;

		public bool m_destroyFourthBossEffectAfterHealingBoss;

		[Header("Stage Four - Boss Effect - Manual Settings")]
		public int m_fourthBossEffectForcePowerMin = 1;

		public int m_fourthBossEffectForcePowerMax = 5;

		public bool m_manuallySetFourthBossEffectVector3;

		public Vector3 m_fourthBossEffectAddForceVector3;

		[Header("Shared Settings")]
		public bool m_alertSpawnedCreatures;

		public int m_getSolidHeightMargin = 1000;

		public EffectList m_spawnEffect = new EffectList();

		public string m_prefabNameOfThisScriptableObject;

		private float m_msgTimerRepeate;

		private float m_addTimer;

		private float m_HealthPercent;

		private int m_statusEffectHash;

		private int m_removeStatusEffectHash;

		private Vector3 vSpawnPoint;

		private Quaternion quaternion;

		private int iStageCount = 0;

		private int iForcePowerFirstEffect;

		private int iForcePowerSecondEffect;

		private int iForcePowerThirdEffect;

		private int iForcePowerFourthEffect;

		private readonly float fEndCounter = 60f;

		private string sStatusEffect;

		public void OnEnable()
		{
			m_prefabNameOfThisScriptableObject = ((Object)this).name.ToString() ?? "";
		}

		public override bool CanAdd(Character character)
		{
			if (character.GetSEMan().HaveStatusEffect(m_prefabNameOfThisScriptableObject))
			{
				return false;
			}
			if (!((Character)((Component)character).GetComponent<Humanoid>()).m_boss)
			{
				return false;
			}
			return ((StatusEffect)this).CanAdd(character);
		}

		public override void Setup(Character character)
		{
			((StatusEffect)this).Setup(character);
		}

		public override void UpdateStatusEffect(float dt)
		{
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: 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_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0359: Unknown result type (might be due to invalid IL or missing references)
			//IL_035e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0360: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0373: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_0381: Unknown result type (might be due to invalid IL or missing references)
			//IL_0388: Unknown result type (might be due to invalid IL or missing references)
			//IL_038d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Unknown result type (might be due to invalid IL or missing references)
			//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_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_068e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0693: Unknown result type (might be due to invalid IL or missing references)
			//IL_0695: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b69: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b80: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_103a: Unknown result type (might be due to invalid IL or missing references)
			//IL_103f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1041: Unknown result type (might be due to invalid IL or missing references)
			//IL_104c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1051: Unknown result type (might be due to invalid IL or missing references)
			//IL_1054: Unknown result type (might be due to invalid IL or missing references)
			//IL_1056: Unknown result type (might be due to invalid IL or missing references)
			//IL_1062: Unknown result type (might be due to invalid IL or missing references)
			//IL_1069: Unknown result type (might be due to invalid IL or missing references)
			//IL_106e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1073: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_082f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0834: Unknown result type (might be due to invalid IL or missing references)
			//IL_0836: Unknown result type (might be due to invalid IL or missing references)
			//IL_0841: Unknown result type (might be due to invalid IL or missing references)
			//IL_0846: Unknown result type (might be due to invalid IL or missing references)
			//IL_0849: Unknown result type (might be due to invalid IL or missing references)
			//IL_084b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_085e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0863: Unknown result type (might be due to invalid IL or missing references)
			//IL_0868: Unknown result type (might be due to invalid IL or missing references)
			//IL_071c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0721: Unknown result type (might be due to invalid IL or missing references)
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d39: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d3e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb5: Unknown result type (might be due to invalid IL or missing references)
			//IL_11db: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_1203: Unknown result type (might be due to invalid IL or missing references)
			//IL_120a: Unknown result type (might be due to invalid IL or missing references)
			//IL_120f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1214: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_10cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_108b: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0883: Unknown result type (might be due to invalid IL or missing references)
			//IL_0770: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d81: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d86: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d54: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d59: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c46: Unknown result type (might be due to invalid IL or missing references)
			//IL_1257: Unknown result type (might be due to invalid IL or missing references)
			//IL_125c: Unknown result ty