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 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);
}
}
}