Decompiled source of Do Or Die NPC v1.0.1

DoDNPC.dll

Decompiled a month 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 BepInEx.Logging;
using HarmonyLib;
using HoremvoreAssembly;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using SpawnThat.Spawners;
using SpawnThat.Spawners.WorldSpawner;
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("DoDNPC")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DoDNPC")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("f93045b5-4de6-4bb4-87af-d1f851dc0256")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace DoDNPC;

[BepInPlugin("horemvore.DoDNPC", "Do or Die NPC's", "1.0.1")]
[BepInIncompatibility("Azumatt.AzuDevMod")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
internal class dodNPCBundle : BaseUnityPlugin
{
	[HarmonyPatch(typeof(DungeonGenerator), "SetupAvailableRooms")]
	public static class Patch_DungeonGenerator_SetupAvailableRooms
	{
		private static void Postfix(DungeonGenerator __instance)
		{
			string prefabName = Utils.GetPrefabName(((Object)__instance).name);
			if (!AllDungeons.ContainsKey(prefabName))
			{
				return;
			}
			HashSet<string> hashSet = AllDungeons[prefabName];
			DungeonGenerator.m_availableRooms.Clear();
			foreach (RoomData room in DungeonDB.GetRooms())
			{
				if (hashSet.Contains(Utils.GetPrefabName(((Object)room.m_room).name)) && room.m_room.m_enabled)
				{
					DungeonGenerator.m_availableRooms.Add(room);
				}
			}
		}
	}

	[HarmonyPatch(typeof(DungeonDB), "SetupRooms")]
	public static class Patch_DungeonDB_SetupRooms
	{
		private static void Postfix(DungeonDB __instance, ref List<RoomData> __result)
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			if ((Object)(object)dungeonAssets == (Object)null)
			{
				Log.LogWarning((object)"Asset bundle not found");
				return;
			}
			GameObject val = dungeonAssets.LoadAsset<GameObject>("DungeonTemple_Rooms_DoD");
			if ((Object)(object)val == (Object)null)
			{
				Log.LogWarning((object)"Rooms prefab not found");
				return;
			}
			for (int i = 0; i < val.transform.childCount; i++)
			{
				Room component = ((Component)val.transform.GetChild(i)).GetComponent<Room>();
				if ((Object)(object)component == (Object)null)
				{
					Log.LogWarning((object)"Room component not found");
					break;
				}
				RoomData val2 = new RoomData();
				val2.m_room = component;
				ZoneSystem.PrepareNetViews(((Component)component).gameObject, val2.m_netViews);
				ZoneSystem.PrepareRandomSpawns(((Component)component).gameObject, val2.m_randomSpawns);
				__result.Add(val2);
			}
		}
	}

	public const string PluginGUID = "horemvore.DoDNPC";

	public const string PluginName = "Do or Die NPC's";

	public const string PluginVersion = "1.0.1";

	public static bool isModded = true;

	private readonly Harmony HarmonyInstance = new Harmony("horemvore.DoDNPC");

	public AssetBundle npcAssets;

	public static AssetBundle dungeonAssets;

	public CustomLocalization LocalNPC;

	public ConfigEntry<bool> ModEnable;

	public ConfigEntry<bool> LoggingEnable;

	public ConfigEntry<bool> SpawnsEnable;

	public LocationConfig meadowsBoss = new LocationConfig
	{
		Biome = (Biome)1,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig blackForestBoss = new LocationConfig
	{
		Biome = (Biome)8,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig swampBoss = new LocationConfig
	{
		Biome = (Biome)2,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 0.1f,
		MaxAltitude = 1f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig mountainsBoss = new LocationConfig
	{
		Biome = (Biome)4,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig plainsBoss = new LocationConfig
	{
		Biome = (Biome)16,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig mistlandsBoss = new LocationConfig
	{
		Biome = (Biome)512,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig ashLandsBoss = new LocationConfig
	{
		Biome = (Biome)32,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig deepNorthBoss = new LocationConfig
	{
		Biome = (Biome)64,
		Quantity = 1,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig meadowsVegvisir = new LocationConfig
	{
		Biome = (Biome)1,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig blackForestVegvisir = new LocationConfig
	{
		Biome = (Biome)8,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig swampVegvisir = new LocationConfig
	{
		Biome = (Biome)2,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 0.1f,
		MaxAltitude = 1f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig mountainsVegvisir = new LocationConfig
	{
		Biome = (Biome)4,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig plainsVegvisir = new LocationConfig
	{
		Biome = (Biome)16,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig mistlandsVegvisir = new LocationConfig
	{
		Biome = (Biome)512,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig ashLandsVegvisir = new LocationConfig
	{
		Biome = (Biome)32,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public LocationConfig deepNorthVegvisir = new LocationConfig
	{
		Biome = (Biome)64,
		Quantity = 10,
		Priotized = true,
		ExteriorRadius = 9f,
		MinAltitude = 5f,
		ClearArea = true,
		MinDistance = 1000f,
		MinDistanceFromSimilar = 1000f
	};

	public string[] npcList = new string[38]
	{
		"EinherjarPlains_DoD", "NjordMountains_DoD", "VidarMistlands_DoD", "YounglingEinherjar_DoD", "YounglingNjord_DoD", "YounglingVidar_DoD", "NomadAshLands_DoD", "NomadBlackForest_DoD", "NomadDeepNorth_DoD", "NomadMeadows_DoD",
		"NomadMistlands_DoD", "NomadMountains_DoD", "NomadPlains_DoD", "NomadSwamp_DoD", "UpirGrim_DoD", "ZaineEvilian_DoD", "GrailThornheart_DoD", "LazarusAutumn_DoD", "CrisenthShadowsoul_DoD", "JaydenShadowmend_DoD",
		"FirionWinter_DoD", "LuxFrost_DoD", "EchoBlack_DoD", "MathianSerphent_DoD", "LazarusDeamonne_DoD", "SceledrusShadowend_DoD", "AshVexx_DoD", "CinderMortem_DoD", "DravenNox_DoD", "LincolnHunt_DoD",
		"SkuggaBlackForest_DoD", "SkuggaSwamp_DoD", "SkuggaMountains_DoD", "SkuggaPlains_DoD", "SkuggaMistlands_DoD", "SkuggaAshLands_DoD", "SkuggaDeepNorth_DoD", "SkuggaMeadows_DoD"
	};

	public string[] prefabList = new string[25]
	{
		"Bush_Temple_1_DoD", "Bush_Temple_2_DoD", "Temple_StonePile_5_DoD", "Temple_StonePile_6_DoD", "SS_TempleCliff_1_DoD", "SS_Column_1_DoD", "SS_Column_2_DoD", "SS_PillarGroup_1_DoD", "SS_PillarGroup_2_DoD", "SS_PillarGroup_3_DoD",
		"SS_PillarGroup_4_DoD", "AoE_NomadAura_DoD", "AoE_Skugga_Heal_AL_DoD", "AoE_Skugga_Heal_BF_DoD", "AoE_Skugga_Heal_DN_DoD", "AoE_Skugga_Heal_Meadows_DoD", "AoE_Skugga_Heal_Mistlands_DoD", "AoE_Skugga_Heal_Mountains_DoD", "AoE_Skugga_Heal_Plains_DoD", "AoE_Skugga_Heal_Swamp_DoD",
		"NPC_Projectile_Fireball_Crimson_DoD", "NPC_Projectile_Fireball_Holy_DoD", "NPC_Projectile_Fireball_Poison_DoD", "NPC_Projectile_Fireball_Shadow_DoD", "Projectile_RangerBow_DoD"
	};

	public string[] itemList = new string[277]
	{
		"KnifeYoungling_DoD", "YounglingLegs_DoD", "NPC_ArmorNomadChest_DoD", "NPC_ArmorNomadLegs_DoD", "NPC_BeltNomad_DoD", "NPC_CapeNomad_DoD", "NPC_HelmetNomad_DoD", "ArmorSkuggaChest_Plain_DoD", "ArmorSkuggaLegs_Plain_DoD", "CapeSkugga_Plain_AH",
		"HelmetSkugga_Plain_DoD", "NPC_Fireball_Nomad_AL_DoD", "NPC_Fireball_Nomad_BF_DoD", "NPC_Fireball_Nomad_DN_DoD", "NPC_Fireball_Nomad_Meadows_DoD", "NPC_Fireball_Nomad_Mistlands_DoD", "NPC_Fireball_Nomad_Mountains_DoD", "NPC_Fireball_Nomad_Plains_DoD", "NPC_Fireball_Nomad_Swamp_DoD", "NPC_NomadAura_Meadows_DoD",
		"NPC_NomadAura_BF_DoD", "NPC_NomadAura_Swamp_DoD", "NPC_NomadAura_Mountains_DoD", "NPC_NomadAura_Plains_DoD", "NPC_NomadAura_Mistlands_DoD", "NPC_NomadAura_AL_DoD", "NPC_NomadAura_DN_DoD", "NPC_Fireball_Cleric_Meadows_DoD", "NPC_Fireball_Druid_Meadows_DoD", "NPC_Fireball_Wizard_Meadows_DoD",
		"NPC_Firebolt_Cleric_Meadows_DoD", "NPC_Firebolt_Druid_Meadows_DoD", "NPC_Firebolt_Wizard_Meadows_DoD", "NPC_Fireball_Cleric_BF_DoD", "NPC_Fireball_Druid_BF_DoD", "NPC_Fireball_Wizard_BF_DoD", "NPC_Firebolt_Cleric_BF_DoD", "NPC_Firebolt_Druid_BF_DoD", "NPC_Firebolt_Wizard_BF_DoD", "NPC_Fireball_Cleric_Swamp_DoD",
		"NPC_Fireball_Druid_Swamp_DoD", "NPC_Fireball_Wizard_Swamp_DoD", "NPC_Firebolt_Cleric_Swamp_DoD", "NPC_Firebolt_Druid_Swamp_DoD", "NPC_Firebolt_Wizard_Swamp_DoD", "NPC_Fireball_Cleric_Mountains_DoD", "NPC_Fireball_Druid_Mountains_DoD", "NPC_Fireball_Wizard_Mountains_DoD", "NPC_Firebolt_Cleric_Mountains_DoD", "NPC_Firebolt_Druid_Mountains_DoD",
		"NPC_Firebolt_Wizard_Mountains_DoD", "NPC_Fireball_Cleric_Plains_DoD", "NPC_Fireball_Druid_Plains_DoD", "NPC_Fireball_Wizard_Plains_DoD", "NPC_Firebolt_Cleric_Plains_DoD", "NPC_Firebolt_Druid_Plains_DoD", "NPC_Firebolt_Wizard_Plains_DoD", "NPC_Fireball_Cleric_Mistlands_DoD", "NPC_Fireball_Druid_Mistlands_DoD", "NPC_Fireball_Wizard_Mistlands_DoD",
		"NPC_Firebolt_Cleric_Mistlands_DoD", "NPC_Firebolt_Druid_Mistlands_DoD", "NPC_Firebolt_Wizard_Mistlands_DoD", "NPC_Fireball_Cleric_AL_DoD", "NPC_Fireball_Druid_AL_DoD", "NPC_Fireball_Wizard_AL_DoD", "NPC_Firebolt_Cleric_AL_DoD", "NPC_Firebolt_Druid_AL_DoD", "NPC_Firebolt_Wizard_AL_DoD", "NPC_Fireball_Cleric_DN_DoD",
		"NPC_Fireball_Druid_DN_DoD", "NPC_Fireball_Wizard_DN_DoD", "NPC_Firebolt_Cleric_DN_DoD", "NPC_Firebolt_Druid_DN_DoD", "NPC_Firebolt_Wizard_DN_DoD", "NPC_BarbarianSecondary_Meadows_DoD", "NPC_ClericStaffSecondary_Meadows_DoD", "NPC_ClericSecondary_Meadows_DoD", "NPC_DruidSecondary_Meadows_DoD", "NPC_PaladinSecondary_Meadows_DoD",
		"NPC_RangerSecondary_Meadows_DoD", "NPC_RogueSecondary_Meadows_DoD", "NPC_WizardSecondary_Meadows_DoD", "NPC_WarriorSecondary_Meadows_DoD", "NPC_BarbarianSecondary_BF_DoD", "NPC_ClericStaffSecondary_BF_DoD", "NPC_ClericSecondary_BF_DoD", "NPC_DruidSecondary_BF_DoD", "NPC_PaladinSecondary_BF_DoD", "NPC_RangerSecondary_BF_DoD",
		"NPC_RogueSecondary_BF_DoD", "NPC_WizardSecondary_BF_DoD", "NPC_WarriorSecondary_BF_DoD", "NPC_BarbarianSecondary_Swamp_DoD", "NPC_ClericStaffSecondary_Swamp_DoD", "NPC_ClericSecondary_Swamp_DoD", "NPC_DruidSecondary_Swamp_DoD", "NPC_PaladinSecondary_Swamp_DoD", "NPC_RangerSecondary_Swamp_DoD", "NPC_RogueSecondary_Swamp_DoD",
		"NPC_WizardSecondary_Swamp_DoD", "NPC_WarriorSecondary_Swamp_DoD", "NPC_BarbarianSecondary_Mountains_DoD", "NPC_ClericStaffSecondary_Mountains_DoD", "NPC_ClericSecondary_Mountains_DoD", "NPC_DruidSecondary_Mountains_DoD", "NPC_PaladinSecondary_Mountains_DoD", "NPC_RangerSecondary_Mountains_DoD", "NPC_RogueSecondary_Mountains_DoD", "NPC_WizardSecondary_Mountains_DoD",
		"NPC_WarriorSecondary_Mountains_DoD", "NPC_BarbarianSecondary_Plains_DoD", "NPC_ClericStaffSecondary_Plains_DoD", "NPC_ClericSecondary_Plains_DoD", "NPC_DruidSecondary_Plains_DoD", "NPC_PaladinSecondary_Plains_DoD", "NPC_RangerSecondary_Plains_DoD", "NPC_RogueSecondary_Plains_DoD", "NPC_WizardSecondary_Plains_DoD", "NPC_WarriorSecondary_Plains_DoD",
		"NPC_BarbarianSecondary_Mistlands_DoD", "NPC_ClericStaffSecondary_Mistlands_DoD", "NPC_ClericSecondary_Mistlands_DoD", "NPC_DruidSecondary_Mistlands_DoD", "NPC_PaladinSecondary_Mistlands_DoD", "NPC_RangerSecondary_Mistlands_DoD", "NPC_RogueSecondary_Mistlands_DoD", "NPC_WizardSecondary_Mistlands_DoD", "NPC_WarriorSecondary_Mistlands_DoD", "NPC_BarbarianSecondary_AL_DoD",
		"NPC_ClericStaffSecondary_AL_DoD", "NPC_ClericSecondary_AL_DoD", "NPC_DruidSecondary_AL_DoD", "NPC_PaladinSecondary_AL_DoD", "NPC_RangerSecondary_AL_DoD", "NPC_RogueSecondary_AL_DoD", "NPC_WizardSecondary_AL_DoD", "NPC_WarriorSecondary_AL_DoD", "NPC_BarbarianSecondary_DN_DoD", "NPC_ClericStaffSecondary_DN_DoD",
		"NPC_ClericSecondary_DN_DoD", "NPC_DruidSecondary_DN_DoD", "NPC_PaladinSecondary_DN_DoD", "NPC_RangerSecondary_DN_DoD", "NPC_RogueSecondary_DN_DoD", "NPC_WizardSecondary_DN_DoD", "NPC_WarriorSecondary_DN_DoD", "NPC_SkuggaShield_AL_DoD", "NPC_SkuggaShield_BF_DoD", "NPC_SkuggaShield_DN_DoD",
		"NPC_SkuggaShield_Meadows_DoD", "NPC_SkuggaShield_Mistlands_DoD", "NPC_SkuggaShield_Mountains_DoD", "NPC_SkuggaShield_Plains_DoD", "NPC_SkuggaShield_Swamp_DoD", "NPC_SkuggaHeal_AL_DoD", "NPC_SkuggaHeal_BF_DoD", "NPC_SkuggaHeal_DN_DoD", "NPC_SkuggaHeal_Meadows_DoD", "NPC_SkuggaHeal_Mistlands_DoD",
		"NPC_SkuggaHeal_Mountains_DoD", "NPC_SkuggaHeal_Plains_DoD", "NPC_SkuggaHeal_Swamp_DoD", "NPC_HelmetDruid_DoD", "NPC_ArmorDruidLegs_DoD", "NPC_ArmorDruidChest_DoD", "NPC_CapeDruid_DoD", "NPC_RingDruid_DoD", "NPC_CapeRogue_DoD", "NPC_HelmetRogue_DoD",
		"NPC_ArmorRogueChest_DoD", "NPC_ArmorRogueLegs_DoD", "NPC_BeltRogue_DoD", "NPC_CapeWizard_DoD", "NPC_RingWizard_DoD", "NPC_HelmetWizard_DoD", "NPC_ArmorWizardChest_DoD", "NPC_ArmorWizardLegs_DoD", "NPC_CapePaladin_DoD", "NPC_HelmetPaladin_DoD",
		"NPC_ArmorPaladinChest_DoD", "NPC_ArmorPaladinLegs_DoD", "NPC_BeltPaladin_DoD", "NPC_RingPaladin_DoD", "NPC_CapeWarrior_DoD", "NPC_HelmetWarrior_DoD", "NPC_ArmorWarriorChest_DoD", "NPC_ArmorWarriorLegs_DoD", "NPC_ShieldWarrior_DoD", "NPC_CapeBarbarian_DoD",
		"NPC_HelmetBarbarian_DoD", "NPC_ArmorBarbarianChest_DoD", "NPC_ArmorBarbarianLegs_DoD", "NPC_RingBarbarian_DoD", "NPC_RingRanger_DoD", "NPC_CapeRanger_DoD", "NPC_HelmetRanger_DoD", "NPC_ArmorRangerChest_DoD", "NPC_ArmorRangerLegs_DoD", "NPC_CapeCleric_DoD",
		"NPC_HelmetCleric_DoD", "NPC_ArmorClericChest_DoD", "NPC_ArmorClericLegs_DoD", "NPC_ShieldCleric_DoD", "NPC_RingCleric_DoD", "NPC_BattleaxeBarbarian_DN_DoD", "NPC_BowRanger_DN_DoD", "NPC_HammerCleric_DN_DoD", "NPC_HammerWarrior_DN_DoD", "NPC_SkollRogue_DN_DoD",
		"NPC_StaffCleric_DN_DoD", "NPC_StaffDruid_DN_DoD", "NPC_StaffWizard_DN_DoD", "NPC_SwordPaladin_DN_DoD", "NPC_BattleaxeBarbarian_AL_DoD", "NPC_BowRanger_AL_DoD", "NPC_HammerCleric_AL_DoD", "NPC_HammerWarrior_AL_DoD", "NPC_SkollRogue_AL_DoD", "NPC_StaffCleric_AL_DoD",
		"NPC_StaffDruid_AL_DoD", "NPC_StaffWizard_AL_DoD", "NPC_SwordPaladin_AL_DoD", "NPC_BattleaxeBarbarian_Mistlands_DoD", "NPC_BowRanger_Mistlands_DoD", "NPC_HammerCleric_Mistlands_DoD", "NPC_HammerWarrior_Mistlands_DoD", "NPC_SkollRogue_Mistlands_DoD", "NPC_StaffCleric_Mistlands_DoD", "NPC_StaffDruid_Mistlands_DoD",
		"NPC_StaffWizard_Mistlands_DoD", "NPC_SwordPaladin_Mistlands_DoD", "NPC_BattleaxeBarbarian_Plains_DoD", "NPC_BowRanger_Plains_DoD", "NPC_HammerCleric_Plains_DoD", "NPC_HammerWarrior_Plains_DoD", "NPC_SkollRogue_Plains_DoD", "NPC_StaffCleric_Plains_DoD", "NPC_StaffDruid_Plains_DoD", "NPC_StaffWizard_Plains_DoD",
		"NPC_SwordPaladin_Plains_DoD", "NPC_BattleaxeBarbarian_Mountains_DoD", "NPC_BowRanger_Mountains_DoD", "NPC_HammerCleric_Mountains_DoD", "NPC_HammerWarrior_Mountains_DoD", "NPC_SkollRogue_Mountains_DoD", "NPC_StaffCleric_Mountains_DoD", "NPC_StaffDruid_Mountains_DoD", "NPC_StaffWizard_Mountains_DoD", "NPC_SwordPaladin_Mountains_DoD",
		"NPC_BattleaxeBarbarian_Swamp_DoD", "NPC_BowRanger_Swamp_DoD", "NPC_HammerCleric_Swamp_DoD", "NPC_HammerWarrior_Swamp_DoD", "NPC_SkollRogue_Swamp_DoD", "NPC_StaffCleric_Swamp_DoD", "NPC_StaffDruid_Swamp_DoD", "NPC_StaffWizard_Swamp_DoD", "NPC_SwordPaladin_Swamp_DoD", "NPC_BattleaxeBarbarian_BF_DoD",
		"NPC_BowRanger_BF_DoD", "NPC_HammerCleric_BF_DoD", "NPC_HammerWarrior_BF_DoD", "NPC_SkollRogue_BF_DoD", "NPC_StaffCleric_BF_DoD", "NPC_StaffDruid_BF_DoD", "NPC_StaffWizard_BF_DoD", "NPC_SwordPaladin_BF_DoD", "NPC_BattleaxeBarbarian_Meadows_DoD", "NPC_BowRanger_Meadows_DoD",
		"NPC_HammerCleric_Meadows_DoD", "NPC_HammerWarrior_Meadows_DoD", "NPC_SkollRogue_Meadows_DoD", "NPC_StaffCleric_Meadows_DoD", "NPC_StaffDruid_Meadows_DoD", "NPC_StaffWizard_Meadows_DoD", "NPC_SwordPaladin_Meadows_DoD"
	};

	public string[] fxList = new string[4] { "FX_Fireball_Crimson_Hit_DoD", "FX_Fireball_Holy_Hit_DoD", "FX_Fireball_Poison_Hit_DoD", "FX_Fireball_Shadow_Hit_DoD" };

	public string[] sePassiveList = new string[1] { "SE_NomadCurse_DoD" };

	public string[] seHoTList = new string[8] { "SE_SkuggaHeal_AL_DoD", "SE_SkuggaHeal_BF_DoD", "SE_SkuggaHeal_DN_DoD", "SE_SkuggaHeal_Meadows_DoD", "SE_SkuggaHeal_Mistlands_DoD", "SE_SkuggaHeal_Mountains_DoD", "SE_SkuggaHeal_Plains_DoD", "SE_SkuggaHeal_Swamp_DoD" };

	public string[] seShieldList = new string[8] { "SE_SkuggaShield_AL_DoD", "SE_SkuggaShield_BF_DoD", "SE_SkuggaShield_DN_DoD", "SE_SkuggaShield_Meadows_DoD", "SE_SkuggaShield_Mistlands_DoD", "SE_SkuggaShield_Mountains_DoD", "SE_SkuggaShield_Plains_DoD", "SE_SkuggaShield_Swamp_DoD" };

	public string[] spawnerList = new string[24]
	{
		"Spawner_UpirGrim_DoD", "Spawner_ZaineEvilian_DoD", "Spawner_GrailThornheart_DoD", "Spawner_LazarusAutumn_DoD", "Spawner_CrisenthShadowsoul_DoD", "Spawner_JaydenShadowmend_DoD", "Spawner_FirionWinter_DoD", "Spawner_LuxFrost_DoD", "Spawner_EchoBlack_DoD", "Spawner_MathianSerphent_DoD",
		"Spawner_LazarusDeamonne_DoD", "Spawner_SceledrusShadowend_DoD", "Spawner_AshVexx_DoD", "Spawner_CinderMortem_DoD", "Spawner_DravenNox_DoD", "Spawner_LincolnHunt_DoD", "Spawner_SkuggaBlackForest_DoD", "Spawner_SkuggaSwamp_DoD", "Spawner_SkuggaMountains_DoD", "Spawner_SkuggaPlains_DoD",
		"Spawner_SkuggaMistlands_DoD", "Spawner_SkuggaAshLands_DoD", "Spawner_SkuggaDeepNorth_DoD", "Spawner_SkuggaMeadows_DoD"
	};

	internal static ManualLogSource Log;

	private static readonly HashSet<string> dungeonTempleList = new HashSet<string> { "", "" };

	private static readonly Dictionary<string, HashSet<string>> AllDungeons = new Dictionary<string, HashSet<string>> { { "DG_DungeonTemple_DoD", dungeonTempleList } };

	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 Do or Die NPCs", "Enable", true, new ConfigDescription("Admin only, Enables this mod", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
			{
				IsAdminOnly = true
			} }));
			SpawnsEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("1 Spawning", "Enable", true, new ConfigDescription("Enables default spawning of Skugga. Set to false if you want to setup your own spawns via a 3rd party mod.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
			{
				IsAdminOnly = true
			} }));
			LoggingEnable = ((BaseUnityPlugin)this).Config.Bind<bool>("99 Logging", "Enable", false, 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 Do or Die NPC");
				}
				else
				{
					Logger.LogMessage((object)"Config sync event received for Do or Die NPC");
				}
			};
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding configuration values: {arg}");
		}
	}

	private void Awake()
	{
		CreateConfigurationValues();
		Log = ((BaseUnityPlugin)this).Logger;
		if (ModEnable.Value)
		{
			if (LoggingEnable.Value)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Logging is enabled in the config.");
			}
			AddLocalization();
			LoadBundle();
			AddFX();
			AddPassiveEffects();
			AddHoTEffects();
			AddShieldEffects();
			AddPrefabs();
			AddItems();
			AddSkugga();
			AddLocalSpawners();
			ZoneManager.OnVanillaLocationsAvailable += AddVegvisirLocations;
			ZoneManager.OnVanillaLocationsAvailable += AddBossLocations;
			PrefabManager.OnPrefabsRegistered += FixFX;
			if (SpawnsEnable.Value)
			{
				SpawnerConfigurationManager.OnConfigure += ConfigureWorldSpawners;
			}
		}
	}

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

	public void AddLocalization()
	{
		try
		{
			LocalNPC = LocalizationManager.Instance.GetLocalization();
			CustomLocalization localNPC = LocalNPC;
			string text = "English";
			localNPC.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "effect_nomadcurse_dod", "Nomad Curse" },
				{ "prop_rylanaltar_dod", "Rylan's Altar" },
				{ "prop_rylanaltar_text_dod", "Requires 10 Grey Pearls" },
				{ "boss_laughingrylan_dod", "Laughing Rylan" },
				{ "npc_mistlands_vidar_dod", "Vidar" },
				{ "npc_plains_einherjar_dod", "Einherjar" },
				{ "npc_mountains_njord_dod", "Njord" },
				{ "npc_vidar_young_dod", "Youngling" },
				{ "npc_einherjar_young_dod", "Youngling" },
				{ "npc_njord_young_dod", "Youngling" },
				{ "boss_deepnorth_lincolnhunt_dod", "Lincoln Hunt" },
				{ "boss_deepnorth_dravennox_dod", "Draven Nox" },
				{ "boss_ashlands_ashvexx_dod", "Ash Vexx" },
				{ "boss_ashlands_cindermortem_dod", "Cinder Mortem" },
				{ "boss_mistlands_lazarusdeamonne_dod", "Lazarus Deamonne" },
				{ "boss_mistlands_sceledrusshadowend_dod", "Sceledrus Shadowend" },
				{ "boss_plains_mathianserphent_dod", "Mathian Serphent" },
				{ "boss_plains_echoblack_dod", "Echo Black" },
				{ "boss_mountain_firionwinter_dod", "Firion Winter" },
				{ "boss_mountain_luxfrost_dod", "Lux Frost" },
				{ "boss_swamp_jaydenshadowmend_dod", "Jayden Shadowmend" },
				{ "boss_swamp_crisenthshadowsoul_dod", "Crisenth Shadowsoul" },
				{ "boss_blackforest_lazarusautumn_dod", "Lazarus Autumn" },
				{ "boss_blackforest_grailthornheart_dod", "Grail Thornheart" },
				{ "boss_meadows_zaineevilian_dod", "Zaine Evilian" },
				{ "boss_meadows_upirgrim_dod", "Upir Grim" },
				{ "enemy_nomad_dn_dod", "Nomad" },
				{ "enemy_nomad_al_dod", "Nomad" },
				{ "enemy_nomad_mist_dod", "Nomad" },
				{ "enemy_nomad_plains_dod", "Nomad" },
				{ "enemy_nomad_mount_dod", "Nomad" },
				{ "enemy_nomad_swamp_dod", "Nomad" },
				{ "enemy_nomad_bf_dod", "Nomad" },
				{ "enemy_nomad_dod", "Nomad" },
				{ "enemy_skugga_dn_dod", "Skugga" },
				{ "enemy_skugga_al_dod", "Skugga" },
				{ "enemy_skugga_mist_dod", "Skugga" },
				{ "enemy_skugga_plains_dod", "Skugga" },
				{ "enemy_skugga_mount_dod", "Skugga" },
				{ "enemy_skugga_swamp_dod", "Skugga" },
				{ "enemy_skugga_bf_dod", "Skugga" },
				{ "enemy_skugga_dod", "Skugga" }
			});
			if (LoggingEnable.Value)
			{
				((BaseUnityPlugin)this).Logger.LogMessage((object)"English localization added.");
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Localication: {arg}");
		}
	}

	public void AddPassiveEffects()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_003a: Expected O, but got Unknown
		try
		{
			string[] array = sePassiveList;
			foreach (string text in array)
			{
				SE_Passive_HS val = npcAssets.LoadAsset<SE_Passive_HS>(text);
				if ((Object)(object)val != (Object)null)
				{
					CustomStatusEffect val2 = new CustomStatusEffect((StatusEffect)(object)val, true);
					ItemManager.Instance.AddStatusEffect(val2);
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Status Effect database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Status Effect database"));
				}
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Passive Effects: {arg}");
		}
	}

	public void AddHoTEffects()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_003a: Expected O, but got Unknown
		try
		{
			string[] array = seHoTList;
			foreach (string text in array)
			{
				SE_HoT_HS val = npcAssets.LoadAsset<SE_HoT_HS>(text);
				if ((Object)(object)val != (Object)null)
				{
					CustomStatusEffect val2 = new CustomStatusEffect((StatusEffect)(object)val, true);
					ItemManager.Instance.AddStatusEffect(val2);
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Status Effect database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Status Effect database"));
				}
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding HoT Effects: {arg}");
		}
	}

	public void AddShieldEffects()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_003a: Expected O, but got Unknown
		try
		{
			string[] array = seShieldList;
			foreach (string text in array)
			{
				SE_Shield val = npcAssets.LoadAsset<SE_Shield>(text);
				if ((Object)(object)val != (Object)null)
				{
					CustomStatusEffect val2 = new CustomStatusEffect((StatusEffect)(object)val, true);
					ItemManager.Instance.AddStatusEffect(val2);
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Status Effect database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the Status Effect database"));
				}
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Shield 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 = npcAssets.LoadAsset<GameObject>(text);
				if ((Object)(object)val != (Object)null)
				{
					CustomPrefab val2 = new CustomPrefab(val, true);
					PrefabManager.Instance.AddPrefab(val2);
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the Object database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + 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 = npcAssets.LoadAsset<GameObject>(text);
				if ((Object)(object)val != (Object)null)
				{
					CustomItem val2 = new CustomItem(val, true);
					ItemManager.Instance.AddItem(val2);
					if (LoggingEnable.Value)
					{
						((BaseUnityPlugin)this).Logger.LogMessage((object)("Added: " + text + " to the item database"));
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Failed to add: " + text + " to the item database"));
				}
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding item prefabs: {arg}");
		}
	}

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

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

	private void AddVegvisirLocations()
	{
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Expected O, but got Unknown
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Expected O, but got Unknown
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Expected O, but got Unknown
		//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c2: Expected O, but got Unknown
		//IL_0228: Unknown result type (might be due to invalid IL or missing references)
		//IL_0232: Expected O, but got Unknown
		//IL_0298: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a2: Expected O, but got Unknown
		//IL_0308: Unknown result type (might be due to invalid IL or missing references)
		//IL_0312: Expected O, but got Unknown
		//IL_0378: Unknown result type (might be due to invalid IL or missing references)
		//IL_0382: Expected O, but got Unknown
		//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f2: Expected O, but got Unknown
		//IL_0458: Unknown result type (might be due to invalid IL or missing references)
		//IL_0462: Expected O, but got Unknown
		//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d2: Expected O, but got Unknown
		//IL_0538: Unknown result type (might be due to invalid IL or missing references)
		//IL_0542: Expected O, but got Unknown
		//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b2: Expected O, but got Unknown
		//IL_0618: Unknown result type (might be due to invalid IL or missing references)
		//IL_0622: Expected O, but got Unknown
		//IL_0688: Unknown result type (might be due to invalid IL or missing references)
		//IL_0692: Expected O, but got Unknown
		//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0702: Expected O, but got Unknown
		try
		{
			AudioSource prefab = Cache.GetPrefab<AudioSource>("Music_FulingCamp");
			GameObject val = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_UpirGrim_DoD");
			if ((Object)(object)val != (Object)null)
			{
				GameObject val2 = ZoneManager.Instance.CreateLocationContainer(val);
				AudioSource componentInChildren = val2.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					componentInChildren.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val2, true, meadowsVegvisir));
			}
			GameObject val3 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_ZaineEvilian_DoD");
			if ((Object)(object)val3 != (Object)null)
			{
				GameObject val4 = ZoneManager.Instance.CreateLocationContainer(val3);
				AudioSource componentInChildren2 = val4.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren2 != (Object)null)
				{
					componentInChildren2.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val4, true, meadowsVegvisir));
			}
			GameObject val5 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_GrailThornheart_DoD");
			if ((Object)(object)val5 != (Object)null)
			{
				GameObject val6 = ZoneManager.Instance.CreateLocationContainer(val5);
				AudioSource componentInChildren3 = val6.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren3 != (Object)null)
				{
					componentInChildren3.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val6, true, blackForestVegvisir));
			}
			GameObject val7 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_LazarusAutumn_DoD");
			if ((Object)(object)val7 != (Object)null)
			{
				GameObject val8 = ZoneManager.Instance.CreateLocationContainer(val7);
				AudioSource componentInChildren4 = val8.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren4 != (Object)null)
				{
					componentInChildren4.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val8, true, blackForestVegvisir));
			}
			GameObject val9 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_CrisenthShadowsoul_DoD");
			if ((Object)(object)val9 != (Object)null)
			{
				GameObject val10 = ZoneManager.Instance.CreateLocationContainer(val9);
				AudioSource componentInChildren5 = val10.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren5 != (Object)null)
				{
					componentInChildren5.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val10, true, swampVegvisir));
			}
			GameObject val11 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_JaydenShadowmend_DoD");
			if ((Object)(object)val11 != (Object)null)
			{
				GameObject val12 = ZoneManager.Instance.CreateLocationContainer(val11);
				AudioSource componentInChildren6 = val12.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren6 != (Object)null)
				{
					componentInChildren6.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val12, true, swampVegvisir));
			}
			GameObject val13 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_FirionWinter_DoD");
			if ((Object)(object)val13 != (Object)null)
			{
				GameObject val14 = ZoneManager.Instance.CreateLocationContainer(val13);
				AudioSource componentInChildren7 = val14.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren7 != (Object)null)
				{
					componentInChildren7.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val14, true, mountainsVegvisir));
			}
			GameObject val15 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_LuxFrost_DoD");
			if ((Object)(object)val15 != (Object)null)
			{
				GameObject val16 = ZoneManager.Instance.CreateLocationContainer(val15);
				AudioSource componentInChildren8 = val16.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren8 != (Object)null)
				{
					componentInChildren8.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val16, true, mountainsVegvisir));
			}
			GameObject val17 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_EchoBlack_DoD");
			if ((Object)(object)val17 != (Object)null)
			{
				GameObject val18 = ZoneManager.Instance.CreateLocationContainer(val17);
				AudioSource componentInChildren9 = val18.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren9 != (Object)null)
				{
					componentInChildren9.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val18, true, plainsVegvisir));
			}
			GameObject val19 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_MathianSerphent_DoD");
			if ((Object)(object)val19 != (Object)null)
			{
				GameObject val20 = ZoneManager.Instance.CreateLocationContainer(val19);
				AudioSource componentInChildren10 = val20.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren10 != (Object)null)
				{
					componentInChildren10.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val20, true, plainsVegvisir));
			}
			GameObject val21 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_LazarusDeamonne_DoD");
			if ((Object)(object)val21 != (Object)null)
			{
				GameObject val22 = ZoneManager.Instance.CreateLocationContainer(val21);
				AudioSource componentInChildren11 = val22.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren11 != (Object)null)
				{
					componentInChildren11.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val22, true, mistlandsVegvisir));
			}
			GameObject val23 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_SceledrusShadowend_DoD");
			if ((Object)(object)val23 != (Object)null)
			{
				GameObject val24 = ZoneManager.Instance.CreateLocationContainer(val23);
				AudioSource componentInChildren12 = val24.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren12 != (Object)null)
				{
					componentInChildren12.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val24, true, mistlandsVegvisir));
			}
			GameObject val25 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_AshVexx_DoD");
			if ((Object)(object)val25 != (Object)null)
			{
				GameObject val26 = ZoneManager.Instance.CreateLocationContainer(val25);
				AudioSource componentInChildren13 = val26.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren13 != (Object)null)
				{
					componentInChildren13.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val26, true, ashLandsVegvisir));
			}
			GameObject val27 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_CinderMortem_DoD");
			if ((Object)(object)val27 != (Object)null)
			{
				GameObject val28 = ZoneManager.Instance.CreateLocationContainer(val27);
				AudioSource componentInChildren14 = val28.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren14 != (Object)null)
				{
					componentInChildren14.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val28, true, ashLandsVegvisir));
			}
			GameObject val29 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_DravenNox_DoD");
			if ((Object)(object)val29 != (Object)null)
			{
				GameObject val30 = ZoneManager.Instance.CreateLocationContainer(val29);
				AudioSource componentInChildren15 = val30.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren15 != (Object)null)
				{
					componentInChildren15.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val30, true, deepNorthVegvisir));
			}
			GameObject val31 = npcAssets.LoadAsset<GameObject>("Loc_Vegvisir_LincolnHunt_DoD");
			if ((Object)(object)val31 != (Object)null)
			{
				GameObject val32 = ZoneManager.Instance.CreateLocationContainer(val31);
				AudioSource componentInChildren16 = val32.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren16 != (Object)null)
				{
					componentInChildren16.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val32, true, deepNorthVegvisir));
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Locations: {arg}");
		}
		finally
		{
			ZoneManager.OnVanillaLocationsAvailable -= AddVegvisirLocations;
		}
	}

	private void AddBossLocations()
	{
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Expected O, but got Unknown
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Expected O, but got Unknown
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Expected O, but got Unknown
		//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c2: Expected O, but got Unknown
		//IL_0228: Unknown result type (might be due to invalid IL or missing references)
		//IL_0232: Expected O, but got Unknown
		//IL_0298: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a2: Expected O, but got Unknown
		//IL_0308: Unknown result type (might be due to invalid IL or missing references)
		//IL_0312: Expected O, but got Unknown
		//IL_0378: Unknown result type (might be due to invalid IL or missing references)
		//IL_0382: Expected O, but got Unknown
		//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f2: Expected O, but got Unknown
		//IL_0458: Unknown result type (might be due to invalid IL or missing references)
		//IL_0462: Expected O, but got Unknown
		//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d2: Expected O, but got Unknown
		//IL_0538: Unknown result type (might be due to invalid IL or missing references)
		//IL_0542: Expected O, but got Unknown
		//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b2: Expected O, but got Unknown
		//IL_0618: Unknown result type (might be due to invalid IL or missing references)
		//IL_0622: Expected O, but got Unknown
		//IL_0688: Unknown result type (might be due to invalid IL or missing references)
		//IL_0692: Expected O, but got Unknown
		//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0702: Expected O, but got Unknown
		try
		{
			AudioSource prefab = Cache.GetPrefab<AudioSource>("Music_FulingCamp");
			GameObject val = npcAssets.LoadAsset<GameObject>("Loc_UpirGrim_DoD");
			if ((Object)(object)val != (Object)null)
			{
				GameObject val2 = ZoneManager.Instance.CreateLocationContainer(val);
				AudioSource componentInChildren = val2.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					componentInChildren.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val2, true, meadowsBoss));
			}
			GameObject val3 = npcAssets.LoadAsset<GameObject>("Loc_ZaineEvilian_DoD");
			if ((Object)(object)val3 != (Object)null)
			{
				GameObject val4 = ZoneManager.Instance.CreateLocationContainer(val3);
				AudioSource componentInChildren2 = val4.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren2 != (Object)null)
				{
					componentInChildren2.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val4, true, meadowsBoss));
			}
			GameObject val5 = npcAssets.LoadAsset<GameObject>("Loc_GrailThornheart_DoD");
			if ((Object)(object)val5 != (Object)null)
			{
				GameObject val6 = ZoneManager.Instance.CreateLocationContainer(val5);
				AudioSource componentInChildren3 = val6.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren3 != (Object)null)
				{
					componentInChildren3.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val6, true, blackForestBoss));
			}
			GameObject val7 = npcAssets.LoadAsset<GameObject>("Loc_LazarusAutumn_DoD");
			if ((Object)(object)val7 != (Object)null)
			{
				GameObject val8 = ZoneManager.Instance.CreateLocationContainer(val7);
				AudioSource componentInChildren4 = val8.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren4 != (Object)null)
				{
					componentInChildren4.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val8, true, blackForestBoss));
			}
			GameObject val9 = npcAssets.LoadAsset<GameObject>("Loc_CrisenthShadowsoul_DoD");
			if ((Object)(object)val9 != (Object)null)
			{
				GameObject val10 = ZoneManager.Instance.CreateLocationContainer(val9);
				AudioSource componentInChildren5 = val10.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren5 != (Object)null)
				{
					componentInChildren5.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val10, true, swampBoss));
			}
			GameObject val11 = npcAssets.LoadAsset<GameObject>("Loc_JaydenShadowmend_DoD");
			if ((Object)(object)val11 != (Object)null)
			{
				GameObject val12 = ZoneManager.Instance.CreateLocationContainer(val11);
				AudioSource componentInChildren6 = val12.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren6 != (Object)null)
				{
					componentInChildren6.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val12, true, swampBoss));
			}
			GameObject val13 = npcAssets.LoadAsset<GameObject>("Loc_FirionWinter_DoD");
			if ((Object)(object)val13 != (Object)null)
			{
				GameObject val14 = ZoneManager.Instance.CreateLocationContainer(val13);
				AudioSource componentInChildren7 = val14.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren7 != (Object)null)
				{
					componentInChildren7.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val14, true, mountainsBoss));
			}
			GameObject val15 = npcAssets.LoadAsset<GameObject>("Loc_LuxFrost_DoD");
			if ((Object)(object)val15 != (Object)null)
			{
				GameObject val16 = ZoneManager.Instance.CreateLocationContainer(val15);
				AudioSource componentInChildren8 = val16.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren8 != (Object)null)
				{
					componentInChildren8.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val16, true, mountainsBoss));
			}
			GameObject val17 = npcAssets.LoadAsset<GameObject>("Loc_EchoBlack_DoD");
			if ((Object)(object)val17 != (Object)null)
			{
				GameObject val18 = ZoneManager.Instance.CreateLocationContainer(val17);
				AudioSource componentInChildren9 = val18.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren9 != (Object)null)
				{
					componentInChildren9.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val18, true, plainsBoss));
			}
			GameObject val19 = npcAssets.LoadAsset<GameObject>("Loc_MathianSerphent_DoD");
			if ((Object)(object)val19 != (Object)null)
			{
				GameObject val20 = ZoneManager.Instance.CreateLocationContainer(val19);
				AudioSource componentInChildren10 = val20.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren10 != (Object)null)
				{
					componentInChildren10.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val20, true, plainsBoss));
			}
			GameObject val21 = npcAssets.LoadAsset<GameObject>("Loc_LazarusDeamonne_DoD");
			if ((Object)(object)val21 != (Object)null)
			{
				GameObject val22 = ZoneManager.Instance.CreateLocationContainer(val21);
				AudioSource componentInChildren11 = val22.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren11 != (Object)null)
				{
					componentInChildren11.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val22, true, mistlandsBoss));
			}
			GameObject val23 = npcAssets.LoadAsset<GameObject>("Loc_SceledrusShadowend_DoD");
			if ((Object)(object)val23 != (Object)null)
			{
				GameObject val24 = ZoneManager.Instance.CreateLocationContainer(val23);
				AudioSource componentInChildren12 = val24.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren12 != (Object)null)
				{
					componentInChildren12.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val24, true, mistlandsBoss));
			}
			GameObject val25 = npcAssets.LoadAsset<GameObject>("Loc_AshVexx_DoD");
			if ((Object)(object)val25 != (Object)null)
			{
				GameObject val26 = ZoneManager.Instance.CreateLocationContainer(val25);
				AudioSource componentInChildren13 = val26.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren13 != (Object)null)
				{
					componentInChildren13.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val26, true, ashLandsBoss));
			}
			GameObject val27 = npcAssets.LoadAsset<GameObject>("Loc_CinderMortem_DoD");
			if ((Object)(object)val27 != (Object)null)
			{
				GameObject val28 = ZoneManager.Instance.CreateLocationContainer(val27);
				AudioSource componentInChildren14 = val28.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren14 != (Object)null)
				{
					componentInChildren14.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val28, true, ashLandsBoss));
			}
			GameObject val29 = npcAssets.LoadAsset<GameObject>("Loc_DravenNox_DoD");
			if ((Object)(object)val29 != (Object)null)
			{
				GameObject val30 = ZoneManager.Instance.CreateLocationContainer(val29);
				AudioSource componentInChildren15 = val30.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren15 != (Object)null)
				{
					componentInChildren15.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val30, true, deepNorthBoss));
			}
			GameObject val31 = npcAssets.LoadAsset<GameObject>("Loc_LincolnHunt_DoD");
			if ((Object)(object)val31 != (Object)null)
			{
				GameObject val32 = ZoneManager.Instance.CreateLocationContainer(val31);
				AudioSource componentInChildren16 = val32.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren16 != (Object)null)
				{
					componentInChildren16.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				ZoneManager.Instance.AddCustomLocation(new CustomLocation(val32, true, deepNorthBoss));
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Locations: {arg}");
		}
		finally
		{
			ZoneManager.OnVanillaLocationsAvailable -= AddBossLocations;
			npcAssets.Unload(false);
		}
	}

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

	private void FixFX()
	{
		try
		{
			AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit");
			string[] array = fxList;
			foreach (string text in array)
			{
				GameObject prefab2 = Cache.GetPrefab<GameObject>(text);
				AudioSource componentInChildren = prefab2.GetComponentInChildren<AudioSource>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					componentInChildren.outputAudioMixerGroup = prefab.outputAudioMixerGroup;
				}
				if (LoggingEnable.Value)
				{
					((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer set on: " + text));
				}
			}
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while fixing custom audio: {arg}");
		}
		finally
		{
			PrefabManager.OnPrefabsRegistered -= FixFX;
		}
	}

	private static void ConfigureWorldSpawners(ISpawnerConfigurationCollection config)
	{
		try
		{
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22726u).SetPrefabName("SkuggaDeepNorth_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)64 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_lincolnhunt");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22725u).SetPrefabName("SkuggaAshLands_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)32 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_cindermortem");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22724u).SetPrefabName("SkuggaMistlands_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_sceledrusshadowend");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22723u).SetPrefabName("SkuggaPlains_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_mathianserphent");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22722u).SetPrefabName("SkuggaMountains_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_luxfrost");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22721u).SetPrefabName("SkuggaSwamp_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_jaydenshadowmend");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22720u).SetPrefabName("SkuggaBlackForest_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)8 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_lazarusautumn");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22719u).SetPrefabName("SkuggaMeadows_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)1 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_zaineevilian");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22718u).SetPrefabName("SkuggaDeepNorth_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)64 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_dravennox");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22717u).SetPrefabName("SkuggaAshLands_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)32 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_ashvexx");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22716u).SetPrefabName("SkuggaMistlands_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_lazarusdeamonne");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22715u).SetPrefabName("SkuggaPlains_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_echoblack");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22714u).SetPrefabName("SkuggaMountains_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_firionwinter");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22713u).SetPrefabName("SkuggaSwamp_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_crisenthshadowsoul");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22712u).SetPrefabName("SkuggaBlackForest_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)8 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("discover_grailthornheart");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22711u).SetPrefabName("SkuggaMeadows_DoD").SetTemplateName("Skugga")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)1 })
				.SetSpawnChance(10f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f)
				.SetConditionRequiredGlobalKey("defeated_upirgrim");
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22710u).SetPrefabName("VidarMistlands_DoD").SetTemplateName("Vidar")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 })
				.SetSpawnChance(16f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)1000.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f);
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22709u).SetPrefabName("EinherjarPlains_DoD").SetTemplateName("Einherjar")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 })
				.SetSpawnChance(16f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)1000.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f);
			IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22708u).SetPrefabName("NjordMountains_DoD").SetTemplateName("Njord")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 })
				.SetSpawnChance(16f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u)
				.SetSpawnAtDistanceToPlayerMin(45f)
				.SetSpawnAtDistanceToPlayerMax(65f), (double?)1000.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22707u).SetPrefabName("NomadDeepNorth_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)64 })
				.SetSpawnChance(60f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22706u).SetPrefabName("NomadAshLands_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)32 })
				.SetSpawnChance(55f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22705u).SetPrefabName("NomadMistlands_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 })
				.SetSpawnChance(50f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22704u).SetPrefabName("NomadPlains_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 })
				.SetSpawnChance(45f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22703u).SetPrefabName("NomadMountains_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 })
				.SetSpawnChance(40f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22702u).SetPrefabName("NomadSwamp_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 })
				.SetSpawnChance(35f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22701u).SetPrefabName("NomadBlackForest_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)8 })
				.SetSpawnChance(30f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
			IWorldSpawnBuilderConditionExtensions.SetConditionNearbyPlayersCarryItem(IWorldSpawnBuilderConditionExtensions.SetConditionDistanceToCenter(ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 22700u).SetPrefabName("NomadMeadows_DoD").SetTemplateName("Nomad")
				.SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)1 })
				.SetSpawnChance(25f)
				.SetSpawnInterval(TimeSpan.FromSeconds(360.0))
				.SetPackSizeMin(1u)
				.SetPackSizeMax(2u)
				.SetMaxSpawned(1u), (double?)750.0, (double?)null).SetMinDistanceToOther(75f).SetConditionAltitudeMin(0.1f), 15, new string[1] { "SkullToken_DoD" }).SetModifierHuntPlayer(true);
		}
		catch (Exception ex)
		{
			Log.LogError((object)ex);
		}
	}
}