Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Companions Human v1.0.5
Companions.dll
Decompiled 2 years agousing 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 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("Companions")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Companions")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9b38765f-fb98-4014-99da-3b358b402e70")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace Companions; [BepInPlugin("horemvore.Companions", "Companions", "1.0.5")] [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.*/)] internal class Companions : BaseUnityPlugin { public const string PluginGUID = "horemvore.Companions"; public const string PluginName = "Companions"; public const string PluginVersion = "1.0.5"; public static bool isModded = true; public AssetBundle NPCBundle; private CustomLocalization Localization; internal static ManualLogSource Log; public ConfigEntry<bool> ModEnable; public ConfigEntry<bool> LoggingEnable; public ConfigEntry<bool> SpawnsEnable; public string[] fxList = new string[2] { "FX_ShieldBreak_DoD", "FX_ShieldHit_DoD" }; public string[] prefabList = new string[20] { "VFX_ShieldEffect_DoD", "NPC_Heal_AoE_DoD", "NPC_HealLesser_AoE_DoD", "NPC_HealGreater_AoE_DoD", "NPC_Shield_AoE_DoD", "HumanNPCBarry_RD_DoD", "HumanNPCBob_RD_DoD", "HumanNPCBobby_RD_DoD", "HumanNPCFred_RD_DoD", "HumanNPCJeff_RD_DoD", "HumanNPCFletch_RD_DoD", "HumanNPCBarbara_RD_DoD", "HumanNPCCathrine_RD_DoD", "HumanNPCDaisy_RD_DoD", "HumanNPCKaren_RD_DoD", "HumanNPCMandy_RD_DoD", "HumanNPCSandra_RD_DoD", "HumanNPCGary_RD_DoD", "HumanNPCTania_RD_DoD", "HumanNPCTina_RD_DoD" }; public string[] itemList = new string[28] { "FriggGlobe_DoD", "LokiGlobe_DoD", "OdinGlobe_DoD", "NPC_Shield_DoD", "NPC_ShieldLesser_DoD", "NPC_ShieldGreater_DoD", "NPC_SelfHeal_DoD", "NPC_SelfHealLesser_DoD", "NPC_SelfHealGreater_DoD", "NPC_KickAttack_L_DoD", "NPC_KickAttack_R_DoD", "NPC_KoshAttack_L_DoD", "NPC_KoshAttack_R_DoD", "NPC_KnifeAttack_L_DoD", "NPC_KnifeAttack_R_DoD", "NPC_DaggerAttack_L_DoD", "NPC_GladiatorSwordAttack_R_DoD", "NPC_RedAxeAttack_R_DoD", "NPC_VikingAxeAttack_L_DoD", "NPC_VikingAxeAttack_R_DoD", "NPC_WoodAxeAttack_L_DoD", "NPC_DaggerAttack_R_DoD", "NPC_GladiatorSwordAttack_L_DoD", "NPC_GoldAxeAttack_L_DoD", "NPC_GoldAxeAttack_R_DoD", "NPC_BowAttack_DoD", "NPC_MageDaggerAttack_L_DoD", "NPC_StaffSledgeAttack_R_DoD" }; public string[] seStatsList = new string[6] { "SE_FriggsBlessing_DoD", "SE_LokisBlessing_DoD", "SE_OdinBlessing_DoD", "SE_NPC_GreaterHeal_DoD", "SE_NPC_Heal_DoD", "SE_NPC_LesserHeal_DoD" }; public string[] seShieldList = new string[3] { "SE_NPC_Shield_DoD", "SE_NPC_ShieldGreater_DoD", "SE_NPC_ShieldLesser_DoD" }; public string[] companionList = new string[12] { "HumanNPCBob_DoD", "HumanNPCFred_DoD", "HumanNPCBarry_DoD", "HumanNPCBobby_DoD", "HumanNPCJeff_DoD", "HumanNPCMandy_DoD", "HumanNPCBarbara_DoD", "HumanNPCSandra_DoD", "HumanNPCDaisy_DoD", "HumanNPCCathrine_DoD", "HumanNPCKaren_DoD", "HumanNPCFletch_DoD" }; public string[] bossList = new string[3] { "HumanNPCGary_DoD", "HumanNPCTania_DoD", "HumanNPCTina_DoD" }; public string[] musicList = new string[2] { "NPCMusic_DoD", "ShrineMusic_DoD" }; public string[] spawnersList = new string[1] { "Spawner_NPCCamp_DoD" }; 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 Companions", "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 Companions. 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", 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 Companions"); } else { Logger.LogMessage((object)"Config sync event received for Companions"); } }; } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding configuration values: {arg}"); } } private void Awake() { try { CreateConfigurationValues(); Log = ((BaseUnityPlugin)this).Logger; if (ModEnable.Value) { if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Logging is enabled in the config."); } AddLocalizations(); LoadBundle(); AddStatsEffects(); AddShieldEffects(); AddSFX(); AddMusic(); AddPrefabs(); AddItems(); AddCompanions(); AddBosses(); AddSpawners(); ZoneManager.OnVanillaLocationsAvailable += AddNPCLocations; PrefabManager.OnVanillaPrefabsAvailable += FixSFX; if (SpawnsEnable.Value) { SpawnerConfigurationManager.OnConfigure += ConfigureNPCSpawners; } } } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while loading Companions: {arg}"); } } private void AddLocalizations() { try { Localization = LocalizationManager.Instance.GetLocalization(); CustomLocalization localization = Localization; string text = "English"; localization.AddTranslation(ref text, new Dictionary<string, string> { { "item_odin_globe_dod", "Odin's Blessing" }, { "item_odin_globe_desc_dod", "Gift of the Gods" }, { "item_loki_globe_dod", "Loki's Blessing" }, { "item_loki_globe_desc_dod", "Gift of the Gods" }, { "item_frigg_globe_dod", "Frigg's Blessing" }, { "item_frigg_globe_desc_dod", "Gift of the Gods" }, { "effect_odinsblessing_dod", "Odin's Blessing" }, { "effect_odinsblessing_tooltip_dod", "Clubs: +15% Damage" }, { "effect_odinsblessing_end_dod", "No longer blessed by Odin" }, { "effect_lokisblessing_dod", "Loki's Blessing" }, { "effect_lokisblessing_tooltip_dod", "Knives: +15% Damage" }, { "effect_lokisblessing_end_dod", "No longer blessed by Loki" }, { "effect_friggsblessing_dod", "Frigg's Blessing" }, { "effect_friggsblessing_tooltip_dod", "Polearms: +15% Damage" }, { "effect_friggsblessing_end_dod", "No longer blessed by Frigg" }, { "piece_shrine_odin_dod", "Odin" }, { "piece_shrine_offeritem_odin_dod", "Offer Infused Gemstones for a blessing" }, { "piece_shrine_frigg_dod", "Frigg" }, { "piece_shrine_offeritem_frigg_dod", "Offer Infused Gemstones for a blessing" }, { "piece_shrine_loki_dod", "Loki" }, { "piece_shrine_offeritem_loki_dod", "Offer Skull Tokens for a blessing" }, { "prop_npc_spawner_dod", "Mystical Runestone" }, { "npc_tina_dod", "Timid Tina the Traveller" }, { "npc_tania_dod", "Terrible Tania the Teacher" }, { "npc_gary_dod", "Greedy Gary the Green" }, { "npc_mandy_dod", "Mad Mandy the Mat Maker" }, { "npc_barbara_dod", "Barmy Barbara the Barbarian" }, { "npc_sandra_dod", "Soppy Sandra the Shoemaker" }, { "npc_daisy_dod", "Daisy the Dandy Dressmaker" }, { "npc_cathrine_dod", "Curious Cathrine the Cakemaker" }, { "npc_karen_dod", "Crazy Karen the Clockmaker" }, { "npc_fletch_dod", "Flinching Fletch the Fletcher" }, { "npc_bobby_dod", "Bobby Black the Batt Burgler" }, { "npc_jeff_dod", "Jobless Jeff the Joker" }, { "npc_bob_dod", "Bob Blobby the Bobsman" }, { "npc_fred_dod", "Freaky Fred the Ferryman" }, { "npc_barry_dod", "Barking Barry the Bagsman" } }); } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Localication for Companions: {arg}"); } } private void LoadBundle() { try { NPCBundle = AssetUtils.LoadAssetBundleFromResources("companions", Assembly.GetExecutingAssembly()); } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while loading Companions asset bundle: {arg}"); } } private void AddStatsEffects() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown try { string[] array = seStatsList; foreach (string text in array) { SE_Stats val = NPCBundle.LoadAsset<SE_Stats>(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 SE_Stats Effects: {arg}"); } } private 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 = NPCBundle.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 SE_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 = NPCBundle.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 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 = fxList; foreach (string text in array) { GameObject val = NPCBundle.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 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 = NPCBundle.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 music 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 = NPCBundle.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 AddCompanions() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown try { string[] array = companionList; foreach (string text in array) { GameObject val = NPCBundle.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 monster: " + 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 monsters: {arg}"); } } private void AddBosses() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown try { string[] array = bossList; foreach (string text in array) { GameObject val = NPCBundle.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 monster: " + 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 monsters: {arg}"); } } private void AddSpawners() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown try { string[] array = spawnersList; foreach (string text in array) { GameObject val = NPCBundle.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 spawners: {arg}"); } } private void FixSFX() { try { AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit"); string[] array = fxList; foreach (string text in array) { GameObject prefab2 = Cache.GetPrefab<GameObject>(text); prefab2.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab.outputAudioMixerGroup; if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer: SFX, set on: " + text)); } } AudioSource prefab3 = Cache.GetPrefab<AudioSource>("Music_FulingCamp"); string[] array2 = musicList; foreach (string text2 in array2) { GameObject prefab4 = Cache.GetPrefab<GameObject>(text2); prefab4.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab3.outputAudioMixerGroup; if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)("Audio Mixer: Music Ontop, set on: " + text2)); } } } catch { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Mixer Fix Failed"); } } private void AddNPCLocations() { //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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_00df: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Expected O, but got Unknown //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_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_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: 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_01c9: Expected O, but got Unknown //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Expected O, but got Unknown //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Expected O, but got Unknown //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Expected O, but got Unknown //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0380: 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_039d: Expected O, but got Unknown //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Expected O, but got Unknown try { AudioSource prefab = Cache.GetPrefab<AudioSource>("sfx_arrow_hit"); AudioSource prefab2 = Cache.GetPrefab<AudioSource>("Music_FulingCamp"); GameObject val = ZoneManager.Instance.CreateLocationContainer(NPCBundle.LoadAsset<GameObject>("Loc_NPCCamp_DoD")); if ((Object)(object)val == (Object)null) { if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Locations not found"); } } else { val.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab.outputAudioMixerGroup; ZoneManager.Instance.AddCustomLocation(new CustomLocation(val, true, new LocationConfig { Biome = (Biome)512, Quantity = 3, Priotized = true, ExteriorRadius = 32f, ClearArea = true, MinAltitude = 0.25f, MinDistanceFromSimilar = 1000f, Unique = true })); if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Location Added: Mistlands NPC Camp"); } } GameObject val2 = ZoneManager.Instance.CreateLocationContainer(NPCBundle.LoadAsset<GameObject>("Loc_ShrineOdin_DoD")); if ((Object)(object)val2 == (Object)null) { if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Loc_ShrineOdin_DoD not found"); } } else { val2.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab2.outputAudioMixerGroup; ZoneManager.Instance.AddCustomLocation(new CustomLocation(val2, true, new LocationConfig { Biome = (Biome)512, Quantity = 3, Priotized = true, ExteriorRadius = 6f, ClearArea = true, MinAltitude = 0.25f, MinDistanceFromSimilar = 1000f })); if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Location Added: Odin Shrine"); } } GameObject val3 = ZoneManager.Instance.CreateLocationContainer(NPCBundle.LoadAsset<GameObject>("Loc_ShrineLoki_DoD")); if ((Object)(object)val3 == (Object)null) { if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Loc_ShrineLoki_DoD not found"); } } else { val3.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab2.outputAudioMixerGroup; ZoneManager.Instance.AddCustomLocation(new CustomLocation(val3, true, new LocationConfig { Biome = (Biome)2, Quantity = 3, Priotized = true, ExteriorRadius = 6f, ClearArea = true, MinAltitude = 0.25f, MinDistanceFromSimilar = 1000f })); if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Location Added: Loki Shrine"); } } GameObject val4 = ZoneManager.Instance.CreateLocationContainer(NPCBundle.LoadAsset<GameObject>("Loc_ShrineFrigg_DoD")); if ((Object)(object)val4 == (Object)null) { if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Loc_ShrineFrigg_DoD not found"); } return; } val4.GetComponentInChildren<AudioSource>().outputAudioMixerGroup = prefab2.outputAudioMixerGroup; ZoneManager.Instance.AddCustomLocation(new CustomLocation(val4, true, new LocationConfig { Biome = (Biome)8, Quantity = 3, Priotized = true, ExteriorRadius = 6f, ClearArea = true, MinAltitude = 0.25f, MinDistanceFromSimilar = 1000f })); if (LoggingEnable.Value) { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Location Added: Frigg Shrine"); } } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding Companion Locations: {arg}"); } finally { ZoneManager.OnVanillaLocationsAvailable -= AddNPCLocations; NPCBundle.Unload(false); } } public static void ConfigureNPCSpawners(ISpawnerConfigurationCollection config) { try { ConfigureWorldSpawner(config); } catch (Exception ex) { Console.WriteLine("Something went horribly wrong: " + ex.Message + "\nStackTrace:\n" + ex.StackTrace); } } private static void ConfigureWorldSpawner(ISpawnerConfigurationCollection config) { try { ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29000u).SetPrefabName("HumanNPCBob_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)1 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29001u).SetPrefabName("HumanNPCFred_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)8 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29002u).SetPrefabName("HumanNPCBarry_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29003u).SetPrefabName("HumanNPCBobby_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29004u).SetPrefabName("HumanNPCJeff_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29005u).SetPrefabName("HumanNPCFletch_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29006u).SetPrefabName("HumanNPCMandy_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)1 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29007u).SetPrefabName("HumanNPCBarbara_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)8 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29008u).SetPrefabName("HumanNPCSandra_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)2 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29009u).SetPrefabName("HumanNPCDaisy_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)4 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29010u).SetPrefabName("HumanNPCCathrine_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)16 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); ISpawnerConfigurationCollectionWorldSpawnerExtensions.ConfigureWorldSpawner(config, 29011u).SetPrefabName("HumanNPCKaren_DoD").SetTemplateName("NPC") .SetConditionBiomes((Biome[])(object)new Biome[1] { (Biome)512 }) .SetSpawnChance(10f) .SetSpawnInterval(TimeSpan.FromSeconds(300.0)) .SetPackSizeMin(1u) .SetPackSizeMax(1u) .SetMaxSpawned(1u); } catch (Exception ex) { Log.LogError((object)ex); } } }